mirror of
				https://github.com/NodeBB/NodeBB.git
				synced 2025-10-31 19:15:58 +01:00 
			
		
		
		
	fixed a bug in templates, introduced categories, added default setup script onload, moved home.tpl code over to category, created hierachies
This commit is contained in:
		
							
								
								
									
										33
									
								
								app.js
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								app.js
									
									
									
									
									
								
							| @@ -2,6 +2,7 @@ var modules = { | ||||
|     	user: require('./src/user.js'), | ||||
|         topics: require('./src/topics.js'), | ||||
|         posts: require('./src/posts.js'), | ||||
|         categories: require('./src/categories.js'), | ||||
|     	templates: require('./src/templates.js'), | ||||
|     	webserver: require('./src/webserver.js'), | ||||
|     	websockets: require('./src/websockets.js'), | ||||
| @@ -23,4 +24,36 @@ global.modules = modules; | ||||
| 	 | ||||
| 	 | ||||
|  | ||||
|  | ||||
|     //setup scripts to be moved outside of the app in future. | ||||
|     function setup_categories() { | ||||
|         console.log('Checking categories...'); | ||||
|         modules.categories.get(function(data) { | ||||
|             if (data.categories.length === 0) { | ||||
|                 console.log('Setting up default categories...'); | ||||
|  | ||||
|                 modules.categories.create({ | ||||
|                     'name': 'General', | ||||
|                     'description': 'A place to talk about whateeeever you want' | ||||
|                 }); | ||||
|  | ||||
|  | ||||
|                 modules.categories.create({ | ||||
|                     'name': 'NodeBB Development', | ||||
|                     'description': 'Bugs? Dont worry, we dont read this thread, so post them here.' | ||||
|                 }); | ||||
|  | ||||
|  | ||||
|                 modules.categories.create({ | ||||
|                     'name': 'Design Create Play', | ||||
|                     'description': 'In future an example of how a hidden category should look like.' | ||||
|                 }); | ||||
|  | ||||
|             } else console.log('Good.'); | ||||
|         }); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     setup_categories(); | ||||
|  | ||||
| }(global.configuration)); | ||||
| @@ -98,12 +98,12 @@ var socket, | ||||
| 		post_window = post_window || document.getElementById('post_window'); | ||||
| 		jQuery(post_window).slideToggle(250); | ||||
|  | ||||
| 		if (post_mode == null || post_mode == 'topic') { | ||||
| 		if (post_mode == 'topic') { | ||||
| 			post_title.style.display = "block"; | ||||
| 			reply_title.style.display = "none"; | ||||
| 			post_title.focus(); | ||||
| 			submit_post_btn.onclick = function() { | ||||
| 				app.post_topic(); | ||||
| 				app.post_topic(id); | ||||
| 			} | ||||
| 		} else { | ||||
| 			if (post_mode == 'reply') { | ||||
| @@ -146,7 +146,7 @@ var socket, | ||||
| 		jQuery(post_window).slideToggle(250); | ||||
|  | ||||
| 	}; | ||||
| 	app.post_topic = function() { | ||||
| 	app.post_topic = function(category_id) { | ||||
| 		var title = document.getElementById('post_title').value, | ||||
| 			content = document.getElementById('post_content').value; | ||||
|  | ||||
| @@ -163,11 +163,11 @@ var socket, | ||||
|  | ||||
| 		socket.emit('api:topics.post', { | ||||
| 			'title' : title, | ||||
| 			'content' : content  | ||||
| 			'content' : content, | ||||
| 			'category_id' : category_id | ||||
| 		}); | ||||
| 		 | ||||
| 		jQuery('#post_title').val(''); | ||||
| 		jQuery('#post_content').val(''); | ||||
| 		jQuery('#post_title, #post_content').val(''); | ||||
| 		jQuery(post_window).slideToggle(250); | ||||
| 	}; | ||||
|  | ||||
|   | ||||
| @@ -49,7 +49,7 @@ var templates = {}; | ||||
|  | ||||
| 	function init() { | ||||
| 		loadTemplates([ | ||||
| 			'header', 'footer', 'register', 'home', 'topic','account', | ||||
| 			'header', 'footer', 'register', 'home', 'topic','account', 'category', | ||||
| 			'login', 'reset', 'reset_code', 'account', | ||||
| 			'confirm', | ||||
| 			'emails/reset', 'emails/reset_plaintext', 'emails/email_confirm', 'emails/email_confirm_plaintext' | ||||
| @@ -90,9 +90,8 @@ var templates = {}; | ||||
| 		var template = this.html, regex, block; | ||||
|  | ||||
| 		return (function parse(data, namespace, template) { | ||||
| 			if (data.length == 0) { | ||||
| 				regex = makeRegex('[^]*'); | ||||
| 				template = template.replace(regex, ''); | ||||
| 			if (!data || data.length == 0) { | ||||
| 				template = ''; | ||||
| 			} | ||||
|  | ||||
| 			for (var d in data) { | ||||
| @@ -147,6 +146,7 @@ function load_template(callback) { | ||||
| 	url = (url === '' || url === '/') ? 'home' : url; | ||||
|  | ||||
| 	jQuery.get(API_URL + url, function(data) { | ||||
| 		console.log(data) | ||||
| 		document.getElementById('content').innerHTML = templates[url.split('/')[0]].parse(JSON.parse(data)); | ||||
| 		if (callback) callback(); | ||||
| 	}); | ||||
|   | ||||
| @@ -1,29 +1,9 @@ | ||||
| <button id="new_post" class="btn btn-primary btn-large">New Post</button> | ||||
| <h3>Categories</h3> | ||||
| <ul class="topic-container"> | ||||
| <!-- BEGIN topics --> | ||||
| <a href="topic/{topics.slug}"><li class="topic-row"> | ||||
| 	<h4>{topics.title}</h4> | ||||
| 	<p>Posted {topics.relativeTime} ago by <span class="username">{topics.username}</span>. {topics.post_count} posts.</p> | ||||
| <!-- BEGIN categories --> | ||||
| <a href="category/{categories.slug}"><li class="topic-row"> | ||||
| 	<h4>{categories.name}</h4> | ||||
| 	<p>{categories.description}</p> | ||||
| </li></a> | ||||
| <!-- END topics --> | ||||
| <!-- END categories --> | ||||
| </ul> | ||||
| <script type="text/javascript"> | ||||
| var new_post = document.getElementById('new_post'); | ||||
| new_post.onclick = function() { | ||||
| 	app.open_post_window(); | ||||
| } | ||||
|  | ||||
| jQuery('document').ready(function() { | ||||
| 	 | ||||
| 	 | ||||
| 	 | ||||
| }); | ||||
|  | ||||
|  | ||||
| /*app.alert({ | ||||
| 	title: 'Welcome back', | ||||
| 	message: 'Some welcome message to test alerts!', | ||||
| 	type: 'info', | ||||
| 	timeout: 2000 | ||||
| });*/ | ||||
| </script> | ||||
| @@ -1,8 +1,7 @@ | ||||
| var	RDB = require('./redis.js'), | ||||
| 	utils = require('./utils.js'), | ||||
| 	marked = require('marked'), | ||||
| 	user = require('./user.js'), | ||||
| 	async = require('async'); | ||||
| 	user = require('./user.js'); | ||||
|  | ||||
| (function(Posts) { | ||||
|  | ||||
|   | ||||
| @@ -11,12 +11,14 @@ var	RDB = require('./redis.js'), | ||||
|  | ||||
|  | ||||
|  | ||||
| 	Topics.get = function(callback, start, end) { | ||||
| 	Topics.get = function(callback, category_id, start, end) { | ||||
| 		if (start == null) start = 0; | ||||
| 		if (end == null) end = start + 10; | ||||
|  | ||||
| 		//build a proper wrapper for this and move it into above function later | ||||
| 		var range_var = (category_id) ? 'categories:' + category_id + ':tid'  : 'topics:tid'; | ||||
|  | ||||
| 		RDB.lrange('topics:tid', start, end, function(tids) { | ||||
| 		RDB.lrange(range_var, start, end, function(tids) { | ||||
| 			var title = [], | ||||
| 				uid = [], | ||||
| 				timestamp = [], | ||||
| @@ -64,17 +66,17 @@ var	RDB = require('./redis.js'), | ||||
| 								}); | ||||
| 							} | ||||
| 						 | ||||
| 							callback({'topics': topics}); | ||||
| 							callback({'category_id': category_id, 'topics': topics}); | ||||
| 						}); | ||||
|  | ||||
| 						 | ||||
| 					} | ||||
| 				); | ||||
| 			} else callback([]); | ||||
| 			} else callback({'category_id': category_id, 'topics': []}); | ||||
| 		}); | ||||
| 	} | ||||
|  | ||||
| 	Topics.post = function(socket, uid, title, content, category) { | ||||
| 	Topics.post = function(socket, uid, title, content, category_id) { | ||||
| 		 | ||||
| 		if (uid === 0) { | ||||
| 			socket.emit('event:alert', { | ||||
| @@ -102,8 +104,8 @@ var	RDB = require('./redis.js'), | ||||
| 			 | ||||
|  | ||||
|  | ||||
| 			if (category) { | ||||
| 				RDB.lpush('topics:' + category + ':tid', tid); | ||||
| 			if (category_id) { | ||||
| 				RDB.lpush('categories:' + category_id + ':tid', tid); | ||||
| 			} | ||||
|  | ||||
| 			var slug = tid + '/' + utils.slugify(title); | ||||
|   | ||||
| @@ -147,6 +147,10 @@ passport.deserializeUser(function(uid, done) { | ||||
| 		res.send(templates['header'] + '<script>templates.ready(function(){ajaxify.go("' + 'topic/' + req.params.topic_id + '");});</script>' + templates['footer']); | ||||
| 	}); | ||||
|  | ||||
| 	app.get('/category/:category_id/:slug?', function(req, res) { | ||||
| 		res.send(templates['header'] + '<script>templates.ready(function(){ajaxify.go("' + 'category/' + req.params.category_id + '");});</script>' + templates['footer']); | ||||
| 	}); | ||||
|  | ||||
| 	app.get('/confirm/:code', function(req, res) { | ||||
| 		res.send(templates['header'] + '<script>templates.ready(function(){ajaxify.go("' + 'confirm/' + req.params.code + '");});</script>' + templates['footer']); | ||||
| 	}); | ||||
| @@ -155,7 +159,7 @@ passport.deserializeUser(function(uid, done) { | ||||
| 	function api_method(req, res) { | ||||
| 		switch(req.params.method) { | ||||
| 			case 'home' : | ||||
| 					global.modules.topics.get(function(data) { | ||||
| 					global.modules.categories.get(function(data) { | ||||
| 						res.send(JSON.stringify(data)); | ||||
| 					}); | ||||
| 				break; | ||||
| @@ -185,6 +189,12 @@ passport.deserializeUser(function(uid, done) { | ||||
| 						res.send(JSON.stringify(data)); | ||||
| 					}, req.params.id, (req.user) ? req.user.uid : 0); | ||||
| 				break; | ||||
| 			case 'category' : | ||||
| 					global.modules.topics.get(function(data) { | ||||
| 						console.log(data); | ||||
| 						res.send(JSON.stringify(data)); | ||||
| 					}, req.params.id); | ||||
| 				break; | ||||
| 			case 'account' :  | ||||
| 					get_account_fn(req, res, function(userData) { | ||||
| 						res.send(JSON.stringify(userData)); | ||||
|   | ||||
| @@ -161,7 +161,7 @@ var	SocketIO = require('socket.io').listen(global.server,{log:false}), | ||||
| 		}); | ||||
|  | ||||
| 		socket.on('api:topics.post', function(data) { | ||||
| 			modules.topics.post(socket, uid, data.title, data.content); | ||||
| 			modules.topics.post(socket, uid, data.title, data.content, data.category_id); | ||||
| 		}); | ||||
|  | ||||
| 		socket.on('api:posts.reply', function(data) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user