Changeset - ccc005b96103
[Not reviewed]
default
1 7 0
Christian Oyarzun - 11 years ago 2014-11-13 16:56:28
oyarzun@gmail.com
javascript: added missing helper functions to make templates using codemirror work properly. (Issue #11)
* * *
imported patch codemirror-whitespacecleanup
8 files changed with 124 insertions and 304 deletions:
0 comments (0 inline, 0 general)
kallithea/public/js/base.js
Show inline comments
 
@@ -981,47 +981,48 @@ var fileBrowserListeners = function(curr
 
            filterTimeout = setTimeout(updateFilter(e),600);
 
        });
 
};
 

	
 

	
 
var initCodeMirror = function(textarea_id, resetUrl){
 
    var myCodeMirror = CodeMirror.fromTextArea($('#' + textarea_id)[0], {
 
            mode: "null",
 
            lineNumbers: true,
 
            indentUnit: 4,
 
            autofocus: true
 
        });
 
    CodeMirror.modeURL = "/codemirror/mode/%N/%N.js";
 

	
 
    $('#reset').click(function(e){
 
            window.location=resetUrl;
 
        });
 

	
 
    $('#file_enable').click(function(){
 
            $('#editor_container').show();
 
            $('#upload_file_container').hide();
 
            $('#filename_container').show();
 
            $('#set_mode_header').show();
 
        });
 

	
 
    $('#upload_file_enable').click(function(){
 
            $('#editor_container').hide();
 
            $('#upload_file_container').show();
 
            $('#filename_container').hide();
 
            $('#set_mode_header').hide();
 
        });
 

	
 
    return myCodeMirror
 
};
 

	
 
var setCodeMirrorMode = function(codeMirrorInstance, mode) {
 
    codeMirrorInstance.setOption("mode", mode);
 
    CodeMirror.autoLoadMode(codeMirrorInstance, mode);
 
}
 

	
 

	
 
var _getIdentNode = function(n){
 
    //iterate thrugh nodes until matching interesting node
 

	
 
    if (typeof n == 'undefined'){
 
        return -1
 
    }
 

	
 
    if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
kallithea/public/js/codemirror_loadmode.js
Show inline comments
 
@@ -13,25 +13,25 @@
 
    var missing = [];
 
    for (var i = 0; i < deps.length; ++i) {
 
      if (!CodeMirror.modes.hasOwnProperty(deps[i]))
 
        missing.push(deps[i]);
 
    }
 
    if (!missing.length) return cont();
 
    var split = splitCallback(cont, missing.length);
 
    for (var i = 0; i < missing.length; ++i)
 
      CodeMirror.requireMode(missing[i], split);
 
  }
 

	
 
  CodeMirror.requireMode = function(mode, cont) {
 
    if (typeof mode != "string") mode = mode.name;
 
    if (typeof mode != "string") mode = mode.mode;
 
    if (CodeMirror.modes.hasOwnProperty(mode)) return ensureDeps(mode, cont);
 
    if (loading.hasOwnProperty(mode)) return loading[mode].push(cont);
 

	
 
    var script = document.createElement("script");
 
    script.src = CodeMirror.modeURL.replace(/%N/g, mode);
 
    var others = document.getElementsByTagName("script")[0];
 
    others.parentNode.insertBefore(script, others);
 
    var list = loading[mode] = [cont];
 
    var count = 0, poll = setInterval(function() {
 
      if (++count > 100) return clearInterval(poll);
 
      if (CodeMirror.modes.hasOwnProperty(mode)) {
 
        clearInterval(poll);
 
@@ -39,25 +39,47 @@
 
        ensureDeps(mode, function() {
 
          for (var i = 0; i < list.length; ++i) list[i]();
 
        });
 
      }
 
    }, 200);
 
  };
 

	
 
  CodeMirror.autoLoadMode = function(instance, mode) {
 
    if (!CodeMirror.modes.hasOwnProperty(mode))
 
      CodeMirror.requireMode(mode, function() {
 
        instance.setOption("mode", instance.getOption("mode"));
 
      });
 
    instance.setOption("mode", mode.mime);
 
  };
 

	
 
  CodeMirror.findExtensionByMode = function(modeInfo) {
 
    if (modeInfo.ext) {
 
      return modeInfo.ext[0];
 
    } else if (modeInfo.mode) {
 
      return modeInfo.mode;
 
    } else {
 
      return "txt";
 
    }
 
  };
 

	
 
  CodeMirror.getFilenameAndExt = function(filename){
 
    var parts = filename.split('.');
 

	
 
    if (parts.length > 1){
 
        var ext = parts.pop();
 
        var filename = parts.join("");
 
    }
 
    return {"filename": filename, "ext": ext};
 
  };
 

	
 
}());
 

	
 

	
 
