article.directive.js 997 Bytes
(function() {
  'use strict';

  angular
    .module('angular')
    .directive('noosferoArticle', noosferoArticle);

  /** @ngInject */
  function noosferoArticle($injector, $compile) {
    var directive = {
      restrict: 'E',
      templateUrl: 'app/components/noosfero-articles/article/article.html',
      scope: {
          article: '<',
          profile: '<'
      },
      controller: ArticleController,
      controllerAs: 'vm',
      bindToController: true,
      link: function(scope, element) {
        var specificDirective = 'noosfero'+scope.vm.article.type;
        if($injector.has(specificDirective+'Directive')) {
          var directiveName = specificDirective.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
          element.replaceWith($compile('<'+directiveName+' article="vm.article" profile="vm.profile"></'+directiveName+'>')(scope));          
        }
      }
    };

    return directive;

    /** @ngInject */
    function ArticleController() {
    }
  }

})();