Commit da67cdbb8afc6ed5bc3f9f6845494cb2c643b2d0

Authored by Michel Felipe
2 parents 4c62b2fd 5633c308

Merge branch 'ngforward' of softwarepublico.gov.br:noosfero-themes/angular-theme into ngforward

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(&quot;Components&quot;, () =&gt; {
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(&quot;Components&quot;, () =&gt; {
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(&quot;Components&quot;, () =&gt; {
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(&quot;noosferoApp&quot;, Main, [&quot;ngAnimate&quot;, &quot;ngCookies&quot;, &quot;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/languages/en.json 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +{
  2 + "noosfero.name" : "Noosfero",
  3 + "blocks.profile_image.control_panel": "Control Panel",
  4 + "navbar.profile": "Profile",
  5 + "navbar.settings": "Settings",
  6 + "navbar.logout": "Log Out",
  7 + "navbar.login": "Login"
  8 +}
... ...
src/languages/pt.json 0 → 100644
... ... @@ -0,0 +1,8 @@
  1 +{
  2 + "noosfero.name" : "Noosfero",
  3 + "blocks.profile_image.control_panel": "Painel de Controle",
  4 + "navbar.profile": "Perfil",
  5 + "navbar.settings": "Configurações",
  6 + "navbar.logout": "Sair",
  7 + "navbar.login": "Login"
  8 +}
... ...
src/lib/ng-noosfero-api/http/article.service.spec.ts
... ... @@ -9,7 +9,9 @@ describe(&quot;Services&quot;, () =&gt; {
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(&quot;Services&quot;, () =&gt; {
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",
... ...