//overlay plugin
 

	
 
// Utility function that allows modes to be combined. The mode given
 
// as the base argument takes care of most of the normal mode
 
// functionality, but a second (typically simple) mode is used, which
 
// can override the style of text. Both modes get to parse all of the
 
// text, but when both assign a non-null style to a piece of code, the
 
// overlay wins, unless the combine argument was true, in which case
 
// the styles are combined.
kallithea/public/js/meta_ext.js
Show inline comments
 
deleted file
kallithea/templates/admin/gists/edit.html
Show inline comments
 
@@ -3,25 +3,24 @@
 

	
 
<%def name="title()">
 
    ${_('Edit Gist')} &middot; ${c.gist.gist_access_id}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 

	
 
<%def 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>
 
<script type="text/javascript" src="${h.url('/js/meta_ext.js')}"></script>
 
</%def>
 
<%def name="css_extra()">
 
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/>
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Edit Gist')} &middot; ${c.gist.gist_access_id}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('gists')}
 
</%def>
 
@@ -66,89 +65,88 @@
 
                     %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}">
 

	
 
                        <select id="mimetype_${h.FID('f',file.path)}" name="mimetypes">
 
                            <option selected="selected" value="plain">${_('plain')}</option>
 
                        </select>
 
                        <select id="mimetype_${h.FID('f',file.path)}" name="mimetypes"/>
 
                    </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)}", '');
 
                CodeMirror.modeURL = "${h.url('/codemirror/mode/%N/%N.js')}";
 

	
 
                //inject new modes
 
                var $modes_select = $('#mimetype_${h.FID('f',file.path)}');
 
                $modes_select.each(function(){
 
                    var modes_select = this;
 
                    var index = 1;
 
                    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);
 
                        modes_select.options[i+1] = opt;
 
                        if (m.mime == 'text/plain') {
 
                            // default plain text
 
                            $(opt).attr('selected', 'selected');
 
                            modes_select.options[0] = opt;
 
                        } else {
 
                            modes_select.options[index++] = opt;
 
                        }
 
                    }
 
                });
 

	
 
                var $filename = $('#filename_${h.FID('f',file.path)}');
 
                // on select change set new mode
 
                $modes_select.change(function(e){
 
                    var selected = e.currentTarget;
 
                    var node = selected.options[selected.selectedIndex];
 
                    var mimetype = node.value;
 
                    var new_mode = $(node).attr('mode');
 
                    setCodeMirrorMode(myCodeMirror, new_mode);
 
                    var detected_mode = CodeMirror.findModeByMIME(node.value);
 
                    setCodeMirrorMode(myCodeMirror, detected_mode);
 

	
 
                    var proposed_ext = getExtFromMimeType(mimetype);
 
                    var file_data = getFilenameAndExt($filename.val());
 
                    var proposed_ext = CodeMirror.findExtensionByMode(detected_mode);
 
                    var file_data = CodeMirror.getFilenameAndExt($filename.val());
 
                    var filename = file_data['filename'] || 'filename1';
 
                    $(filename_selector).val(filename + proposed_ext);
 
                })
 
                    $filename.val(filename + '.' + proposed_ext);
 
                });
 

	
 
                // on type the new filename set mode
 
                $filename.keyup(function(e){
 
                    var file_data = getFilenameAndExt(this.value);
 
                    var file_data = CodeMirror.getFilenameAndExt(this.value);
 
                    if(file_data['ext'] != null){
 

	
 
                        var mimetype = getMimeTypeFromExt(file_data['ext']);
 
                        var detected_mode = detectCodeMirrorMode(this.value, mimetype);
 
                        var detected_mode = CodeMirror.findModeByExtension(file_data['ext']) || CodeMirror.findModeByMIME('text/plain');
 

	
 
                        if (detected_mode){
 
                            setCodeMirrorMode(myCodeMirror, detected_mode);
 
                            $modes_select.val(mimetype)
 
                            $modes_select.val(detected_mode.mime);
 
                        }
 
                    }
 
                })
 
                });
 

	
 
                // set mode on page load
 
                var mimetype = getMimeTypeFromExt("${file.extension}");
 
                var detected_mode = detectCodeMirrorMode("${file.path}", mimetype);
 
                var detected_mode = CodeMirror.findModeByExtension("${file.extension}");
 

	
 
                if (detected_mode){
 
                    setCodeMirrorMode(myCodeMirror, detected_mode);
 
                    modes_select.val(mimetype)
 
                    $modes_select.val(detected_mode.mime);
 
                }
 

	
 
                </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>
 
