diff --git a/.gitignore b/.gitignore
index a2d7b49..7b78d56 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,4 @@ typings
npm-debug.log
src/vendor.bundle.js*
.vagrant/
+*.sw*
diff --git a/src/app/layout/blocks/person-tags-plugin-interests/index.ts b/src/app/layout/blocks/person-tags-plugin-interests/index.ts
new file mode 100644
index 0000000..a1785c1
--- /dev/null
+++ b/src/app/layout/blocks/person-tags-plugin-interests/index.ts
@@ -0,0 +1,2 @@
+/* Module Index Entry - generated using the script npm run generate-index */
+export * from "./person-tags-plugin-interests-block.component";
diff --git a/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.spec.ts b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.spec.ts
new file mode 100644
index 0000000..c9a96d7
--- /dev/null
+++ b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.spec.ts
@@ -0,0 +1,56 @@
+import {TestComponentBuilder} from 'ng-forward/cjs/testing/test-component-builder';
+import {Provider, Input, provide, Component} from 'ng-forward';
+import {provideFilters} from '../../../../spec/helpers';
+import {PersonTagsPluginInterestsBlockComponent} from './person-tags-plugin-interests-block.component';
+import * as helpers from "./../../../../spec/helpers";
+
+const htmlTemplate: string = '';
+
+const tcb = new TestComponentBuilder();
+
+describe("Components", () => {
+ describe("Person Tags Interests Block Component", () => {
+
+ let settingsObj = {};
+ let person = { name: "Person" };
+ let mockedService = {
+ getTags: (profile: noosfero.Profile): any => {
+ return Promise.resolve({ data: ['foo', 'bar'], headers: (name: string) => { return name; } });
+ }
+ };
+ beforeEach(angular.mock.module("templates"));
+
+ let state = jasmine.createSpyObj("state", ["go"]);
+
+
+ function getProviders() {
+ return [
+ new Provider('$state', { useValue: state }),
+ new Provider('PersonService', {
+ useValue: mockedService
+ })
+ ].concat(provideFilters("truncateFilter", "stripTagsFilter"));
+ }
+ let componentClass: any = null;
+
+ function getComponent() {
+ @Component({ selector: 'test-container-component', template: htmlTemplate, directives: [PersonTagsPluginInterestsBlockComponent], providers: getProviders() })
+ class BlockContainerComponent {
+ block = { type: 'Block', settings: settingsObj };
+ owner = person;
+ constructor() {
+ }
+ }
+ return BlockContainerComponent;
+ }
+
+ it("get tags from the person service", done => {
+ tcb.createAsync(getComponent()).then(fixture => {
+ let PersonTagsPluginInterestsBlock: PersonTagsPluginInterestsBlockComponent = fixture.debugElement.componentViewChildren[0].componentInstance;
+ expect(PersonTagsPluginInterestsBlock.tags).toEqual(['foo', 'bar']);
+ done();
+ });
+ });
+
+ });
+});
diff --git a/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.ts b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.ts
new file mode 100644
index 0000000..49d1ef2
--- /dev/null
+++ b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component.ts
@@ -0,0 +1,27 @@
+import {Component, Inject, Input} from "ng-forward";
+import {PersonService} from "./../../../../lib/ng-noosfero-api/http/person.service";
+import {Arrays} from "./../../../../lib/util/arrays";
+
+@Component({
+ selector: "noosfero-person-tags-plugin-interests-block",
+ templateUrl: 'app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.html'
+})
+@Inject(PersonService, "$state")
+export class PersonTagsPluginInterestsBlockComponent {
+
+ @Input() block: any;
+ @Input() owner: any;
+
+ profile: any;
+ tags: any;
+
+ constructor(private personService: PersonService, private $state: any) { }
+
+ ngOnInit() {
+ this.profile = this.owner;
+ this.tags = [];
+ this.personService.getTags(this.owner).then((result: noosfero.RestResult) => {
+ this.tags = result.data;
+ });
+ }
+}
diff --git a/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.html b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.html
new file mode 100644
index 0000000..37d0c64
--- /dev/null
+++ b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.html
@@ -0,0 +1,3 @@
+
diff --git a/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.scss b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.scss
new file mode 100644
index 0000000..8e40d16
--- /dev/null
+++ b/src/app/layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.scss
@@ -0,0 +1,14 @@
+.person-tags-plugin-interests {
+ padding: 0;
+ margin: 0;
+
+ li {
+ list-style: none;
+ float: left;
+ padding: 5px;
+ margin: 5px;
+ text-transform: lowercase;
+ color: #fff;
+ background-color: #1E96D0;
+ }
+}
diff --git a/src/app/main/main.component.ts b/src/app/main/main.component.ts
index 16b5a19..a5222b5 100644
--- a/src/app/main/main.component.ts
+++ b/src/app/main/main.component.ts
@@ -16,6 +16,7 @@ import {RecentDocumentsBlockComponent} from "../layout/blocks/recent-documents/r
import {ProfileImageBlockComponent} from "../layout/blocks/profile-image/profile-image-block.component";
import {RawHTMLBlockComponent} from "../layout/blocks/raw-html/raw-html-block.component";
import {StatisticsBlockComponent} from "../layout/blocks/statistics/statistics-block.component";
+import {PersonTagsPluginInterestsBlockComponent} from "../layout/blocks/person-tags-plugin-interests/person-tags-plugin-interests-block.component";
import {CustomContentComponent} from "../profile/custom-content/custom-content.component";
import {MembersBlockComponent} from "../layout/blocks/members/members-block.component";
@@ -82,7 +83,7 @@ export class EnvironmentContent {
* @name main.Main
* @requires AuthService, Session, Notification, ArticleBlog, ArticleView, Boxes, Block, LinkListBlock,
* MainBlock, RecentDocumentsBlock, Navbar, ProfileImageBlock, MembersBlock,
- * NoosferoTemplate, DateFormat, RawHTMLBlock
+ * NoosferoTemplate, DateFormat, RawHTMLBlock, PersonTagsPluginInterestsBlock
* @description
* The Main controller for the Noosfero Angular Theme application.
*
@@ -100,7 +101,7 @@ export class EnvironmentContent {
LinkListBlockComponent, CommunitiesBlockComponent, HtmlEditorComponent, ProfileComponent,
MainBlockComponent, RecentDocumentsBlockComponent, Navbar, SidebarComponent, ProfileImageBlockComponent,
MembersBlockComponent, NoosferoTemplate, DateFormat, RawHTMLBlockComponent, StatisticsBlockComponent,
- LoginBlockComponent, CustomContentComponent, PermissionDirective
+ LoginBlockComponent, PersonTagsPluginInterestsBlockComponent, CustomContentComponent, PermissionDirective
].concat(plugins.mainComponents).concat(plugins.hotspots),
providers: [AuthService, SessionService, NotificationService, BodyStateClassesService,
"ngAnimate", "ngCookies", "ngStorage", "ngTouch",
diff --git a/src/lib/ng-noosfero-api/http/person.service.ts b/src/lib/ng-noosfero-api/http/person.service.ts
index a7f9b3d..04eb024 100644
--- a/src/lib/ng-noosfero-api/http/person.service.ts
+++ b/src/lib/ng-noosfero-api/http/person.service.ts
@@ -1,11 +1,12 @@
import { Injectable, Inject } from "ng-forward";
import {RestangularService} from "./restangular_service";
+import {ProfileService} from "./profile.service";
@Injectable()
-@Inject("Restangular", "$q", "$log")
+@Inject("Restangular", "$q", "$log", ProfileService)
export class PersonService extends RestangularService {
- constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService) {
+ constructor(Restangular: restangular.IService, $q: ng.IQService, $log: ng.ILogService, protected profileService: ProfileService) {
super(Restangular, $q, $log);
}
@@ -20,4 +21,11 @@ export class PersonService extends RestangularService {
};
}
+ getTags(profile: noosfero.Profile): ng.IPromise> {
+ let p = this.getElement(profile.id).customGET('tags');
+ let deferred = this.$q.defer>();
+ p.then(this.getHandleSuccessFunction>(deferred));
+ p.catch(this.getHandleErrorFunction>(deferred));
+ return deferred.promise;
+ }
}
diff --git a/src/lib/ng-noosfero-api/http/restangular_service.ts b/src/lib/ng-noosfero-api/http/restangular_service.ts
index 75d063d..d7acb09 100644
--- a/src/lib/ng-noosfero-api/http/restangular_service.ts
+++ b/src/lib/ng-noosfero-api/http/restangular_service.ts
@@ -79,7 +79,7 @@ export abstract class RestangularService {
}
}
return {
- data: response.data[dataKey],
+ data: (response.data[dataKey] || response.data),
headers: response.headers
};
};
--
libgit2 0.21.2