Mercurial > kallithea
diff rhodecode/public/js/rhodecode.js @ 1421:c6b811f11c94 beta
Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
author | Marcin Kuzminski <marcin@python-works.com> |
---|---|
date | Sat, 09 Jul 2011 20:07:59 +0200 |
parents | |
children | 91708b96e991 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/rhodecode/public/js/rhodecode.js Sat Jul 09 20:07:59 2011 +0200 @@ -0,0 +1,138 @@ +/** +RhodeCode JS Files +**/ + +if (typeof console == "undefined" || typeof console.log == "undefined"){ + console = { log: function() {} } +} + + +function str_repeat(i, m) { + for (var o = []; m > 0; o[--m] = i); + return o.join(''); +} + +/** + * INJECT .format function into String + * Usage: "My name is {0} {1}".format("Johny","Bravo") + * Return "My name is Johny Bravo" + * Inspired by https://gist.github.com/1049426 + */ +String.prototype.format = function() { + + function format() { + var str = this; + var len = arguments.length+1; + var safe = undefined; + var arg = undefined; + + // For each {0} {1} {n...} replace with the argument in that position. If + // the argument is an object or an array it will be stringified to JSON. + for (var i=0; i < len; arg = arguments[i++]) { + safe = typeof arg === 'object' ? JSON.stringify(arg) : arg; + str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe); + } + return str; + } + + // Save a reference of what may already exist under the property native. + // Allows for doing something like: if("".format.native) { /* use native */ } + format.native = String.prototype.format; + + // Replace the prototype property + return format; + + }(); + +/** + * GLOBAL YUI Shortcuts + */ +var YUC = YAHOO.util.Connect; +var YUD = YAHOO.util.Dom; +var YUE = YAHOO.util.Event; +var YUQ = YAHOO.util.Selector.query; + +// defines if push state is enabled for this browser ? +var push_state_enabled = Boolean( + window.history && window.history.pushState && window.history.replaceState + && !( /* disable for versions of iOS before version 4.3 (8F190) */ + (/ Mobile\/([1-7][a-z]|(8([abcde]|f(1[0-8]))))/i).test(navigator.userAgent) + /* disable for the mercury iOS browser, or at least older versions of the webkit engine */ + || (/AppleWebKit\/5([0-2]|3[0-2])/i).test(navigator.userAgent) + ) +) + +/** + * Partial Ajax Implementation + * + * @param url: defines url to make partial request + * @param container: defines id of container to input partial result + * @param s_call: success callback function that takes o as arg + * o.tId + * o.status + * o.statusText + * o.getResponseHeader[ ] + * o.getAllResponseHeaders + * o.responseText + * o.responseXML + * o.argument + * @param f_call: failure callback + * @param args arguments + */ +function ypjax(url,container,s_call,f_call,args){ + var method='GET'; + if(args===undefined){ + args=null; + } + + // Set special header for partial ajax == HTTP_X_PARTIAL_XHR + YUC.initHeader('X-PARTIAL-XHR',true); + + // wrapper of passed callback + var s_wrapper = (function(o){ + return function(o){ + YUD.get(container).innerHTML=o.responseText; + YUD.setStyle(container,'opacity','1.0'); + //execute the given original callback + if (s_call !== undefined){ + s_call(o); + } + } + })() + YUD.setStyle(container,'opacity','0.3'); + YUC.asyncRequest(method,url,{ + success:s_wrapper, + failure:function(o){ + //failure + window.location = url; + } + },args); + +} + +/** + * tooltip activate + */ +function tooltip_activate(){ + function toolTipsId(){ + var ids = []; + var tts = YUQ('.tooltip'); + for (var i = 0; i < tts.length; i++) { + // if element doesn't not have and id + // autogenerate one for tooltip + if (!tts[i].id){ + tts[i].id='tt'+((i*100)+tts.length); + } + ids.push(tts[i].id); + } + return ids + }; + var myToolTips = new YAHOO.widget.Tooltip("tooltip", { + context: [[toolTipsId()],"tl","bl",null,[0,5]], + monitorresize:false, + xyoffset :[0,0], + autodismissdelay:300000, + hidedelay:5, + showdelay:20, + }); +}