summaryrefslogtreecommitdiff
path: root/public/assets/javascripts/ui/Router.js
blob: fea3698f66df8a2f969beebbe4c1a5500d7ae40f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
var Router = View.extend({
	el: "body",
	
	events: {
		"click [data-role='show-signup-modal']": 'signup',
		"click [data-role='show-signin-modal']": 'signin',
		"click [data-role='new-project-modal']": 'newProject',
		"click [data-role='edit-project-modal']": 'editProject',
		"click [data-role='edit-profile-modal']": 'editProfile',
		"click [data-role='new-document-modal']": 'newDocument',
		"click [data-role='edit-document-modal']": 'editDocument',
	},
	
	routes: {
		"/login":            'signin',
		"/signup":           'signup',
		"/project/new":      'newProject',
		"/profile/edit":     'editProfile',
		"/about/:name/edit": 'editDocument',
		"/about/new":        'newDocument',
		"/app":              'launch',
	},

	initialize: function(){
		this.signUpModal = new SignUpModal()
		this.signInModal = new SignInModal()
		this.newProjectModal = new NewProjectModal()
		this.editProjectModal = new EditProjectModal()
		this.editProfileModal = new EditProfileModal()
		this.documentModal = new DocumentModal()
		
		this.originalPath = window.location.pathname
		
		var path = window.location.pathname.split("/")
		console.log(path)
		for (var route in this.routes) {
			var routePath = route.split("/")
			if (routePath[1] == path[1]) {
				if (routePath[2] && routePath[2].indexOf(":") !== -1 && path[2] && (path[3] === routePath[3]) ) {
					console.log("GOT :")
					console.log(routePath)
					this[this.routes[route]](null, path[2])
					break;
				}
				else if (routePath[2] == path[2]) {
					this[this.routes[route]](null)
					break;
				}
				else if (! routePath[2] && (! path[2].length || ! path[2])) {
					this[this.routes[route]](null)
					break;
				}
			}
		}

		$("body").removeClass("loading")
	},
	
	launch: function(){
		app.launch()
	},
	
	signup: function(e){
		e && e.preventDefault()
		window.history.pushState(null, document.title, "/signup")
		this.signUpModal.load()
	},

	signin: function(e){
		e && e.preventDefault()
		window.history.pushState(null, document.title, "/login")
		this.signInModal.load()
	},
	
	newProject: function(e){
		e && e.preventDefault()
		window.history.pushState(null, document.title, "/project/new")	

		this.newProjectModal.load()
	},

	editProject: function(e){
		e && e.preventDefault()
		window.history.pushState(null, document.title, "/project/edit")	
		this.editProjectModal.load()
	},
	
	editProfile: function(e){
		e && e.preventDefault()
		window.history.pushState(null, document.title, "/profile/edit")	

		this.editProfileModal.load()
	},

	newDocument: function(e){
		e && e.preventDefault()

		var name = e ? $(e.currentTarget).data("name") : "new"

		window.history.pushState(null, document.title, "/about/new")	
		this.documentModal.load(name, true)
	},
	
	editDocument: function(e, name){
		e && e.preventDefault()
		
		var name = e ? $(e.currentTarget).data("name") : name
		window.history.pushState(null, document.title, "/about/" + name + "/edit")
		this.documentModal.load(name, false)
	},

})