Skip to content

Commit

Permalink
add appcache for docs site - caches only css/js/img resources
Browse files Browse the repository at this point in the history
  • Loading branch information
IgorMinar committed Jun 7, 2011
1 parent f21b921 commit 25b3438
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 2 deletions.
7 changes: 7 additions & 0 deletions Rakefile
Expand Up @@ -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)}"
Expand Down
29 changes: 29 additions & 0 deletions docs/src/gen-docs.js
Expand Up @@ -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',
Expand Down Expand Up @@ -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');
}
11 changes: 10 additions & 1 deletion 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="&lt;angular/&gt;: {{partialTitle}}">&lt;angular/&gt;</title>
Expand All @@ -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>

Expand Down
4 changes: 4 additions & 0 deletions 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>
3 changes: 2 additions & 1 deletion lib/nodeserver/server.js
Expand Up @@ -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) {
Expand Down

0 comments on commit 25b3438

Please sign in to comment.