diff options
| author | Igor Minar | 2011-06-07 12:53:40 -0700 | 
|---|---|---|
| committer | Igor Minar | 2011-06-07 14:56:01 -0700 | 
| commit | 25b3438fd78184cbbc420e2e051888f4f192a68a (patch) | |
| tree | 8b63995fe08546348661f3704ded38305fd7ab9c | |
| parent | f21b9214e657d41e20fb761948b05fc2c7c7f5a3 (diff) | |
| download | angular.js-25b3438fd78184cbbc420e2e051888f4f192a68a.tar.bz2 | |
add appcache for docs site - caches only css/js/img resources
| -rw-r--r-- | Rakefile | 7 | ||||
| -rw-r--r-- | docs/src/gen-docs.js | 29 | ||||
| -rw-r--r-- | docs/src/templates/index.html | 11 | ||||
| -rw-r--r-- | docs/src/templates/offline.html | 4 | ||||
| -rw-r--r-- | lib/nodeserver/server.js | 3 | 
5 files changed, 52 insertions, 2 deletions
| @@ -241,6 +241,13 @@ task :package => [:clean, :compile, :docs] do      f.write text.sub('angular-scenario.js', "angular-scenario-#{version}.js")    end +  File.open("#{pkg_dir}/docs-#{version}/app-cache.manifest", File::RDWR) do |f| +    text = f.read +    f.rewind +    f.write text.sub('angular.min.js', "angular-#{version}.min.js") +  end + +    %x(tar -czf #{path_to(tarball)} -C #{path_to('pkg')} .)    puts "Package created: #{path_to(tarball)}" diff --git a/docs/src/gen-docs.js b/docs/src/gen-docs.js index 1e5a09c4..ead01c32 100644 --- a/docs/src/gen-docs.js +++ b/docs/src/gen-docs.js @@ -27,6 +27,10 @@ var writes = callback.chain(function(){    writer.copyDir('img', writes.waitFor());    writer.copyDir('examples', writes.waitFor());    writer.copyTpl('index.html', writes.waitFor()); +  writer.copyTpl('offline.html', writes.waitFor()); +  writer.output('app-cache.manifest', +                appCacheTemplate().replace(/%TIMESTAMP%/, (new Date()).toISOString()), +                writes.waitFor());    writer.merge(['docs.js',                  'doc_widgets.js'],                 'docs-combined.js', @@ -59,3 +63,28 @@ writer.makeDir('build/docs/syntaxhighlighter', work);  ///////////////////////////////////  function now(){ return new Date().getTime(); } + + +function appCacheTemplate() { +  return ["CACHE MANIFEST", +          "# %TIMESTAMP%", +          "", +          "# cache all of these", +          "CACHE:", +          "jquery.min.js", +          "syntaxhighlighter/syntaxhighlighter-combined.js", +          "../angular.min.js", +          "docs-combined.js", +          "docs-keywords.js", +          "docs-combined.css", +          "syntaxhighlighter/syntaxhighlighter-combined.css", +          "img/texture_1.png", +          "img/yellow_bkgnd.jpg", +          "", +          "FALLBACK:", +          "/ offline.html", +          "", +          "# allow access to google analytics and twitter when we are online", +          "NETWORK:", +          "*"].join('\n'); +} diff --git a/docs/src/templates/index.html b/docs/src/templates/index.html index 9e0c64ba..cdd04e1d 100644 --- a/docs/src/templates/index.html +++ b/docs/src/templates/index.html @@ -1,7 +1,8 @@  <!doctype html>  <html xmlns:ng="http://angularjs.org/"        xmlns:doc="http://docs.angularjs.org/" -      ng:controller="DocsController"> +      ng:controller="DocsController" +      manifest="app-cache.manifest">  <head>    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />    <title ng:bind-template="<angular/>: {{partialTitle}}"><angular/></title> @@ -20,6 +21,14 @@        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);      })(); + +    // force page reload when new update is available +    window.applicationCache && window.applicationCache.addEventListener('updateready', function(e) { +      if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { +        window.applicationCache.swapCache(); +        window.location.reload(); +      } +    }, false);    </script>  </head> diff --git a/docs/src/templates/offline.html b/docs/src/templates/offline.html new file mode 100644 index 00000000..9996eb1c --- /dev/null +++ b/docs/src/templates/offline.html @@ -0,0 +1,4 @@ +<h2>OFFLINE</h2> + +<p>This page if unavailable because your are offline.</p> +<p>Please connect to the Internet and reload the page.</p> diff --git a/lib/nodeserver/server.js b/lib/nodeserver/server.js index d72bf02f..471bba94 100644 --- a/lib/nodeserver/server.js +++ b/lib/nodeserver/server.js @@ -79,7 +79,8 @@ StaticServlet.MimeMap = {    'jpg': 'image/jpeg',    'jpeg': 'image/jpeg',    'gif': 'image/gif', -  'png': 'image/png' +  'png': 'image/png', +  'manifest': 'text/cache-manifest'  };  StaticServlet.prototype.handleRequest = function(req, res) { | 
