diff --git a/app/generator.js b/app/generator.js index 5478748f0..67a00bfe5 100644 --- a/app/generator.js +++ b/app/generator.js @@ -375,6 +375,7 @@ export default class Generator extends Base { if(this.filters.uirouter) angModules.push("'ui.router'"); if(this.filters.uibootstrap) angModules.push("'ui.bootstrap'"); if(this.filters.auth) { + angModules.unshift(`'${this.scriptAppName}.admin'`); angModules.unshift(`'${this.scriptAppName}.auth'`); angModules.push("'validation.match'"); } diff --git a/app/templates/_package.json b/app/templates/_package.json index 6eba3d7f3..336292463 100644 --- a/app/templates/_package.json +++ b/app/templates/_package.json @@ -49,7 +49,8 @@ "grunt-contrib-jshint": "~0.11.2", "grunt-contrib-uglify": "^0.9.1", "grunt-contrib-watch": "~0.6.1",<% if (filters.jade) { %> - "grunt-contrib-jade": "^0.15.0",<% } %><% if (filters.less) { %> + "grunt-contrib-jade": "^0.15.0", + "karma-ng-jade2js-preprocessor": "^0.2.0",<% } %><% if (filters.less) { %> "grunt-contrib-less": "^1.0.0",<% } %><% if(filters.babel) { %> "karma-babel-preprocessor": "^5.2.1",<% } %> "grunt-babel": "~5.0.0", @@ -95,7 +96,6 @@ "karma-firefox-launcher": "~0.1.6", "karma-script-launcher": "~0.1.0", "karma-html2js-preprocessor": "~0.1.0", - "karma-ng-jade2js-preprocessor": "^0.2.0", "karma-chrome-launcher": "~0.2.0", "requirejs": "~2.1.11", "karma-requirejs": "~0.2.2", diff --git a/app/templates/client/app/admin(auth)/admin(html).html b/app/templates/client/app/admin(auth)/admin(html).html index 7688c9b47..fca41494e 100644 --- a/app/templates/client/app/admin(auth)/admin(html).html +++ b/app/templates/client/app/admin(auth)/admin(html).html @@ -3,10 +3,10 @@
diff --git a/app/templates/client/app/admin(auth)/admin(jade).jade b/app/templates/client/app/admin(auth)/admin(jade).jade index bcef64773..822e747d8 100644 --- a/app/templates/client/app/admin(auth)/admin(jade).jade +++ b/app/templates/client/app/admin(auth)/admin(jade).jade @@ -3,9 +3,9 @@ navbar p | The delete user and user index api routes are restricted to users with the 'admin' role. ul.list-group - li.list-group-item(ng-repeat='user in users') + li.list-group-item(ng-repeat='user in admin.users') strong {{user.name}} br span.text-muted {{user.email}} - a.trash(ng-click='delete(user)') + a.trash(ng-click='admin.delete(user)') span.glyphicon.glyphicon-trash.pull-right diff --git a/app/templates/client/app/admin(auth)/admin.controller.js b/app/templates/client/app/admin(auth)/admin.controller.js index 3cbfd4b7f..698120b61 100644 --- a/app/templates/client/app/admin(auth)/admin.controller.js +++ b/app/templates/client/app/admin(auth)/admin.controller.js @@ -1,13 +1,21 @@ 'use strict'; -angular.module('<%= scriptAppName %>') - .controller('AdminCtrl', function($scope, $http, Auth, User) { +(function() { +class AdminController { + + constructor(User) { // Use the User $resource to fetch all users - $scope.users = User.query(); + this.users = User.query(); + } + + delete(user) { + user.$remove(); + this.users.splice(this.users.indexOf(user), 1); + } +} + +angular.module('<%= scriptAppName %>.admin') + .controller('AdminController', AdminController); - $scope.delete = function(user) { - User.remove({ id: user._id }); - $scope.users.splice(this.$index, 1); - }; - }); +})(); diff --git a/app/templates/client/app/admin(auth)/admin.module.js b/app/templates/client/app/admin(auth)/admin.module.js new file mode 100644 index 000000000..da769ae91 --- /dev/null +++ b/app/templates/client/app/admin(auth)/admin.module.js @@ -0,0 +1,7 @@ +'use strict'; + +angular.module('<%= scriptAppName %>.admin', [ + '<%= scriptAppName %>.auth'<% if (filters.ngroute) { %>, + 'ngRoute'<% } if (filters.uirouter) { %>, + 'ui.router'<% } %> +]); diff --git a/app/templates/client/app/admin(auth)/admin.js b/app/templates/client/app/admin(auth)/admin.router.js similarity index 59% rename from app/templates/client/app/admin(auth)/admin.js rename to app/templates/client/app/admin(auth)/admin.router.js index 510363868..cc3d9e9f9 100644 --- a/app/templates/client/app/admin(auth)/admin.js +++ b/app/templates/client/app/admin(auth)/admin.router.js @@ -1,19 +1,21 @@ 'use strict'; -angular.module('<%= scriptAppName %>') +angular.module('<%= scriptAppName %>.admin') <% if (filters.ngroute) { %>.config(function($routeProvider) { $routeProvider .when('/admin', { templateUrl: 'app/admin/admin.html', - controller: 'AdminCtrl', + controller: 'AdminController', + controllerAs: 'admin', authenticate: 'admin' }); - });<% } %><% if (filters.uirouter) { %>.config(function($stateProvider) { + });<% } if (filters.uirouter) { %>.config(function($stateProvider) { $stateProvider .state('admin', { url: '/admin', templateUrl: 'app/admin/admin.html', - controller: 'AdminCtrl', + controller: 'AdminController', + controllerAs: 'admin', authenticate: 'admin' }); });<% } %> diff --git a/app/templates/karma.conf.js b/app/templates/karma.conf.js index 61aa87b74..f85a28f71 100644 --- a/app/templates/karma.conf.js +++ b/app/templates/karma.conf.js @@ -22,29 +22,25 @@ module.exports = function(config) { // endbower<% if (filters.socketio) { %> 'node_modules/socket.io-client/socket.io.js',<% } %> 'client/app/app.js', - 'client/app/**/*.js', - 'client/components/**/*.js', - 'client/app/**/*.jade', - 'client/components/**/*.jade', - 'client/app/**/*.html', - 'client/components/**/*.html' + 'client/{app,components}/**/*.module.js', + 'client/{app,components}/**/*.js', + 'client/{app,components}/**/*.<%= filters.jade ? '{jade,html}' : 'html' %>' ], preprocessors: { - '**/*.jade': 'ng-jade2js', - '**/*.html': 'html2js',<% if(filters.babel) { %> + '**/*.html': 'html2js'<% if (filters.jade) { %>, + '**/*.jade': 'ng-jade2js'<% } if (filters.babel) { %>, 'client/{app,components}/**/*.js': 'babel'<% } %> }, ngHtml2JsPreprocessor: { stripPrefix: 'client/' - }, + },<% if (filters.jade) { %> ngJade2JsPreprocessor: { stripPrefix: 'client/' - }, + },<% } if (filters.babel) { %> - <% if(filters.babel) { %> babelPreprocessor: { options: { sourceMap: 'inline' @@ -55,8 +51,7 @@ module.exports = function(config) { sourceFileName: function (file) { return file.originalPath; } - }, - <% } %> + },<% } %> // list of files / patterns to exclude exclude: [], @@ -80,7 +75,6 @@ module.exports = function(config) { // enable / disable watching file and executing tests whenever any file changes autoWatch: false, - // Start these browsers, currently available: // - Chrome // - ChromeCanary @@ -91,7 +85,6 @@ module.exports = function(config) { // - IE (only Windows) browsers: ['PhantomJS'], - // Continuous Integration mode // if true, it capture browsers, run tests and exit singleRun: false diff --git a/test/test-file-creation.js b/test/test-file-creation.js index 26f326dc7..ef4a3e8e4 100644 --- a/test/test-file-creation.js +++ b/test/test-file-creation.js @@ -267,7 +267,8 @@ describe('angular-fullstack generator', function () { 'client/app/account/signup/signup.controller.' + script, 'client/app/admin/admin.' + markup, 'client/app/admin/admin.' + stylesheet, - 'client/app/admin/admin.' + script, + 'client/app/admin/admin.module.' + script, + 'client/app/admin/admin.router.' + script, 'client/app/admin/admin.controller.' + script, 'client/components/auth/auth.module.' + script, 'client/components/auth/auth.service.' + script,