From 8142d9361d422d34fa72abc8ebb2c070e324c18e Mon Sep 17 00:00:00 2001 From: Leonardo Merlin Date: Thu, 27 Aug 2015 18:09:51 -0300 Subject: [PATCH] Add breadcrumb --- bower.json | 15 ++++++++------- src/app/components/breadcrumb/breadcrumb.scss | 5 +++++ src/app/components/breadcrumb/template.html | 10 ++++++++++ src/app/index.config.js | 9 +++++++++ src/app/index.module.js | 2 +- src/app/index.route.js | 30 +++++++++++++++++++++++++++++- src/app/index.run.js | 9 ++++++++- src/app/pages/programas/programa-content.controller.js | 1 + src/app/pages/programas/programa.html | 4 ++-- src/app/pages/propostas/proposta.html | 3 +++ 10 files changed, 76 insertions(+), 12 deletions(-) create mode 100644 src/app/components/breadcrumb/breadcrumb.scss create mode 100644 src/app/components/breadcrumb/template.html create mode 100644 src/app/pages/propostas/proposta.html diff --git a/bower.json b/bower.json index 6225ca4..66e03f3 100644 --- a/bower.json +++ b/bower.json @@ -2,19 +2,20 @@ "name": "dialoga", "version": "0.0.0", "dependencies": { + "angular": "~1.4.0", "angular-animate": "~1.4.0", + "angular-breadcrumb": "~0.4.1", "angular-cookies": "~1.4.0", - "angular-touch": "~1.4.0", "angular-sanitize": "~1.4.0", + "angular-slugify": "~1.0.1", + "angular-social-links": "~0.0.19", + "angular-touch": "~1.4.0", "angular-ui-router": "~0.2.15", - "jquery": "~2.1.4", - "bootstrap-sass-official": "~3.3.4", "animate.css": "~3.3.0", - "angular": "~1.4.0", + "bootstrap-sass-official": "~3.3.4", + "jquery": "~2.1.4", "modernizr": "~2.8.3", - "angular-slugify": "~1.0.1", - "open-sans-fontface": "~1.4.2", - "angular-social-links": "~0.0.19" + "open-sans-fontface": "~1.4.2" }, "devDependencies": { "angular-mocks": "~1.4.0" diff --git a/src/app/components/breadcrumb/breadcrumb.scss b/src/app/components/breadcrumb/breadcrumb.scss new file mode 100644 index 0000000..64d1fa2 --- /dev/null +++ b/src/app/components/breadcrumb/breadcrumb.scss @@ -0,0 +1,5 @@ +.custom-breadcrumb { + .breadcrumb > li + li:before { + content: '>'; + } +} diff --git a/src/app/components/breadcrumb/template.html b/src/app/components/breadcrumb/template.html new file mode 100644 index 0000000..a3acb77 --- /dev/null +++ b/src/app/components/breadcrumb/template.html @@ -0,0 +1,10 @@ +
+ +
diff --git a/src/app/index.config.js b/src/app/index.config.js index 49220f5..9528d71 100644 --- a/src/app/index.config.js +++ b/src/app/index.config.js @@ -5,6 +5,7 @@ .module('dialoga') .config(configAuthInterceptor) .config(configLocationProvider) + .config(configBreadcrumbProvider) .config(config); /** @ngInject */ @@ -38,6 +39,14 @@ } /** @ngInject */ + function configBreadcrumbProvider($breadcrumbProvider) { + $breadcrumbProvider.setOptions({ + prefixStateName: 'inicio', + templateUrl: 'app/components/breadcrumb/template.html' + }); + } + + /** @ngInject */ function config($logProvider) { // Enable log diff --git a/src/app/index.module.js b/src/app/index.module.js index 147864c..d431dc9 100644 --- a/src/app/index.module.js +++ b/src/app/index.module.js @@ -2,6 +2,6 @@ 'use strict'; angular - .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'socialLinks', 'slugifier']); + .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'socialLinks', 'slugifier', 'ncy-angular-breadcrumb']); })(); diff --git a/src/app/index.route.js b/src/app/index.route.js index a884637..e2b0d14 100644 --- a/src/app/index.route.js +++ b/src/app/index.route.js @@ -10,6 +10,7 @@ $stateProvider .state('inicio', { url: '/?limite&tema', + ncyBreadcrumb: {label: 'Home'}, reloadOnSearch: false, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, @@ -23,6 +24,7 @@ }) .state('entrar', { url: '/entrar', + ncyBreadcrumb: {label: 'Entrar'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -35,6 +37,7 @@ }) .state('cadastrar', { url: '/cadastrar', + ncyBreadcrumb: {label: 'Cadastrar'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -47,6 +50,7 @@ }) .state('programas', { url: '/programas', + ncyBreadcrumb: {label: 'Programas'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -59,6 +63,10 @@ }) .state('programa-conteudo', { url: '/programa/:slug', + ncyBreadcrumb: { + label: '{{$parent.$root.contentTitle}}', + parent: 'programas' + }, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -71,6 +79,7 @@ }) .state('propostas', { url: '/propostas', + ncyBreadcrumb: {label: 'Propostas'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -81,9 +90,25 @@ 'footer': { templateUrl: 'app/pages/footer/footer.html' } } }) - .state('propostas-details', {}) + .state('propostas-conteudo', { + url: '/propostas/:id', + ncyBreadcrumb: { + label: '{{$parent.$root.contentTitle}}', + parent: 'propostas' + }, + views: { + 'header': { templateUrl: 'app/pages/header/header.html' }, + 'main': { + templateUrl: 'app/pages/propostas/proposta.html', + controller: 'PropostasPageController', + controllerAs: 'pagePropostas' + }, + 'footer': { templateUrl: 'app/pages/footer/footer.html' } + } + }) .state('duvidas', { url: '/duvidas', + ncyBreadcrumb: {label: 'Dúvidas'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -96,6 +121,7 @@ }) .state('sobre', { url: '/sobre', + ncyBreadcrumb: {label: 'Sobre'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { @@ -108,6 +134,7 @@ }) .state('termos-de-uso', { url: '/termos-de-uso', + ncyBreadcrumb: {label: 'Termos de Uso'}, controller: 'ArticlePageController', views: { 'header': { templateUrl: 'app/pages/header/header.html' }, @@ -121,6 +148,7 @@ }) .state('mapa-do-site', { url: '/mapa-do-site', + ncyBreadcrumb: {label: 'Mapa do Site'}, views: { 'header': { templateUrl: 'app/pages/header/header.html' }, 'main': { templateUrl: 'app/pages/sitemap/sitemap.html' }, diff --git a/src/app/index.run.js b/src/app/index.run.js index 7340f5a..65821bf 100644 --- a/src/app/index.run.js +++ b/src/app/index.run.js @@ -98,9 +98,16 @@ /** @ngInject */ function runHistory($rootScope) { + var MAX_HISTORY = 20; + $rootScope.$previousState = $rootScope.$previousState || []; $rootScope.$on('$stateChangeSuccess', function(event, toState, toStateParams, fromState, fromStateParams) { - $rootScope.$previousState = { state: fromState, params: fromStateParams}; + $rootScope.$previousState.push({ state: fromState, params: fromStateParams}); + $rootScope.$previousState.splice(-MAX_HISTORY, MAX_HISTORY); }); + + $rootScope.goBack = $rootScope.goBack || function () { + return $rootScope.$previousState.pop(); + }; } /** @ngInject */ diff --git a/src/app/pages/programas/programa-content.controller.js b/src/app/pages/programas/programa-content.controller.js index ecb1bf4..41c4aa1 100644 --- a/src/app/pages/programas/programa-content.controller.js +++ b/src/app/pages/programas/programa-content.controller.js @@ -42,6 +42,7 @@ vm.ArticleService.getArticleBySlug(slug, function(article){ vm.article = article; + vm.$rootScope.contentTitle = vm.article.title; vm.currentCategory = vm.article.categories[0]; vm.loadContent(); diff --git a/src/app/pages/programas/programa.html b/src/app/pages/programas/programa.html index 3211396..ca012d4 100644 --- a/src/app/pages/programas/programa.html +++ b/src/app/pages/programas/programa.html @@ -1,6 +1,6 @@
-
- +
+
diff --git a/src/app/pages/propostas/proposta.html b/src/app/pages/propostas/proposta.html new file mode 100644 index 0000000..b8fe65c --- /dev/null +++ b/src/app/pages/propostas/proposta.html @@ -0,0 +1,3 @@ +
+

TODO: Home > Proposta

+
-- libgit2 0.21.2