Commit da67cdbb8afc6ed5bc3f9f6845494cb2c643b2d0
Exists in
master
and in
33 other branches
Merge branch 'ngforward' of softwarepublico.gov.br:noosfero-themes/angular-theme into ngforward
Showing
13 changed files
with
70 additions
and
25 deletions
Show diff stats
bower.json
| ... | ... | @@ -27,7 +27,10 @@ |
| 27 | 27 | "angular-timeline": "~1.6.2", |
| 28 | 28 | "angular-scroll": "~1.0.0", |
| 29 | 29 | "ngSweetAlert": "angular-sweetalert#~1.1.0", |
| 30 | - "angular-mocks": "^1.5.0" | |
| 30 | + "angular-mocks": "^1.5.0", | |
| 31 | + "angular-translate": "^2.10.0", | |
| 32 | + "angular-translate-loader-static-files": "^2.10.0", | |
| 33 | + "angular-translate-handler-log": "^2.10.0" | |
| 31 | 34 | }, |
| 32 | 35 | "devDependencies": { |
| 33 | 36 | "angular-mocks": "~1.5.0" | ... | ... |
src/app/components/auth/auth_service.spec.ts
| ... | ... | @@ -14,7 +14,9 @@ describe("Services", () => { |
| 14 | 14 | let $rootScope: ng.IRootScopeService; |
| 15 | 15 | let user: User; |
| 16 | 16 | |
| 17 | - beforeEach(angular.mock.module("noosferoApp")); | |
| 17 | + beforeEach(angular.mock.module("noosferoApp", ($translateProvider: angular.translate.ITranslateProvider) => { | |
| 18 | + $translateProvider.translations('en', {}); | |
| 19 | + })); | |
| 18 | 20 | |
| 19 | 21 | beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _$rootScope_: ng.IRootScopeService, _AuthService_: AuthService) => { |
| 20 | 22 | $httpBackend = _$httpBackend_; |
| ... | ... | @@ -77,4 +79,4 @@ describe("Services", () => { |
| 77 | 79 | |
| 78 | 80 | |
| 79 | 81 | }); |
| 80 | -}); | |
| 81 | 82 | \ No newline at end of file |
| 83 | +}); | ... | ... |
src/app/components/navbar/navbar.html
| ... | ... | @@ -8,7 +8,7 @@ |
| 8 | 8 | <span class="icon-bar"></span> |
| 9 | 9 | </button> |
| 10 | 10 | <a class="navbar-brand" ui-sref="main"> |
| 11 | - <span class="noosfero-logo"><img src="assets/images/logo-noosfero.png"></span> Noosfero | |
| 11 | + <span class="noosfero-logo"><img src="assets/images/logo-noosfero.png"></span> {{"noosfero.name" | translate}} | |
| 12 | 12 | </a> |
| 13 | 13 | </div> |
| 14 | 14 | |
| ... | ... | @@ -18,7 +18,7 @@ |
| 18 | 18 | |
| 19 | 19 | <ul class="nav navbar-nav navbar-right"> |
| 20 | 20 | <li ng-show="!ctrl.currentUser"> |
| 21 | - <a ng-href="#" ng-click="ctrl.openLogin()">Login</a> | |
| 21 | + <a ng-href="#" ng-click="ctrl.openLogin()">{{"navbar.login" | translate}}</a> | |
| 22 | 22 | </li> |
| 23 | 23 | |
| 24 | 24 | <li class="dropdown profile-menu" ng-show="ctrl.currentUser" dropdown> |
| ... | ... | @@ -28,14 +28,14 @@ |
| 28 | 28 | </a> |
| 29 | 29 | <ul class="dropdown-menu" dropdown-menu> |
| 30 | 30 | <li> |
| 31 | - <a ui-sref="main.profile.info({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-user"></i> Profile</a> | |
| 31 | + <a ui-sref="main.profile.info({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-user"></i> {{"navbar.profile" | translate}}</a> | |
| 32 | 32 | </li> |
| 33 | 33 | <li> |
| 34 | - <a target="_self" ui-sref="main.profile.settings({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-gear"></i> Settings</a> | |
| 34 | + <a target="_self" ui-sref="main.profile.settings({profile: ctrl.currentUser.person.identifier})"><i class="fa fa-fw fa-gear"></i> {{"navbar.settings" | translate}}</a> | |
| 35 | 35 | </li> |
| 36 | 36 | <li class="divider"></li> |
| 37 | 37 | <li> |
| 38 | - <a href="#" ng-click="ctrl.logout()"><i class="fa fa-fw fa-power-off"></i> Log Out</a> | |
| 38 | + <a href="#" ng-click="ctrl.logout()"><i class="fa fa-fw fa-power-off"></i> {{"navbar.logout" | translate}}</a> | |
| 39 | 39 | </li> |
| 40 | 40 | </ul> |
| 41 | 41 | </li> | ... | ... |
src/app/components/navbar/navbar.spec.ts
| ... | ... | @@ -72,7 +72,7 @@ describe("Components", () => { |
| 72 | 72 | AUTH_EVENTS |
| 73 | 73 | } |
| 74 | 74 | }) |
| 75 | - ], | |
| 75 | + ].concat(helpers.provideFilters("translateFilter")), | |
| 76 | 76 | directives: [Navbar], |
| 77 | 77 | template: '<acme-navbar></acme-navbar>' |
| 78 | 78 | }); |
| ... | ... | @@ -182,4 +182,4 @@ describe("Components", () => { |
| 182 | 182 | |
| 183 | 183 | |
| 184 | 184 | }); |
| 185 | -}); | |
| 186 | 185 | \ No newline at end of file |
| 186 | +}); | ... | ... |
src/app/components/noosfero-blocks/profile-image-block/profile-image-block.component.spec.ts
| ... | ... | @@ -10,22 +10,23 @@ const tcb = new TestComponentBuilder(); |
| 10 | 10 | const htmlTemplate: string = '<noosfero-profile-image-block [block]="ctrl.block" [owner]="ctrl.owner"></noosfero-profile-image-block>'; |
| 11 | 11 | |
| 12 | 12 | describe("Components", () => { |
| 13 | - | |
| 13 | + | |
| 14 | 14 | describe("Profile Image Block Component", () => { |
| 15 | 15 | |
| 16 | 16 | beforeEach(angular.mock.module("templates")); |
| 17 | - | |
| 17 | + | |
| 18 | 18 | @Component({ |
| 19 | 19 | selector: 'test-container-component', |
| 20 | 20 | template: htmlTemplate, |
| 21 | - directives: [ProfileImageBlock] | |
| 22 | - }) | |
| 21 | + directives: [ProfileImageBlock], | |
| 22 | + providers: helpers.provideFilters("translateFilter") | |
| 23 | + }) | |
| 23 | 24 | class BlockContainerComponent { |
| 24 | 25 | block = { type: 'Block' }; |
| 25 | 26 | owner = { name: 'profile-name' }; |
| 26 | 27 | constructor() { |
| 27 | 28 | } |
| 28 | - } | |
| 29 | + } | |
| 29 | 30 | |
| 30 | 31 | it("show image if present", () => { |
| 31 | 32 | helpers.tcb.createAsync(BlockContainerComponent).then(fixture => { |
| ... | ... | @@ -33,13 +34,13 @@ describe("Components", () => { |
| 33 | 34 | expect(elProfile.query('div.profile-image-block').length).toEqual(1); |
| 34 | 35 | }); |
| 35 | 36 | }); |
| 36 | - | |
| 37 | + | |
| 37 | 38 | it("has link to the profile", () => { |
| 38 | 39 | helpers.tcb.createAsync(BlockContainerComponent).then(fixture => { |
| 39 | 40 | var elProfile = fixture.debugElement.componentViewChildren[0]; |
| 40 | 41 | expect(elProfile.query('a.settings-link').length).toEqual(1); |
| 41 | - }); | |
| 42 | + }); | |
| 42 | 43 | }); |
| 43 | - | |
| 44 | + | |
| 44 | 45 | }); |
| 45 | -}); | |
| 46 | 46 | \ No newline at end of file |
| 47 | +}); | ... | ... |
src/app/components/noosfero-blocks/profile-image-block/profile-image-block.html
| ... | ... | @@ -2,5 +2,5 @@ |
| 2 | 2 | <a ui-sref="main.profile.info({profile: ctrl.owner.identifier})"> |
| 3 | 3 | <noosfero-profile-image [profile]="ctrl.owner"></noosfero-profile-image> |
| 4 | 4 | </a> |
| 5 | - <a class="settings-link" target="_self" ui-sref="main.profile.settings({profile: ctrl.owner.identifier})">Control panel</a> | |
| 5 | + <a class="settings-link" target="_self" ui-sref="main.profile.settings({profile: ctrl.owner.identifier})">{{"blocks.profile_image.control_panel" | translate}}</a> | |
| 6 | 6 | </div> | ... | ... |
src/app/index.config.ts
| 1 | 1 | |
| 2 | 2 | /** @ngInject */ |
| 3 | -export function noosferoModuleConfig($logProvider: ng.ILogProvider, $locationProvider: ng.ILocationProvider, RestangularProvider: restangular.IProvider, $httpProvider: ng.IHttpProvider, $provide: ng.auto.IProvideService) { | |
| 3 | +export function noosferoModuleConfig($logProvider: ng.ILogProvider, | |
| 4 | + $locationProvider: ng.ILocationProvider, | |
| 5 | + RestangularProvider: restangular.IProvider, | |
| 6 | + $httpProvider: ng.IHttpProvider, | |
| 7 | + $provide: ng.auto.IProvideService, | |
| 8 | + $translateProvider: angular.translate.ITranslateProvider) { | |
| 9 | + | |
| 4 | 10 | $logProvider.debugEnabled(true); |
| 5 | 11 | $locationProvider.html5Mode({ enabled: true }); |
| 6 | 12 | RestangularProvider.setBaseUrl("/api/v1"); |
| ... | ... | @@ -14,4 +20,15 @@ export function noosferoModuleConfig($logProvider: ng.ILogProvider, $locationPro |
| 14 | 20 | $document.scrollToElementAnimated(uiViewElement); |
| 15 | 21 | }; |
| 16 | 22 | }); |
| 17 | -} | |
| 18 | 23 | \ No newline at end of file |
| 24 | + configTranslation($translateProvider); | |
| 25 | +} | |
| 26 | + | |
| 27 | +function configTranslation($translateProvider: angular.translate.ITranslateProvider) { | |
| 28 | + $translateProvider.useStaticFilesLoader({ | |
| 29 | + prefix: '/languages/', | |
| 30 | + suffix: '.json' | |
| 31 | + }); | |
| 32 | + $translateProvider.useMissingTranslationHandlerLog(); | |
| 33 | + $translateProvider.preferredLanguage('en'); | |
| 34 | + $translateProvider.useSanitizeValueStrategy('escape'); | |
| 35 | +} | ... | ... |
src/app/index.ts
| ... | ... | @@ -17,7 +17,8 @@ let noosferoApp: any = bundle("noosferoApp", Main, ["ngAnimate", "ngCookies", "n |
| 17 | 17 | "ngSanitize", "ngMessages", "ngAria", "restangular", |
| 18 | 18 | "ui.router", "ui.bootstrap", "toastr", |
| 19 | 19 | "angularMoment", "angular.filter", "akoenig.deckgrid", |
| 20 | - "angular-timeline", "duScroll", "oitozero.ngSweetAlert"]).publish(); | |
| 20 | + "angular-timeline", "duScroll", "oitozero.ngSweetAlert", | |
| 21 | + "pascalprecht.translate"]).publish(); | |
| 21 | 22 | |
| 22 | 23 | NoosferoApp.angularModule = noosferoApp; |
| 23 | 24 | ... | ... |
src/lib/ng-noosfero-api/http/article.service.spec.ts
| ... | ... | @@ -9,7 +9,9 @@ describe("Services", () => { |
| 9 | 9 | let $httpBackend: ng.IHttpBackendService; |
| 10 | 10 | let articleService: ArticleService; |
| 11 | 11 | |
| 12 | - beforeEach(angular.mock.module("noosferoApp")); | |
| 12 | + beforeEach(angular.mock.module("noosferoApp", ($translateProvider: angular.translate.ITranslateProvider) => { | |
| 13 | + $translateProvider.translations('en', {}); | |
| 14 | + })); | |
| 13 | 15 | |
| 14 | 16 | beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _ArticleService_: ArticleService) => { |
| 15 | 17 | $httpBackend = _$httpBackend_; | ... | ... |
src/lib/ng-noosfero-api/http/profile.service.spec.ts
| ... | ... | @@ -9,7 +9,9 @@ describe("Services", () => { |
| 9 | 9 | let profileService: ProfileService; |
| 10 | 10 | let $rootScope: ng.IRootScopeService; |
| 11 | 11 | |
| 12 | - beforeEach(angular.mock.module("noosferoApp")); | |
| 12 | + beforeEach(angular.mock.module("noosferoApp", ($translateProvider: angular.translate.ITranslateProvider) => { | |
| 13 | + $translateProvider.translations('en', {}); | |
| 14 | + })); | |
| 13 | 15 | |
| 14 | 16 | beforeEach(inject((_$httpBackend_: ng.IHttpBackendService, _ProfileService_: ProfileService, _$rootScope_: ng.IRootScopeService) => { |
| 15 | 17 | $httpBackend = _$httpBackend_; | ... | ... |
typings.json
| ... | ... | @@ -5,6 +5,7 @@ |
| 5 | 5 | "ambientDependencies": { |
| 6 | 6 | "angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#1c4a34873c9e70cce86edd0e61c559e43dfa5f75", |
| 7 | 7 | "angular-mocks": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular-mocks.d.ts", |
| 8 | + "angular-translate": "github:DefinitelyTyped/DefinitelyTyped/angular-translate/angular-translate.d.ts#19850bf86c876e0c2544842114878ece4664941a", | |
| 8 | 9 | "angular-ui-router": "github:DefinitelyTyped/DefinitelyTyped/angular-ui-router/angular-ui-router.d.ts#655f8c1bf3c71b0e1ba415b36309604f79326ac8", |
| 9 | 10 | "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#4de74cb527395c13ba20b438c3a7a419ad931f1c", |
| 10 | 11 | "jasmine": "github:DefinitelyTyped/DefinitelyTyped/jasmine/jasmine.d.ts#dd638012d63e069f2c99d06ef4dcc9616a943ee4", | ... | ... |