Commit ffdb32a2277dbd5d5f208b555a872bbf004736a1
1 parent
57499aeb
Exists in
master
and in
26 other branches
Filter blocks by language in display blocks filter
Showing
3 changed files
with
35 additions
and
12 deletions
Show diff stats
src/app/layout/boxes/boxes.component.spec.ts
@@ -33,12 +33,14 @@ describe("Boxes Component", () => { | @@ -33,12 +33,14 @@ describe("Boxes Component", () => { | ||
33 | providers: [ | 33 | providers: [ |
34 | helpers.createProviderToValue('SessionService', helpers.mocks.sessionWithCurrentUser({})), | 34 | helpers.createProviderToValue('SessionService', helpers.mocks.sessionWithCurrentUser({})), |
35 | helpers.createProviderToValue('AuthService', helpers.mocks.authService), | 35 | helpers.createProviderToValue('AuthService', helpers.mocks.authService), |
36 | - helpers.createProviderToValue('$state', state) | 36 | + helpers.createProviderToValue('$state', state), |
37 | + helpers.createProviderToValue('TranslatorService', translatorService) | ||
37 | ] | 38 | ] |
38 | }); | 39 | }); |
39 | helper = new ComponentTestHelper<BoxesComponent>(cls, done); | 40 | helper = new ComponentTestHelper<BoxesComponent>(cls, done); |
40 | }); | 41 | }); |
41 | 42 | ||
43 | + let translatorService = jasmine.createSpyObj("translatorService", ["currentLanguage"]); | ||
42 | let state = jasmine.createSpyObj("state", ["current"]); | 44 | let state = jasmine.createSpyObj("state", ["current"]); |
43 | state.current = { name: "" }; | 45 | state.current = { name: "" }; |
44 | 46 |
src/app/layout/boxes/display-blocks.filter.spec.ts
@@ -4,71 +4,81 @@ import {DisplayBlocks} from './display-blocks.filter'; | @@ -4,71 +4,81 @@ import {DisplayBlocks} from './display-blocks.filter'; | ||
4 | describe("Filters", () => { | 4 | describe("Filters", () => { |
5 | describe("Display Blocks Filter", () => { | 5 | describe("Display Blocks Filter", () => { |
6 | 6 | ||
7 | + let translatorService = jasmine.createSpyObj("translatorService", ["currentLanguage"]); | ||
8 | + | ||
7 | it("not fail when blocks is null", done => { | 9 | it("not fail when blocks is null", done => { |
8 | - let filter = new DisplayBlocks(); | 10 | + let filter = new DisplayBlocks(translatorService); |
9 | expect(filter.transform(null, true, <noosfero.User>{})).toEqual([]); | 11 | expect(filter.transform(null, true, <noosfero.User>{})).toEqual([]); |
10 | done(); | 12 | done(); |
11 | }); | 13 | }); |
12 | 14 | ||
13 | it("return blocks when no setting is passed", done => { | 15 | it("return blocks when no setting is passed", done => { |
14 | let blocks = [{}]; | 16 | let blocks = [{}]; |
15 | - let filter = new DisplayBlocks(); | 17 | + let filter = new DisplayBlocks(translatorService); |
16 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual(blocks); | 18 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual(blocks); |
17 | done(); | 19 | done(); |
18 | }); | 20 | }); |
19 | 21 | ||
20 | it("return blocks when no display is passed", done => { | 22 | it("return blocks when no display is passed", done => { |
21 | let blocks = [{ setting: {} }]; | 23 | let blocks = [{ setting: {} }]; |
22 | - let filter = new DisplayBlocks(); | 24 | + let filter = new DisplayBlocks(translatorService); |
23 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual(blocks); | 25 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual(blocks); |
24 | done(); | 26 | done(); |
25 | }); | 27 | }); |
26 | 28 | ||
27 | it("filter invisible blocks", done => { | 29 | it("filter invisible blocks", done => { |
28 | let blocks = [{ settings: { display: "never" } }]; | 30 | let blocks = [{ settings: { display: "never" } }]; |
29 | - let filter = new DisplayBlocks(); | 31 | + let filter = new DisplayBlocks(translatorService); |
30 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); | 32 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); |
31 | done(); | 33 | done(); |
32 | }); | 34 | }); |
33 | 35 | ||
34 | it("filter blocks with except_home_page in homepage", done => { | 36 | it("filter blocks with except_home_page in homepage", done => { |
35 | let blocks = [{ settings: { display: "except_home_page" } }]; | 37 | let blocks = [{ settings: { display: "except_home_page" } }]; |
36 | - let filter = new DisplayBlocks(); | 38 | + let filter = new DisplayBlocks(translatorService); |
37 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); | 39 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); |
38 | done(); | 40 | done(); |
39 | }); | 41 | }); |
40 | 42 | ||
41 | it("filter blocks with home_page_only outside homepage", done => { | 43 | it("filter blocks with home_page_only outside homepage", done => { |
42 | let blocks = [{ settings: { display: "home_page_only" } }]; | 44 | let blocks = [{ settings: { display: "home_page_only" } }]; |
43 | - let filter = new DisplayBlocks(); | 45 | + let filter = new DisplayBlocks(translatorService); |
44 | expect(filter.transform(<any>blocks, false, <noosfero.User>{})).toEqual([]); | 46 | expect(filter.transform(<any>blocks, false, <noosfero.User>{})).toEqual([]); |
45 | done(); | 47 | done(); |
46 | }); | 48 | }); |
47 | 49 | ||
48 | it("show all blocks when display_user is all for logged user", done => { | 50 | it("show all blocks when display_user is all for logged user", done => { |
49 | let blocks = [{ settings: { display_user: "all" } }]; | 51 | let blocks = [{ settings: { display_user: "all" } }]; |
50 | - let filter = new DisplayBlocks(); | 52 | + let filter = new DisplayBlocks(translatorService); |
51 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual(blocks); | 53 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual(blocks); |
52 | done(); | 54 | done(); |
53 | }); | 55 | }); |
54 | 56 | ||
55 | it("show all blocks when display_user is all for not logged user", done => { | 57 | it("show all blocks when display_user is all for not logged user", done => { |
56 | let blocks = [{ settings: { display_user: "all" } }]; | 58 | let blocks = [{ settings: { display_user: "all" } }]; |
57 | - let filter = new DisplayBlocks(); | 59 | + let filter = new DisplayBlocks(translatorService); |
58 | expect(filter.transform(<any>blocks, true, null)).toEqual(blocks); | 60 | expect(filter.transform(<any>blocks, true, null)).toEqual(blocks); |
59 | done(); | 61 | done(); |
60 | }); | 62 | }); |
61 | 63 | ||
62 | it("filter blocks when display_user is logged for not logged user", done => { | 64 | it("filter blocks when display_user is logged for not logged user", done => { |
63 | let blocks = [{ settings: { display_user: "logged" } }]; | 65 | let blocks = [{ settings: { display_user: "logged" } }]; |
64 | - let filter = new DisplayBlocks(); | 66 | + let filter = new DisplayBlocks(translatorService); |
65 | expect(filter.transform(<any>blocks, true, null)).toEqual([]); | 67 | expect(filter.transform(<any>blocks, true, null)).toEqual([]); |
66 | done(); | 68 | done(); |
67 | }); | 69 | }); |
68 | 70 | ||
69 | it("filter blocks when display_user is not_logged for logged user", done => { | 71 | it("filter blocks when display_user is not_logged for logged user", done => { |
70 | let blocks = [{ settings: { display_user: "not_logged" } }]; | 72 | let blocks = [{ settings: { display_user: "not_logged" } }]; |
71 | - let filter = new DisplayBlocks(); | 73 | + let filter = new DisplayBlocks(translatorService); |
74 | + expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); | ||
75 | + done(); | ||
76 | + }); | ||
77 | + | ||
78 | + it("filter blocks with different language", done => { | ||
79 | + let blocks = [{ settings: { language: "en" } }]; | ||
80 | + translatorService.currentLanguage = jasmine.createSpy("currentLanguage").and.returnValue("pt"); | ||
81 | + let filter = new DisplayBlocks(translatorService); | ||
72 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); | 82 | expect(filter.transform(<any>blocks, true, <noosfero.User>{})).toEqual([]); |
73 | done(); | 83 | done(); |
74 | }); | 84 | }); |
src/app/layout/boxes/display-blocks.filter.ts
1 | import {Pipe, Inject} from "ng-forward"; | 1 | import {Pipe, Inject} from "ng-forward"; |
2 | +import {TranslatorService} from "../../shared/services/translator.service"; | ||
2 | 3 | ||
3 | @Pipe("displayBlocks") | 4 | @Pipe("displayBlocks") |
5 | +@Inject(TranslatorService) | ||
4 | export class DisplayBlocks { | 6 | export class DisplayBlocks { |
5 | 7 | ||
8 | + constructor(private translatorService: TranslatorService) { } | ||
9 | + | ||
6 | transform(blocks: noosfero.Block[], isHomepage: boolean, currentUser: noosfero.User) { | 10 | transform(blocks: noosfero.Block[], isHomepage: boolean, currentUser: noosfero.User) { |
7 | let selected: noosfero.Block[] = []; | 11 | let selected: noosfero.Block[] = []; |
8 | blocks = blocks || []; | 12 | blocks = blocks || []; |
9 | for (let block of blocks) { | 13 | for (let block of blocks) { |
10 | - if (this.visible(block, isHomepage) && this.displayToUser(block, currentUser)) { | 14 | + if (this.visible(block, isHomepage) && this.displayToUser(block, currentUser) && |
15 | + this.displayOnLanguage(block, this.translatorService.currentLanguage())) { | ||
11 | selected.push(block); | 16 | selected.push(block); |
12 | } | 17 | } |
13 | } | 18 | } |
@@ -24,4 +29,10 @@ export class DisplayBlocks { | @@ -24,4 +29,10 @@ export class DisplayBlocks { | ||
24 | return !displayUser || displayUser === "all" || | 29 | return !displayUser || displayUser === "all" || |
25 | (currentUser ? displayUser === "logged" : displayUser === "not_logged"); | 30 | (currentUser ? displayUser === "logged" : displayUser === "not_logged"); |
26 | } | 31 | } |
32 | + | ||
33 | + private displayOnLanguage(block: noosfero.Block, language: string) { | ||
34 | + let displayLanguage = block.settings ? (<any>block.settings)['language'] : null; | ||
35 | + return !displayLanguage || displayLanguage === "all" || | ||
36 | + language === displayLanguage; | ||
37 | + } | ||
27 | } | 38 | } |