@@ -161,19 +159,19 @@
 
                    data: {'revision': '${c.file_changeset.raw_id}'},
 
                    dataType: 'json',
 
                    type: 'POST',
 
                    success: function(data) {
 
                      if(data.success == false){
 
                          $('#edit_error').show();
 
                      }
 
                      else{
 
                        $('#eform').submit();
 
                      }
 
                    }
 
                  })
 
              })
 
              });
 
          </script>
 
        </div>
 
    </div>
 

	
 
</div>
 
</%def>
kallithea/templates/admin/gists/new.html
Show inline comments
 
@@ -3,25 +3,24 @@
 

	
 
<%def name="title()">
 
    ${_('New Gist')}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 

	
 
<%def 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>
 
<script type="text/javascript" src="${h.url('/js/meta_ext.js')}"></script>
 
</%def>
 
<%def name="css_extra()">
 
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/>
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('New Gist')}
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('gists')}
 
</%def>
 
@@ -40,74 +39,78 @@
 
                <div class="gravatar">
 
                   <img alt="gravatar" src="${h.gravatar_url(h.email_or_none(c.authuser.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'))])}
 
                    <select id="mimetype" name="mimetype"/>
 
                </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('/codemirror/mode/%N/%N.js')}";
 

	
 
            //inject new modes
 
            var $modes_select = $('#mimetype');
 
            $modes_select.each(function(){
 
                var modes_select = this;
 
                var index = 1;
 
                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);
 
                    modes_select.options[i+1] = opt;
 
                    if (m.mime == 'text/plain') {
 
                        // default plain text
 
                        $(opt).attr('selected', 'selected');
 
                        modes_select.options[0] = opt;
 
                    } else {
 
                        modes_select.options[index++] = opt;
 
                    }
 
                }
 
            });
 

	
 
            var $filename = $('#filename');
 
            // on select change set new mode
 
            $modes_select.change(function(e){
 
                var selected = e.currentTarget;
 
                var node = selected.options[selected.selectedIndex];
 
                var mimetype = node.value;
 
                var new_mode = $(node).attr('mode');
 
                setCodeMirrorMode(myCodeMirror, new_mode);
 
                var detected_mode = CodeMirror.findModeByMIME(node.value);
 
                setCodeMirrorMode(myCodeMirror, detected_mode);
 

	
 
                var proposed_ext = getExtFromMimeType(mimetype);
 
                var file_data = getFilenameAndExt($filename.val());
 
                var proposed_ext = CodeMirror.findExtensionByMode(detected_mode);
 
                var file_data = CodeMirror.getFilenameAndExt($filename.val());
 
                var filename = file_data['filename'] || 'filename1';
 
                $filename.val(filename + proposed_ext);
 
                $filename.val(filename + '.' + proposed_ext);
 
            });
 

	
 
            // on type the new filename set mode
 
            $filename.keyup(function(e){
 
                var file_data = getFilenameAndExt(this.value);
 
                var file_data = CodeMirror.getFilenameAndExt(this.value);
 
                if(file_data['ext'] != null){
 
                    var mimetype = getMimeTypeFromExt(file_data['ext']);
 
                    var detected_mode = detectCodeMirrorMode(this.value, mimetype);
 
                    var detected_mode = CodeMirror.findModeByExtension(file_data['ext']) || CodeMirror.findModeByMIME('text/plain');
 
                    if (detected_mode){
 
                        setCodeMirrorMode(myCodeMirror, detected_mode);
 
                        $modes_select.val(mimetype)
 
                        $modes_select.val(detected_mode.mime);
 
                    }
 
                }
 
            })
 
            });
 
            </script>
 
        </div>
 
    </div>
 

	
 
</div>
 
</%def>
kallithea/templates/files/files_add.html
Show inline comments
 
@@ -2,25 +2,24 @@
 

	
 
<%def name="title()">
 
    ${_('%s Files Add') % c.repo_name}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 

	
 
<%def 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>
 
<script type="text/javascript" src="${h.url('/js/meta_ext.js')}"></script>
 
</%def>
 
<%def name="css_extra()">
 
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/>
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Add New File')} @ ${h.show_id(c.cs)}
 
</%def>
 
