diff --git a/.ruby-version b/.ruby-version index 31af499..76521af 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -ruby-1.9.3 \ No newline at end of file +ruby-2.2.0 diff --git a/Gemfile b/Gemfile index a28dfb2..1fec769 100644 --- a/Gemfile +++ b/Gemfile @@ -1,3 +1,4 @@ source "http://rubygems.org" gem "github-pages" +gem "rouge" diff --git a/Gemfile.lock b/Gemfile.lock index 91118af..53819a4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,50 +1,129 @@ GEM remote: http://rubygems.org/ specs: - RedCloth (4.2.9) - classifier (1.3.3) - fast-stemmer (>= 1.0.0) + activesupport (4.2.6) + i18n (~> 0.7) + json (~> 1.7, >= 1.7.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + addressable (2.4.0) + coffee-script (2.4.1) + coffee-script-source + execjs + coffee-script-source (1.10.0) colorator (0.1) - commander (4.1.5) - highline (~> 1.6.11) - directory_watcher (1.4.1) - fast-stemmer (1.0.2) - github-pages (1) - RedCloth (= 4.2.9) - jekyll (= 1.1.2) - kramdown (= 1.0.2) - liquid (= 2.5.1) - maruku (= 0.6.1) - rdiscount (= 1.6.8) - redcarpet (= 2.2.2) - highline (1.6.19) - jekyll (1.1.2) - classifier (~> 1.3) + ethon (0.9.0) + ffi (>= 1.3.0) + execjs (2.7.0) + faraday (0.9.2) + multipart-post (>= 1.2, < 3) + ffi (1.9.13) + gemoji (2.1.0) + github-pages (86) + github-pages-health-check (= 1.1.0) + jekyll (= 3.1.6) + jekyll-coffeescript (= 1.0.1) + jekyll-feed (= 0.5.1) + jekyll-gist (= 1.4.0) + jekyll-github-metadata (= 2.0.2) + jekyll-mentions (= 1.1.3) + jekyll-paginate (= 1.1.0) + jekyll-redirect-from (= 0.10.0) + jekyll-sass-converter (= 1.3.0) + jekyll-seo-tag (= 2.0.0) + jekyll-sitemap (= 0.10.0) + jemoji (= 0.6.2) + kramdown (= 1.11.1) + liquid (= 3.0.6) + listen (= 3.0.6) + mercenary (~> 0.3) + rouge (= 1.11.1) + terminal-table (~> 1.4) + github-pages-health-check (1.1.0) + addressable (~> 2.3) + net-dns (~> 0.8) + octokit (~> 4.0) + public_suffix (~> 1.4) + typhoeus (~> 0.7) + html-pipeline (2.4.1) + activesupport (>= 2, < 5) + nokogiri (>= 1.4) + i18n (0.7.0) + jekyll (3.1.6) colorator (~> 0.1) - commander (~> 4.1.3) - directory_watcher (~> 1.4.1) - kramdown (~> 1.0.2) - liquid (~> 2.5.1) - maruku (~> 0.5) - pygments.rb (~> 0.5.0) - redcarpet (~> 2.2.2) - safe_yaml (~> 0.7.0) - kramdown (1.0.2) - liquid (2.5.1) - maruku (0.6.1) - syntax (>= 1.0.0) - posix-spawn (0.3.6) - pygments.rb (0.5.2) - posix-spawn (~> 0.3.6) - yajl-ruby (~> 1.1.0) - rdiscount (1.6.8) - redcarpet (2.2.2) - safe_yaml (0.7.1) - syntax (1.0.0) - yajl-ruby (1.1.0) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 1.1) + kramdown (~> 1.3) + liquid (~> 3.0) + mercenary (~> 0.3.3) + rouge (~> 1.7) + safe_yaml (~> 1.0) + jekyll-coffeescript (1.0.1) + coffee-script (~> 2.2) + jekyll-feed (0.5.1) + jekyll-gist (1.4.0) + octokit (~> 4.2) + jekyll-github-metadata (2.0.2) + jekyll (~> 3.1) + octokit (~> 4.0) + jekyll-mentions (1.1.3) + html-pipeline (~> 2.3) + jekyll (~> 3.0) + jekyll-paginate (1.1.0) + jekyll-redirect-from (0.10.0) + jekyll (>= 2.0) + jekyll-sass-converter (1.3.0) + sass (~> 3.2) + jekyll-seo-tag (2.0.0) + jekyll (~> 3.1) + jekyll-sitemap (0.10.0) + jekyll-watch (1.4.0) + listen (~> 3.0, < 3.1) + jemoji (0.6.2) + gemoji (~> 2.0) + html-pipeline (~> 2.2) + jekyll (>= 3.0) + json (1.8.3) + kramdown (1.11.1) + liquid (3.0.6) + listen (3.0.6) + rb-fsevent (>= 0.9.3) + rb-inotify (>= 0.9.7) + mercenary (0.3.6) + mini_portile2 (2.1.0) + minitest (5.9.0) + multipart-post (2.0.0) + net-dns (0.8.0) + nokogiri (1.6.8) + mini_portile2 (~> 2.1.0) + pkg-config (~> 1.1.7) + octokit (4.3.0) + sawyer (~> 0.7.0, >= 0.5.3) + pkg-config (1.1.7) + public_suffix (1.5.3) + rb-fsevent (0.9.7) + rb-inotify (0.9.7) + ffi (>= 0.5.0) + rouge (1.11.1) + safe_yaml (1.0.4) + sass (3.4.22) + sawyer (0.7.0) + addressable (>= 2.3.5, < 2.5) + faraday (~> 0.8, < 0.10) + terminal-table (1.6.0) + thread_safe (0.3.5) + typhoeus (0.8.0) + ethon (>= 0.8.0) + tzinfo (1.2.2) + thread_safe (~> 0.1) PLATFORMS ruby DEPENDENCIES github-pages + rouge + +BUNDLED WITH + 1.12.5 diff --git a/README.markdown b/README.markdown index 8f3f7b9..96afe56 100644 --- a/README.markdown +++ b/README.markdown @@ -4,6 +4,9 @@ Spring's project pages are based on [Jekyll](http://jekyllrb.com) and [GitHub Pa This approach may sound a little funky (and it is), but it's way better than the misery of Git submodules. In fact, it's actually pretty easy. If you're just getting started, then follow the directions immediately below. If you're needing a refresher on how to keep things up to date, then head to the section at the bottom on "keeping up to date". +> ***Note:*** Github changed their rendering (a lot) in April 2016. If you are seeing pages build failures since that time, then you probably need to merge some changes from this upstream. Follow the instructions below, and for testing locally use rubiy 2.x and don't forget to `bundle exec ...` everything. + + # How to start a new `gh-pages` project page @@ -15,8 +18,7 @@ From within your Spring project's git checkout directory: ### Remove all files - git rm -rf * - git rm -rf '.*' + git rm -rf `git ls-files` && rm -rf * ### Add the gh-pages-upstream remote @@ -50,11 +52,11 @@ At this point you need to make a decision: is your project a "grouping project", Based on your choice above, copy the correct sample page to `index.html`, e.g.: - $ cp sample-pages/project.html index.html + $ cp _sample-pages/project.html index.html or - $ cp sample-pages/project_group.html index.html + $ cp _sample-pages/project_group.html index.html ## Edit the content of your home page @@ -96,15 +98,16 @@ Assuming you're already within your project's clone directory, and you've alread ### Install jekyll if you have not already -> **Note:** Jekyll 1.1.2 is a known good version. +> **Note:** Jekyll 3.0.4 is a known good version, and it is specifically referred to in `Gemfile.lock` so you have to use `bundle` (not `gem install ...`) to install it: - gem install jekyll + gem install bundler + bundle ### Run jekyll Use the `--watch` flag to pick up changes to files as you make them, allowing you a nice edit-and-refresh workflow. - jekyll serve --watch + bundle exec jekyll serve --watch > **Important:** Because the `baseurl` is set explicitly within your project's `_config.yml` file, you'll need to fully-qualify the URL to view your project. For example, if your project is named "spring-xyz", your URL when running Jekyll locally will be . Don't forget the trailing slash! You'll get a 404 without it. diff --git a/_config.yml b/_config.yml index c730f77..7d76a48 100644 --- a/_config.yml +++ b/_config.yml @@ -1,11 +1,17 @@ ### Global gh-pages pre-amble safe: true lsi: false -pygments: true -markdown: redcarpet -redcarpet: - extensions: ["no_intra_emphasis", "fenced_code_blocks", "autolink", "tables", "with_toc_data"] - +highlighter: rouge +markdown: kramdown +encoding: UTF-8 +github: [metadata] +kramdown: + input: GFM + hard_wrap: false + smart_quotes: ["apos", "apos", "quot", "quot"] +gems: + - jekyll-coffeescript + - jekyll-paginate ### The following properties will change on a project-by-project basis @@ -28,6 +34,6 @@ custom_gradle_template: false ### The following properties are constant for most projects -main_site_url: http://spring.io -projects_site_url: http://projects.spring.io -forum_url: http://forum.spring.io +main_site_url: https://spring.io +projects_site_url: https://projects.spring.io +questions_url: https://spring.io/questions diff --git a/_includes/badges.html b/_includes/badges.html index ae873f4..e9d8571 100644 --- a/_includes/badges.html +++ b/_includes/badges.html @@ -1,7 +1,7 @@ {% if page.badges.twitter %} diff --git a/_includes/widget_templates.html b/_includes/widget_templates.html index 4e609c6..b06f96e 100644 --- a/_includes/widget_templates.html +++ b/_includes/widget_templates.html @@ -18,8 +18,12 @@
- Reference - API + {@ if (release.refDocUrl !== '') { @} + Reference + {@ }; @} + {@ if (release.apiDocUrl !== '') { @} + API + {@ }; @}
{@ }); @} diff --git a/_sample-pages/project.html b/_sample-pages/project.html index b0435da..0fdee0b 100644 --- a/_sample-pages/project.html +++ b/_sample-pages/project.html @@ -75,6 +75,7 @@ corpus callosum! * ... + ## Quick Start {% include download_widget.md %} diff --git a/js/ZeroClipboard.min.js b/js/ZeroClipboard.min.js deleted file mode 100755 index 32535fd..0000000 --- a/js/ZeroClipboard.min.js +++ /dev/null @@ -1,8 +0,0 @@ -/*! - * 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;do;o++)n[o].fn.apply(n[o].ctx,e);return this},off:function(t,e){var n=this.e||(this.e={}),o=n[t],i=[];if(o&&e)for(var r=0,c=o.length;c>r;r++)o[r].fn!==e&&o[r].fn._!==e&&i.push(o[r]);return i.length?n[t]=i:delete n[t],this}},e.exports=o},{}],8:[function(e,n,o){!function(i,r){if("function"==typeof t&&t.amd)t(["module","select"],r);else if("undefined"!=typeof o)r(n,e("select"));else{var c={exports:{}};r(c,i.select),i.clipboardAction=c.exports}}(this,function(t,e){"use strict";function n(t){return t&&t.__esModule?t:{"default":t}}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var i=n(e),r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol?"symbol":typeof t},c=function(){function t(t,e){for(var n=0;n pre").each(function(index) { - Spring.buildCopyButton($(this), index); - } - ); - } + + $("pre.highlight").each(function(index) { + Spring.buildCopyButton($(this), index); + } + ); + var errorMessage = function() { + if (/Mac/i.test(navigator.userAgent)) { + return 'Press Cmd-C to Copy'; + } + else { + return 'Press Ctrl-C to Copy'; + } + }; + var snippets = new Clipboard('.copy-button'); + snippets.on('success', function(e) { + e.clearSelection(); + Spring.showTooltip(e.trigger, "Copied!"); + }); + snippets.on('error', function(e) { + Spring.showTooltip(e.trigger, errorMessage()); + }); +} + +Spring.showTooltip = function(elem, message) { + $(elem).tooltip({placement:'right', title:message}); + $(elem).tooltip('show'); + setTimeout(function(){$(elem).tooltip('destroy');},1000); } Spring.buildCopyButton = function (preEl, id) { - var codeBlockId = "code-block-"+ id; + var codeBlockId = "code-block-"+ id; var copyButtonId = "copy-button-" + id; preEl.attr('id', codeBlockId); - var button = $(''); + var button = $(''); preEl.before(button); - var zero = new ZeroClipboard(button); - $(zero.htmlBridge).tooltip({title: "copy to clipboard", placement: 'bottom'}); } diff --git a/js/projectDocumentationWidget.js b/js/projectDocumentationWidget.js index 900dab2..a52d9ba 100644 --- a/js/projectDocumentationWidget.js +++ b/js/projectDocumentationWidget.js @@ -95,7 +95,7 @@ Spring.SnippetView = Backbone.View.extend({ this.combinedTemplate = _.template( "
" +
         downloadTemplate.find("code:first").html() +
-        "{@ if (repository) { @}" +
+        "{@ if (typeof(repository) != \"undefined\") { @}" +
         repositoryTemplate.find("code:first").html() +
         "{@ } @}" +
         "
" @@ -107,9 +107,7 @@ Spring.SnippetView = Backbone.View.extend({ var html = $(this.combinedTemplate(this.model)); this.$el.html(html); - if (ZeroClipboard.detectFlashSupport()) { - Spring.buildCopyButton(html.find(":first"), "snippet"); - } + Spring.buildCopyButton(html.find(":first"), "snippet"); return this; },