Commit 172c82f50df9e97d5155c489d26b8e8337095031
1 parent
afd487b0
Exists in
master
and in
26 other branches
Add discussion block for comment paragraph
Showing
5 changed files
with
148 additions
and
2 deletions
Show diff stats
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 "./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]; | ... | ... |