Commit 30411d64be306f017ae4c242ce16929a7c62774b
1 parent
e80763e4
Exists in
master
and in
35 other branches
Fix article component
Showing
5 changed files
with
50 additions
and
54 deletions
Show diff stats
src/app/components/noosfero-articles/article/article.directive.ts
| 1 | 1 | import { bundle, Input, Inject, Component, Directive } from 'ng-forward'; |
| 2 | +import {NoosferoArticleBlog} from "../blog/blog.component"; | |
| 2 | 3 | |
| 3 | 4 | @Component({ |
| 4 | 5 | selector: 'noosfero-default-article', |
| 5 | - templateUrl: 'app/components/noosfero-articles/article/article.html', | |
| 6 | - providers: ['$injector', '$compile'] | |
| 6 | + templateUrl: 'app/components/noosfero-articles/article/article.html' | |
| 7 | 7 | }) |
| 8 | 8 | export class ArticleView { |
| 9 | + | |
| 10 | + @Input() article: any; | |
| 11 | + @Input() profile: any; | |
| 12 | + | |
| 9 | 13 | constructor() { |
| 10 | 14 | console.log("ARTICLE VIEW"); |
| 11 | 15 | } |
| 12 | 16 | } |
| 13 | 17 | |
| 14 | -/** | |
| 15 | -* <noosfero-article></noosfero-article> | |
| 16 | -* | |
| 17 | -* | |
| 18 | -*/ | |
| 19 | - | |
| 20 | -@Directive({ | |
| 21 | - selector: '[noosfero-article]', | |
| 22 | - providers: [] | |
| 18 | +@Component({ | |
| 19 | + selector: 'noosfero-article', | |
| 20 | + template: '<div></div>', | |
| 21 | + directives: [ArticleView, NoosferoArticleBlog] | |
| 23 | 22 | }) |
| 24 | -@Inject("$element") | |
| 25 | -@Inject("$scope") | |
| 26 | -@Inject("$injector") | |
| 27 | -@Inject("$compile") | |
| 23 | +@Inject("$element", "$scope", "$injector", "$compile") | |
| 28 | 24 | export class ArticleDirective { |
| 29 | 25 | |
| 30 | - constructor($element: any, $scope: ng.IScope, private $injector: ng.auto.IInjectorService, private $compile: ng.ICompileService) { | |
| 31 | - var specificDirective = 'noosfero' + $scope["vm"].article.type; | |
| 32 | - if ($injector.has(specificDirective + 'Directive')) { | |
| 33 | - var directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); | |
| 34 | - $element.replaceWith($compile('<' + directiveName + ' article="vm.article" profile="vm.profile"></' + directiveName + '>')($scope)); | |
| 35 | - //$element.html($compile('<' + directiveName + ' article="vm.article" profile="vm.profile"></' + directiveName + '>')(scope)) | |
| 36 | - } else { | |
| 37 | - //TODO | |
| 26 | + @Input() article: any; | |
| 27 | + @Input() profile: any; | |
| 28 | + directiveName: string; | |
| 29 | + | |
| 30 | + ngOnInit() { | |
| 31 | + let specificDirective = 'noosfero' + this.article.type; | |
| 32 | + this.directiveName = "noosfero-default-article"; | |
| 33 | + if (this.$injector.has(specificDirective + 'Directive')) { | |
| 34 | + this.directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); | |
| 38 | 35 | } |
| 36 | + this.$element.replaceWith(this.$compile('<' + this.directiveName + ' [article]="ctrl.article" [profile]="ctrl.profile"></' + this.directiveName + '>')(this.$scope)); | |
| 39 | 37 | } |
| 40 | -} | |
| 41 | 38 | |
| 42 | -//bundle('noosferoApp', ArticleDirective).publish(); | |
| 39 | + constructor(private $element: any, private $scope: ng.IScope, private $injector: ng.auto.IInjectorService, private $compile: ng.ICompileService) { | |
| 40 | + | |
| 41 | + } | |
| 42 | +} | ... | ... |
src/app/components/noosfero-articles/article/article.html
| 1 | 1 | <div class="article"> |
| 2 | 2 | <div class="page-header"> |
| 3 | - <h3 ng-bind="vm.article.title"></h3> | |
| 3 | + <h3 ng-bind="ctrl.article.title"></h3> | |
| 4 | 4 | </div> |
| 5 | 5 | |
| 6 | 6 | <div class="sub-header clearfix"> |
| 7 | 7 | <div class="page-info pull-right small text-muted"> |
| 8 | 8 | <span class="time"> |
| 9 | - <i class="fa fa-clock-o"></i> <span am-time-ago="vm.article.created_at"></span> | |
| 9 | + <i class="fa fa-clock-o"></i> <span am-time-ago="ctrl.article.created_at"></span> | |
| 10 | 10 | </span> |
| 11 | - <span class="author" ng-if="vm.article.author"> | |
| 11 | + <span class="author" ng-if="ctrl.article.author"> | |
| 12 | 12 | <i class="fa fa-user"></i> |
| 13 | - <a ui-sref="main.profile({profile: vm.article.author.identifier})"> | |
| 14 | - <span class="author-name" ng-bind="vm.article.author.name"></span> | |
| 13 | + <a ui-sref="main.profile({profile: ctrl.article.author.identifier})"> | |
| 14 | + <span class="author-name" ng-bind="ctrl.article.author.name"></span> | |
| 15 | 15 | </a> |
| 16 | 16 | </span> |
| 17 | 17 | </div> |
| 18 | 18 | </div> |
| 19 | 19 | |
| 20 | 20 | <div class="page-body"> |
| 21 | - <div ng-bind-html="vm.article.body"></div> | |
| 21 | + <div ng-bind-html="ctrl.article.body"></div> | |
| 22 | 22 | </div> |
| 23 | 23 | </div> | ... | ... |
src/app/components/noosfero-articles/blog/blog.component.ts
| 1 | -import {Component, Input} from "ng-forward"; | |
| 1 | +import {Component, Input, Inject} from "ng-forward"; | |
| 2 | 2 | |
| 3 | 3 | |
| 4 | 4 | @Component({ |
| 5 | 5 | selector: "noosfero-blog", |
| 6 | - templateUrl: "app/components/noosfero-articles/blog/blog.html", | |
| 7 | - inputs: ["article", "profile"] | |
| 6 | + templateUrl: "app/components/noosfero-articles/blog/blog.html" | |
| 8 | 7 | }) |
| 8 | +@Inject("noosfero", "$scope") | |
| 9 | 9 | export class NoosferoArticleBlog { |
| 10 | + | |
| 10 | 11 | @Input() article; |
| 11 | 12 | @Input() profile; |
| 12 | 13 | |
| ... | ... | @@ -14,12 +15,12 @@ export class NoosferoArticleBlog { |
| 14 | 15 | private perPage: number; |
| 15 | 16 | private currentPage: number; |
| 16 | 17 | private totalPosts: number = 0; |
| 17 | - constructor(private noosferoService: any) { | |
| 18 | - this.loadPage(); | |
| 18 | + | |
| 19 | + constructor(private noosfero: any, private $scope) { | |
| 19 | 20 | } |
| 20 | 21 | |
| 21 | - loadPage() { | |
| 22 | - this.noosferoService.articles.one(this.article.id).customGET("children", { | |
| 22 | + ngOnInit() { | |
| 23 | + this.noosfero.articles.one(this.article.id).customGET("children", { | |
| 23 | 24 | content_type: "TinyMceArticle", |
| 24 | 25 | per_page: this.perPage, |
| 25 | 26 | page: this.currentPage |
| ... | ... | @@ -29,4 +30,4 @@ export class NoosferoArticleBlog { |
| 29 | 30 | }); |
| 30 | 31 | } |
| 31 | 32 | |
| 32 | -} | |
| 33 | 33 | \ No newline at end of file |
| 34 | +} | ... | ... |
src/app/components/noosfero-articles/blog/blog.html
| 1 | 1 | <div class="blog"> |
| 2 | - <div class="blog-cover" ng-show="$ctrl.article.image"> | |
| 3 | - <img ng-src="{{$ctrl.article.image.url}}" class="img-responsive"> | |
| 4 | - <h3 ng-bind="$ctrl.article.title"></h3> | |
| 2 | + <div class="blog-cover" ng-show="ctrl.article.image"> | |
| 3 | + <img ng-src="{{ctrl.article.image.url}}" class="img-responsive"> | |
| 4 | + <h3 ng-bind="ctrl.article.title"></h3> | |
| 5 | 5 | </div> |
| 6 | 6 | |
| 7 | - <div class="page-header" ng-show="!$ctrl.article.image"> | |
| 8 | - <h3 ng-bind="$ctrl.article.title"></h3> | |
| 7 | + <div class="page-header" ng-show="!ctrl.article.image"> | |
| 8 | + <h3 ng-bind="ctrl.article.title"></h3> | |
| 9 | 9 | </div> |
| 10 | 10 | |
| 11 | 11 | <div> |
| 12 | - <div ng-repeat="child in $ctrl.posts | orderBy: 'created_at':true"> | |
| 12 | + <div ng-repeat="child in ctrl.posts | orderBy: 'created_at':true"> | |
| 13 | 13 | <div class="page-header"> |
| 14 | - <a class="title" ui-sref="main.profile.page({profile: $ctrl.profile.identifier, page: child.path})"><h4 ng-bind="child.title"></h4></a> | |
| 14 | + <a class="title" ui-sref="main.profile.page({profile: ctrl.profile.identifier, page: child.path})"><h4 ng-bind="child.title"></h4></a> | |
| 15 | 15 | <div class="post-lead" ng-bind-html="child.body | truncate: 500: '...': true"></div> |
| 16 | 16 | </div> |
| 17 | 17 | </div> |
| 18 | 18 | </div> |
| 19 | 19 | |
| 20 | - <pagination ng-model="$ctrl.currentPage" total-items="$ctrl.totalPosts" class="pagination-sm center-block" | |
| 21 | - boundary-links="true" items-per-page="$ctrl.perPage" ng-change="$ctrl.loadPage()" | |
| 20 | + <pagination ng-model="ctrl.currentPage" total-items="ctrl.totalPosts" class="pagination-sm center-block" | |
| 21 | + boundary-links="true" items-per-page="ctrl.perPage" ng-change="ctrl.loadPage()" | |
| 22 | 22 | first-text="«" last-text="»" previous-text="‹" next-text="›"> |
| 23 | 23 | </pagination> |
| 24 | 24 | </div> | ... | ... |
src/app/content-viewer/page.html