@@ -241,193 +241,193 @@ function ypjax(url,container,s_call,f_ca
success:s_wrapper,
failure:function(o){
console.log(o);
YUD.get(container).innerHTML='<span class="error_red">ERROR: {0}</span>'.format(o.status);
YUD.setStyle(container,'opacity','1.0');
},
cache:false
},args);
};
var ajaxGET = function(url,success) {
// Set special header for ajax == HTTP_X_PARTIAL_XHR
YUC.initHeader('X-PARTIAL-XHR',true);
var sUrl = url;
var callback = {
success: success,
failure: function (o) {
alert("error");
var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
return request;
var ajaxPOST = function(url,postData,success) {
var toQueryString = function(o) {
if(typeof o !== 'object') {
return false;
}
var _p, _qs = [];
for(_p in o) {
_qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
return _qs.join('&');
var postData = toQueryString(postData);
var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
/**
* tooltip activate
*/
var tooltip_activate = function(){
yt = YAHOO.yuitip.main;
YUE.onDOMReady(yt.init);
* show more
var show_more_event = function(){
YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
var el = e.target;
YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
YUD.setStyle(el.parentNode,'display','none');
});
* show changeset tooltip
var show_changeset_tooltip = function(){
YUE.on(YUD.getElementsByClassName('lazy-cs'), 'mouseover', function(e){
var target = e.currentTarget;
var rid = YUD.getAttribute(target,'raw_id');
var repo_name = YUD.getAttribute(target,'repo_name');
var ttid = 'tt-'+rid;
var success = function(o){
var json = JSON.parse(o.responseText);
YUD.addClass(target,'tooltip')
YUD.setAttribute(target, 'title',json['message']);
YAHOO.yuitip.main.show_yuitip(e, target);
if(rid && !YUD.hasClass(target, 'tooltip')){
YUD.setAttribute(target,'id',ttid);
YUD.setAttribute(target, 'title',_TM['loading...']);
YAHOO.yuitip.main.set_listeners(target);
ajaxGET('/changeset_info/{0}/{1}'.format(repo_name,rid), success)
ajaxGET(LAZY_CS_URL.replace('__NAME__',repo_name).replace('__REV__', rid), success)
var onSuccessFollow = function(target){
var f = YUD.get(target.id);
var f_cnt = YUD.get('current_followers_count');
if(YUD.hasClass(f, 'follow')){
f.setAttribute('class','following');
f.setAttribute('title',_TM['Stop following this repository']);
if(f_cnt){
var cnt = Number(f_cnt.innerHTML)+1;
f_cnt.innerHTML = cnt;
else{
f.setAttribute('class','follow');
f.setAttribute('title',_TM['Start following this repository']);
var cnt = Number(f_cnt.innerHTML)-1;
var toggleFollowingUser = function(target,fallows_user_id,token,user_id){
args = 'follows_user_id='+fallows_user_id;
args+= '&auth_token='+token;
if(user_id != undefined){
args+="&user_id="+user_id;
YUC.asyncRequest('POST',TOGGLE_FOLLOW_URL,{
success:function(o){
onSuccessFollow(target);
var toggleFollowingRepo = function(target,fallows_repo_id,token,user_id){
args = 'follows_repo_id='+fallows_repo_id;
* TOOLTIP IMPL.
YAHOO.namespace('yuitip');
YAHOO.yuitip.main = {
$: YAHOO.util.Dom.get,
bgColor: '#000',
speed: 0.3,
opacity: 0.9,
offset: [15,15],
useAnim: false,
maxWidth: 600,
add_links: false,
yuitips: [],
set_listeners: function(tt){
YUE.on(tt, 'mouseover', yt.show_yuitip, tt);
YUE.on(tt, 'mousemove', yt.move_yuitip, tt);
YUE.on(tt, 'mouseout', yt.close_yuitip, tt);
init: function(){
yt.tipBox = yt.$('tip-box');
if(!yt.tipBox){
yt.tipBox = document.createElement('div');
document.body.appendChild(yt.tipBox);
yt.tipBox.id = 'tip-box';
YUD.setStyle(yt.tipBox, 'display', 'none');
YUD.setStyle(yt.tipBox, 'position', 'absolute');
if(yt.maxWidth !== null){
YUD.setStyle(yt.tipBox, 'max-width', yt.maxWidth+'px');
var yuitips = YUD.getElementsByClassName('tooltip');
## -*- coding: utf-8 -*-
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>${self.title()}</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<meta name="robots" content="index, nofollow"/>
<link rel="icon" href="${h.url('/images/icons/database_gear.png')}" type="image/png" />
## CSS ###
<%def name="css()">
<link rel="stylesheet" type="text/css" href="${h.url('/css/style.css', ver=c.rhodecode_version)}" media="screen"/>
<link rel="stylesheet" type="text/css" href="${h.url('/css/pygments.css', ver=c.rhodecode_version)}"/>
## EXTRA FOR CSS
${self.css_extra()}
</%def>
<%def name="css_extra()">
${self.css()}
%if c.ga_code:
<!-- Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', '${c.ga_code}']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script>
%endif
## JAVASCRIPT ##
<%def name="js()">
//JS translations map
var TRANSLATION_MAP = {
'add another comment':'${_("add another comment")}',
'Stop following this repository':"${_('Stop following this repository')}",
'Start following this repository':"${_('Start following this repository')}",
'Group':"${_('Group')}",
'members':"${_('members')}",
'loading...':"${_('loading...')}",
'search truncated': "${_('search truncated')}",
'no matching files': "${_('no matching files')}",
'Open new pull request': "${_('Open new pull request')}",
'Open new pull request for selected changesets': "${_('Open new pull request for selected changesets')}",
'Show selected changes __S -> __E': "${_('Show selected changes __S -> __E')}",
'Selection link': "${_('Selection link')}",
var _TM = TRANSLATION_MAP;
var TOGGLE_FOLLOW_URL = "${h.url('toggle_following')}";
var LAZY_CS_URL = "${h.url('changeset_info', repo_name='__NAME__', revision='__REV__')}"
<script type="text/javascript" src="${h.url('/js/yui.2.9.js', ver=c.rhodecode_version)}"></script>
<!--[if lt IE 9]>
<script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script>
<![endif]-->
<script type="text/javascript" src="${h.url('/js/yui.flot.js', ver=c.rhodecode_version)}"></script>
<script type="text/javascript" src="${h.url('/js/native.history.js', ver=c.rhodecode_version)}"></script>
<script type="text/javascript" src="${h.url('/js/rhodecode.js', ver=c.rhodecode_version)}"></script>
## EXTRA FOR JS
${self.js_extra()}
(function(window,undefined){
// Prepare
var History = window.History; // Note: We are using a capital H instead of a lower h
if ( !History.enabled ) {
// History.js is disabled for this browser.
// This is because we can optionally choose to support HTML4 browsers or not.
})(window);
YUE.onDOMReady(function(){
tooltip_activate();
show_more_event();
show_changeset_tooltip();
YUE.on('quick_login_link','click',function(e){
// make sure we don't redirect
YUE.preventDefault(e);
if(YUD.hasClass('quick_login_link','enabled')){
YUD.setStyle('quick_login','display','none');
YUD.removeClass('quick_login_link','enabled');
YUD.setStyle('quick_login','display','');
YUD.addClass('quick_login_link','enabled');
var usr = YUD.get('username');
if(usr){
usr.focus();
})
<%def name="js_extra()"></%def>
${self.js()}
<%def name="head_extra()"></%def>
${self.head_extra()}
</head>
<body id="body">
## IE hacks
<!--[if IE 7]>
<script>YUD.addClass(document.body,'ie7')</script>
<!--[if IE 8]>
<script>YUD.addClass(document.body,'ie8')</script>
<!--[if IE 9]>
<script>YUD.addClass(document.body,'ie9')</script>
${next.body()}
</body>
</html>
Status change: