Commit 6b394e0b70f581b010d8cc3cc402fd62a55aa9fa
1 parent
7352b22a
Exists in
master
and in
26 other branches
Add component to edit comment paragraph discussions
Showing
9 changed files
with
106 additions
and
7 deletions
Show diff stats
src/app/article/article-default-view.component.ts
@@ -43,7 +43,8 @@ export class ArticleViewComponent { | @@ -43,7 +43,8 @@ export class ArticleViewComponent { | ||
43 | directiveName: string; | 43 | directiveName: string; |
44 | 44 | ||
45 | ngOnInit() { | 45 | ngOnInit() { |
46 | - let specificDirective = 'noosfero' + this.article.type; | 46 | + let articleType = this.article.type.replace(/::/, ''); |
47 | + let specificDirective = 'noosfero' + articleType; | ||
47 | this.directiveName = "noosfero-default-article"; | 48 | this.directiveName = "noosfero-default-article"; |
48 | if (this.$injector.has(specificDirective + 'Directive')) { | 49 | if (this.$injector.has(specificDirective + 'Directive')) { |
49 | this.directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); | 50 | this.directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); |
src/app/article/cms/article-editor/article-editor.component.ts
@@ -16,8 +16,7 @@ export class ArticleEditorComponent { | @@ -16,8 +16,7 @@ export class ArticleEditorComponent { | ||
16 | private $compile: ng.ICompileService) { } | 16 | private $compile: ng.ICompileService) { } |
17 | 17 | ||
18 | ngOnInit() { | 18 | ngOnInit() { |
19 | - let articleType = this.article.type; | ||
20 | - articleType = articleType.replace(/::/, ''); | 19 | + let articleType = this.article.type.replace(/::/, ''); |
21 | let specificDirective = `${articleType.charAt(0).toLowerCase()}${articleType.substring(1)}Editor`; | 20 | let specificDirective = `${articleType.charAt(0).toLowerCase()}${articleType.substring(1)}Editor`; |
22 | let directiveName = "article-basic-editor"; | 21 | let directiveName = "article-basic-editor"; |
23 | if (this.$injector.has(specificDirective + 'Directive')) { | 22 | if (this.$injector.has(specificDirective + 'Directive')) { |
src/lib/ng-noosfero-api/http/article.service.ts
@@ -27,7 +27,13 @@ export class ArticleService extends RestangularService<noosfero.Article> { | @@ -27,7 +27,13 @@ export class ArticleService extends RestangularService<noosfero.Article> { | ||
27 | 'Content-Type': 'application/json' | 27 | 'Content-Type': 'application/json' |
28 | }; | 28 | }; |
29 | let deferred = this.$q.defer<noosfero.RestResult<noosfero.Article>>(); | 29 | let deferred = this.$q.defer<noosfero.RestResult<noosfero.Article>>(); |
30 | - let attributesToUpdate: any = { article: { name: article.name, body: article.body, published: article.published } }; | 30 | + // TODO dynamically copy the selected attributes to update |
31 | + let attributesToUpdate: any = { | ||
32 | + article: { | ||
33 | + name: article.name, body: article.body, published: article.published, | ||
34 | + start_date: article['start_date'], end_date: article['end_date'] | ||
35 | + } | ||
36 | + }; | ||
31 | let restRequest: ng.IPromise<noosfero.RestResult<noosfero.Article>> = this.getElement(article.id).customPOST(attributesToUpdate, null, null, headers); | 37 | let restRequest: ng.IPromise<noosfero.RestResult<noosfero.Article>> = this.getElement(article.id).customPOST(attributesToUpdate, null, null, headers); |
32 | restRequest.then(this.getHandleSuccessFunction(deferred)) | 38 | restRequest.then(this.getHandleSuccessFunction(deferred)) |
33 | .catch(this.getHandleErrorFunction(deferred)); | 39 | .catch(this.getHandleErrorFunction(deferred)); |
src/plugins/comment_paragraph/article/cms/discussion-editor/discussion-editor.component.ts
0 → 100644
@@ -0,0 +1,39 @@ | @@ -0,0 +1,39 @@ | ||
1 | +import {Component, Input, Inject} from 'ng-forward'; | ||
2 | + | ||
3 | +@Component({ | ||
4 | + selector: 'comment-paragraph-plugin-discussion-editor', | ||
5 | + templateUrl: "plugins/comment_paragraph/article/cms/discussion-editor/discussion-editor.html" | ||
6 | +}) | ||
7 | +@Inject("$scope") | ||
8 | +export class DiscussionEditorComponent { | ||
9 | + | ||
10 | + @Input() article: noosfero.Article; | ||
11 | + start_date: Date; | ||
12 | + end_date: Date; | ||
13 | + | ||
14 | + constructor(private $scope: ng.IScope) { | ||
15 | + this.convertDate('start_date'); | ||
16 | + this.convertDate('end_date'); | ||
17 | + } | ||
18 | + | ||
19 | + convertDate(attributeName: string) { | ||
20 | + this.$scope.$watch(() => { | ||
21 | + return this[attributeName]; | ||
22 | + }, () => { | ||
23 | + if (this[attributeName]) { | ||
24 | + this.article[attributeName] = this[attributeName].toISOString(); | ||
25 | + } | ||
26 | + }); | ||
27 | + } | ||
28 | + | ||
29 | + ngOnInit() { | ||
30 | + if (this.article['start_date']) { | ||
31 | + this.start_date = new Date(this.article['start_date']); | ||
32 | + } else { | ||
33 | + this.start_date = moment().toDate(); | ||
34 | + } | ||
35 | + if (this.article['end_date']) { | ||
36 | + this.end_date = new Date(this.article['end_date']); | ||
37 | + } | ||
38 | + } | ||
39 | +} |
src/plugins/comment_paragraph/article/cms/discussion-editor/discussion-editor.html
0 → 100644
@@ -0,0 +1,35 @@ | @@ -0,0 +1,35 @@ | ||
1 | +<form> | ||
2 | + <div class="form-group"> | ||
3 | + <label for="titleInput">{{"article.basic_editor.title" | translate}}</label> | ||
4 | + <input type="text" class="form-control" id="titleInput" placeholder="{{'article.basic_editor.title' | translate}}" ng-model="ctrl.article.name"> | ||
5 | + </div> | ||
6 | + <div class="form-group"> | ||
7 | + | ||
8 | + <div class="form-inline"> | ||
9 | + <span class="start-date discussion-date"> | ||
10 | + <label for="startDateInput">{{"comment-paragraph-plugin.discussion.editor.start_date.label" | translate}}</label> | ||
11 | + <input id="startDateInput" type="text" class="form-control" uib-datepicker-popup ng-model="ctrl.start_date" | ||
12 | + is-open="startDateOpened" ng-required="true" close-text="Close" /> | ||
13 | + <span class="input-group-btn date-popup-button"> | ||
14 | + <button type="button" class="btn btn-default" ng-click="startDateOpened = true"> | ||
15 | + <i class="fa fa-calendar fa-fw"></i> | ||
16 | + </button> | ||
17 | + </span> | ||
18 | + </span> | ||
19 | + <span class="end-date discussion-date"> | ||
20 | + <label for="endDateInput">{{"comment-paragraph-plugin.discussion.editor.end_date.label" | translate}}</label> | ||
21 | + <input id="endDateInput" type="text" class="form-control" uib-datepicker-popup ng-model="ctrl.end_date" | ||
22 | + is-open="endDateOpened" ng-required="true" close-text="Close" /> | ||
23 | + <span class="date-popup-button"> | ||
24 | + <button type="button" class="btn btn-default" ng-click="endDateOpened = true"> | ||
25 | + <i class="fa fa-calendar fa-fw"></i> | ||
26 | + </button> | ||
27 | + </span> | ||
28 | + </span> | ||
29 | + </div> | ||
30 | + </div> | ||
31 | + <div class="form-group"> | ||
32 | + <label for="bodyInput">{{"article.basic_editor.body" | translate}}</label> | ||
33 | + <html-editor [(value)]="ctrl.article.body"></html-editor> | ||
34 | + </div> | ||
35 | +</form> |
src/plugins/comment_paragraph/article/cms/discussion-editor/discussion.scss
0 → 100644
@@ -0,0 +1,14 @@ | @@ -0,0 +1,14 @@ | ||
1 | +comment-paragraph-plugin-discussion-editor { | ||
2 | + .discussion-date { | ||
3 | + [uib-datepicker-popup-wrap] { | ||
4 | + display: inline-block; | ||
5 | + } | ||
6 | + .date-popup-button { | ||
7 | + @extend .input-group-btn; | ||
8 | + display: inline-block; | ||
9 | + } | ||
10 | + } | ||
11 | + .end-date { | ||
12 | + margin-left: 60px; | ||
13 | + } | ||
14 | +} |
src/plugins/comment_paragraph/index.ts
1 | import {AllowCommentComponent} from "./allow-comment/allow-comment.component"; | 1 | import {AllowCommentComponent} from "./allow-comment/allow-comment.component"; |
2 | import {CommentParagraphArticleButtonHotspotComponent} from "./hotspot/comment-paragraph-article-button.component"; | 2 | import {CommentParagraphArticleButtonHotspotComponent} from "./hotspot/comment-paragraph-article-button.component"; |
3 | import {CommentParagraphFormHotspotComponent} from "./hotspot/comment-paragraph-form.component"; | 3 | import {CommentParagraphFormHotspotComponent} from "./hotspot/comment-paragraph-form.component"; |
4 | +import {DiscussionEditorComponent} from "./article/cms/discussion-editor/discussion-editor.component"; | ||
4 | 5 | ||
5 | -export let mainComponents: any = [AllowCommentComponent]; | 6 | +export let mainComponents: any = [AllowCommentComponent, DiscussionEditorComponent]; |
6 | export let hotspots: any = [CommentParagraphArticleButtonHotspotComponent, CommentParagraphFormHotspotComponent]; | 7 | export let hotspots: any = [CommentParagraphArticleButtonHotspotComponent, CommentParagraphFormHotspotComponent]; |
src/plugins/comment_paragraph/languages/en.json
src/plugins/comment_paragraph/languages/pt.json