Work In Progress: Dynamic titles and descriptions

This commit is contained in:
Joseph Schorr 2015-02-27 16:52:56 -05:00
parent ed46d37ea7
commit 7460541c89
3 changed files with 87 additions and 22 deletions

View file

@ -0,0 +1,58 @@
/**
* Service which helps set the contents of the <meta> tags (and the <title> of a page).
*/
angular.module('quay').factory('MetaService', ['$interpolate', 'Config', '$rootScope', '$interval',
function($interpolate, Config, $rootScope, $interval) {
var metaService = {};
var interpolate = function(page, expr, callback) {
$rootScope.$watch(page.scope, function() {
var inter = $interpolate(expr, true, null, true);
callback(inter(page.scope));
});
};
var initial = function(value, default_value, callback) {
if (!value) {
callback(default_value);
return;
}
if (value.indexOf('{{') < 0) {
callback(default_value);
return;
}
callback('Loading...');
};
metaService.getInitialTitle = function(page, callback) {
var route = page.$$route;
initial(route && route.title, Config.REGISTRY_TITLE_SHORT, callback);
};
metaService.getInitialDescription = function(page, callback) {
var route = page.$$route;
initial(route && route.description, Config.REGISTRY_TITLE_SHORT, callback);
};
metaService.getTitle = function(page, callback) {
var route = page.$$route;
if (!route || !route.title || route.title.indexOf('{{') < 0) {
return;
}
interpolate(page, route.title, callback);
};
metaService.getDescription = function(page, callback) {
var route = page.$$route;
if (!route || !route.description || route.description.indexOf('{{') < 0) {
return;
}
interpolate(page, route.description, callback);
};
return metaService;
}]);