Compare View

switch
from
...
to
 
Commits (2)
@@ -14,3 +14,4 @@ typings @@ -14,3 +14,4 @@ typings
14 npm-debug.log 14 npm-debug.log
15 src/vendor.bundle.js* 15 src/vendor.bundle.js*
16 .vagrant/ 16 .vagrant/
  17 +*.sw*
src/app/layout/blocks/person-tags-plugin-interests/index.ts 0 → 100644
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
  1 +/* Module Index Entry - generated using the script npm run generate-index */
  2 +export * from "./person-tags-plugin-interests-block.component";
src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.spec.ts 0 → 100644
@@ -0,0 +1,56 @@ @@ -0,0 +1,56 @@
  1 +import {TestComponentBuilder} from 'ng-forward/cjs/testing/test-component-builder';
  2 +import {Provider, Input, provide, Component} from 'ng-forward';
  3 +import {provideFilters} from '../../../../spec/helpers';
  4 +import {PersonTagsPluginInterestsBlockComponent} from './person-tags-plugin-interests-block.component';
  5 +import * as helpers from "./../../../../spec/helpers";
  6 +
  7 +const htmlTemplate: string = '<noosfero-person-tags-plugin-interests-block [block]="ctrl.block" [owner]="ctrl.owner"></noosfero-person-tags-plugin-interests-block>';
  8 +
  9 +const tcb = new TestComponentBuilder();
  10 +
  11 +describe("Components", () => {
  12 + describe("Person Tags Interests Block Component", () => {
  13 +
  14 + let settingsObj = {};
  15 + let person = <noosfero.Person>{ name: "Person" };
  16 + let mockedService = {
  17 + getTags: (profile: noosfero.Profile): any => {
  18 + return Promise.resolve({ data: ['foo', 'bar'], headers: (name: string) => { return name; } });
  19 + }
  20 + };
  21 + beforeEach(angular.mock.module("templates"));
  22 +
  23 + let state = jasmine.createSpyObj("state", ["go"]);
  24 +
  25 +
  26 + function getProviders() {
  27 + return [
  28 + new Provider('$state', { useValue: state }),
  29 + new Provider('PersonService', {
  30 + useValue: mockedService
  31 + })
  32 + ].concat(provideFilters("truncateFilter", "stripTagsFilter"));
  33 + }
  34 + let componentClass: any = null;
  35 +
  36 + function getComponent() {
  37 + @Component({ selector: 'test-container-component', template: htmlTemplate, directives: [PersonTagsPluginInterestsBlockComponent], providers: getProviders() })
  38 + class BlockContainerComponent {
  39 + block = { type: 'Block', settings: settingsObj };
  40 + owner = person;
  41 + constructor() {
  42 + }
  43 + }
  44 + return BlockContainerComponent;
  45 + }
  46 +
  47 + it("get tags from the person service", done => {
  48 + tcb.createAsync(getComponent()).then(fixture => {
  49 + let PersonTagsPluginInterestsBlock: PersonTagsPluginInterestsBlockComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
  50 + expect(PersonTagsPluginInterestsBlock.tags).toEqual(['foo', 'bar']);
  51 + done();
  52 + });
  53 + });
  54 +
  55 + });
  56 +});
src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.ts 0 → 100644
@@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
  1 +import {Component, Inject, Input} from "ng-forward";
  2 +import {PersonService} from "./../../../../lib/ng-noosfero-api/http/person.service";
  3 +import {Arrays} from "./../../../../lib/util/arrays";
  4 +
  5 +@Component({
  6 + selector: "noosfero-person-tags-plugin-interests-block",
  7 + templateUrl: 'app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.html'
  8 +})
  9 +@Inject(PersonService, "$state")
  10 +export class PersonTagsPluginInterestsBlockComponent {
  11 +
  12 + @Input() block: any;
  13 + @Input() owner: any;
  14 +
  15 + profile: any;
  16 + tags: any;
  17 +
  18 + constructor(private personService: PersonService, private $state: any) { }
  19 +
  20 + ngOnInit() {
  21 + this.profile = this.owner;
  22 + this.tags = [];
  23 + this.personService.getTags(this.owner).then((result: noosfero.RestResult<any>) => {
  24 + this.tags = result.data;
  25 + });
  26 + }
  27 +}
src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.html 0 → 100644
@@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
  1 +<ul class="person-tags-plugin-interests">
  2 + <li ng-repeat="tag in ctrl.tags">{{tag}}</li>
  3 +</ul>
src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.scss 0 → 100644
@@ -0,0 +1,14 @@ @@ -0,0 +1,14 @@
  1 +.person-tags-plugin-interests {
  2 + padding: 0;
  3 + margin: 0;
  4 +
  5 + li {
  6 + list-style: none;
  7 + float: left;
  8 + padding: 5px;
  9 + margin: 5px;
  10 + text-transform: lowercase;
  11 + color: #fff;
  12 + background-color: #1E96D0;
  13 + }
  14 +}
