From fc7481c60c57f9a7040aff322912013bbf522d92 Mon Sep 17 00:00:00 2001 From: Tomofumi Tanaka Date: Tue, 16 Jul 2013 01:10:52 +0900 Subject: [PATCH] Add copy to clipboard clone URL --- src/main/twirl/main.scala.html | 3 +- src/main/twirl/repo/tab.scala.html | 3 +- src/main/twirl/wiki/tab.scala.html | 3 +- src/main/webapp/assets/common/js/gitbucket.js | 29 ++++++++++++++++++ .../webapp/assets/zclip/ZeroClipboard.min.js | 8 +++++ .../webapp/assets/zclip/ZeroClipboard.swf | Bin 0 -> 1635 bytes 6 files changed, 43 insertions(+), 3 deletions(-) create mode 100644 src/main/webapp/assets/zclip/ZeroClipboard.min.js create mode 100644 src/main/webapp/assets/zclip/ZeroClipboard.swf diff --git a/src/main/twirl/main.scala.html b/src/main/twirl/main.scala.html index 9ff77d346..cdfa8eaac 100644 --- a/src/main/twirl/main.scala.html +++ b/src/main/twirl/main.scala.html @@ -26,6 +26,7 @@ + - \ No newline at end of file + diff --git a/src/main/twirl/repo/tab.scala.html b/src/main/twirl/repo/tab.scala.html index 8a1d8596c..f645e0046 100644 --- a/src/main/twirl/repo/tab.scala.html +++ b/src/main/twirl/repo/tab.scala.html @@ -30,9 +30,10 @@ Commits Tags@if(repository.tags.length > 0){ @repository.tags.length}
  • -
    +
    HTTP +
  • diff --git a/src/main/twirl/wiki/tab.scala.html b/src/main/twirl/wiki/tab.scala.html index abca14516..3ce381b9e 100644 --- a/src/main/twirl/wiki/tab.scala.html +++ b/src/main/twirl/wiki/tab.scala.html @@ -6,9 +6,10 @@ Pages Wiki History
  • -
    +
    HTTP +
  • diff --git a/src/main/webapp/assets/common/js/gitbucket.js b/src/main/webapp/assets/common/js/gitbucket.js index c8160c999..b784342d9 100644 --- a/src/main/webapp/assets/common/js/gitbucket.js +++ b/src/main/webapp/assets/common/js/gitbucket.js @@ -8,5 +8,34 @@ $(function(){ $('img[data-toggle=tooltip]').tooltip(); $('a[data-toggle=tooltip]').tooltip(); + // copy to clipboard + (function() { + // Find ZeroClipboard.swf file URI from ZeroClipboard JavaScript file path. + // NOTE(tanacasino) I think this way is wrong... but i don't know correct way. + var moviePath = (function() { + var zclipjs = "ZeroClipboard.min.js"; + var scripts = document.getElementsByTagName("script"); + var i = scripts.length; + while(i--) { + var match = scripts[i].src.match(zclipjs + "$"); + if(match) { + return match.input.substr(0, match.input.length - 6) + 'swf'; + } + } + })(); + var clip = new ZeroClipboard($("#repository-url-copy"), { + moviePath: moviePath + }); + var title = $('#repository-url-copy').attr('title'); + clip.on('complete', function(client, args) { + $(clip.htmlBridge).attr('title', 'copied!').tooltip('fixTitle').tooltip('show'); + $(clip.htmlBridge).attr('title', title).tooltip('fixTitle'); + }); + $(clip.htmlBridge).tooltip({ + title: title, + placement: $('#repository-url-copy').attr('data-placement') + }); + })(); + prettyPrint(); }); diff --git a/src/main/webapp/assets/zclip/ZeroClipboard.min.js b/src/main/webapp/assets/zclip/ZeroClipboard.min.js new file mode 100644 index 000000000..32535fddf --- /dev/null +++ b/src/main/webapp/assets/zclip/ZeroClipboard.min.js @@ -0,0 +1,8 @@ +/*! + * zeroclipboard + * The Zero Clipboard library provides an easy way to copy text to the clipboard using an invisible Adobe Flash movie, and a JavaScript interface. + * Copyright 2012 Jon Rohan, James M. Greene, . + * Released under the MIT license + * http://jonrohan.github.com/ZeroClipboard/ + * v1.1.7 + */(function(){"use strict";var a=function(a,b){var c=a.style[b];a.currentStyle?c=a.currentStyle[b]:window.getComputedStyle&&(c=document.defaultView.getComputedStyle(a,null).getPropertyValue(b));if(c=="auto"&&b=="cursor"){var d=["a"];for(var e=0;e=0?"&":"?")+"nocache="+(new Date).getTime()},i=function(a){var b=[];return a.trustedDomains&&(typeof a.trustedDomains=="string"?b.push("trustedDomain="+a.trustedDomains):b.push("trustedDomain="+a.trustedDomains.join(","))),b.join("&")},j=function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c ';b=document.createElement("div"),b.id="global-zeroclipboard-html-bridge",b.setAttribute("class","global-zeroclipboard-container"),b.setAttribute("data-clipboard-ready",!1),b.style.position="absolute",b.style.left="-9999px",b.style.top="-9999px",b.style.width="15px",b.style.height="15px",b.style.zIndex="9999",b.innerHTML=c,document.body.appendChild(b)}a.htmlBridge=b,a.flashBridge=document["global-zeroclipboard-flash-bridge"]||b.children[0].lastElementChild};l.prototype.resetBridge=function(){this.htmlBridge.style.left="-9999px",this.htmlBridge.style.top="-9999px",this.htmlBridge.removeAttribute("title"),this.htmlBridge.removeAttribute("data-clipboard-text"),f(m,this.options.activeClass),m=null,this.options.text=null},l.prototype.ready=function(){var a=this.htmlBridge.getAttribute("data-clipboard-ready");return a==="true"||a===!0},l.prototype.reposition=function(){if(!m)return!1;var a=g(m);this.htmlBridge.style.top=a.top+"px",this.htmlBridge.style.left=a.left+"px",this.htmlBridge.style.width=a.width+"px",this.htmlBridge.style.height=a.height+"px",this.htmlBridge.style.zIndex=a.zIndex+1,this.setSize(a.width,a.height)},l.dispatch=function(a,b){l.prototype._singleton.receiveEvent(a,b)},l.prototype.on=function(a,b){var c=a.toString().split(/\s/g);for(var d=0;d<|i+I>}9Z`;@rK0}c_ByHJ}?I?+JQ#Rf>o5+@IXOp$p(Z-Ri zjT772`m$RD392LV(Bg(7Rg&_hFAWOxAN0NGOaDNhi~fKD1)ZSidmk2k>@TQ0hg5vo zE=owlnQtyU^UY8?B=SEA8Tlh2SAf*>R|z4%9{(#4vK(0U(pJ4uJnXt&xP;b|=}r{& zmdfRWgM-h(sVY9a1 zkDg3V52{+`Y0+LkaFddjS>`V9axV(YbF*_;$TF8~Kj^Zk%6dK5F_|b=KAZ_VzWMfm z?eiJiWnpKzd=@BjA}4Zrb;a`Ayx4I0Vew&c#`g_=pL=%e=il+vC;M&BS+V zCud|4ufAYjaqe-cIA57tNRJ`VEz_(m65>-tN4}GKfEHz z_4|MSZfzMS{x{{yPu=Wy+dRl#cw9CuVL4&XWk>3E zFK{BRw);`!dzy(+JNz&*x}r4Zm~Zt&ZSM0xOSOKKLUrVoCfaUK>+*=zS;T0_BT*oW z_vg&BYW*Pe1A%Tkzv4<5A;;3ry24y%&!e8dZ8DeZp^zKC#f^2JSv*+tY+nw1KQi1? z+vqXDPQ-&S8wLF^;#S@7GRM0;SfjHQTG?JG&sQps%I&`6Mvga>w%m^#H=MZ8{!-fh z)J3qK-cwF%KE7&>$AeoJgVsDe3Ns^TpQnM>{!fwX=jXPRj7<1hWa7dOh8iAWPhD-B zn|(af5xiEgfD=itU(4V7*aUN3{~&GINXI1@%Od}0L~DBi>vbG6)Z2W|@fwcn8VTp$ zIabseO4R4v+3Q4_6|jRXJQ|Lo*I^p7tXju$Ev2@;R(qL4GdbnDgNMTAjg98+_UbR1 z->z=y19f+20M?t|ZEC5y`_0Ip(?ev(V{U$Rpd@tJ%;ZDjN!Ux9nQsdhHZ!44P$G+| z%eWJ+x}A_RjQevMrs0TtE-r!`iABTLl5O!{_PN-Il*(^$NAT4guCX3#JIJBKL%N@W zDs!Wk{D_)S;No2iJB}>?9=&g< zDkD@GrAm$}d8&+2Wt_qUg-a9)6fRS^O5qyKT&Hk@!c7Xd^divQXZi!sXMn;ig))T- zg*giI6c#8vr0_X~M-(1Y_=3VBg(V7KQdp+&gyz4Z@RUN0=IRtysrGYH#4?@bEdQ0Zqhvqdx8G_y1O@y825`e`9$qzuudG)5LeK@e2+V|?A`Jt{WP!*dK$KA+Y7Pj^1JTBS=;I&)F^tMUhOwfiXX47&2q}_o z`~Yz!UL&oE(iL_IV-xg6V9?5mB-U{Aiw{QcOzHa12`>pCi>`;8k=Dm89G^A^N! zv=^4gKlNo5}D1^E12w0geG*f|H4sc!7VmEvzrxwO`LWIx`8cbR`2 zi(z~?w!dJDD3{omD3{rjDPk(`e`Bh-aYFRA+E#92+K0CMzAf8TR-IRs{0}E5nyM)u zp5yLF_)v&NUi0)~{)jnM({70UPQDZ)b%ZqJ>#!bvMrX{}UR&nm52 hrB$!AH2nOW+(@nt#n7>F@%Mf4Z~ZAE{{=lE$MA>_KQRCR literal 0 HcmV?d00001