diff --git a/src/app/environment/environment.html b/src/app/environment/environment.html index c78a7c6..0799e96 100644 --- a/src/app/environment/environment.html +++ b/src/app/environment/environment.html @@ -1,5 +1,9 @@
- + +
diff --git a/src/app/layout/boxes/box.html b/src/app/layout/boxes/box.html index 435b3bc..d95557d 100644 --- a/src/app/layout/boxes/box.html +++ b/src/app/layout/boxes/box.html @@ -1,4 +1,5 @@ -
+
+

{{block.title}}

diff --git a/src/app/layout/boxes/boxes.component.spec.ts b/src/app/layout/boxes/boxes.component.spec.ts index d7d0534..08cf9a2 100644 --- a/src/app/layout/boxes/boxes.component.spec.ts +++ b/src/app/layout/boxes/boxes.component.spec.ts @@ -49,11 +49,6 @@ describe("Boxes Component", () => { expect(helper.find('div.col-md-2-5').length).toEqual(1); }); - it("check the boxes order", () => { - expect(helper.component.boxesOrder(properties['boxes'][0])).toEqual(1); - expect(helper.component.boxesOrder(properties['boxes'][1])).toEqual(0); - }); - it("set isHomepage as false by default", () => { expect(helper.component.isHomepage).toBeFalsy(); }); diff --git a/src/app/layout/boxes/boxes.component.ts b/src/app/layout/boxes/boxes.component.ts index 19b4af1..c094a69 100644 --- a/src/app/layout/boxes/boxes.component.ts +++ b/src/app/layout/boxes/boxes.component.ts @@ -1,17 +1,20 @@ import {Input, Inject, Component} from 'ng-forward'; import {SessionService, AuthService, AuthEvents} from "../../login"; import {DisplayBlocks} from "./display-blocks.filter"; +import {DisplayBoxes} from "./display-boxes.filter"; +import {SetBoxLayout} from "./set-box-layout.filter"; @Component({ selector: "noosfero-boxes", templateUrl: "app/layout/boxes/boxes.html", - directives: [DisplayBlocks] + directives: [DisplayBlocks, DisplayBoxes, SetBoxLayout] }) @Inject("SessionService", 'AuthService', "$state", "$rootScope") export class BoxesComponent { @Input() boxes: noosfero.Box[]; @Input() owner: noosfero.Profile | noosfero.Environment; + @Input() layout: string; currentUser: noosfero.User; isHomepage = true; @@ -39,11 +42,6 @@ export class BoxesComponent { this.verifyHomepage(); } - boxesOrder(box: noosfero.Box) { - if (box.position === 2) return 0; - return box.position; - } - private verifyHomepage() { if (this.owner && ["Profile", "Community", "Person"].indexOf((this.owner)['type']) >= 0) { let profile = this.owner; diff --git a/src/app/layout/boxes/boxes.html b/src/app/layout/boxes/boxes.html index 5478806..ecd413c 100644 --- a/src/app/layout/boxes/boxes.html +++ b/src/app/layout/boxes/boxes.html @@ -1 +1 @@ - + diff --git a/src/app/layout/boxes/display-boxes.filter.ts b/src/app/layout/boxes/display-boxes.filter.ts new file mode 100644 index 0000000..58f9aa0 --- /dev/null +++ b/src/app/layout/boxes/display-boxes.filter.ts @@ -0,0 +1,39 @@ +import {Pipe, Inject} from "ng-forward"; +import {TranslatorService} from "../../shared/services/translator.service"; + +@Pipe("displayBoxes") +@Inject(TranslatorService) +export class DisplayBoxes { + + constructor(private translatorService: TranslatorService) { } + + transform(boxes: noosfero.Box[], layout: string) { + let function_str: string = "visible_on" + layout; + let valid_boxes: number[] = []; + let selected: noosfero.Box[] = []; + boxes = boxes || []; + + if(layout == "rightbar") { + valid_boxes = this.visible_on_right_bar(); + }else { + valid_boxes = this.visible_on_default(); + } + + for (let box of boxes) { + if(valid_boxes.indexOf(box.position) != -1){ + selected.push(box); + } + } + return selected; + } + + private visible_on_default() { + return [1,2,3]; + } + + private visible_on_right_bar() { + return [1,3]; + } + +} + diff --git a/src/app/layout/boxes/set-box-layout.filter.ts b/src/app/layout/boxes/set-box-layout.filter.ts new file mode 100644 index 0000000..0de6a7f --- /dev/null +++ b/src/app/layout/boxes/set-box-layout.filter.ts @@ -0,0 +1,37 @@ +import {Pipe, Inject} from "ng-forward"; +import {TranslatorService} from "../../shared/services/translator.service"; + +@Pipe("setBoxLayout") +@Inject(TranslatorService) +export class SetBoxLayout { + + constructor(private translatorService: TranslatorService) { } + + transform(pos: number, layout: string) { + console.log(layout) + if(layout == "rightbar") { + return this.right_bar(pos); + }else { + return this.default(pos); + } + } + + private default(position: number) { + if(position == 1) { + return "col-md-6 col-md-push-3"; + }else if(position == 2){ + return "col-md-3 col-md-pull-6"; + }else { + return "col-md-3"; + } + } + + private right_bar(position: number) { + if(position == 1) { + return "col-sm-6 col-sm-push-2"; + }else{ + return "col-sm-3 col-sm-push-2"; + } + } + +} diff --git a/src/app/profile/profile.html b/src/app/profile/profile.html index 160f623..c7841e1 100644 --- a/src/app/profile/profile.html +++ b/src/app/profile/profile.html @@ -1,7 +1,14 @@
- -
- -
+ + +
+ +
diff --git a/src/lib/ng-noosfero-api/interfaces/environment.ts b/src/lib/ng-noosfero-api/interfaces/environment.ts index 14a8585..2729997 100644 --- a/src/lib/ng-noosfero-api/interfaces/environment.ts +++ b/src/lib/ng-noosfero-api/interfaces/environment.ts @@ -15,5 +15,13 @@ namespace noosfero { */ id: number; settings: any + + /** + * @ngdoc property + * @name layout_template + * @propertyOf noofero.Environment + * @returns {string} The Environment layout (e.g. default, rightbar) + */ + layout_template: string; } -} \ No newline at end of file +} diff --git a/src/lib/ng-noosfero-api/interfaces/profile.ts b/src/lib/ng-noosfero-api/interfaces/profile.ts index 84a4649..72e7024 100644 --- a/src/lib/ng-noosfero-api/interfaces/profile.ts +++ b/src/lib/ng-noosfero-api/interfaces/profile.ts @@ -78,5 +78,13 @@ namespace noosfero { * @returns {string} The Profile footer */ custom_footer: string; + + /** + * @ngdoc property + * @name layout_template + * @propertyOf noofero.Profile + * @returns {string} The Profile layout template (e.g.: "rightbar", "default") + */ + layout_template: string; } } -- libgit2 0.21.2