Commit abdfbb354e4604568eb87ab57c61dcee9a8525ab

Authored by Victor Costa
Committed by Michel Felipe
1 parent 5deddf45

Activate/deactivate comment paragraph in articles

src/lib/ng-noosfero-api/http/restangular_service.spec.ts
... ... @@ -207,4 +207,27 @@ describe("Restangular Service - base Class", () => {
207 207 $httpBackend.flush();
208 208 });
209 209  
210   -});
211 210 \ No newline at end of file
  211 + it("post('customPath', rootObject) calls POST /rootObjects/1/customPath", (done) => {
  212 + let rootObj: RootObjectModel = rootObjectRestService.getElement(1);
  213 + $httpBackend.expectPOST("/api/v1/rootObjects/1/customPath").respond(201, { object: { attr: 1, rootId: 1 } });
  214 + objectRestService.post('customPath', rootObj).then((result: noosfero.RestResult<ObjectModel>) => {
  215 + expect(result.data).toBeDefined();
  216 + expect((<any>result.data).attr).toEqual(1);
  217 + expect((<any>result.data).rootId).toEqual(1);
  218 + done();
  219 + });
  220 + $httpBackend.flush();
  221 + });
  222 +
  223 + it("post('customPath') calls POST /objects/customPath", (done) => {
  224 + $httpBackend.expectPOST("/api/v1/objects/customPath").respond(201, { object: { attr: 1, rootId: 1 } });
  225 + objectRestService.post('customPath').then((result: noosfero.RestResult<ObjectModel>) => {
  226 + expect(result.data).toBeDefined();
  227 + expect((<any>result.data).attr).toEqual(1);
  228 + expect((<any>result.data).rootId).toEqual(1);
  229 + done();
  230 + });
  231 + $httpBackend.flush();
  232 + });
  233 +
  234 +});
... ...
src/lib/ng-noosfero-api/http/restangular_service.ts
... ... @@ -261,6 +261,22 @@ export abstract class RestangularService&lt;T extends noosfero.RestModel&gt; {
261 261 return deferred.promise;
262 262 }
263 263  
  264 +
  265 + public post(path: string, rootElement?: restangular.IElement, data?: any, headers?: any): ng.IPromise<noosfero.RestResult<T>> {
  266 + let deferred = this.$q.defer<noosfero.RestResult<T>>();
  267 + let restRequest: ng.IPromise<any>;
  268 +
  269 + if (rootElement) {
  270 + restRequest = rootElement.customPOST(data, path, headers);
  271 + } else {
  272 + restRequest = this.baseResource.customPOST(data, path, headers);
  273 + }
  274 + restRequest
  275 + .then(this.getHandleSuccessFunction(deferred))
  276 + .catch(this.getHandleErrorFunction(deferred));
  277 + return deferred.promise;
  278 + }
  279 +
264 280 /**
265 281 * Returns a Restangular IElement representing the
266 282 */
... ...
src/lib/ng-noosfero-api/interfaces/article.ts
1 1  
2 2 namespace noosfero {
3   - export interface Article extends RestModel {
  3 + export interface Article extends RestModel {
4 4 path: string;
5 5 profile: Profile;
6 6 type: string;
7   - parent: Article;
  7 + parent: Article;
8 8 body: string;
9 9 title: string;
10 10 name: string;
11 11 published: boolean;
  12 + setting: any;
12 13 }
13 14 -}
  15 +}
14 16 \ No newline at end of file
... ...
src/plugins/comment_paragraph/allow-comment/allow-comment.component.ts
... ... @@ -11,4 +11,8 @@ export class AllowCommentComponent {
11 11 @Input() content: string;
12 12 @Input() paragraphUuid: string;
13 13 @Input() article: noosfero.Article;
  14 +
  15 + isActivated() {
  16 + return this.article.setting.comment_paragraph_plugin_activate;
  17 + }
14 18 }
... ...
src/plugins/comment_paragraph/allow-comment/allow-comment.html
1 1 <div class="paragraph-content" ng-bind-html="ctrl.content"></div>
2   -<div class="actions">
  2 +<div ng-if="ctrl.isActivated()" class="actions">