@@ -46,50 +45,76 @@ ${self.repo_context_bar('files')}
 
                  <input class="input-small" type="text" value="" size="30" name="filename" id="filename" placeholder="${_('Enter filename...')}">
 
                  <input type="hidden" value="${c.f_path}" size="30" name="location" id="location">
 
                  ${_('or')} <div class="btn btn-small" id="upload_file_enable">${_('Upload File')}</div>
 
              </span>
 
              <span id="upload_file_container" class="reviewer_ac" style="display:none">
 
                  <input type="file"  size="20" name="upload_file" id="upload_file">
 
                  ${_('or')} <div class="btn btn-small" id="file_enable">${_('Create New File')}</div>
 
              </span>
 
          </h3>
 
            <div id="body" class="codeblock">
 
            <div class="code-header" id="set_mode_header">
 
                <label class="commit" for="set_mode">${_('New file mode')}</label>
 
                ${h.select('set_mode','plain',[('plain',_('plain'))])}
 
                <select id="set_mode" name="set_mode"/>
 
            </div>
 
                <div id="editor_container">
 
                    <pre id="editor_pre"></pre>
 
                    <textarea id="editor" name="content" style="display:none"></textarea>
 
                </div>
 
                <div style="padding: 10px;color:#666666">${_('Commit Message')}</div>
 
                <textarea id="commit" name="message" style="height: 100px;width: 99%;margin-left:4px" placeholder="${c.default_message}"></textarea>
 
            </div>
 
            <div style="text-align: left;padding-top: 5px">
 
            ${h.submit('commit',_('Commit Changes'),class_="btn btn-small btn-success")}
 
            ${h.reset('reset',_('Reset'),class_="btn btn-small")}
 
            </div>
 
            ${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)}";
 
            var myCodeMirror = initCodeMirror('editor',reset_url);
 
            CodeMirror.modeURL = "${h.url('/codemirror/mode/%N/%N.js')}";
 

	
 
            //inject new modes, based on codeMirrors modeInfo object
 
            $('#set_mode').each(function(){
 
                var modes_select = this;
 
                var index = 1;
 
                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);
 
                    $(opt).attr('mode', m.mode);
 
                    if (m.mime == 'text/plain') {
 
                        // default plain text
 
                        $(opt).attr('selected', 'selected');
 
                        modes_select.options[0] = opt;
 
                    } else {
 
                        modes_select.options[index++] = opt;
 
                    }
 
                }
 
            });
 
            $('#set_mode').change(function(e){
 
                var selected = e.currentTarget;
 
                var new_mode = selected.options[selected.selectedIndex].value;
 
                setCodeMirrorMode(myCodeMirror, new_mode);
 
                var node = selected.options[selected.selectedIndex];
 
                var detected_mode = CodeMirror.findModeByMIME(node.value);
 
                setCodeMirrorMode(myCodeMirror, detected_mode);
 

	
 
                var filenameInput = $('#filename');
 
                var proposed_ext = CodeMirror.findExtensionByMode(detected_mode);
 
                var file_data = CodeMirror.getFilenameAndExt(filenameInput.val());
 
                var filename = file_data['filename'] || 'filename1';
 
                filenameInput.val(filename + '.' + proposed_ext);
 
            });
 

	
 
            // on type the new filename set mode
 
            $('#filename').keyup(function(e){
 
                var file_data = CodeMirror.getFilenameAndExt(this.value);
 
                if(file_data['ext'] != null){
 
                    var detected_mode = CodeMirror.findModeByExtension(file_data['ext']) || CodeMirror.findModeByMIME('text/plain');
 
                    if (detected_mode){
 
                        setCodeMirrorMode(myCodeMirror, detected_mode);
 
                        $('#set_mode').val(detected_mode.mime);
 
                    }
 
                }
 
            });
 
            </script>
 
        </div>
 
    </div>
 
</div>
 
</%def>
kallithea/templates/files/files_delete.html
Show inline comments
 
<%inherit file="/base/base.html"/>
 

	
 
<%def name="title()">
 
    ${_('%s Files Delete') % c.repo_name}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 

	
 
<%def 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>
 
<script type="text/javascript" src="${h.url('/js/meta_ext.js')}"></script>
 
</%def>
 
<%def name="css_extra()">
 
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/>
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Delete file')} @ ${h.show_id(c.cs)}
 
</%def>
 

	
 
<%def name="main()">
 
${self.repo_context_bar('files')}
 
<div class="box">
 
    <!-- box / title -->
kallithea/templates/files/files_edit.html
Show inline comments
 
@@ -2,25 +2,24 @@
 

	
 
<%def name="title()">
 
    ${_('%s File Edit') % c.repo_name}
 
    %if c.site_name:
 
        &middot; ${c.site_name}
 
    %endif
 
</%def>
 

	
 
<%def 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>
 
<script type="text/javascript" src="${h.url('/js/meta_ext.js')}"></script>
 
