Commit 8142d9361d422d34fa72abc8ebb2c070e324c18e
1 parent
6eac388a
Exists in
master
and in
8 other branches
Add breadcrumb
Showing
10 changed files
with
76 additions
and
12 deletions
Show diff stats
bower.json
... | ... | @@ -2,19 +2,20 @@ |
2 | 2 | "name": "dialoga", |
3 | 3 | "version": "0.0.0", |
4 | 4 | "dependencies": { |
5 | + "angular": "~1.4.0", | |
5 | 6 | "angular-animate": "~1.4.0", |
7 | + "angular-breadcrumb": "~0.4.1", | |
6 | 8 | "angular-cookies": "~1.4.0", |
7 | - "angular-touch": "~1.4.0", | |
8 | 9 | "angular-sanitize": "~1.4.0", |
10 | + "angular-slugify": "~1.0.1", | |
11 | + "angular-social-links": "~0.0.19", | |
12 | + "angular-touch": "~1.4.0", | |
9 | 13 | "angular-ui-router": "~0.2.15", |
10 | - "jquery": "~2.1.4", | |
11 | - "bootstrap-sass-official": "~3.3.4", | |
12 | 14 | "animate.css": "~3.3.0", |
13 | - "angular": "~1.4.0", | |
15 | + "bootstrap-sass-official": "~3.3.4", | |
16 | + "jquery": "~2.1.4", | |
14 | 17 | "modernizr": "~2.8.3", |
15 | - "angular-slugify": "~1.0.1", | |
16 | - "open-sans-fontface": "~1.4.2", | |
17 | - "angular-social-links": "~0.0.19" | |
18 | + "open-sans-fontface": "~1.4.2" | |
18 | 19 | }, |
19 | 20 | "devDependencies": { |
20 | 21 | "angular-mocks": "~1.4.0" | ... | ... |
... | ... | @@ -0,0 +1,10 @@ |
1 | +<div class="custom-breadcrumb"> | |
2 | + <ol class="breadcrumb"> | |
3 | + <li ng-repeat="step in steps | limitTo:(steps.length-1)"> | |
4 | + <a href="{{step.ncyBreadcrumbLink}}" ng-bind-html="step.ncyBreadcrumbLabel"></a> | |
5 | + </li> | |
6 | + <li ng-repeat="step in steps | limitTo:-1" class="active"> | |
7 | + <span ng-bind-html="step.ncyBreadcrumbLabel"></span> | |
8 | + </li> | |
9 | + </ol> | |
10 | +</div> | ... | ... |
src/app/index.config.js
... | ... | @@ -5,6 +5,7 @@ |
5 | 5 | .module('dialoga') |
6 | 6 | .config(configAuthInterceptor) |
7 | 7 | .config(configLocationProvider) |
8 | + .config(configBreadcrumbProvider) | |
8 | 9 | .config(config); |
9 | 10 | |
10 | 11 | /** @ngInject */ |
... | ... | @@ -38,6 +39,14 @@ |
38 | 39 | } |
39 | 40 | |
40 | 41 | /** @ngInject */ |
42 | + function configBreadcrumbProvider($breadcrumbProvider) { | |
43 | + $breadcrumbProvider.setOptions({ | |
44 | + prefixStateName: 'inicio', | |
45 | + templateUrl: 'app/components/breadcrumb/template.html' | |
46 | + }); | |
47 | + } | |
48 | + | |
49 | + /** @ngInject */ | |
41 | 50 | function config($logProvider) { |
42 | 51 | |
43 | 52 | // Enable log | ... | ... |
src/app/index.module.js
... | ... | @@ -2,6 +2,6 @@ |
2 | 2 | 'use strict'; |
3 | 3 | |
4 | 4 | angular |
5 | - .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'socialLinks', 'slugifier']); | |
5 | + .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'socialLinks', 'slugifier', 'ncy-angular-breadcrumb']); | |
6 | 6 | |
7 | 7 | })(); | ... | ... |
src/app/index.route.js
... | ... | @@ -10,6 +10,7 @@ |
10 | 10 | $stateProvider |
11 | 11 | .state('inicio', { |
12 | 12 | url: '/?limite&tema', |
13 | + ncyBreadcrumb: {label: 'Home'}, | |
13 | 14 | reloadOnSearch: false, |
14 | 15 | views: { |
15 | 16 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
... | ... | @@ -23,6 +24,7 @@ |
23 | 24 | }) |
24 | 25 | .state('entrar', { |
25 | 26 | url: '/entrar', |
27 | + ncyBreadcrumb: {label: 'Entrar'}, | |
26 | 28 | views: { |
27 | 29 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
28 | 30 | 'main': { |
... | ... | @@ -35,6 +37,7 @@ |
35 | 37 | }) |
36 | 38 | .state('cadastrar', { |
37 | 39 | url: '/cadastrar', |
40 | + ncyBreadcrumb: {label: 'Cadastrar'}, | |
38 | 41 | views: { |
39 | 42 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
40 | 43 | 'main': { |
... | ... | @@ -47,6 +50,7 @@ |
47 | 50 | }) |
48 | 51 | .state('programas', { |
49 | 52 | url: '/programas', |
53 | + ncyBreadcrumb: {label: 'Programas'}, | |
50 | 54 | views: { |
51 | 55 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
52 | 56 | 'main': { |
... | ... | @@ -59,6 +63,10 @@ |
59 | 63 | }) |
60 | 64 | .state('programa-conteudo', { |
61 | 65 | url: '/programa/:slug', |
66 | + ncyBreadcrumb: { | |
67 | + label: '{{$parent.$root.contentTitle}}', | |
68 | + parent: 'programas' | |
69 | + }, | |
62 | 70 | views: { |
63 | 71 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
64 | 72 | 'main': { |
... | ... | @@ -71,6 +79,7 @@ |
71 | 79 | }) |
72 | 80 | .state('propostas', { |
73 | 81 | url: '/propostas', |
82 | + ncyBreadcrumb: {label: 'Propostas'}, | |
74 | 83 | views: { |
75 | 84 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
76 | 85 | 'main': { |
... | ... | @@ -81,9 +90,25 @@ |
81 | 90 | 'footer': { templateUrl: 'app/pages/footer/footer.html' } |
82 | 91 | } |
83 | 92 | }) |
84 | - .state('propostas-details', {}) | |
93 | + .state('propostas-conteudo', { | |
94 | + url: '/propostas/:id', | |
95 | + ncyBreadcrumb: { | |
96 | + label: '{{$parent.$root.contentTitle}}', | |
97 | + parent: 'propostas' | |
98 | + }, | |
99 | + views: { | |
100 | + 'header': { templateUrl: 'app/pages/header/header.html' }, | |
101 | + 'main': { | |
102 | + templateUrl: 'app/pages/propostas/proposta.html', | |
103 | + controller: 'PropostasPageController', | |
104 | + controllerAs: 'pagePropostas' | |
105 | + }, | |
106 | + 'footer': { templateUrl: 'app/pages/footer/footer.html' } | |
107 | + } | |
108 | + }) | |
85 | 109 | .state('duvidas', { |
86 | 110 | url: '/duvidas', |
111 | + ncyBreadcrumb: {label: 'Dúvidas'}, | |
87 | 112 | views: { |
88 | 113 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
89 | 114 | 'main': { |
... | ... | @@ -96,6 +121,7 @@ |
96 | 121 | }) |
97 | 122 | .state('sobre', { |
98 | 123 | url: '/sobre', |
124 | + ncyBreadcrumb: {label: 'Sobre'}, | |
99 | 125 | views: { |
100 | 126 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
101 | 127 | 'main': { |
... | ... | @@ -108,6 +134,7 @@ |
108 | 134 | }) |
109 | 135 | .state('termos-de-uso', { |
110 | 136 | url: '/termos-de-uso', |
137 | + ncyBreadcrumb: {label: 'Termos de Uso'}, | |
111 | 138 | controller: 'ArticlePageController', |
112 | 139 | views: { |
113 | 140 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
... | ... | @@ -121,6 +148,7 @@ |
121 | 148 | }) |
122 | 149 | .state('mapa-do-site', { |
123 | 150 | url: '/mapa-do-site', |
151 | + ncyBreadcrumb: {label: 'Mapa do Site'}, | |
124 | 152 | views: { |
125 | 153 | 'header': { templateUrl: 'app/pages/header/header.html' }, |
126 | 154 | 'main': { templateUrl: 'app/pages/sitemap/sitemap.html' }, | ... | ... |
src/app/index.run.js
... | ... | @@ -98,9 +98,16 @@ |
98 | 98 | |
99 | 99 | /** @ngInject */ |
100 | 100 | function runHistory($rootScope) { |
101 | + var MAX_HISTORY = 20; | |
102 | + $rootScope.$previousState = $rootScope.$previousState || []; | |
101 | 103 | $rootScope.$on('$stateChangeSuccess', function(event, toState, toStateParams, fromState, fromStateParams) { |
102 | - $rootScope.$previousState = { state: fromState, params: fromStateParams}; | |
104 | + $rootScope.$previousState.push({ state: fromState, params: fromStateParams}); | |
105 | + $rootScope.$previousState.splice(-MAX_HISTORY, MAX_HISTORY); | |
103 | 106 | }); |
107 | + | |
108 | + $rootScope.goBack = $rootScope.goBack || function () { | |
109 | + return $rootScope.$previousState.pop(); | |
110 | + }; | |
104 | 111 | } |
105 | 112 | |
106 | 113 | /** @ngInject */ | ... | ... |
src/app/pages/programas/programa-content.controller.js
src/app/pages/programas/programa.html
1 | 1 | <div class="container page--conheca-o-programa"> |
2 | - <div ng-if="pageProgramaContent.article && pageProgramaContent.categories"> | |
3 | - <article-bar category="pageProgramaContent.article.categories[0]" categories="pageProgramaContent.categories"></article-bar> | |
2 | + <div ng-if="pageProgramaContent.article && pageProgramaContent.article.title"> | |
3 | + <div ncy-breadcrumb></div> | |
4 | 4 | </div> |
5 | 5 | |
6 | 6 | <div ng-if="!pageProgramaContent.article.body"> | ... | ... |