diff --git a/modules/articles/client/config/articles.client.routes.js b/modules/articles/client/config/articles.client.routes.js
index f254b5c1..b7671b11 100644
--- a/modules/articles/client/config/articles.client.routes.js
+++ b/modules/articles/client/config/articles.client.routes.js
@@ -18,7 +18,10 @@
url: '',
templateUrl: 'modules/articles/client/views/list-articles.client.view.html',
controller: 'ArticlesListController',
- controllerAs: 'vm'
+ controllerAs: 'vm',
+ data: {
+ pageTitle: 'Articles List'
+ }
})
.state('articles.create', {
url: '/create',
@@ -29,7 +32,8 @@
articleResolve: newArticle
},
data: {
- roles: ['user', 'admin']
+ roles: ['user', 'admin'],
+ pageTitle : 'Articles Create'
}
})
.state('articles.edit', {
@@ -41,7 +45,8 @@
articleResolve: getArticle
},
data: {
- roles: ['user', 'admin']
+ roles: ['user', 'admin'],
+ pageTitle: 'Edit Article {{ articleResolve.title }}'
}
})
.state('articles.view', {
@@ -51,6 +56,9 @@
controllerAs: 'vm',
resolve: {
articleResolve: getArticle
+ },
+ data:{
+ pageTitle: 'Article {{ articleResolve.title }}'
}
});
}
diff --git a/modules/chat/client/config/chat.client.routes.js b/modules/chat/client/config/chat.client.routes.js
index edfc959e..fc869031 100644
--- a/modules/chat/client/config/chat.client.routes.js
+++ b/modules/chat/client/config/chat.client.routes.js
@@ -15,7 +15,8 @@
controller: 'ChatController',
controllerAs: 'vm',
data: {
- roles: ['user', 'admin']
+ roles: ['user', 'admin'],
+ pageTitle: 'Chat'
}
});
}
diff --git a/modules/core/client/config/core.client.routes.js b/modules/core/client/config/core.client.routes.js
index cec96327..e67e3335 100644
--- a/modules/core/client/config/core.client.routes.js
+++ b/modules/core/client/config/core.client.routes.js
@@ -13,30 +13,33 @@ angular.module('core').config(['$stateProvider', '$urlRouterProvider',
// Home state routing
$stateProvider
- .state('home', {
- url: '/',
- templateUrl: 'modules/core/client/views/home.client.view.html'
- })
- .state('not-found', {
- url: '/not-found',
- templateUrl: 'modules/core/client/views/404.client.view.html',
- data: {
- ignoreState: true
- }
- })
- .state('bad-request', {
- url: '/bad-request',
- templateUrl: 'modules/core/client/views/400.client.view.html',
- data: {
- ignoreState: true
- }
- })
- .state('forbidden', {
- url: '/forbidden',
- templateUrl: 'modules/core/client/views/403.client.view.html',
- data: {
- ignoreState: true
- }
- });
+ .state('home', {
+ url: '/',
+ templateUrl: 'modules/core/client/views/home.client.view.html'
+ })
+ .state('not-found', {
+ url: '/not-found',
+ templateUrl: 'modules/core/client/views/404.client.view.html',
+ data: {
+ ignoreState: true,
+ pageTitle: 'Not-Found'
+ }
+ })
+ .state('bad-request', {
+ url: '/bad-request',
+ templateUrl: 'modules/core/client/views/400.client.view.html',
+ data: {
+ ignoreState: true,
+ pageTitle: 'Bad-Request'
+ }
+ })
+ .state('forbidden', {
+ url: '/forbidden',
+ templateUrl: 'modules/core/client/views/403.client.view.html',
+ data: {
+ ignoreState: true,
+ pageTitle: 'Forbidden'
+ }
+ });
}
]);
diff --git a/modules/core/client/directives/page-title.client.directives.js b/modules/core/client/directives/page-title.client.directives.js
new file mode 100644
index 00000000..2eea805a
--- /dev/null
+++ b/modules/core/client/directives/page-title.client.directives.js
@@ -0,0 +1,40 @@
+(function () {
+ 'use strict';
+
+ angular.module('core')
+ .directive('pageTitle', pageTitle);
+
+ pageTitle.$inject = ['$rootScope', '$timeout', '$interpolate', '$state'];
+
+ function pageTitle($rootScope, $timeout, $interpolate, $state) {
+ var directive = {
+ retrict: 'A',
+ link: link
+ };
+
+ return directive;
+
+ function link(scope, element) {
+ $rootScope.$on('$stateChangeSuccess', listener);
+
+ function listener(event, toState) {
+ var title = (getTitle($state.$current));
+ $timeout(function () {
+ element.text(title);
+ }, 0, false);
+ }
+
+ function getTitle(currentState) {
+ var applicationCoreTitle = 'MEAN.js';
+ var workingState = currentState;
+ if (currentState.data) {
+ workingState = (typeof workingState.locals !== 'undefined') ? workingState.locals.globals : workingState;
+ var stateTitle = $interpolate(currentState.data.pageTitle)(workingState);
+ return applicationCoreTitle + ' - ' + stateTitle;
+ } else {
+ return applicationCoreTitle;
+ }
+ }
+ }
+ }
+})();
diff --git a/modules/core/server/views/layout.server.view.html b/modules/core/server/views/layout.server.view.html
index aba668af..79ecf5c7 100644
--- a/modules/core/server/views/layout.server.view.html
+++ b/modules/core/server/views/layout.server.view.html
@@ -5,7 +5,7 @@