This repository has been archived on 2025-12-28. You can view files and clone it, but cannot push or open issues or pull requests.
inkletblot-forum-com-v1/scripts/main.js
2020-02-29 16:19:31 +10:30

166 lines
5.0 KiB
JavaScript

let daddy = angular.module("daddy", ["ngRoute", "ngAnimate", "ngCookies"])
// let server = "http://127.0.0.1:7001"
let server = "https://www.inkletblot.com:32368"
daddy.controller("bodyCtrlr", function($scope, $cookies, stateData){
$scope.state = stateData.state
let user = $cookies.getObject('user')
if (user == null) {
stateData.logOut()
} else {
stateData.setUser(user)
}
})
daddy.controller("headerCtrlr", function($scope){
$scope.subtitle = "Inks forum."
})
daddy.controller("navCtrlr", function($scope, $location, $cookies, stateData){
$scope.setLogin = () => {
$location.path("/login")
}
$scope.setSignup = () => {
$location.path("/signup")
}
$scope.setForum = () => {
$location.path("/")
stateData.setPage('forum')
}
$scope.setTopics = () => {
$location.path("/topics")
stateData.setPage('topics')
}
$scope.setTopicCreate = () => {
$location.path("/topics/create")
stateData.setPage('topics')
}
$scope.setCategories = () => {
$location.path("/categories")
stateData.setPage('categories')
}
$scope.setCategoryCreate = () => {
$location.path("/categories/create")
stateData.setPage('categories')
}
switch ($location.path()) {
case "":
case "/":
$scope.setForum()
break
case "/topics":
$scope.setTopics()
// this has to be done in the controller
break
case "/topics/create":
$scope.setTopicCreate()
break
case "/categories":
$scope.setCategories()
// this has to be done in the controller
break
case "/catagories/create":
$scope.setCategoryCreate()
break
case "/login":
$scope.setLogin()
break
case "/signup":
$scope.setSignup()
break
}
$scope.logOut = () => {
stateData.logOut()
}
})
// naming conventions here are very confusing:
// the main topics page is topic and the specific topics page is topics, by specific I mean the :topicNo one.
// the same goes for categories, category is the main page and the spcefics are categories.
daddy.config(function ($routeProvider) {
$routeProvider.when("/", {templateUrl : "views/home.html", controller : "forumCtrlr"})
$routeProvider.when("/topics/create", {templateUrl : "views/create_topic.html", controller : "createTopicCtrlr"})
$routeProvider.when("/topics", {templateUrl : "views/topic.html", controller : "topicCtrlr"})
$routeProvider.when("/topics/:topicNo", {templateUrl : "views/topics.html", controller : "topicsCtrlr"})
$routeProvider.when("/categories/create", {templateUrl : "views/create_category.html", controller : "createCategoryCtrlr"})
$routeProvider.when("/categories", {templateUrl : "views/category.html", controller : "categoryCtrlr"})
$routeProvider.when("/categories/:catNo", {templateUrl : "views/categories.html", controller : "categoriesCtrlr"})
$routeProvider.when("/login", {templateUrl : "views/login.html", controller : "loginCtrlr"})
$routeProvider.when("/signup", {templateUrl : "views/signup.html", controller : "signupCtrlr"})
$routeProvider.otherwise({template : "<article><section class='item border'><h1>404 ... no clue fam ... try something else?</h1></section></article>"})
})
daddy.factory('stateData', function($cookies){
let state = {
page : "forum",
title : "Forum;",
user : {
userNo : null,
userName : null,
userLevel : 0
}
}
setPage = (newPage) => {
state.page = newPage
switch (state.page) {
case "forum":
state.title = "Forum;"
break
case "topics":
state.title = "Topics;"
break
case "categories":
state.title = "Categories;"
break
}
}
logOut = () => {
$cookies.remove('user')
state.user.userNo = null
state.user.userName = null
state.user.userLevel = 0
}
setUser = (user) => {
state.user.sessionID = user.sessionID
state.user.userNo = user.userNo
state.user.userName = user.userName
state.user.userLevel = user.userLevel
}
return {
state : state,
setPage : setPage,
logOut: logOut,
setUser: setUser
}
})
function getDate() {
let date = new Date()
let out = date.getFullYear() + "-" + (date.getMonth()+1) + "-" + date.getDate() + " - " + date.getHours() + ":" + date.getMinutes()
return out
}
function validateEmail(email) {
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
return re.test(String(email).toLowerCase());
}