src/app/main/main.component.ts
@@ -17,6 +17,7 @@ import {RecentDocumentsBlockComponent} from &quot;../layout/blocks/recent-documents/r @@ -17,6 +17,7 @@ import {RecentDocumentsBlockComponent} from &quot;../layout/blocks/recent-documents/r
17 import {ProfileImageBlockComponent} from "../layout/blocks/profile-image/profile-image-block.component"; 17 import {ProfileImageBlockComponent} from "../layout/blocks/profile-image/profile-image-block.component";
18 import {RawHTMLBlockComponent} from "../layout/blocks/raw-html/raw-html-block.component"; 18 import {RawHTMLBlockComponent} from "../layout/blocks/raw-html/raw-html-block.component";
19 import {StatisticsBlockComponent} from "../layout/blocks/statistics/statistics-block.component"; 19 import {StatisticsBlockComponent} from "../layout/blocks/statistics/statistics-block.component";
  20 +import {PersonTagsPluginInterestsBlockComponent} from "../layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component";
20 import {CustomContentComponent} from "../profile/custom-content/custom-content.component"; 21 import {CustomContentComponent} from "../profile/custom-content/custom-content.component";
21 22
22 import {MembersBlockComponent} from "../layout/blocks/members/members-block.component"; 23 import {MembersBlockComponent} from "../layout/blocks/members/members-block.component";
@@ -85,7 +86,7 @@ export class EnvironmentContent { @@ -85,7 +86,7 @@ export class EnvironmentContent {
85 * @name main.Main 86 * @name main.Main
86 * @requires AuthService, Session, Notification, ArticleBlog, ArticleView, Boxes, Block, LinkListBlock, 87 * @requires AuthService, Session, Notification, ArticleBlog, ArticleView, Boxes, Block, LinkListBlock,
87 * MainBlock, RecentDocumentsBlock, Navbar, ProfileImageBlock, MembersBlock, 88 * MainBlock, RecentDocumentsBlock, Navbar, ProfileImageBlock, MembersBlock,
88 - * NoosferoTemplate, DateFormat, RawHTMLBlock 89 + * NoosferoTemplate, DateFormat, RawHTMLBlock, PersonTagsPluginInterestsBlock
89 * @description 90 * @description
90 * The Main controller for the Noosfero Angular Theme application. 91 * The Main controller for the Noosfero Angular Theme application.
91 * 92 *
@@ -104,7 +105,7 @@ export class EnvironmentContent { @@ -104,7 +105,7 @@ export class EnvironmentContent {
104 MainBlockComponent, RecentDocumentsBlockComponent, Navbar, SidebarComponent, ProfileImageBlockComponent, 105 MainBlockComponent, RecentDocumentsBlockComponent, Navbar, SidebarComponent, ProfileImageBlockComponent,
105 MembersBlockComponent, NoosferoTemplate, DateFormat, RawHTMLBlockComponent, StatisticsBlockComponent, 106 MembersBlockComponent, NoosferoTemplate, DateFormat, RawHTMLBlockComponent, StatisticsBlockComponent,
106 LoginBlockComponent, CustomContentComponent, PermissionDirective, SearchFormComponent, SearchComponent, 107 LoginBlockComponent, CustomContentComponent, PermissionDirective, SearchFormComponent, SearchComponent,
107 - BlockComponent 108 + PersonTagsPluginInterestsBlockComponent, BlockComponent
108 ].concat(plugins.mainComponents).concat(plugins.hotspots), 109 ].concat(plugins.mainComponents).concat(plugins.hotspots),
109 providers: [AuthService, SessionService, NotificationService, BodyStateClassesService, 110 providers: [AuthService, SessionService, NotificationService, BodyStateClassesService,
110 "ngAnimate", "ngCookies", "ngStorage", "ngTouch", 111 "ngAnimate", "ngCookies", "ngStorage", "ngTouch",
src/lib/ng-noosfero-api/http/person.service.ts
1 import { Injectable, Inject } from "ng-forward"; 1 import { Injectable, Inject } from "ng-forward";
2 import {RestangularService} from "./restangular_service"; 2 import {RestangularService} from "./restangular_service";
  3 +import {ProfileService} from "./profile.service";
3 4
4 @Injectable() 5 @Injectable()
5 -@Inject("Restangular", "$q", "$log") 6 +@Inject("Restangular", "$q", "$log", ProfileService)
6 export class PersonService extends RestangularService<noosfero.Person> { 7 export class PersonService extends RestangularService<noosfero.Person> {
7 8
8 - constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) { 9 + constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService, protected profileService: ProfileService) {
9 super(Restangular, $q, $log); 10 super(Restangular, $q, $log);
10 } 11 }
11 12
@@ -20,4 +21,11 @@ export class PersonService extends RestangularService&lt;noosfero.Person&gt; { @@ -20,4 +21,11 @@ export class PersonService extends RestangularService&lt;noosfero.Person&gt; {
20 }; 21 };
21 } 22 }
22 23
  24 + getTags(profile: noosfero.Profile): ng.IPromise<noosfero.RestResult<any>> {
  25 + let p = this.getElement(<number>profile.id).customGET('tags');
  26 + let deferred = this.$q.defer<noosfero.RestResult<any>>();
  27 + p.then(this.getHandleSuccessFunction<noosfero.RestResult<any>>(deferred));
  28 + p.catch(this.getHandleErrorFunction<noosfero.RestResult<any>>(deferred));
  29 + return deferred.promise;
  30 + }
23 } 31 }
src/lib/ng-noosfero-api/http/restangular_service.ts
@@ -79,7 +79,7 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; { @@ -79,7 +79,7 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; {
79 } 79 }
80 } 80 }
81 return { 81 return {
82 - data: response.data[dataKey], 82 + data: (response.data[dataKey] || response.data),
83 headers: response.headers 83 headers: response.headers
84 }; 84 };
85 }; 85 };