3 3 <a href="#" popover-placement="bottom" popover-trigger="outsideClick" uib-popover-template="'plugins/comment_paragraph/allow-comment/popover.html'" ng-click="ctrl.loadComments()"><i class="fa fa-fw fa-comments"></i></a>
4 4 </div>
... ...
src/plugins/comment_paragraph/hotspot/article-button.html
... ... @@ -1,2 +0,0 @@
1   -<a href='#'>Enable</a>
2   -<a href='#'>Disable</a>
src/plugins/comment_paragraph/hotspot/comment-paragraph-article-button.component.ts
1 1 import { Input, Inject, Component } from "ng-forward";
2 2 import {Hotspot} from "../../../app/hotspot/hotspot.decorator";
  3 +import {CommentParagraphService} from "../http/comment-paragraph.service";
3 4  
4 5 @Component({
5 6 selector: "comment-paragraph-article-button-hotspot",
6   - templateUrl: "plugins/comment_paragraph/hotspot/article-button.html",
  7 + templateUrl: "plugins/comment_paragraph/hotspot/comment-paragraph-article-button.html",
7 8 })
8   -@Inject("$scope")
  9 +@Inject("$scope", CommentParagraphService)
9 10 @Hotspot("article_extra_toolbar_buttons")
10 11 export class CommentParagraphArticleButtonHotspotComponent {
11 12  
12 13 @Input() article: noosfero.Article;
13 14  
14   - constructor(private $scope: ng.IScope) { }
  15 + constructor(private $scope: ng.IScope, private commentParagraphService: CommentParagraphService) { }
  16 +
  17 + deactivateCommentParagraph() {
  18 + this.commentParagraphService.deactivateCommentParagraph(this.article).then((result: noosfero.RestResult<noosfero.Article>) => {
  19 + this.article = result.data;
  20 + });
  21 + }
  22 +
  23 + activateCommentParagraph() {
  24 + this.commentParagraphService.activateCommentParagraph(this.article).then((result: noosfero.RestResult<noosfero.Article>) => {
  25 + this.article = result.data;
  26 + });
  27 + }
15 28 }
... ...
src/plugins/comment_paragraph/hotspot/comment-paragraph-article-button.html 0 → 100644
... ... @@ -0,0 +1,2 @@
  1 +<a href='#' (click)="ctrl.activateCommentParagraph()" ng-show="!ctrl.article.setting.comment_paragraph_plugin_activate">Enable</a>
  2 +<a href='#' (click)="ctrl.deactivateCommentParagraph()" ng-show="ctrl.article.setting.comment_paragraph_plugin_activate">Disable</a>
... ...
src/plugins/comment_paragraph/http/comment-paragraph.service.ts
... ... @@ -31,4 +31,14 @@ export class CommentParagraphService extends RestangularService&lt;noosfero.Comment
31 31 let articleElement = this.articleService.getElement(<number>article.id);
32 32 return this.create(comment, articleElement, null, { 'Content-Type': 'application/json' }, false);
33 33 }
  34 +
  35 + activateCommentParagraph(article: noosfero.Article) {
  36 + let articleElement = this.articleService.getElement(<number>article.id);
  37 + return this.articleService.post("comment_paragraph_plugin/activate", articleElement);
  38 + }
  39 +
  40 + deactivateCommentParagraph(article: noosfero.Article) {
  41 + let articleElement = this.articleService.getElement(<number>article.id);
  42 + return this.articleService.post("comment_paragraph_plugin/deactivate", articleElement);
  43 + }
34 44 }
... ...
src/plugins/comment_paragraph/side-comments/side-comments.component.ts
... ... @@ -19,7 +19,7 @@ export class SideCommentsComponent extends CommentsComponent {
19 19  
20 20 ngOnInit() {
21 21 super.ngOnInit();
22   - this.newComment['paragraph_uuid'] = this.paragraphUuid;
  22 + (<any>this.newComment).paragraph_uuid = this.paragraphUuid;
23 23 }
24 24  
25 25 loadComments() {
... ...