##// END OF EJS Templates
file-browser: refactor how we load metadata for file trees....
file-browser: refactor how we load metadata for file trees. Before we used to use JSON data to map the nodes to json and fill in metadata. Now we use rendered parts of html. This is nicer for caching as it would allow us to replace the view with cached tree and then after ajax load replace it again with cached with metadata. On the next request we'll get the cached with metadata and thus we can skip entirely second ajax call for metadata. This is part of #4083

File last commit:

r385:4c58728c default
r423:9930e2c8 default
Show More
test
496 lines | 19.9 KiB | text/plain | TextLexer
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>
Gist &middot; 22
</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="robots" content="index, nofollow"/>
<link rel="icon" href="/images/favicon.ico?ver=b5cbcb03" sizes="16x16 32x32" type="image/png" />
<link rel="stylesheet" type="text/css" href="/css/style.css?ver=b5cbcb03" media="screen"/>
<!--[if lt IE 9]>
<link rel="stylesheet" type="text/css" href="/css/ie.css?ver=b5cbcb03" media="screen"/>
<![endif]-->
<script src="/js/rhodecode/i18n/en.js?ver=b5cbcb03"></script>
<script type="text/javascript">
// register templateContext to pass template variables to JS
var templateContext = {
repo_name: "",
repo_type: null,
repo_landing_commit: null,
rhodecode_user: {
username: "default",
email: "anonymous@rhodecode.org",
},
visual: {
default_renderer: "rst"
},
commit_data: {
commit_id: null,
},
pull_request_data: {
pull_request_id: null,
},
timeago: {
refresh_time: 120000,
cutoff_limit: 604800000
}
};
var REPO_NAME = "";
var REPO_LANDING_REV = '';
var REPO_TYPE = '';
var APPLICATION_URL = "";
var DEFAULT_RENDERER = "rst";
var CSRF_TOKEN = "0fd2775cf20f09b9942125e6ffb4c6da143d1b14";
var USER = {name:'default'};
var APPENLIGHT = {
enabled: false,
key: 'YOUR_API_PUBLIC_KEY',
serverUrl: 'https://api.appenlight.com',
requestInfo: {
ip: '0.0.0.0',
username: 'default'
}
};
</script>
<!--[if lt IE 9]>
<script language="javascript" type="text/javascript" src="/js/excanvas.min.js"></script>
<![endif]-->
<script language="javascript" type="text/javascript" src="/js/scripts.js?ver=b5cbcb03"></script>
<script>CodeMirror.modeURL = "/js/mode/%N/%N.js";</script>
<script type="text/javascript">
$(document).ready(function(){
show_more_event();
timeagoActivate();
})
</script>
</head>
<body id="body">
<noscript>
<div class="noscript-error">
Please enable JavaScript to use RhodeCode Enterprise
</div>
</noscript>
<!--[if IE 7]>
<script>$(document.body).addClass('ie7')</script>
<![endif]-->
<!--[if IE 8]>
<script>$(document.body).addClass('ie8')</script>
<![endif]-->
<!--[if IE 9]>
<script>$(document.body).addClass('ie9')</script>
<![endif]-->
<div class="outerwrapper">
<!-- HEADER -->
<div class="header">
<div id="header-inner" class="wrapper">
<div id="logo">
<div class="logo-wrapper">
<a href="/"><img src="/images/rhodecode-logo-white-216x60.png" alt="RhodeCode"/></a>
</div>
</div>
<!-- MENU BAR NAV -->
<ul id="quick" class="main_nav navigation horizontal-list">
<!-- repo switcher -->
<li class=" repo_switcher_li has_select2">
<input id="repo_switcher" name="repo_switcher" type="hidden">
</li>
<li class="">
<a class="menulink" title="Show Public activity journal" href="/_admin/public_journal">
<div class="menulabel">Public journal</div>
</a>
</li>
<li class="active">
<a class="menulink childs" title="Show Gists" href="/_admin/gists">
<div class="menulabel">Gists</div>
</a>
</li>
<li class="">
<a class="menulink" title="Search in repositories you have access to" href="/_admin/search">
<div class="menulabel">Search</div>
</a>
</li>
<li id="quick_login_li">
<a id="quick_login_link" class="menulink childs">
<img class="gravatar gravatar-large" src="data:image/svg+xml;base64,CiAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgICAgICAg
dmVyc2lvbj0iMS4xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjQwIiBoZWlnaHQ9IjQwIgogICAg
ICAgIHZpZXdCb3g9Ii0xNSAtMTAgNDM5LjE2NSA0MjkuMTY0IgoKICAgICAgICB4bWw6c3BhY2U9
InByZXNlcnZlIgogICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kOiM5Nzk3OTc7IiA+CgogICAgICAg
IDxwYXRoIGQ9Ik0yMDQuNTgzLDIxNi42NzFjNTAuNjY0LDAsOTEuNzQtNDguMDc1LAogICAgICAg
ICAgICAgICAgIDkxLjc0LTEwNy4zNzhjMC04Mi4yMzctNDEuMDc0LTEwNy4zNzctOTEuNzQtMTA3
LjM3NwogICAgICAgICAgICAgICAgIGMtNTAuNjY4LDAtOTEuNzQsMjUuMTQtOTEuNzQsMTA3LjM3
N0MxMTIuODQ0LAogICAgICAgICAgICAgICAgIDE2OC41OTYsMTUzLjkxNiwyMTYuNjcxLAogICAg
ICAgICAgICAgICAgIDIwNC41ODMsMjE2LjY3MXoiIGZpbGw9IiNmZmYiLz4KICAgICAgICA8cGF0
aCBkPSJNNDA3LjE2NCwzNzQuNzE3TDM2MC44OCwKICAgICAgICAgICAgICAgICAyNzAuNDU0Yy0y
LjExNy00Ljc3MS01LjgzNi04LjcyOC0xMC40NjUtMTEuMTM4bC03MS44My0zNy4zOTIKICAgICAg
ICAgICAgICAgICBjLTEuNTg0LTAuODIzLTMuNTAyLTAuNjYzLTQuOTI2LDAuNDE1Yy0yMC4zMTYs
CiAgICAgICAgICAgICAgICAgMTUuMzY2LTQ0LjIwMywyMy40ODgtNjkuMDc2LDIzLjQ4OGMtMjQu
ODc3LAogICAgICAgICAgICAgICAgIDAtNDguNzYyLTguMTIyLTY5LjA3OC0yMy40ODgKICAgICAg
ICAgICAgICAgICBjLTEuNDI4LTEuMDc4LTMuMzQ2LTEuMjM4LTQuOTMtMC40MTVMNTguNzUsCiAg
ICAgICAgICAgICAgICAgMjU5LjMxNmMtNC42MzEsMi40MS04LjM0Niw2LjM2NS0xMC40NjUsMTEu
MTM4TDIuMDAxLDM3NC43MTcKICAgICAgICAgICAgICAgICBjLTMuMTkxLDcuMTg4LTIuNTM3LDE1
LjQxMiwxLjc1LDIyLjAwNWM0LjI4NSwKICAgICAgICAgICAgICAgICA2LjU5MiwxMS41MzcsMTAu
NTI2LDE5LjQsMTAuNTI2aDM2Mi44NjFjNy44NjMsMCwxNS4xMTctMy45MzYsCiAgICAgICAgICAg
ICAgICAgMTkuNDAyLTEwLjUyNyBDNDA5LjY5OSwzOTAuMTI5LAogICAgICAgICAgICAgICAgIDQx
MC4zNTUsMzgxLjkwMiw0MDcuMTY0LDM3NC43MTd6IiBmaWxsPSIjZmZmIi8+CiAgICAgICAgPC9z
dmc+
" height="20" width="20">
<span class="user">
<span>Sign in</span>
</span>
</a>
<div class="user-menu submenu">
<div id="quick_login">
<h4>Sign in to your account</h4>
<form action="/_admin/login?came_from=%2F_admin%2Fgists%2F22" method="post">
<div class="form form-vertical">
<div class="fields">
<div class="field">
<div class="label">
<label for="username">Username:</label>
</div>
<div class="input">
<input class="focus" id="username" name="username" tabindex="1" type="text" />
</div>
</div>
<div class="field">
<div class="label">
<label for="password">Password:</label>
<span class="forgot_password"><a href="/_admin/password_reset">(Forgot password?)</a></span>
</div>
<div class="input">
<input class="focus" id="password" name="password" tabindex="2" type="password" />
</div>
</div>
<div class="buttons">
<div class="register">
<a href="/_admin/register">Don&#39;t have an account ?</a>
</div>
<div class="submit">
<input class="btn btn-small" id="sign_in" name="sign_in" tabindex="3" type="submit" value="Sign In" />
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</li>
</ul>
<script type="text/javascript">
var visual_show_public_icon = "True" == "True";
/*format the look of items in the list*/
var format = function(state, escapeMarkup){
if (!state.id){
return state.text; // optgroup
}
var obj_dict = state.obj;
var tmpl = '';
if(obj_dict && state.type == 'repo'){
if(obj_dict['repo_type'] === 'hg'){
tmpl += '<i class="icon-hg"></i> ';
}
else if(obj_dict['repo_type'] === 'git'){
tmpl += '<i class="icon-git"></i> ';
}
else if(obj_dict['repo_type'] === 'svn'){
tmpl += '<i class="icon-svn"></i> ';
}
if(obj_dict['private']){
tmpl += '<i class="icon-lock" ></i> ';
}
else if(visual_show_public_icon){
tmpl += '<i class="icon-unlock-alt"></i> ';
}
}
if(obj_dict && state.type == 'group'){
tmpl += '<i class="icon-folder-close"></i> ';
}
tmpl += escapeMarkup(state.text);
return tmpl;
};
var formatResult = function(result, container, query, escapeMarkup) {
return format(result, escapeMarkup);
};
var formatSelection = function(data, container, escapeMarkup) {
return format(data, escapeMarkup);
};
$("#repo_switcher").select2({
cachedDataSource: {},
minimumInputLength: 2,
placeholder: '<div class="menulabel">Go to <div class="show_more"></div></div>',
dropdownAutoWidth: true,
formatResult: formatResult,
formatSelection: formatSelection,
containerCssClass: "repo-switcher",
dropdownCssClass: "repo-switcher-dropdown",
escapeMarkup: function(m){
// don't escape our custom placeholder
if(m.substr(0,23) == '<div class="menulabel">'){
return m;
}
return Select2.util.escapeMarkup(m);
},
query: $.debounce(250, function(query){
self = this;
var cacheKey = query.term;
var cachedData = self.cachedDataSource[cacheKey];
if (cachedData) {
query.callback({results: cachedData.results});
} else {
$.ajax({
url: "/_repos_and_groups",
data: {'query': query.term},
dataType: 'json',
type: 'GET',
success: function(data) {
self.cachedDataSource[cacheKey] = data;
query.callback({results: data.results});
},
error: function(data, textStatus, errorThrown) {
alert("Error while fetching entries.\nError code {0} ({1}).".format(data.status, data.statusText));
}
})
}
})
});
$("#repo_switcher").on('select2-selecting', function(e){
e.preventDefault();
window.location = pyroutes.url('summary_home', {'repo_name': e.val});
});
// general help "?"
Mousetrap.bind(['?'], function(e) {
$('#help_kb').modal({})
});
// / open the quick filter
Mousetrap.bind(['/'], function(e) {
$("#repo_switcher").select2("open");
// return false to prevent default browser behavior
// and stop event from bubbling
return false;
});
// general nav g + action
Mousetrap.bind(['g h'], function(e) {
window.location = pyroutes.url('home');
});
Mousetrap.bind(['g g'], function(e) {
window.location = pyroutes.url('gists', {'private':1});
});
Mousetrap.bind(['g G'], function(e) {
window.location = pyroutes.url('gists', {'public':1});
});
Mousetrap.bind(['n g'], function(e) {
window.location = pyroutes.url('new_gist');
});
Mousetrap.bind(['n r'], function(e) {
window.location = pyroutes.url('new_repo');
});
</script>
<script src="/js/rhodecode/base/keyboard-bindings.js?ver=b5cbcb03"></script>
<!-- END MENU BAR NAV -->
</div>
</div>
<!-- END HEADER -->
<!-- CONTENT -->
<div id="content" class="wrapper">
<div class="flash_msg">
<script>
if (typeof jQuery != 'undefined') {
$(".alert").alert();
}
</script>
</div>
<div class="main">
<div class="box">
<!-- box / title -->
<div class="title">
<div class="breadcrumbs">
Gist &middot; 22
/ URL: http://test.example.com:80/_admin/gists/22
</div>
</div>
<div class="table">
<div id="files_data">
<div id="codeblock" class="codeblock">
<div class="code-header">
<div class="stats">
<div class="buttons">
<a class="btn btn-mini" href="/_admin/gists/22/tip/raw">Show as Raw</a>
</div>
<div class="left" >
<span> gist-desc</span>
<span>Expires:
never
</span>
</div>
</div>
<div class="author">
<div title="RhodeCode Admin &lt;test_admin@mail.com&gt;">
<div class="rc-user tooltip" title="RhodeCode Admin &lt;test_admin@mail.com&gt;">
<img class="gravatar" src="data:image/svg+xml;base64,CiAgICAgICAgPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHBvaW50ZXIt
ZXZlbnRzPSJub25lIgogICAgICAgICAgICAgd2lkdGg9IjMyIiBoZWlnaHQ9IjMyIgogICAgICAg
ICAgICAgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IGJhY2tncm91bmQtY29sb3I6
ICM1OWIzODkiCiAgICAgICAgICAgICB2aWV3Qm94PSIwIDAgMzIgMzIiPgogICAgICAgICAgICA8
dGV4dCB0ZXh0LWFuY2hvcj0ibWlkZGxlIiB5PSI1MCUiIHg9IjUwJSIgZHk9IjAuMzVlbSIKICAg
ICAgICAgICAgICAgICAgcG9pbnRlci1ldmVudHM9ImF1dG8iIGZpbGw9IiNmZmYiCiAgICAgICAg
ICAgICAgICAgIGZvbnQtZmFtaWx5PSJwcm94aW1hbm92YXJlZ3VsYXIsUHJveGltYSBOb3ZhIFJl
Z3VsYXIsUHJveGltYSBOb3ZhLEFyaWFsLEx1Y2lkYSBHcmFuZGUsc2Fucy1zZXJpZiIKICAgICAg
ICAgICAgICAgICAgc3R5bGU9ImZvbnQtd2VpZ2h0OiA0MDA7IGZvbnQtc2l6ZTogMTcuMjk3Mjk3
Mjk3M3B4OyI+VE0KICAgICAgICAgICAgPC90ZXh0PgogICAgICAgIDwvc3ZnPg==
" height="16" width="16">
<span class="user"> <a href="/_profiles/test_admin">test_admin</a></span>
</div>
- created <time class="timeago tooltip" title="Mon, 23 May 2016 19:54:34" datetime="2016-05-23 19:54:34+00:00">Mon, 23 May 2016 19:54:34</time>
</div>
</div>
<div class="commit">added file: gist-show-me</div>
</div>
<!-- <div id="c-G-eff3be0ea272" class="stats" >
<a href="http://test.example.com:80/_admin/gists/22">¶</a>
<b >gist-show-me</b>
<div>
<a class="btn btn-mini" href="/_admin/gists/22/3f6f18ddcd5669697303ab3cd5a2eabb1c558c6f/raw/gist-show-me">Show as raw</a>
</div>
</div> -->
<div class="code-body textarea text-area editor">
<table class="code-highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L1">1</a></pre></div></td><td id="hlcode" class="code"><div class="code-highlight"><pre><div id="L1"><a name="L-1"></a>some gist
</div></pre></div>
</td></tr></table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- END CONTENT -->
</div>
<!-- FOOTER -->
<div id="footer">
<div id="footer-inner" class="title wrapper">
<div>
<p class="footer-link-right">
RhodeCode Enterprise 4.0.0 Community Edition
&copy; 2010-2016, <a href="https://rhodecode.com" target="_blank">RhodeCode GmbH</a>. All rights reserved.
<a href="https://rhodecode.com/help/" target="_blank">Support</a>
</p>
<p class="server-instance" style="display:none">
RhodeCode instance id: vps1.local-105134
</p>
</div>
</div>
</div>
<!-- END FOOTER -->
<div class="modal" id="help_kb" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h4 class="modal-title" id="myModalLabel">Keyboard shortcuts</h4>
</div>
<div class="modal-body">
<div class="block-left">
<table class="keyboard-mappings">
<tbody>
<tr>
<th></th>
<th>Site-wide shortcuts</th>
</tr>
<tr>
<td class="keys">
<span class="key tag">/</span>
</td>
<td>Open quick search box</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g h</span>
</td>
<td>Goto home page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g g</span>
</td>
<td>Goto my private gists page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g G</span>
</td>
<td>Goto my public gists page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">n r</span>
</td>
<td>New repository page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">n g</span>
</td>
<td>New gist page</td>
</tr>
</tbody>
</table>
</div>
<div class="block-left">
<table class="keyboard-mappings">
<tbody>
<tr>
<th></th>
<th>Repositories</th>
</tr>
<tr>
<td class="keys">
<span class="key tag">g s</span>
</td>
<td>Goto summary page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g c</span>
</td>
<td>Goto changelog page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g f</span>
</td>
<td>Goto files page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g F</span>
</td>
<td>Goto files page with file search activated</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g p</span>
</td>
<td>Goto pull requests page</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g o</span>
</td>
<td>Goto repository settings</td>
</tr>
<tr>
<td class="keys">
<span class="key tag">g O</span>
</td>
<td>Goto repository permissions settings</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="modal-footer">
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
</body>
</html>