aboutsummaryrefslogtreecommitdiffstats
path: root/public
diff options
context:
space:
mode:
authorskyblue <ssx205@gmail.com>2014-03-23 22:40:35 +0800
committerskyblue <ssx205@gmail.com>2014-03-23 22:40:35 +0800
commit4bac3616055110da6f060e98174bc2381ef91286 (patch)
tree6fc09df1b6bef1a73fac40771702ae5f4f71f1d4 /public
parentb9302749ddc0e0a10911a83bf80e165b792c8c1e (diff)
parentf7f175a0793a53f3c50d20d89e324a610f94c442 (diff)
downloadgitea-4bac3616055110da6f060e98174bc2381ef91286.tar.gz
gitea-4bac3616055110da6f060e98174bc2381ef91286.zip
merge with branch master
Diffstat (limited to 'public')
-rwxr-xr-xpublic/css/gogs.css8
-rw-r--r--public/css/markdown.css9
-rw-r--r--public/img/404.pngbin0 -> 9776 bytes
-rw-r--r--public/img/500.pngbin0 -> 12087 bytes
-rw-r--r--public/js/app.js136
-rw-r--r--public/js/lib.js2
6 files changed, 129 insertions, 26 deletions
diff --git a/public/css/gogs.css b/public/css/gogs.css
index 78040bee51..65a6c03d71 100755
--- a/public/css/gogs.css
+++ b/public/css/gogs.css
@@ -346,6 +346,10 @@ html, body {
border-left: 4px solid #DD4B39;
}
+#gogs-repo-setting-container .form-horizontal label {
+ line-height: 30px;
+}
+
/* gogits user ssh keys */
#gogs-ssh-keys .list-group-item {
@@ -575,12 +579,12 @@ html, body {
min-width: 200px;
}
-#gogs-repo-clone .dropdown-menu{
+#gogs-repo-clone .dropdown-menu {
width: 400px;
padding: 20px;
}
-#gogs-repo-clone .input-group{
+#gogs-repo-clone .input-group {
margin-bottom: 15px;
}
diff --git a/public/css/markdown.css b/public/css/markdown.css
index a810fa3ce7..d46fd94365 100644
--- a/public/css/markdown.css
+++ b/public/css/markdown.css
@@ -135,13 +135,12 @@
box-shadow: inset 40px 0 0 #f5f5f5, inset 41px 0 0 #ccc;
}
-.markdown > pre > code,
-.markdown > pre > ol.linenums > li > code {
+.markdown > pre > code {
white-space: pre;
word-wrap: normal;
}
-.markdown > pre > ol.linenums > li > code {
+.markdown > pre > ol.linenums > li {
padding: 0 10px;
}
@@ -175,6 +174,10 @@
margin-bottom: 0;
}
+.markdown img {
+ max-width: 100%;
+}
+
.markdown .btn {
color: #fff;
}
diff --git a/public/img/404.png b/public/img/404.png
new file mode 100644
index 0000000000..1f0ee0ef49
--- /dev/null
+++ b/public/img/404.png
Binary files differ
diff --git a/public/img/500.png b/public/img/500.png
new file mode 100644
index 0000000000..2c122fde93
--- /dev/null
+++ b/public/img/500.png
Binary files differ
diff --git a/public/js/app.js b/public/js/app.js
index f179342f4b..d5185580f6 100644
--- a/public/js/app.js
+++ b/public/js/app.js
@@ -2,6 +2,56 @@ var Gogits = {
"PageIsSignup": false
};
+(function($){
+ // extend jQuery ajax, set csrf token value
+ var ajax = $.ajax;
+ $.extend({
+ ajax: function(url, options) {
+ if (typeof url === 'object') {
+ options = url;
+ url = undefined;
+ }
+ options = options || {};
+ url = options.url;
+ var csrftoken = $('meta[name=_csrf]').attr('content');
+ var headers = options.headers || {};
+ var domain = document.domain.replace(/\./ig, '\\.');
+ if (!/^(http:|https:).*/.test(url) || eval('/^(http:|https:)\\/\\/(.+\\.)*' + domain + '.*/').test(url)) {
+ headers = $.extend(headers, {'X-Csrf-Token':csrftoken});
+ }
+ options.headers = headers;
+ var callback = options.success;
+ options.success = function(data){
+ if(data.once){
+ // change all _once value if ajax data.once exist
+ $('[name=_once]').val(data.once);
+ }
+ if(callback){
+ callback.apply(this, arguments);
+ }
+ };
+ return ajax(url, options);
+ },
+
+ changeHash: function(hash) {
+ if(history.pushState) {
+ history.pushState(null, null, hash);
+ }
+ else {
+ location.hash = hash;
+ }
+ },
+
+ deSelect: function() {
+ if(window.getSelection) {
+ window.getSelection().removeAllRanges();
+ } else {
+ document.selection.empty();
+ }
+ }
+ });
+}(jQuery));
+
(function ($) {
Gogits.showTab = function (selector, index) {
@@ -65,7 +115,7 @@ var Gogits = {
};
// fix dropdown inside click
Gogits.initDropDown = function(){
- $('.dropdown-menu').on('click','a,button,input,select',function(e){
+ $('.dropdown-menu.no-propagation').on('click',function(e){
e.stopPropagation();
});
};
@@ -77,25 +127,6 @@ var Gogits = {
$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 () {
@@ -115,6 +146,70 @@ var Gogits = {
});
}
+ Gogits.renderCodeView = function () {
+ function selectRange($list, $select, $from){
+ $list.removeClass('active');
+ if($from){
+ var a = parseInt($select.attr('rel').substr(1));
+ var b = parseInt($from.attr('rel').substr(1));
+ var c;
+ if(a != b){
+ if(a > b){
+ c = a;
+ a = b;
+ b = c;
+ }
+ var classes = [];
+ for(i = a; i <= b; i++) {
+ classes.push('.L'+i);
+ }
+ $list.filter(classes.join(',')).addClass('active');
+ $.changeHash('#L' + a + '-' + 'L' + b);
+ return
+ }
+ }
+ $select.addClass('active');
+ $.changeHash('#' + $select.attr('rel'));
+ }
+
+ $(document).on('click', '.lines-num span', function (e) {
+ var $select = $(this);
+ var $list = $select.parent().siblings('.lines-code').find('ol.linenums > li');
+ selectRange($list, $list.filter('[rel='+$select.attr('rel')+']'), (e.shiftKey?$list.filter('.active').eq(0):null));
+ $.deSelect();
+ });
+
+ $('.code-view .lines-code > pre').each(function(){
+ var $pre = $(this);
+ var $lineCode = $pre.parent();
+ var $lineNums = $lineCode.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>');
+ }
+ }
+ });
+
+ $(window).on('hashchange', function(e) {
+ var m = window.location.hash.match(/^#(L\d+)\-(L\d+)$/);
+ var $list = $('.code-view ol.linenums > li');
+ if(m){
+ var $first = $list.filter('.'+m[1]);
+ selectRange($list, $first, $list.filter('.'+m[2]));
+ $("html, body").scrollTop($first.offset().top-200);
+ console.log($first.offset().top);
+ return;
+ }
+ m = window.location.hash.match(/^#(L\d+)$/);
+ if(m){
+ var $first = $list.filter('.'+m[1]);
+ selectRange($list, $first);
+ $("html, body").scrollTop($first.offset().top-200);
+ }
+ }).trigger('hashchange');
+ };
+
})(jQuery);
// ajax utils
@@ -144,6 +239,7 @@ function initCore() {
Gogits.initModals();
Gogits.initDropDown();
Gogits.renderMarkdown();
+ Gogits.renderCodeView();
}
function initRegister() {
diff --git a/public/js/lib.js b/public/js/lib.js
index b5cc41c042..8735ac9c11 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+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;
+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.setAttribute("rel", "L"+(i+d+1)),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"],