Commit abdfbb354e4604568eb87ab57c61dcee9a8525ab
Committed by
Michel Felipe
1 parent
5deddf45
Exists in
master
and in
26 other branches
Activate/deactivate comment paragraph in articles
Showing
10 changed files
with
78 additions
and
11 deletions
Show diff stats
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<T extends noosfero.RestModel> { |
| 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
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
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<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() { | ... | ... |