Commit 172c82f50df9e97d5155c489d26b8e8337095031

Authored by Victor Costa
1 parent afd487b0

Add discussion block for comment paragraph

src/app/layout/blocks/block.component.ts
... ... @@ -11,7 +11,7 @@ export class BlockComponent {
11 11 @Input() owner: any;
12 12  
13 13 ngOnInit() {
14   - let blockName = (this.block && this.block.type) ? this.block.type.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() : "default-block";
  14 + let blockName = (this.block && this.block.type) ? this.block.type.replace(/::/, '').replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() : "default-block";
15 15 this.$element.replaceWith(this.$compile('<noosfero-' + blockName + ' [block]="ctrl.block" [owner]="ctrl.owner"></noosfero-' + blockName + '>')(this.$scope));
16 16 }
17 17  
... ...
src/plugins/comment_paragraph/block/discussion/discussion-block.component.ts 0 → 100644
... ... @@ -0,0 +1,52 @@
  1 +import {Component, Inject, Input} from "ng-forward";
  2 +import {ArticleService} from "../../../../lib/ng-noosfero-api/http/article.service";
  3 +
  4 +@Component({
  5 + selector: "noosfero-comment-paragraph-plugin-discussion-block",
  6 + templateUrl: 'plugins/comment_paragraph/block/discussion/discussion-block.html'
  7 +})
  8 +@Inject(ArticleService, "$state")
  9 +export class DiscussionBlockComponent {
  10 +
  11 + @Input() block: any;
  12 + @Input() owner: any;
  13 +
  14 + profile: any;
  15 + documents: any;
  16 +
  17 + documentsLoaded: boolean = false;
  18 +
  19 + constructor(private articleService: ArticleService, private $state: any) { }
  20 +
  21 + ngOnInit() {
  22 + this.profile = this.owner;
  23 + this.documents = [];
  24 +
  25 + let limit = ((this.block && this.block.settings) ? this.block.settings.limit : null) || 50;
  26 + let params = { content_type: 'CommentParagraphPlugin::Discussion', per_page: limit, order: 'start_date DESC' };
  27 + let now = new Date().toISOString();
  28 + switch (this.block.settings['discussion_status']) {
  29 + case 0:
  30 + params['from_start_date'] = now;
  31 + break;
  32 + case 1:
  33 + params['until_start_date'] = now;
  34 + params['from_end_date'] = now;
  35 + break;
  36 + case 2:
  37 + params['until_end_date'] = now;
  38 + break;
  39 + }
  40 + console.log(this.block.settings['discussion_status']);
  41 + this.articleService.getByProfile(this.profile, params)
  42 + .then((result: noosfero.RestResult<noosfero.Article[]>) => {
  43 + this.documents = <noosfero.Article[]>result.data;
  44 + this.documentsLoaded = true;
  45 + });
  46 + }
  47 +
  48 + openDocument(article: any) {
  49 + this.$state.go("main.profile.page", { page: article.path, profile: article.profile.identifier });
  50 + }
  51 +
  52 +}
... ...
src/plugins/comment_paragraph/block/discussion/discussion-block.html 0 → 100644
... ... @@ -0,0 +1,26 @@
  1 +<div deckgrid source="ctrl.documents" class="deckgrid">
  2 + <div class="a-card panel media" ng-click="mother.ctrl.openDocument(card);">
  3 + <div class="author media-left" ng-show="card.author.image">
  4 + <img ng-src="{{card.author.image.url}}" class="img-circle">
  5 + </div>
  6 + <div class="header media-body">
  7 + <h5 class="title media-heading" ng-bind="card.title"></h5>
  8 +
  9 + <div class="subheader">
  10 + <span class="time">
  11 + <i class="fa fa-clock-o"></i>
  12 + <span class="start-date date" ng-show="card.start_date">
  13 + <span class="description">{{"comment-paragraph-plugin.discussion.editor.start_date.label" | translate}}</span>
  14 + <span class="value">{{card.start_date | amDateFormat:'DD/MM/YYYY'}}</span>
  15 + </span>
  16 + <span class="end-date date" ng-show="card.end_date">
  17 + <span class="description">{{"comment-paragraph-plugin.discussion.editor.end_date.label" | translate}}</span>
  18 + <span class="value">{{card.end_date | amDateFormat:'DD/MM/YYYY'}}</span>
  19 + </span>
  20 + </span>
  21 + </div>
  22 + </div>
  23 + <img ng-show="card.image" ng-src="{{card.image.url}}" class="img-responsive article-image">
  24 + <div class="post-lead" ng-bind-html="card.body | stripTags | truncate: 100: '...': true"></div>
  25 + </div>
  26 +</div>
... ...
src/plugins/comment_paragraph/block/discussion/discussion-block.scss 0 → 100644
... ... @@ -0,0 +1,67 @@
  1 +.block {
  2 + noosfero-comment-paragraph-plugin-discussion-block {
  3 + .deckgrid[deckgrid]::before {
  4 + font-size: 0;
  5 + visibility: hidden;
  6 + }
  7 + .author {
  8 + img {
  9 + width: 30px;
  10 + height: 30px;
  11 + }
  12 + }
  13 + .header {
  14 + .subheader {
  15 + color: #C1C1C1;
  16 + font-size: 10px;
  17 + }
  18 + }
  19 + .post-lead {
  20 + color: #8E8E8E;
  21 + font-size: 14px;
  22 + }
  23 + .article-image {
  24 + margin: 10px 0;
  25 + }
  26 + }
  27 +
  28 + .col-md-2-5 {
  29 + .deckgrid[deckgrid]::before {
  30 + content: '1 .deck-column';
  31 + }
  32 + }
  33 +
  34 + .col-md-7 {
  35 + .block.recentdocumentsblock {
  36 + background-color: transparent;
  37 + border: 0;
  38 +
  39 + .deckgrid[deckgrid]::before {
  40 + content: '3 .deck-column';
  41 + }
  42 +
  43 + .panel-heading {
  44 + display: none;
  45 + }
  46 + .panel-body {
  47 + padding: 0;
  48 + }
  49 +
  50 + .deckgrid {
  51 + .column {
  52 + float: left;
  53 + }
  54 +
  55 + .deck-column {
  56 + @extend .col-md-4;
  57 + padding: 0;
  58 +
  59 + .a-card {
  60 + padding: 10px;
  61 + margin: 3px;
  62 + }
  63 + }
  64 + }
  65 + }
  66 + }
  67 +}
... ...
src/plugins/comment_paragraph/index.ts
... ... @@ -3,6 +3,7 @@ import {CommentParagraphArticleButtonHotspotComponent} from &quot;./hotspot/comment-p
3 3 import {CommentParagraphFormHotspotComponent} from "./hotspot/comment-paragraph-form.component";
4 4 import {DiscussionEditorComponent} from "./article/cms/discussion-editor/discussion-editor.component";
5 5 import {CommentParagraphArticleContentHotspotComponent} from "./hotspot/article-content/article-content.component";
  6 +import {DiscussionBlockComponent} from "./block/discussion/discussion-block.component";
6 7  
7   -export let mainComponents: any = [AllowCommentComponent, DiscussionEditorComponent];
  8 +export let mainComponents: any = [AllowCommentComponent, DiscussionEditorComponent, DiscussionBlockComponent];
8 9 export let hotspots: any = [CommentParagraphArticleButtonHotspotComponent, CommentParagraphFormHotspotComponent, CommentParagraphArticleContentHotspotComponent];
... ...