Commit 6b394e0b70f581b010d8cc3cc402fd62a55aa9fa

Authored by Victor Costa
1 parent 7352b22a

Add component to edit comment paragraph discussions

src/app/article/article-default-view.component.ts
... ... @@ -43,7 +43,8 @@ export class ArticleViewComponent {
43 43 directiveName: string;
44 44  
45 45 ngOnInit() {
46   - let specificDirective = 'noosfero' + this.article.type;
  46 + let articleType = this.article.type.replace(/::/, '');
  47 + let specificDirective = 'noosfero' + articleType;
47 48 this.directiveName = "noosfero-default-article";
48 49 if (this.$injector.has(specificDirective + 'Directive')) {
49 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 16 private $compile: ng.ICompileService) { }
17 17  
18 18 ngOnInit() {
19   - let articleType = this.article.type;
20   - articleType = articleType.replace(/::/, '');
  19 + let articleType = this.article.type.replace(/::/, '');
21 20 let specificDirective = `${articleType.charAt(0).toLowerCase()}${articleType.substring(1)}Editor`;
22 21 let directiveName = "article-basic-editor";
23 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 27 'Content-Type': 'application/json'
28 28 };
29 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 37 let restRequest: ng.IPromise<noosfero.RestResult<noosfero.Article>> = this.getElement(article.id).customPOST(attributesToUpdate, null, null, headers);
32 38 restRequest.then(this.getHandleSuccessFunction(deferred))
33 39 .catch(this.getHandleErrorFunction(deferred));
... ...
src/plugins/comment_paragraph/article/cms/discussion-editor/discussion-editor.component.ts 0 → 100644
... ... @@ -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 @@
  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 @@
  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 1 import {AllowCommentComponent} from "./allow-comment/allow-comment.component";
2 2 import {CommentParagraphArticleButtonHotspotComponent} from "./hotspot/comment-paragraph-article-button.component";
3 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 7 export let hotspots: any = [CommentParagraphArticleButtonHotspotComponent, CommentParagraphFormHotspotComponent];
... ...
src/plugins/comment_paragraph/languages/en.json
1 1 {
2   - "comment-paragraph-plugin.title": "Paragraph Comments"
  2 + "comment-paragraph-plugin.title": "Paragraph Comments",
  3 + "comment-paragraph-plugin.discussion.editor.start_date.label": "From",
  4 + "comment-paragraph-plugin.discussion.editor.end_date.label": "To"
3 5 }
... ...
src/plugins/comment_paragraph/languages/pt.json
1 1 {
2   - "comment-paragraph-plugin.title": "Comentários por Parágrafo"
  2 + "comment-paragraph-plugin.title": "Comentários por Parágrafo",
  3 + "comment-paragraph-plugin.discussion.editor.start_date.label": "De",
  4 + "comment-paragraph-plugin.discussion.editor.end_date.label": "Até"
3 5 }
... ...