</%def>
 
<%def name="css_extra()">
 
<link rel="stylesheet" type="text/css" href="${h.url('/codemirror/lib/codemirror.css')}"/>
 
</%def>
 

	
 
<%def name="page_nav()">
 
    ${self.menu('repositories')}
 
</%def>
 

	
 
<%def name="breadcrumbs_links()">
 
    ${_('Edit file')} @ ${h.show_id(c.cs)}
 
</%def>
 
@@ -51,57 +50,66 @@ ${self.repo_context_bar('files')}
 
                    <div class="buttons">
 
                      ${h.link_to(_('Show Annotation'),h.url('files_annotate_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                      ${h.link_to(_('Show as Raw'),h.url('files_raw_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                      ${h.link_to(_('Download as Raw'),h.url('files_rawfile_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                      % if h.HasRepoPermissionAny('repository.write','repository.admin')(c.repo_name):
 
                       % if not c.file.is_binary:
 
                        ${h.link_to(_('Source'),h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.f_path),class_="btn btn-mini")}
 
                       % endif
 
                      % endif
 
                    </div>
 
                </div>
 
                <label class="commit" for="set_mode">${_('Editing file')}: ${c.file.unicode_path}</label>
 
                ${h.select('set_mode','plain',[('plain',_('plain'))])}
 
                <select id="set_mode" name="set_mode"/>
 
            </div>
 
                <pre id="editor_pre"></pre>
 
                <textarea id="editor" name="content" style="display:none">${h.escape(c.file.content)|n}</textarea>
 
                <div style="padding: 10px;color:#666666">${_('Commit Message')}</div>
 
                <textarea id="commit" name="message" style="height: 60px;width: 99%;margin-left:4px" placeholder="${c.default_message}"></textarea>
 
            </div>
 
            <div style="text-align: left;padding-top: 5px">
 
            ${h.submit('commit',_('Commit Changes'),class_="btn btn-small btn-success")}
 
            ${h.reset('reset',_('Reset'),class_="btn btn-small")}
 
            </div>
 
            ${h.end_form()}
 
        </div>
 
    </div>
 
</div>
 

	
 
<script type="text/javascript">
 
$(document).ready(function(){
 
    var reset_url = "${h.url('files_home',repo_name=c.repo_name,revision=c.cs.raw_id,f_path=c.file.path)}";
 
    var myCodeMirror = initCodeMirror('editor',reset_url);
 
    CodeMirror.modeURL = "${h.url('/codemirror/mode/%N/%N.js')}";
 

	
 
   //inject new modes, based on codeMirrors modeInfo object
 
    var modes_select = $('#set_mode');
 
    for(var i=0;i<CodeMirror.modeInfo.length;i++){
 
        var m = CodeMirror.modeInfo[i];
 
        var opt = $('<option></option>').val(m.mode).text(m.name)
 
        modes_select.append(opt)
 
    $('#set_mode').each(function(){
 
        var modes_select = this;
 
        var index = 1;
 
        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);
 
            if (m.mime == 'text/plain') {
 
                // default plain text
 
                $(opt).attr('selected', 'selected');
 
                modes_select.options[0] = opt;
 
            } else {
 
                modes_select.options[index++] = opt;
 
            }
 
        }
 
    });
 
    // try to detect the mode based on the file we edit
 
    var detected_mode = CodeMirror.findModeByExtension("${c.file.extension}");
 
    if(detected_mode){
 
        setCodeMirrorMode(myCodeMirror, detected_mode);
 
        $($('#set_mode option[value="'+detected_mode.mime+'"]')[0]).attr("selected", "selected")
 
    }
 

	
 
    // try to detect the mode based on the file we edit
 
    var detected_mode = detectCodeMirrorMode("${c.file.name}", "${c.file.mimetype}")
 
    if(detected_mode){
 
    $('#set_mode').on('change', function(e){
 
        var selected = e.currentTarget;
 
        var node = selected.options[selected.selectedIndex];
 
        var detected_mode = CodeMirror.findModeByMIME(node.value);
 
        setCodeMirrorMode(myCodeMirror, detected_mode);
 
        $($('#set_mode option[value="'+detected_mode+'"]')[0]).attr("selected", "selected")
 
    }
 

	
 
    $(modes_select).on('change', function(e){
 
        var selected = e.currentTarget;
 
        var new_mode = selected.options[selected.selectedIndex].value;
 
        setCodeMirrorMode(myCodeMirror, new_mode);
 
    })
 
    });
 
})
 
</script>
 
</%def>
0 comments (0 inline, 0 general)