added blog subscriber, unsubscribe
diff --git a/erpnext/website/page/blog/blog.html b/erpnext/website/page/blog/blog.html
new file mode 100644
index 0000000..f271e03
--- /dev/null
+++ b/erpnext/website/page/blog/blog.html
@@ -0,0 +1,14 @@
+<div class="layout_wrapper">
+	<div class="web-content" id="content-blog">
+		<h1>Blog</h1>
+		<br>
+		<div class="web-main-section">
+		</div>
+		<div class="web-side-section">
+			<h4>Get Updates</h4>
+			<input name="blog-subscribe">
+			<button class="btn" id="blog-subscribe">Subscribe</button>
+		</div>
+		<div style="clear: both"></div>
+	</div>
+</div>
\ No newline at end of file
diff --git a/erpnext/website/page/blog/blog.js b/erpnext/website/page/blog/blog.js
new file mode 100644
index 0000000..f86e98d
--- /dev/null
+++ b/erpnext/website/page/blog/blog.js
@@ -0,0 +1,39 @@
+wn.require('lib/js/lib/prettydate.js')
+
+pscript.onload_blog = function(wrapper) {
+	wrapper.blog_list = new wn.widgets.Listing({
+		parent: $(wrapper).find('.web-main-section').get(0),
+		query: 'select tabBlog.name, title, left(content, 300) as content, tabBlog.modified, \
+			ifnull(first_name, "") as first_name, ifnull(last_name, "") as last_name \
+			from tabProfile, tabBlog\
+		 	where ifnull(published,1)=1 and tabBlog.owner = tabProfile.name',
+		hide_refresh: true,
+		render_row: function(parent, data) {
+			if(data.content.length==300) data.content += '...';
+			data.date = prettyDate(data.modified);
+			parent.innerHTML = repl('<h4><a href="#!%(name)s">%(title)s</a></h4>\
+				<div class="help">By %(first_name)s %(last_name)s on %(date)s</div>\
+				<p><div class="comment">%(content)s</div></p><br>', data);
+		},
+		page_length: 10
+	});
+	wrapper.blog_list.run();
+	
+	// subscribe button
+	$('#blog-subscribe').click(function() {
+		var email = $(wrapper).find('input[name="blog-subscribe"]').val();
+		if(!validate_email(email)) {
+			msgprint('Please enter a valid email!');
+		}
+		wn.call({
+			module:'website',
+			page:'blog',
+			method:'subscribe',
+			args:email,
+			btn: this,
+			callback: function() {
+				$(wrapper).find('input[name="blog-subscribe"]').val('');
+			}
+		});		
+	})
+}
\ No newline at end of file
diff --git a/erpnext/website/page/blog/blog.py b/erpnext/website/page/blog/blog.py
new file mode 100644
index 0000000..6e7a62e
--- /dev/null
+++ b/erpnext/website/page/blog/blog.py
@@ -0,0 +1,11 @@
+import webnotes
+def subscribe(arg):
+	"""subscribe to blog (blog_subscriber)"""
+	if webnotes.conn.sql("""select name from `tabBlog Subscriber` where name=%s""", arg):
+		webnotes.msgprint("Already a subscriber. Thanks!")
+	else:
+		from webnotes.model.doc import Document
+		d = Document('Blog Subscriber')
+		d.name = arg
+		d.save()
+		webnotes.msgprint("Thank you for subscribing!")
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/__init__.py b/erpnext/website/page/unsubscribe/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/website/page/unsubscribe/__init__.py
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.html b/erpnext/website/page/unsubscribe/unsubscribe.html
new file mode 100644
index 0000000..7b2b68e
--- /dev/null
+++ b/erpnext/website/page/unsubscribe/unsubscribe.html
@@ -0,0 +1,13 @@
+<div class="layout_wrapper">
+	<div class="web-content">
+		<h1>Unsubscribe</h1>
+		<br>
+		<div class="web-main-section">
+			<input name="unsubscribe">
+			<button class="btn" id="btn-unsubscribe">Unsubscribe</button>
+		</div>
+		<div class="web-side-section">
+		</div>
+		<div style="clear: both"></div>
+	</div>
+</div>
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.js b/erpnext/website/page/unsubscribe/unsubscribe.js
new file mode 100644
index 0000000..7cbed37
--- /dev/null
+++ b/erpnext/website/page/unsubscribe/unsubscribe.js
@@ -0,0 +1,21 @@
+pscript.onload_unsubscribe = function(wrapper) {
+	var email = window.location.hash.split('/').splice(-1);
+	$(wrapper).find('input[name="unsubscribe"]').val(email)
+	
+	$('#btn-unsubscribe').click(function() {
+		var email = $(wrapper).find('input[name="unsubscribe"]').val();
+		if(email) {
+			var btn = this;
+			wn.call({
+				module:'website',
+				page:'unsubscribe',
+				method:'unsubscribe',
+				args:email,
+				btn: this,
+				callback: function() {
+					$(wrapper).find('input[name="unsubscribe"]').val('');
+				}
+			});
+		}
+	});
+}
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.py b/erpnext/website/page/unsubscribe/unsubscribe.py
new file mode 100644
index 0000000..57d1d47
--- /dev/null
+++ b/erpnext/website/page/unsubscribe/unsubscribe.py
@@ -0,0 +1,8 @@
+def unsubscribe(arg):
+	"""unsubscribe from lists"""
+	import webnotes
+	lists = [['Blog Subscriber', 'name']]
+	for l in lists:
+		webnotes.conn.sql("""delete from `tab%s` where %s=%s""" % (l[0], l[1], '%s'), arg)
+		
+	webnotes.msgprint('Unsubscribed!')
\ No newline at end of file
diff --git a/erpnext/website/page/unsubscribe/unsubscribe.txt b/erpnext/website/page/unsubscribe/unsubscribe.txt
new file mode 100644
index 0000000..2cc3b58
--- /dev/null
+++ b/erpnext/website/page/unsubscribe/unsubscribe.txt
@@ -0,0 +1,43 @@
+# Page, unsubscribe
+[
+
+	# These values are common in all dictionaries
+	{
+		'creation': '2012-01-27 17:19:02',
+		'docstatus': 0,
+		'modified': '2012-01-27 17:19:02',
+		'modified_by': 'Administrator',
+		'owner': 'Administrator'
+	},
+
+	# These values are common for all Page
+	{
+		'doctype': 'Page',
+		'module': 'Website',
+		'name': '__common__',
+		'page_name': 'unsubscribe',
+		'standard': 'Yes',
+		'title': 'Unsubscribe'
+	},
+
+	# These values are common for all Page Role
+	{
+		'doctype': 'Page Role',
+		'name': '__common__',
+		'parent': 'unsubscribe',
+		'parentfield': 'roles',
+		'parenttype': 'Page',
+		'role': 'Guest'
+	},
+
+	# Page, unsubscribe
+	{
+		'doctype': 'Page',
+		'name': 'unsubscribe'
+	},
+
+	# Page Role
+	{
+		'doctype': 'Page Role'
+	}
+]
\ No newline at end of file