Commit d81889c24303f3ff11eccca44ecd54542bd33c5e

Authored by ABNER SILVA DE OLIVEIRA
1 parent 531c0222

first typescript version. using webpack to compile and generate the noosfero.js …

…bundled file. added 'npm start' script to allow run the webpack and gulp-serve concurrently
Showing 42 changed files with 473 additions and 187 deletions   Show diff stats
@@ -5,3 +5,5 @@ coverage/ @@ -5,3 +5,5 @@ coverage/
5 .idea/ 5 .idea/
6 .tmp/ 6 .tmp/
7 dist/ 7 dist/
  8 +src/noosfero.js*
  9 +typings
@@ -3,50 +3,58 @@ @@ -3,50 +3,58 @@
3 "version": "0.0.0", 3 "version": "0.0.0",
4 "dependencies": {}, 4 "dependencies": {},
5 "scripts": { 5 "scripts": {
6 - "test": "gulp test" 6 + "test": "gulp test",
  7 + "postinstall": "npm install -g bower && bower install",
  8 + "start": "concurrently \"webpack -w\" \"gulp serve\""
7 }, 9 },
8 "devDependencies": { 10 "devDependencies": {
  11 + "browser-sync": "~2.9.11",
  12 + "browser-sync-spa": "~1.0.3",
  13 + "chalk": "~1.1.1",
  14 + "del": "~2.0.2",
  15 + "eslint-plugin-angular": "~0.12.0",
9 "estraverse": "~4.1.0", 16 "estraverse": "~4.1.0",
  17 + "expose-loader": "^0.7.1",
10 "gulp": "~3.9.0", 18 "gulp": "~3.9.0",
11 - "gulp-autoprefixer": "~3.0.2", 19 + "gulp-angular-filesort": "~1.1.1",
12 "gulp-angular-templatecache": "~1.8.0", 20 "gulp-angular-templatecache": "~1.8.0",
13 - "del": "~2.0.2",  
14 - "lodash": "~3.10.1",  
15 - "gulp-minify-css": "~1.2.1", 21 + "gulp-autoprefixer": "~3.0.2",
  22 + "gulp-eslint": "~1.0.0",
16 "gulp-filter": "~3.0.1", 23 "gulp-filter": "~3.0.1",
17 "gulp-flatten": "~0.2.0", 24 "gulp-flatten": "~0.2.0",
18 - "gulp-eslint": "~1.0.0",  
19 - "eslint-plugin-angular": "~0.12.0", 25 + "gulp-inject": "~3.0.0",
20 "gulp-load-plugins": "~0.10.0", 26 "gulp-load-plugins": "~0.10.0",
21 - "gulp-size": "~2.0.0",  
22 - "gulp-uglify": "~1.4.1",  
23 - "gulp-useref": "~1.3.0",  
24 - "gulp-util": "~3.0.6", 27 + "gulp-minify-css": "~1.2.1",
  28 + "gulp-minify-html": "~1.0.4",
25 "gulp-ng-annotate": "~1.1.0", 29 "gulp-ng-annotate": "~1.1.0",
26 - "gulp-replace": "~0.5.4", 30 + "gulp-protractor": "~1.0.0",
27 "gulp-rename": "~1.2.2", 31 "gulp-rename": "~1.2.2",
  32 + "gulp-replace": "~0.5.4",
28 "gulp-rev": "~6.0.1", 33 "gulp-rev": "~6.0.1",
29 "gulp-rev-replace": "~0.4.2", 34 "gulp-rev-replace": "~0.4.2",
30 - "gulp-minify-html": "~1.0.4",  
31 - "gulp-inject": "~3.0.0",  
32 - "gulp-protractor": "~1.0.0",  
33 - "gulp-sourcemaps": "~1.6.0",  
34 "gulp-sass": "~2.0.4", 35 "gulp-sass": "~2.0.4",
35 - "gulp-angular-filesort": "~1.1.1",  
36 - "main-bower-files": "~2.9.0",  
37 - "wiredep": "~2.2.2", 36 + "gulp-size": "~2.0.0",
  37 + "gulp-sourcemaps": "~1.6.0",
  38 + "gulp-typescript": "^2.12.0",
  39 + "gulp-uglify": "~1.4.1",
  40 + "gulp-useref": "~1.3.0",
  41 + "gulp-util": "~3.0.6",
  42 + "http-proxy-middleware": "~0.9.0",
38 "karma": "~0.13.10", 43 "karma": "~0.13.10",
39 - "karma-jasmine": "~0.3.6",  
40 - "karma-phantomjs-launcher": "~0.2.1",  
41 - "phantomjs": "~1.9.18",  
42 "karma-angular-filesort": "~1.0.0", 44 "karma-angular-filesort": "~1.0.0",
43 "karma-coverage": "~0.5.2", 45 "karma-coverage": "~0.5.2",
  46 + "karma-jasmine": "~0.3.6",
44 "karma-ng-html2js-preprocessor": "~0.2.0", 47 "karma-ng-html2js-preprocessor": "~0.2.0",
45 - "browser-sync": "~2.9.11",  
46 - "browser-sync-spa": "~1.0.3",  
47 - "http-proxy-middleware": "~0.9.0",  
48 - "chalk": "~1.1.1", 48 + "karma-phantomjs-launcher": "~0.2.1",
  49 + "lodash": "~3.10.1",
  50 + "main-bower-files": "~2.9.0",
  51 + "phantomjs": "~1.9.18",
  52 + "ts-loader": "^0.8.1",
  53 + "typescript": "^1.8.2",
  54 + "typings": "^0.6.8",
49 "uglify-save-license": "~0.4.1", 55 "uglify-save-license": "~0.4.1",
  56 + "webpack": "^1.12.14",
  57 + "wiredep": "~2.2.2",
50 "wrench": "~1.5.8" 58 "wrench": "~1.5.8"
51 }, 59 },
52 "engines": { 60 "engines": {
src/app/cms/cms.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('CmsController', CmsController); 6 .controller('CmsController', CmsController);
7 7
8 8
src/app/components/auth/auth.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('AuthController', AuthController); 6 .controller('AuthController', AuthController);
7 7
8 8
src/app/components/auth/auth.service.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .factory('Session', Session) 6 .factory('Session', Session)
7 .factory('AuthService', AuthService); 7 .factory('AuthService', AuthService);
8 8
src/app/components/navbar/navbar.directive.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .directive('acmeNavbar', acmeNavbar); 6 .directive('acmeNavbar', acmeNavbar);
7 7
8 /** @ngInject */ 8 /** @ngInject */
src/app/components/noosfero-activities/activities.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoActivities', { 6 .component('noosferoActivities', {
7 restrict: 'E', 7 restrict: 'E',
8 bindings: { 8 bindings: {
src/app/components/noosfero-activities/activity/activity.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoActivity', { 6 .component('noosferoActivity', {
7 restrict: 'E', 7 restrict: 'E',
8 bindings: { 8 bindings: {
src/app/components/noosfero-articles/article/article.directive.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .directive('noosferoArticle', noosferoArticle); 6 .directive('noosferoArticle', noosferoArticle);
7 7
8 /** @ngInject */ 8 /** @ngInject */
src/app/components/noosfero-articles/blog/blog.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoBlog', { 6 .component('noosferoBlog', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero-articles/blog/blog.html', 8 templateUrl: 'app/components/noosfero-articles/blog/blog.html',
src/app/components/noosfero-blocks/block.directive.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .directive('noosferoBlock', noosferoBlock); 6 .directive('noosferoBlock', noosferoBlock);
7 7
8 /** @ngInject */ 8 /** @ngInject */
src/app/components/noosfero-blocks/link-list/link-list.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoLinkListBlock', { 6 .component('noosferoLinkListBlock', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero-blocks/link-list/link-list.html', 8 templateUrl: 'app/components/noosfero-blocks/link-list/link-list.html',
src/app/components/noosfero-blocks/main-block/main-block.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoMainBlock', { 6 .component('noosferoMainBlock', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero-blocks/main-block/main-block.html', 8 templateUrl: 'app/components/noosfero-blocks/main-block/main-block.html',
src/app/components/noosfero-blocks/members-block/members-block.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoMembersBlock', { 6 .component('noosferoMembersBlock', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero-blocks/members-block/members-block.html', 8 templateUrl: 'app/components/noosfero-blocks/members-block/members-block.html',
src/app/components/noosfero-blocks/profile-image/profile-image.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoProfileImageBlock', { 6 .component('noosferoProfileImageBlock', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero-blocks/profile-image/profile-image.html', 8 templateUrl: 'app/components/noosfero-blocks/profile-image/profile-image.html',
src/app/components/noosfero-blocks/recent-documents/recent-documents.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoRecentDocumentsBlock', { 6 .component('noosferoRecentDocumentsBlock', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero-blocks/recent-documents/recent-documents.html', 8 templateUrl: 'app/components/noosfero-blocks/recent-documents/recent-documents.html',
src/app/components/noosfero-boxes/boxes.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoBoxes', { 6 .component('noosferoBoxes', {
7 restrict: 'E', 7 restrict: 'E',
8 bindings: { 8 bindings: {
src/app/components/noosfero/noosfero-template.filter.js
1 (function() { 1 (function() {
2 'use strict'; 2 'use strict';
3 angular 3 angular
4 - .module("angular") 4 + .module("noosferoApp")
5 .filter("noosferoTemplateFilter", function() { 5 .filter("noosferoTemplateFilter", function() {
6 return function(text, options) { 6 return function(text, options) {
7 for(var option in options) { 7 for(var option in options) {
src/app/components/noosfero/noosfero.service.js
1 (function() { 1 (function() {
2 'use strict'; 2 'use strict';
3 3
4 - angular.module('angular').factory('noosfero', function(Restangular, $q) { 4 + angular.module('noosferoApp').factory('noosfero', function(Restangular, $q) {
5 var currentProfile = $q.defer(); 5 var currentProfile = $q.defer();
6 6
7 return { 7 return {
src/app/components/noosfero/profile-image/profile-image.component.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .component('noosferoProfileImage', { 6 .component('noosferoProfileImage', {
7 restrict: 'E', 7 restrict: 'E',
8 templateUrl: 'app/components/noosfero/profile-image/profile-image.html', 8 templateUrl: 'app/components/noosfero/profile-image/profile-image.html',
src/app/content-viewer/content-viewer-actions.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('ContentViewerActionsController', ContentViewerActionsController); 6 .controller('ContentViewerActionsController', ContentViewerActionsController);
7 7
8 8
src/app/content-viewer/content-viewer.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('ContentViewerController', ContentViewerController); 6 .controller('ContentViewerController', ContentViewerController);
7 7
8 8
src/app/index.config.js
1 -(function() {  
2 - 'use strict';  
3 -  
4 - angular  
5 - .module('angular')  
6 - .config(config);  
7 -  
8 - /** @ngInject */  
9 - function config($logProvider, $locationProvider, RestangularProvider, $httpProvider, $provide) { 1 +"use strict";
  2 +/** @ngInject */
  3 +function noosferoModuleConfig($logProvider, $locationProvider, RestangularProvider, $httpProvider, $provide) {
10 $logProvider.debugEnabled(true); 4 $logProvider.debugEnabled(true);
11 - $locationProvider.html5Mode({enabled: true});  
12 - RestangularProvider.setBaseUrl('/api/v1'); 5 + $locationProvider.html5Mode({ enabled: true });
  6 + RestangularProvider.setBaseUrl("/api/v1");
13 RestangularProvider.setFullResponse(true); 7 RestangularProvider.setFullResponse(true);
14 - $httpProvider.defaults.headers.post = {'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'};  
15 -  
16 - $provide.decorator('$uiViewScroll', function ($delegate, $document) {  
17 - return function (uiViewElement) {  
18 - $document.scrollToElementAnimated(uiViewElement);  
19 - }; 8 + $httpProvider.defaults.headers.post = { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" };
  9 + $provide.decorator("$uiViewScroll", function ($delegate, $document) {
  10 + return function (uiViewElement) {
  11 + $document.scrollToElementAnimated(uiViewElement);
  12 + };
20 }); 13 });
21 - }  
22 -  
23 -})(); 14 +}
  15 +exports.noosferoModuleConfig = noosferoModuleConfig;
src/app/index.config.ts 0 → 100644
@@ -0,0 +1,15 @@ @@ -0,0 +1,15 @@
  1 +
  2 +/** @ngInject */
  3 +export function noosferoModuleConfig($logProvider, $locationProvider, RestangularProvider, $httpProvider, $provide) {
  4 + $logProvider.debugEnabled(true);
  5 + $locationProvider.html5Mode({ enabled: true });
  6 + RestangularProvider.setBaseUrl("/api/v1");
  7 + RestangularProvider.setFullResponse(true);
  8 + $httpProvider.defaults.headers.post = { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8" };
  9 +
  10 + $provide.decorator("$uiViewScroll", function($delegate, $document) {
  11 + return function(uiViewElement) {
  12 + $document.scrollToElementAnimated(uiViewElement);
  13 + };
  14 + });
  15 +}
0 \ No newline at end of file 16 \ No newline at end of file
src/app/index.constants.js
@@ -1,14 +0,0 @@ @@ -1,14 +0,0 @@
1 -/* global moment:false */  
2 -(function() {  
3 - 'use strict';  
4 -  
5 - angular  
6 - .module('angular')  
7 - .constant('moment', moment)  
8 - .constant('AUTH_EVENTS', {  
9 - loginSuccess: 'auth-login-success',  
10 - loginFailed: 'auth-login-failed',  
11 - logoutSuccess: 'auth-logout-success'  
12 - });  
13 -  
14 -})();  
src/app/index.js 0 → 100644
@@ -0,0 +1,39 @@ @@ -0,0 +1,39 @@
  1 +"use strict";
  2 +var index_module_1 = require("./index.module");
  3 +var index_config_1 = require("./index.config");
  4 +var index_run_1 = require("./index.run");
  5 +var index_route_1 = require("./index.route");
  6 +index_module_1.NoosferoApp.init();
  7 +index_module_1.NoosferoApp.addConstants("moment", moment);
  8 +index_module_1.NoosferoApp.addConstants("AUTH_EVENTS", {
  9 + loginSuccess: "auth-login-success",
  10 + loginFailed: "auth-login-failed",
  11 + logoutSuccess: "auth-logout-success"
  12 +});
  13 +index_module_1.NoosferoApp.addConfig(index_config_1.noosferoModuleConfig);
  14 +index_module_1.NoosferoApp.run(index_run_1.noosferoAngularRunBlock);
  15 +require("./cms/cms.controller.js");
  16 +require("./components/auth/auth.controller.js");
  17 +require("./components/auth/auth.service.js");
  18 +require("./components/navbar/navbar.directive.js");
  19 +require("./components/noosfero-activities/activities.component.js");
  20 +require("./components/noosfero-activities/activity/activity.component.js");
  21 +require("./components/noosfero-articles/article/article.directive.js");
  22 +require("./components/noosfero-articles/blog/blog.component.js");
  23 +require("./components/noosfero-blocks/block.directive.js");
  24 +require("./components/noosfero-blocks/link-list/link-list.component.js");
  25 +require("./components/noosfero-blocks/main-block/main-block.component.js");
  26 +require("./components/noosfero-blocks/members-block/members-block.component.js");
  27 +require("./components/noosfero-blocks/profile-image/profile-image.component.js");
  28 +require("./components/noosfero-blocks/recent-documents/recent-documents.component.js");
  29 +require("./components/noosfero-boxes/boxes.component.js");
  30 +require("./components/noosfero/noosfero-template.filter.js");
  31 +require("./components/noosfero/noosfero.service.js");
  32 +require("./components/noosfero/profile-image/profile-image.component.js");
  33 +require("./content-viewer/content-viewer-actions.controller.js");
  34 +require("./content-viewer/content-viewer.controller.js");
  35 +require("./main/main.controller.js");
  36 +require("./profile-info/profile-info.controller.js");
  37 +require("./profile/profile-home.controller.js");
  38 +require("./profile/profile.controller.js");
  39 +index_module_1.NoosferoApp.addConfig(index_route_1.routeConfig);
src/app/index.module.js
1 -(function() {  
2 - 'use strict';  
3 -  
4 - angular  
5 - .module('angular', ['ngAnimate', 'ngCookies', 'ngStorage', 'ngTouch',  
6 - 'ngSanitize', 'ngMessages', 'ngAria', 'restangular',  
7 - 'ui.router', 'ui.bootstrap', 'toastr',  
8 - 'angularMoment', 'angular.filter', 'akoenig.deckgrid',  
9 - 'angular-timeline', 'duScroll', 'oitozero.ngSweetAlert']);  
10 -  
11 -})(); 1 +"use strict";
  2 +var NoosferoApp = (function () {
  3 + function NoosferoApp() {
  4 + }
  5 + NoosferoApp.init = function () {
  6 + angular.module(NoosferoApp.appName, ["ngAnimate", "ngCookies", "ngStorage", "ngTouch",
  7 + "ngSanitize", "ngMessages", "ngAria", "restangular",
  8 + "ui.router", "ui.bootstrap", "toastr",
  9 + "angularMoment", "angular.filter", "akoenig.deckgrid",
  10 + "angular-timeline", "duScroll", "oitozero.ngSweetAlert"]);
  11 + };
  12 + NoosferoApp.addConfig = function (configFunc) {
  13 + angular.module(NoosferoApp.appName).config(configFunc);
  14 + };
  15 + NoosferoApp.addConstants = function (constantName, value) {
  16 + angular.module(NoosferoApp.appName).constant(constantName, value);
  17 + };
  18 + NoosferoApp.addService = function (serviceName, value) {
  19 + angular.module(NoosferoApp.appName).service(serviceName, value);
  20 + };
  21 + NoosferoApp.run = function (runFunction) {
  22 + angular.module(NoosferoApp.appName).run(runFunction);
  23 + };
  24 + NoosferoApp.appName = "noosferoApp";
  25 + return NoosferoApp;
  26 +}());
  27 +exports.NoosferoApp = NoosferoApp;
src/app/index.module.ts 0 → 100644
@@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
  1 +export class NoosferoApp {
  2 +
  3 + static appName: string = "noosferoApp";
  4 +
  5 + static init() {
  6 + angular.module(NoosferoApp.appName, ["ngAnimate", "ngCookies", "ngStorage", "ngTouch",
  7 + "ngSanitize", "ngMessages", "ngAria", "restangular",
  8 + "ui.router", "ui.bootstrap", "toastr",
  9 + "angularMoment", "angular.filter", "akoenig.deckgrid",
  10 + "angular-timeline", "duScroll", "oitozero.ngSweetAlert"]);
  11 + }
  12 +
  13 + static addConfig(configFunc: Function) {
  14 + angular.module(NoosferoApp.appName).config(configFunc);
  15 + }
  16 +
  17 + static addConstants(constantName: string, value: any) {
  18 + angular.module(NoosferoApp.appName).constant(constantName, value);
  19 + }
  20 +
  21 + static addService(serviceName: string, value: any) {
  22 + angular.module(NoosferoApp.appName).service(serviceName, value);
  23 + }
  24 +
  25 + static run(runFunction: Function) {
  26 + angular.module(NoosferoApp.appName).run(runFunction);
  27 + }
  28 +}
  29 +
src/app/index.route.js
1 -(function() {  
2 - 'use strict';  
3 -  
4 - angular  
5 - .module('angular')  
6 - .config(routeConfig);  
7 -  
8 - function routeConfig($stateProvider, $urlRouterProvider) { 1 +"use strict";
  2 +/** @ngInject */
  3 +function routeConfig($stateProvider, $urlRouterProvider) {
9 $stateProvider 4 $stateProvider
10 - .state('main', {  
11 - url: '/',  
12 - templateUrl: 'app/main/main.html',  
13 - controller: 'MainController',  
14 - controllerAs: 'vm', 5 + .state("main", {
  6 + url: "/",
  7 + templateUrl: "app/main/main.html",
  8 + controller: "MainController",
  9 + controllerAs: "vm",
15 resolve: { 10 resolve: {
16 - currentUser: function(AuthService) {  
17 - return AuthService.loginFromCookie();  
18 - } 11 + currentUser: function (AuthService) {
  12 + return AuthService.loginFromCookie();
  13 + }
19 } 14 }
20 - })  
21 - .state('main.profile.cms', {  
22 - url: '^/myprofile/:profile/cms', 15 + })
  16 + .state("main.profile.cms", {
  17 + url: "^/myprofile/:profile/cms",
23 views: { 18 views: {
24 - 'mainBlockContent': {  
25 - templateUrl: 'app/cms/cms.html',  
26 - controller: 'CmsController',  
27 - controllerAs: 'vm'  
28 - } 19 + "mainBlockContent": {
  20 + templateUrl: "app/cms/cms.html",
  21 + controller: "CmsController",
  22 + controllerAs: "vm"
  23 + }
29 } 24 }
30 - })  
31 - .state('main.profile.settings', {  
32 - url: '^/myprofile/:profile'  
33 - })  
34 - .state('main.profile', {  
35 - url: '^/:profile', 25 + })
  26 + .state("main.profile.settings", {
  27 + url: "^/myprofile/:profile"
  28 + })
  29 + .state("main.profile", {
  30 + url: "^/:profile",
36 abstract: true, 31 abstract: true,
37 views: { 32 views: {
38 - 'content': {  
39 - templateUrl: 'app/profile/profile.html',  
40 - controller: 'ProfileController',  
41 - controllerAs: 'vm'  
42 - } 33 + "content": {
  34 + templateUrl: "app/profile/profile.html",
  35 + controller: "ProfileController",
  36 + controllerAs: "vm"
  37 + }
43 } 38 }
44 - })  
45 - .state('main.profile.home', {  
46 - url: '', 39 + })
  40 + .state("main.profile.home", {
  41 + url: "",
47 views: { 42 views: {
48 - 'mainBlockContent': {  
49 - controller: 'ProfileHomeController',  
50 - controllerAs: 'vm'  
51 - } 43 + "mainBlockContent": {
  44 + controller: "ProfileHomeController",
  45 + controllerAs: "vm"
  46 + }
52 } 47 }
53 - })  
54 - .state('main.profile.info', {  
55 - url: '^/profile/:profile', 48 + })
  49 + .state("main.profile.info", {
  50 + url: "^/profile/:profile",
56 views: { 51 views: {
57 - 'mainBlockContent': {  
58 - templateUrl: 'app/profile-info/profile-info.html',  
59 - controller: 'ProfileInfoController',  
60 - controllerAs: 'vm'  
61 - } 52 + "mainBlockContent": {
  53 + templateUrl: "app/profile-info/profile-info.html",
  54 + controller: "ProfileInfoController",
  55 + controllerAs: "vm"
  56 + }
62 } 57 }
63 - })  
64 - .state('main.profile.page', {  
65 - url: '/{page:any}', 58 + })
  59 + .state("main.profile.page", {
  60 + url: "/{page:any}",
66 views: { 61 views: {
67 - 'mainBlockContent': {  
68 - templateUrl: 'app/content-viewer/page.html',  
69 - controller: 'ContentViewerController',  
70 - controllerAs: 'vm'  
71 - },  
72 - 'actions@main': {  
73 - templateUrl: 'app/content-viewer/navbar-actions.html',  
74 - controller: 'ContentViewerActionsController',  
75 - controllerAs: 'vm'  
76 - } 62 + "mainBlockContent": {
  63 + templateUrl: "app/content-viewer/page.html",
  64 + controller: "ContentViewerController",
  65 + controllerAs: "vm"
  66 + },
  67 + "actions@main": {
  68 + templateUrl: "app/content-viewer/navbar-actions.html",
  69 + controller: "ContentViewerActionsController",
  70 + controllerAs: "vm"
  71 + }
77 } 72 }
78 - });  
79 -  
80 - $urlRouterProvider.otherwise('/');  
81 - }  
82 -  
83 -})(); 73 + });
  74 + $urlRouterProvider.otherwise("/");
  75 +}
  76 +exports.routeConfig = routeConfig;
src/app/index.route.ts 0 → 100644
@@ -0,0 +1,79 @@ @@ -0,0 +1,79 @@
  1 +
  2 +
  3 +/** @ngInject */
  4 +export function routeConfig($stateProvider, $urlRouterProvider) {
  5 + $stateProvider
  6 + .state("main", {
  7 + url: "/",
  8 + templateUrl: "app/main/main.html",
  9 + controller: "MainController",
  10 + controllerAs: "vm",
  11 + resolve: {
  12 + currentUser: function(AuthService) {
  13 + return AuthService.loginFromCookie();
  14 + }
  15 + }
  16 + })
  17 + .state("main.profile.cms", {
  18 + url: "^/myprofile/:profile/cms",
  19 + views: {
  20 + "mainBlockContent": {
  21 + templateUrl: "app/cms/cms.html",
  22 + controller: "CmsController",
  23 + controllerAs: "vm"
  24 + }
  25 + }
  26 + })
  27 + .state("main.profile.settings", {
  28 + url: "^/myprofile/:profile"
  29 + })
  30 + .state("main.profile", {
  31 + url: "^/:profile",
  32 + abstract: true,
  33 + views: {
  34 + "content": {
  35 + templateUrl: "app/profile/profile.html",
  36 + controller: "ProfileController",
  37 + controllerAs: "vm"
  38 + }
  39 + }
  40 + })
  41 + .state("main.profile.home", {
  42 + url: "",
  43 + views: {
  44 + "mainBlockContent": {
  45 + controller: "ProfileHomeController",
  46 + controllerAs: "vm"
  47 + }
  48 + }
  49 + })
  50 + .state("main.profile.info", {
  51 + url: "^/profile/:profile",
  52 + views: {
  53 + "mainBlockContent": {
  54 + templateUrl: "app/profile-info/profile-info.html",
  55 + controller: "ProfileInfoController",
  56 + controllerAs: "vm"
  57 + }
  58 + }
  59 + })
  60 + .state("main.profile.page", {
  61 + url: "/{page:any}",
  62 + views: {
  63 + "mainBlockContent": {
  64 + templateUrl: "app/content-viewer/page.html",
  65 + controller: "ContentViewerController",
  66 + controllerAs: "vm"
  67 + },
  68 + "actions@main": {
  69 + templateUrl: "app/content-viewer/navbar-actions.html",
  70 + controller: "ContentViewerActionsController",
  71 + controllerAs: "vm"
  72 + }
  73 + }
  74 + });
  75 +
  76 + $urlRouterProvider.otherwise("/");
  77 + }
  78 +
  79 +
src/app/index.run.js
1 -(function() {  
2 - 'use strict';  
3 -  
4 - angular  
5 - .module('angular')  
6 - .run(runBlock);  
7 -  
8 - /** @ngInject */  
9 - function runBlock($log, Restangular, Session) {  
10 - Restangular.addFullRequestInterceptor(function(element, operation, route, url, headers) {  
11 - if(Session.getCurrentUser()) {  
12 - headers['Private-Token'] = Session.getCurrentUser().private_token;  
13 - }  
14 - return { headers: headers }; 1 +"use strict";
  2 +/** @ngInject */
  3 +function noosferoAngularRunBlock($log, Restangular, Session) {
  4 + Restangular.addFullRequestInterceptor(function (element, operation, route, url, headers) {
  5 + if (Session.getCurrentUser()) {
  6 + headers["Private-Token"] = Session.getCurrentUser().private_token;
  7 + }
  8 + return { headers: headers };
15 }); 9 });
16 - }  
17 -  
18 -})(); 10 +}
  11 +exports.noosferoAngularRunBlock = noosferoAngularRunBlock;
src/app/index.run.ts 0 → 100644
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
  1 +
  2 +/** @ngInject */
  3 +export function noosferoAngularRunBlock($log, Restangular, Session) {
  4 + Restangular.addFullRequestInterceptor(function(element, operation, route, url, headers) {
  5 + if (Session.getCurrentUser()) {
  6 + headers["Private-Token"] = Session.getCurrentUser().private_token;
  7 + }
  8 + return { headers: headers };
  9 + });
  10 +}
  11 +
src/app/index.ts 0 → 100644
@@ -0,0 +1,49 @@ @@ -0,0 +1,49 @@
  1 +import {NoosferoApp} from "./index.module";
  2 +import {noosferoModuleConfig} from "./index.config";
  3 +import {noosferoAngularRunBlock} from "./index.run";
  4 +import {routeConfig} from "./index.route";
  5 +
  6 +declare var moment: any;
  7 +
  8 +NoosferoApp.init();
  9 +
  10 +NoosferoApp.addConstants("moment", moment);
  11 +NoosferoApp.addConstants("AUTH_EVENTS", {
  12 + loginSuccess: "auth-login-success",
  13 + loginFailed: "auth-login-failed",
  14 + logoutSuccess: "auth-logout-success"
  15 +});
  16 +
  17 +
  18 +NoosferoApp.addConfig(noosferoModuleConfig);
  19 +
  20 +NoosferoApp.run(noosferoAngularRunBlock);
  21 +
  22 +declare function require(module): any;
  23 +
  24 +require("./cms/cms.controller.js");
  25 +require("./components/auth/auth.controller.js");
  26 +require("./components/auth/auth.service.js");
  27 +require("./components/navbar/navbar.directive.js");
  28 +require("./components/noosfero-activities/activities.component.js");
  29 +require("./components/noosfero-activities/activity/activity.component.js");
  30 +require("./components/noosfero-articles/article/article.directive.js");
  31 +require("./components/noosfero-articles/blog/blog.component.js");
  32 +require("./components/noosfero-blocks/block.directive.js");
  33 +require("./components/noosfero-blocks/link-list/link-list.component.js");
  34 +require("./components/noosfero-blocks/main-block/main-block.component.js");
  35 +require("./components/noosfero-blocks/members-block/members-block.component.js");
  36 +require("./components/noosfero-blocks/profile-image/profile-image.component.js");
  37 +require("./components/noosfero-blocks/recent-documents/recent-documents.component.js");
  38 +require("./components/noosfero-boxes/boxes.component.js");
  39 +require("./components/noosfero/noosfero-template.filter.js");
  40 +require("./components/noosfero/noosfero.service.js");
  41 +require("./components/noosfero/profile-image/profile-image.component.js");
  42 +require("./content-viewer/content-viewer-actions.controller.js");
  43 +require("./content-viewer/content-viewer.controller.js");
  44 +require("./main/main.controller.js");
  45 +require("./profile-info/profile-info.controller.js");
  46 +require("./profile/profile-home.controller.js");
  47 +require("./profile/profile.controller.js");
  48 +
  49 +NoosferoApp.addConfig(routeConfig);
src/app/main/main.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('MainController', MainController); 6 .controller('MainController', MainController);
7 7
8 8
src/app/profile-info/profile-info.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('ProfileInfoController', ProfileInfoController); 6 .controller('ProfileInfoController', ProfileInfoController);
7 7
8 8
src/app/profile/profile-home.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('ProfileHomeController', ProfileHomeController); 6 .controller('ProfileHomeController', ProfileHomeController);
7 7
8 8
src/app/profile/profile.controller.js
@@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
2 'use strict'; 2 'use strict';
3 3
4 angular 4 angular
5 - .module('angular') 5 + .module('noosferoApp')
6 .controller('ProfileController', ProfileController); 6 .controller('ProfileController', ProfileController);
7 7
8 8
src/index.html
1 <!doctype html> 1 <!doctype html>
2 -<html ng-app="angular"> 2 +<html ng-app="noosferoApp">
3 <head> 3 <head>
4 <base href="/"> 4 <base href="/">
5 <meta charset="utf-8"> 5 <meta charset="utf-8">
@@ -33,10 +33,9 @@ @@ -33,10 +33,9 @@
33 <!-- endbower --> 33 <!-- endbower -->
34 <!-- endbuild --> 34 <!-- endbuild -->
35 35
36 - <!-- build:js({.tmp/serve,.tmp/partials,src}) scripts/app.js -->  
37 - <!-- inject:js -->  
38 - <!-- js files will be automatically insert here -->  
39 - <!-- endinject --> 36 +
  37 +
  38 + <script src="noosfero.js"></script>
40 39
41 <!-- inject:partials --> 40 <!-- inject:partials -->
42 <!-- angular templates will be automatically converted in js and inserted here --> 41 <!-- angular templates will be automatically converted in js and inserted here -->
style.css
@@ -1 +0,0 @@ @@ -1 +0,0 @@
1 -../noosfero/style.css  
2 \ No newline at end of file 0 \ No newline at end of file
tsconfig.json 0 → 100644
@@ -0,0 +1,13 @@ @@ -0,0 +1,13 @@
  1 +{
  2 + "compilerOptions": {
  3 + "module": "commonjs",
  4 + "target": "es5",
  5 + "noImplicitAny": false,
  6 + "sourceMap": false
  7 + },
  8 + "exclude": [
  9 + "node_modules",
  10 + "typings/main",
  11 + "typings/main.d.ts"
  12 + ]
  13 +}
0 \ No newline at end of file 14 \ No newline at end of file
typings.json 0 → 100644
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
  1 +{
  2 + "name": "angular",
  3 + "dependencies": {},
  4 + "devDependencies": {},
  5 + "ambientDependencies": {
  6 + "angular": "github:DefinitelyTyped/DefinitelyTyped/angularjs/angular.d.ts#1c4a34873c9e70cce86edd0e61c559e43dfa5f75",
  7 + "jquery": "github:DefinitelyTyped/DefinitelyTyped/jquery/jquery.d.ts#470954c4f427e0805a2d633636a7c6aa7170def8"
  8 + }
  9 +}
webpack.config.js 0 → 100644
@@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
  1 +var argv = require("yargs").argv;
  2 +var path = require("path");
  3 +
  4 +var extension = ".js";
  5 +if (argv.production) {
  6 + extension = ".min.js"
  7 +}
  8 +
  9 +var uglifyLoaderConfig = {
  10 + // I want to uglify with mangling only app files, not thirdparty libs
  11 + test: /\.js$/,
  12 + exclude: /.spec.js/, // excluding .spec files
  13 + loader: "uglify"
  14 +};
  15 +
  16 +var webpackConfig = {
  17 + entry: {
  18 + noosfero: './src/app/index.ts'
  19 + },
  20 +
  21 +
  22 + output: {
  23 + path: path.join(__dirname, "src"),
  24 + filename: "[name]" + extension,
  25 + },
  26 + resolve: {
  27 + // Add `.ts` and `.tsx` as a resolvable extension.
  28 + extensions: ['', '.webpack.js', '.web.js', '.ts', '.tsx', '.js']
  29 + },
  30 + // Source maps support (or 'inline-source-map' also works)
  31 + devtool: 'source-map',
  32 +
  33 + module: {
  34 + loaders: [{
  35 + test: /\.css$/,
  36 + loader: "style!css"
  37 + }, {
  38 + test: /\.scss$/,
  39 + loaders: ["style", "css?sourceMap", "sass?sourceMap"]
  40 + }, {
  41 + test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/,
  42 + loader: 'url-loader?limit=100000'
  43 + }, {
  44 + test: /\.tsx?$/,
  45 + loader: 'ts-loader'
  46 + }]
  47 + }
  48 +};
  49 +
  50 +if (argv.production) {
  51 + webpackConfig.module.loaders.push(uglifyLoaderConfig);
  52 +}
  53 +
  54 +module.exports = webpackConfig;