Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @{
- Layout = "~/Views/Shared/_LayoutThemed.cshtml";
- }
- <article class="article gradient-2">
- <h2 class="title container text-center">Welcome to Art Find</h2>
- <section class="form-section">
- <div class="section-inner container text-center">
- <div class="row">
- <div class="col-md-10 col-sm-12 col-xs-12 col-md-push-1 col-sm-push-0 col-xs-push-0">
- <div class="content">
- <div ng-controller="userController as user" class="form-container col-md-10 col-sm-12 col-xs-12 col-md-push-1 col-sm-push-0 col-xs-push-0">
- <form name="user.userForm" class="contact-form form" novalidate>
- <div class="contact-form-inner">
- <h3 class="subtitle titleArea">Registration</h3>
- <div class="row">
- <div class="row">
- <div class="col-md-6 col-sm-6 col-xs-12 form-group" ng-class="{'has-error' : user.userForm.username.$invalid && user.userForm.$submitted}">
- <label for="username">Username</label>
- <input required ng-model="user.userInfo.username" ng-maxlength="30" type="text" name="username" class="form-control" placeholder="Username">
- <div ng-show="user.userForm.$submitted">
- <p ng-show="user.userForm.username.$error.maxlength" class="help-block">Username must be less than 30 characters.</p>
- <p ng-show="user.userForm.username.$error.required" class="help-block">Username is required.</p>
- </div>
- </div>
- <div class="col-md-6 col-sm-6 col-xs-12 form-group" ng-class="{'has-error' : user.userForm.email.$invalid && user.userForm.$submitted}">
- <label for="email">Email Address</label>
- <input required ng-maxlength="200" ng-model="user.userInfo.email" type="email" class="form-control" name="email" placeholder="Email Address">
- <div ng-show="user.userForm.$submitted">
- <p ng-show="user.userForm.email.$error.maxlength" class="help-block">Email address must be less than 200 characters.</p>
- <p ng-show="user.userForm.email.$error.required" class="help-block">Email is required.</p>
- <p ng-show="user.userForm.email.$error.email" class="help-block">Not a valid email address.</p>
- </div>
- </div>
- </div>
- <div class="row" ng-show="user.passwordShow">
- <div class="col-md-6 col-sm-6 col-xs-12 form-group" ng-class="{'has-error' : user.passwordValidation || user.userForm.password.$invalid && user.userForm.$submitted}">
- <label for="password">Password</label>
- <input ng-required="user.passwordShow" ng-maxlength="20" ng-minlength="6" ng-model="user.userInfo.password" ng-change="user.verifyPasswordRules()" type="password" class="form-control" name="password" placeholder="Password">
- <div ng-show="user.userForm.$submitted">
- <p ng-show="user.userForm.password.$error.maxlength" class="help-block">Password must be less than 20 characters.</p>
- <p ng-show="user.userForm.password.$error.minlength" class="help-block">Password must be at least 6 characters.</p>
- <p ng-show="user.userForm.password.$error.required" class="help-block">Password is required.</p>
- <p ng-show="user.passwordValidation" class="help-block">Password must have a character from two of following categories: lowercase letters, uppercase letters, numbers, special characters.</p>
- </div>
- </div>
- <div class="col-md-6 col-sm-6 col-xs-12 form-group" ng-class="{'has-error' : user.passwordMatchValidation && user.userForm.$submitted}">
- <label for="password2">Confirm Password</label>
- <input ng-required="user.passwordShow" ng-model="user.password2" ng-change="user.verifyPasswordMatch()" type="password" class="form-control" name="password2" placeholder="Confirm Password">
- <p ng-show="user.passwordMatchValidation" class="help-block">Password inputs must match.</p>
- </div>
- </div>
- <div class="row">
- <div class="col-md-6 col-sm-6 col-xs-12 form-group" ng-class="{'has-error' : user.userForm.firstName.$invalid && user.userForm.$submitted}">
- <label for="firstName">First Name</label>
- <input required ng-maxlength="20" ng-model="user.userInfo.firstName" type="text" class="form-control" name="firstName" placeholder="First Name">
- <div ng-show="user.userForm.$submitted">
- <p ng-show="user.userForm.firstName.$error.maxlength" class="help-block">First name must be less than 20 characters.</p>
- <p ng-show="user.userForm.firstName.$error.required" class="help-block">First name is required.</p>
- </div>
- </div>
- <div class="col-md-6 col-sm-6 col-xs-12 form-group" ng-class="{'has-error' : user.userForm.lastName.$invalid && user.userForm.$submitted}">
- <label class="" for="lastName">Last Name</label>
- <input required ng-maxlength="50" ng-model="user.userInfo.lastName" type="text" class="form-control" name="lastName" placeholder="Last Name">
- <div ng-show="user.userForm.$submitted">
- <p ng-show="user.userForm.lastName.$error.maxlength" class="help-block">Last name must be less than 50 characters.</p>
- <p ng-show="user.userForm.lastName.$error.required" class="help-block">Last name is required.</p>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12 col-sm-12 col-xs-12 form-group" ng-class="{'has-error' : user.userForm.blurb.$invalid && user.userForm.$submitted}">
- <label class="" for="blurb">Your Blurb</label>
- <textarea ng-maxlength="200" ng-model="user.userInfo.blurb" class="form-control" name="blurb" placeholder="Enter your Blurb" rows="2"></textarea>
- <div ng-show="user.userForm.$submitted">
- <p ng-show="user.userForm.blurb.$error.maxlength" class="help-block">Blurb must be less than 200 characters.</p>
- </div>
- </div>
- </div>
- <div class="row">
- <div class="col-md-12 col-sm-12 col-xs-12 form-group">
- <label class="input-file" for="imageUrl">Profile Picture</label>
- </div>
- <div ng-include="'/Scripts/app_fileUpload/FileUploadTemplate.html'"></div>
- </div>
- <div class="row">
- <div class="col-md-12 col-sm-12 col-xs-12 form-group">
- <button ng-click="user.submitUserForm(user.userForm.$valid)" type="submit" class="btn btn-block btn-cta btn-cta-primary">{{user.submitBtn}}</button>
- <button ng-show="user.showReset" ng-click="user.resetForm()" type="button" class="btn btn-block btn-cta btn-cta-primary">Reset</button>
- </div>
- </div>
- </div><!--//row-->
- </div>
- </form><!--//contact-form-->
- </div>
- </div><!--//content-->
- </div>
- </div><!--//row-->
- </div>
- </section>
- </article>
- @section pageInitScripts {
- <script src="~/Scripts/ngCropper.js"></script>
- <script>
- sabio.moduleOptions.extraModuleDependencies.push('ngCropper')
- </script>
- }
- @section scripts
- {
- <script src="~/Scripts/app_fileUpload/FileUploadController.js"></script>
- <script src="~/Scripts/app/directives/files-model.js"></script>
- <script src="~/Scripts/sabio/services/sabio.services.users.js"></script>
- <script src="~/Scripts/sabio/services/sabio.services.uploads.js"></script>
- <script src="~/Scripts/sabio/services/sabio.services.passwords.js"></script>
- <script type="text/javascript">
- (function () {
- "use strict";
- angular.module(APPNAME)
- .controller('userController', UserController);
- UserController.$inject = ['$scope', '$baseController', 'usersService', 'notificationsService', 'uploadsService', 'appConfig', '$window', 'passwordsService'];
- function UserController($scope, $baseController, usersService, notificationsService, uploadsService, appConfig, $window, passwordsService) {
- var vm = this;
- vm.usersService = usersService;
- vm.notificationsService = notificationsService;
- vm.passwordsService = passwordsService;
- vm.userForm = null;
- vm.userInfo = null;
- vm.password = null;
- vm.password2 = null;
- vm.showReset = true;
- vm.passwordValidation = false;
- vm.passwordMatchValidation = false;
- vm.submitBtn = 'Create User';
- var userId = null;
- var lastSavedUserInfo = null;
- vm.passwordShow = true;
- var defaultImageUrl = '/Content/default.svg';
- vm.$scope = $scope;
- vm.submitUserForm = _submitUserForm;
- vm.resetForm = _resetForm;
- vm.verifyPasswordMatch = _verifyPasswordMatch;
- vm.verifyPasswordRules = _verifyPasswordRules;
- vm.userCreateOrUpdate = _userCreateOrUpdate;
- vm.createUser = _createUser;
- vm.onCreateUserSuccess = _onCreateUserSuccess;
- vm.onCreateUserError = _onCreateUserError;
- vm.updateUser = _updateUser;
- vm.onUpdateUserSuccess = _onUpdateUserSuccess;
- vm.onUpdateUserError = _onUpdateUserError;
- vm.loadEditMode = _loadEditMode;
- vm.onGetByIdSuccess = _onGetByIdSuccess;
- vm.onGetByIdError = _onGetByIdError;
- $baseController.merge(vm, $baseController);
- $scope.$on('$includeContentLoaded', _render);
- $scope.$on('fileUpload.urlAvailable', _userCreateOrUpdate);
- function _render() {
- $scope.$broadcast('fileUpload.urlLoad', { url: null, defaultPreviewUrl: defaultImageUrl });
- if (appConfig.isLoggedIn == true) {
- if (appConfig.item) {
- vm.loadEditMode();
- vm.passwordShow = false;
- }
- else {
- $window.location.href = '/home';
- }
- }
- };
- //FORM RESET
- function _resetForm() {
- if (appConfig.isLoggedIn == true) {
- vm.userInfo = angular.extend({}, lastSavedUserInfo);
- vm.password2 = lastSavedUserInfo.password;
- $scope.$broadcast('fileUpload.urlLoad', { url: vm.userInfo.imageUrl, defaultPreviewUrl:defaultImageUrl, reset: true });
- }
- else {
- vm.userInfo = null;
- vm.password = null;
- vm.password2 = null;
- userId = null;
- vm.showReset = true;
- vm.submitBtn = 'Create User';
- $scope.$broadcast('fileUpload.urlLoad', { url: null, defaultPreviewUrl: defaultImageUrl, reset: true });
- }
- vm.userForm.$setPristine();
- }
- //VERIFY PASSWORD MATCH
- function _verifyPasswordMatch() {
- if (vm.userInfo.password == vm.password2) {
- vm.passwordMatchValidation = false;
- }
- }
- //VERIFY PASSWORD RULES
- function _verifyPasswordRules() {
- vm.verifyPasswordMatch();
- if (vm.userInfo.password != null) {
- if (vm.passwordsService.rulesCheck(vm.userInfo.password)) {
- vm.passwordValidation = false;
- }
- }
- }
- //SUBMIT USER FORM
- function _submitUserForm(isValid) {
- if (isValid) {
- vm.createUser();
- }
- else {
- vm.$log.log('invalid user data');
- }
- }
- //CREATE USER
- function _createUser() {
- if (vm.passwordShow) {
- if (vm.passwordsService.rulesCheck(vm.userInfo.password)) {
- if (vm.userInfo.password == vm.password2) {
- $scope.$broadcast('fileUpload.urlNeeded');
- }
- else {
- vm.passwordMatchValidation = true;
- }
- }
- else {
- vm.passwordValidation = true;
- }
- } else {
- $scope.$broadcast('fileUpload.urlNeeded');
- };
- };
- //CREATE OR UPDATE AJAX CALL
- function _userCreateOrUpdate(event, imageUrl) {
- vm.userInfo.imageUrl = imageUrl.url;
- if (vm.submitBtn == 'Create User') {
- vm.usersService.create(vm.userInfo, vm.onCreateUserSuccess, vm.onCreateUserError);
- }
- else {
- vm.updateUser();
- }
- }
- //CREATE USER SUCCESS & ERROR
- function _onCreateUserSuccess(response) {
- $scope.$apply(function () {
- vm.showReset = true;
- vm.submitBtn = 'Update User Info';
- notificationsService.redirectDialog("/", "You have created an ArtFind account! Check your email to validate your account and sign in.'");
- userId = response.item;
- });
- }
- function _onCreateUserError(response) {
- notificationsService.error(response.responseJSON.message);
- }
- //UPDATE USER AJAX CALL
- function _updateUser() {
- if (appConfig != null) {
- userId = appConfig.item;
- }
- vm.userInfo.id = userId;
- vm.usersService.update(userId, vm.userInfo, vm.onUpdateUserSuccess, vm.onUpdateUserError);
- }
- //UPDATE USER SUCCESS & ERROR
- function _onUpdateUserSuccess(response) {
- notificationsService.success('You have updated your ArtFind account info.');
- $scope.$broadcast('fileUpload.urlLoad', { url: null, defaultPreviewUrl: defaultImageUrl });
- //CAPTURE LAST SAVED USER INFO
- lastSavedUserInfo = angular.extend({}, vm.userInfo);
- lastSavedUserInfo.password = vm.userInfo.password;
- }
- function _onUpdateUserError() {
- notificationsService.error('Error updating user info.');
- }
- //LOAD EDIT MODE (GET BY ID)
- function _loadEditMode() {
- vm.usersService.getById(appConfig.item, vm.onGetByIdSuccess, vm.onGetByIdError);
- vm.showReset = true;
- vm.submitBtn = 'Update User Info';
- }
- //GET BY ID SUCCESS & ERROR
- function _onGetByIdSuccess(response) {
- $scope.$apply(function () {
- vm.userInfo = response.item;
- //CAPTURE LAST SAVED USER INFO
- lastSavedUserInfo = angular.extend({}, vm.userInfo);
- $scope.$broadcast('fileUpload.urlLoad', { url: vm.userInfo.imageUrl, defaultPreviewUrl: defaultImageUrl });
- });
- }
- function _onGetByIdError() {
- notificationsService.error('Error loading user info.');
- }
- }
- })();
- </script>
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement