diff --git a/src/app/article/cms/article-editor/article-editor.component.ts b/src/app/article/cms/article-editor/article-editor.component.ts new file mode 100644 index 0000000..8b24331 --- /dev/null +++ b/src/app/article/cms/article-editor/article-editor.component.ts @@ -0,0 +1,28 @@ +import {Component, Input, Inject} from 'ng-forward'; + +@Component({ + selector: 'article-editor', + template: "not-used" +}) +@Inject("$element", "$scope", "$injector", "$compile") +export class ArticleEditorComponent { + + @Input() article: noosfero.Article; + + constructor( + private $element: any, + private $scope: ng.IScope, + private $injector: ng.auto.IInjectorService, + private $compile: ng.ICompileService) { } + + ngOnInit() { + let articleType = this.article.type; + articleType = articleType.replace(/::/, ''); + let specificDirective = `${articleType.charAt(0).toLowerCase()}${articleType.substring(1)}Editor`; + let directiveName = "article-basic-editor"; + if (this.$injector.has(specificDirective + 'Directive')) { + directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); + } + this.$element.replaceWith(this.$compile('<' + directiveName + ' [article]="ctrl.article">' + directiveName + '>')(this.$scope)); + } +} diff --git a/src/app/article/cms/basic-editor/basic-editor.component.ts b/src/app/article/cms/basic-editor/basic-editor.component.ts index 42d4395..91a7ad2 100644 --- a/src/app/article/cms/basic-editor/basic-editor.component.ts +++ b/src/app/article/cms/basic-editor/basic-editor.component.ts @@ -7,5 +7,4 @@ import {Component, Input} from 'ng-forward'; export class BasicEditorComponent { @Input() article: noosfero.Article; - } diff --git a/src/app/article/cms/cms.component.ts b/src/app/article/cms/cms.component.ts index 509b396..8c7428e 100644 --- a/src/app/article/cms/cms.component.ts +++ b/src/app/article/cms/cms.component.ts @@ -4,6 +4,7 @@ import {ProfileService} from "../../../lib/ng-noosfero-api/http/profile.service" import {NotificationService} from "../../shared/services/notification.service.ts"; import {BasicOptionsComponent} from './basic-options/basic-options.component'; import {BasicEditorComponent} from './basic-editor/basic-editor.component'; +import {ArticleEditorComponent} from './article-editor/article-editor.component'; @Component({ selector: 'article-cms', @@ -13,7 +14,7 @@ import {BasicEditorComponent} from './basic-editor/basic-editor.component'; provide('profileService', { useClass: ProfileService }), provide('notification', { useClass: NotificationService }) ], - directives: [BasicOptionsComponent, BasicEditorComponent] + directives: [ArticleEditorComponent, BasicOptionsComponent, BasicEditorComponent] }) @Inject(ArticleService, ProfileService, "$state", NotificationService, "$stateParams", "$window") export class CmsComponent { diff --git a/src/app/article/cms/cms.html b/src/app/article/cms/cms.html index 2943b85..cd76384 100644 --- a/src/app/article/cms/cms.html +++ b/src/app/article/cms/cms.html @@ -2,7 +2,7 @@