aboutsummaryrefslogtreecommitdiff
path: root/public/js
diff options
context:
space:
mode:
Diffstat (limited to 'public/js')
-rw-r--r--public/js/app.js116
-rw-r--r--public/js/lib.js4
2 files changed, 111 insertions, 9 deletions
diff --git a/public/js/app.js b/public/js/app.js
index 30296bc3..f179342f 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -41,15 +41,15 @@ var Gogits = {
});
};
Gogits.initPopovers = function () {
- var hideAllPopovers = function() {
- $('[data-toggle=popover]').each(function() {
+ var hideAllPopovers = function () {
+ $('[data-toggle=popover]').each(function () {
$(this).popover('hide');
- });
+ });
};
- $(document).on('click', function(e) {
+ $(document).on('click', function (e) {
var $e = $(e.target);
- if($e.data('toggle') == 'popover'||$e.parents("[data-toggle=popover], .popover").length > 0){
+ if ($e.data('toggle') == 'popover' || $e.parents("[data-toggle=popover], .popover").length > 0) {
return;
}
hideAllPopovers();
@@ -63,12 +63,56 @@ var Gogits = {
var $tabs = $('[data-init=tabs]');
$tabs.find("li:eq(0) a").tab("show");
};
+ // fix dropdown inside click
+ Gogits.initDropDown = function(){
+ $('.dropdown-menu').on('click','a,button,input,select',function(e){
+ e.stopPropagation();
+ });
+ };
// render markdown
Gogits.renderMarkdown = function () {
- var $pre = $('.markdown').find('pre > code').parent();
- $pre.addClass("prettyprint");
+ var $md = $('.markdown');
+ var $pre = $md.find('pre > code').parent();
+ $pre.addClass('prettyprint linenums');
prettyPrint();
+
+ var $lineNums = $pre.parent().siblings('.lines-num');
+ if ($lineNums.length > 0) {
+ var nums = $pre.find('ol.linenums > li').length;
+ for (var i = 1; i <= nums; i++) {
+ $lineNums.append('<span id="L' + i + '" rel=".L' + i + '">' + i + '</span>');
+ }
+
+ var last;
+ $(document).on('click', '.lines-num span', function () {
+ var $e = $(this);
+ if (last) {
+ last.removeClass('active');
+ }
+ last = $e.parent().siblings('.lines-code').find('ol.linenums > ' + $e.attr('rel'));
+ last.addClass('active');
+ window.location.href = '#' + $e.attr('id');
+ });
+ }
+
+ // Set anchor.
+ var headers = {};
+ $md.find('h1, h2, h3, h4, h5, h6').each(function () {
+ var node = $(this);
+ var val = encodeURIComponent(node.text().toLowerCase().replace(/[^\w\- ]/g, '').replace(/[ ]/g, '-'));
+ var name = val;
+ if (headers[val] > 0) {
+ name = val + '-' + headers[val];
+ }
+ if (headers[val] == undefined) {
+ headers[val] = 1;
+ } else {
+ headers[val] += 1;
+ }
+ node = node.wrap('<div id="' + name + '" class="anchor-wrap" ></div>');
+ node.append('<a class="anchor" href="#' + name + '"><span class="octicon octicon-link"></span></a>');
+ });
}
})(jQuery);
@@ -98,6 +142,7 @@ function initCore() {
Gogits.initPopovers();
Gogits.initTabs();
Gogits.initModals();
+ Gogits.initDropDown();
Gogits.renderMarkdown();
}
@@ -142,6 +187,60 @@ function initUserSetting() {
});
}
+function initRepository() {
+ // clone group button script
+ (function () {
+ var $clone = $('.clone-group-btn');
+ if ($clone.length) {
+ var $url = $('.clone-group-url');
+ $clone.find('button[data-link]').on("click",function (e) {
+ var $this = $(this);
+ if (!$this.hasClass('btn-primary')) {
+ $clone.find('.btn-primary').removeClass('btn-primary').addClass("btn-default");
+ $(this).addClass('btn-primary').removeClass('btn-default');
+ $url.val($this.data("link"));
+ $clone.find('span.clone-url').text($this.data('link'));
+ }
+ }).eq(0).trigger("click");
+ // todo copy to clipboard
+ }
+ })();
+
+ // watching script
+ (function () {
+ var $watch = $('#gogs-repo-watching'),
+ watchLink = $watch.data("watch"),
+ unwatchLink = $watch.data("unwatch");
+ $watch.on('click', '.to-watch',function () {
+ if ($watch.hasClass("watching")) {
+ return false;
+ }
+ $.get(watchLink, function (json) {
+ if (json.ok) {
+ $watch.find('.text-primary').removeClass('text-primary');
+ $watch.find('.to-watch h4').addClass('text-primary');
+ $watch.find('.fa-eye-slash').removeClass('fa-eye-slash').addClass('fa-eye');
+ $watch.removeClass("no-watching").addClass("watching");
+ }
+ });
+ return false;
+ }).on('click', '.to-unwatch', function () {
+ if ($watch.hasClass("no-watching")) {
+ return false;
+ }
+ $.get(unwatchLink, function (json) {
+ if (json.ok) {
+ $watch.find('.text-primary').removeClass('text-primary');
+ $watch.find('.to-unwatch h4').addClass('text-primary');
+ $watch.find('.fa-eye').removeClass('fa-eye').addClass('fa-eye-slash');
+ $watch.removeClass("watching").addClass("no-watching");
+ }
+ });
+ return false;
+ });
+ })();
+}
+
(function ($) {
$(function () {
initCore();
@@ -152,5 +251,8 @@ function initUserSetting() {
if (body.data("page") == "user") {
initUserSetting();
}
+ if ($('.gogs-repo-nav').length) {
+ initRepository();
+ }
});
})(jQuery);
diff --git a/public/js/lib.js b/public/js/lib.js
index 2a98f277..b5cc41c0 100644
--- a/public/js/lib.js
+++ b/public/js/lib.js
@@ -340,7 +340,7 @@ q,"'\"`"]):d.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?
s+")*(?:\\x5D|$))+/")+")")])}(b=a.types)&&g.push(["typ",b]);b=(""+a.keywords).replace(/^ | $/g,"");b.length&&g.push(["kwd",RegExp("^(?:"+b.replace(/[\s,]+/g,"|")+")\\b"),q]);d.push(["pln",/^\s+/,q," \r\n\t\u00a0"]);b="^.[^\\s\\w.$@'\"`/\\\\]*";a.regexLiterals&&(b+="(?!s*/)");g.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,
q],["pun",RegExp(b),q]);return C(d,g)}function J(a,d,g){function b(a){var c=a.nodeType;if(c==1&&!x.test(a.className))if("br"===a.nodeName)s(a),a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)b(a);else if((c==3||c==4)&&g){var d=a.nodeValue,i=d.match(m);if(i)c=d.substring(0,i.index),a.nodeValue=c,(d=d.substring(i.index+i[0].length))&&a.parentNode.insertBefore(j.createTextNode(d),a.nextSibling),s(a),c||a.parentNode.removeChild(a)}}function s(a){function b(a,c){var d=
c?a.cloneNode(!1):a,e=a.parentNode;if(e){var e=b(e,1),g=a.nextSibling;e.appendChild(d);for(var i=g;i;i=g)g=i.nextSibling,e.appendChild(i)}return d}for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),d;(d=a.parentNode)&&d.nodeType===1;)a=d;c.push(a)}for(var x=/(?:^|\s)nocode(?:\s|$)/,m=/\r\n?|\n/,j=a.ownerDocument,k=j.createElement("li");a.firstChild;)k.appendChild(a.firstChild);for(var c=[k],i=0;i<c.length;++i)b(c[i]);d===(d|0)&&c[0].setAttribute("value",d);var r=j.createElement("ol");
-r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d)%10,k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
+r.className="linenums";for(var d=Math.max(0,d-1|0)||0,i=0,n=c.length;i<n;++i)k=c[i],k.className="L"+(i+d+1),k.firstChild||k.appendChild(j.createTextNode("\u00a0")),r.appendChild(k);a.appendChild(r)}function p(a,d){for(var g=d.length;--g>=0;){var b=d[g];F.hasOwnProperty(b)?D.console&&console.warn("cannot override language handler %s",b):F[b]=a}}function I(a,d){if(!a||!F.hasOwnProperty(a))a=/^\s*</.test(d)?"default-markup":"default-code";return F[a]}function K(a){var d=a.h;try{var g=T(a.c,a.i),b=g.a;
a.a=b;a.d=g.d;a.e=0;I(d,b)(a);var s=/\bMSIE\s(\d+)/.exec(navigator.userAgent),s=s&&+s[1]<=8,d=/\n/g,x=a.a,m=x.length,g=0,j=a.d,k=j.length,b=0,c=a.g,i=c.length,r=0;c[i]=m;var n,e;for(e=n=0;e<i;)c[e]!==c[e+2]?(c[n++]=c[e++],c[n++]=c[e++]):e+=2;i=n;for(e=n=0;e<i;){for(var p=c[e],w=c[e+1],t=e+2;t+2<=i&&c[t+1]===w;)t+=2;c[n++]=p;c[n++]=w;e=t}c.length=n;var f=a.c,h;if(f)h=f.style.display,f.style.display="none";try{for(;b<k;){var l=j[b+2]||m,B=c[r+2]||m,t=Math.min(l,B),A=j[b+1],G;if(A.nodeType!==1&&(G=x.substring(g,
t))){s&&(G=G.replace(d,"\r"));A.nodeValue=G;var L=A.ownerDocument,o=L.createElement("span");o.className=c[r+1];var v=A.parentNode;v.replaceChild(o,A);o.appendChild(A);g<l&&(j[b+1]=A=L.createTextNode(x.substring(t,l)),v.insertBefore(A,o.nextSibling))}g=t;g>=l&&(b+=2);g>=B&&(r+=2)}}finally{if(f)f.style.display=h}}catch(u){D.console&&console.log(u&&u.stack||u)}}var D=window,y=["break,continue,do,else,for,if,return,while"],E=[[y,"auto,case,char,const,default,double,enum,extern,float,goto,inline,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],M=[E,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,delegate,dynamic_cast,explicit,export,friend,generic,late_check,mutable,namespace,nullptr,property,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],N=[E,"abstract,assert,boolean,byte,extends,final,finally,implements,import,instanceof,interface,null,native,package,strictfp,super,synchronized,throws,transient"],
@@ -400,7 +400,7 @@ PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000
["kwd",/^-[_a-z]+/],["typ",/^[A-Z_]\w*/],["pun",/^[,.;]/]]),["erlang","erl"]);
// lang-go.js
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
+// PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xa0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:"(?:[^"\\]|\\[\S\s])*(?:"|$)|'(?:[^'\\]|\\[\S\s])+(?:'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\n\r]*|\/\*[\S\s]*?\*\/)/],["pln",/^(?:[^"'/`]|\/(?![*/]))+/]]),["go"]);
// lang-hs.js
PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t-\r ]+/,null,"\t\n\u000b\u000c\r "],["str",/^"(?:[^\n\f\r"\\]|\\[\S\s])*(?:"|$)/,null,'"'],["str",/^'(?:[^\n\f\r'\\]|\\[^&])'?/,null,"'"],["lit",/^(?:0o[0-7]+|0x[\da-f]+|\d+(?:\.\d+)?(?:e[+-]?\d+)?)/i,null,"0123456789"]],[["com",/^(?:--+[^\n\f\r]*|{-(?:[^-]|-+[^}-])*-})/],["kwd",/^(?:case|class|data|default|deriving|do|else|if|import|in|infix|infixl|infixr|instance|let|module|newtype|of|then|type|where|_)(?=[^\d'A-Za-z]|$)/,