added blog category and other updates to website module
diff --git a/website/doctype/blog/blog.py b/website/doctype/blog/blog.py
index 2e96f48..d7ffdac 100644
--- a/website/doctype/blog/blog.py
+++ b/website/doctype/blog/blog.py
@@ -18,6 +18,7 @@
 
 import webnotes
 import website.utils
+from webnotes import _
 
 class DocType:
 	def __init__(self, d, dl):
@@ -73,6 +74,16 @@
 			self.doc.blogger_info = webnotes.doc("blogger", self.doc.blogger).fields
 			if self.doc.blogger_info.avatar and not "/" in self.doc.blogger_info.avatar:
 				self.doc.blogger_info.avatar = "files/" + self.doc.blogger_info.avatar
+		
+		self.doc.categories = webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
+		
+		self.doc.texts = {
+			"comments": _("Comments"),
+			"first_comment": _("Be the first one to comment"),
+			"add_comment": _("Add Comment"),
+			"submit": _("Submit"),
+			"all_posts_by": _("All posts by"),
+		}
 
 		comment_list = webnotes.conn.sql("""\
 			select comment, comment_by_fullname, creation
diff --git a/website/doctype/blog/blog.txt b/website/doctype/blog/blog.txt
index cdc7018..e4c92c2 100644
--- a/website/doctype/blog/blog.txt
+++ b/website/doctype/blog/blog.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-25 11:35:09", 
   "docstatus": 0, 
-  "modified": "2013-03-07 16:32:13", 
+  "modified": "2013-03-08 09:41:37", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -64,6 +64,13 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "blog_category", 
+  "fieldtype": "Link", 
+  "label": "Blog Category", 
+  "options": "Blog Category"
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "section_break_5", 
   "fieldtype": "Section Break"
  }, 
diff --git a/website/doctype/blog_category/__init__.py b/website/doctype/blog_category/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/website/doctype/blog_category/__init__.py
diff --git a/website/doctype/blog_category/blog_category.py b/website/doctype/blog_category/blog_category.py
new file mode 100644
index 0000000..928aa9f
--- /dev/null
+++ b/website/doctype/blog_category/blog_category.py
@@ -0,0 +1,8 @@
+# For license information, please see license.txt
+
+from __future__ import unicode_literals
+import webnotes
+
+class DocType:
+	def __init__(self, d, dl):
+		self.doc, self.doclist = d, dl
\ No newline at end of file
diff --git a/website/doctype/blog_category/blog_category.txt b/website/doctype/blog_category/blog_category.txt
new file mode 100644
index 0000000..cf8cad6
--- /dev/null
+++ b/website/doctype/blog_category/blog_category.txt
@@ -0,0 +1,51 @@
+[
+ {
+  "creation": "2013-03-08 09:41:11", 
+  "docstatus": 0, 
+  "modified": "2013-03-08 09:41:11", 
+  "modified_by": "Administrator", 
+  "owner": "Administrator"
+ }, 
+ {
+  "autoname": "field:category_name", 
+  "doctype": "DocType", 
+  "document_type": "Master", 
+  "module": "Website", 
+  "name": "__common__"
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "category_name", 
+  "fieldtype": "Data", 
+  "label": "Category Name", 
+  "name": "__common__", 
+  "parent": "Blog Category", 
+  "parentfield": "fields", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "reqd": 1
+ }, 
+ {
+  "cancel": 1, 
+  "create": 1, 
+  "doctype": "DocPerm", 
+  "name": "__common__", 
+  "parent": "Blog Category", 
+  "parentfield": "permissions", 
+  "parenttype": "DocType", 
+  "permlevel": 0, 
+  "read": 1, 
+  "role": "Website Manager", 
+  "write": 1
+ }, 
+ {
+  "doctype": "DocType", 
+  "name": "Blog Category"
+ }, 
+ {
+  "doctype": "DocField"
+ }, 
+ {
+  "doctype": "DocPerm"
+ }
+]
\ No newline at end of file
diff --git a/website/doctype/style_settings/custom_template.css b/website/doctype/style_settings/custom_template.css
index d5283ff..e625f95 100644
--- a/website/doctype/style_settings/custom_template.css
+++ b/website/doctype/style_settings/custom_template.css
@@ -32,6 +32,11 @@
 {% if doc.google_web_font_for_heading or doc.heading_font %}
 h1, h2, h3, h4, h5 {
 	font-family: '{{ doc.google_web_font_for_heading or doc.heading_font }}', Arial, 'Helvetica Neue' !important;
+}
+{% endif %}
+{% if doc.heading_text_as %}
+h1, h2, h3, h4, h5 {
+	text-transform: {{ doc.heading_text_as }};
 }	
 {% endif %}
 
diff --git a/website/doctype/style_settings/style_settings.py b/website/doctype/style_settings/style_settings.py
index 95bba74..46aa971 100644
--- a/website/doctype/style_settings/style_settings.py
+++ b/website/doctype/style_settings/style_settings.py
@@ -57,10 +57,16 @@
 			
 		fonts = list(set(fonts))
 		
+		if self.doc.heading_text_as:
+			self.doc.heading_text_as = {
+				"UPPERCASE": "uppercase",
+				"Title Case":"capitalize",
+				"lowercase": "lowercase"
+			}[self.doc.heading_text_as]
+		
 		self.doc.at_import = ""
 		for f in fonts:
 			self.doc.at_import += "\n@import url(http://fonts.googleapis.com/css?family=%s);" % f.replace(" ", "+")
-			
 
 	
 	def on_update(self):
diff --git a/website/doctype/style_settings/style_settings.txt b/website/doctype/style_settings/style_settings.txt
index ebdc35a..e58ae09 100644
--- a/website/doctype/style_settings/style_settings.txt
+++ b/website/doctype/style_settings/style_settings.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-25 11:35:10", 
   "docstatus": 0, 
-  "modified": "2013-03-07 16:06:22", 
+  "modified": "2013-03-08 09:58:49", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -121,6 +121,13 @@
  }, 
  {
   "doctype": "DocField", 
+  "fieldname": "heading_text_as", 
+  "fieldtype": "Select", 
+  "label": "Heading Text As", 
+  "options": "\nUPPERCASE\nTitle Case\nlowercase"
+ }, 
+ {
+  "doctype": "DocField", 
   "fieldname": "column_break_13", 
   "fieldtype": "Column Break"
  }, 
diff --git a/website/doctype/website_settings/website_settings.py b/website/doctype/website_settings/website_settings.py
index 88af634..714b75a 100644
--- a/website/doctype/website_settings/website_settings.py
+++ b/website/doctype/website_settings/website_settings.py
@@ -31,9 +31,6 @@
 		from website.utils import clear_cache
 		clear_cache()
 
-		from webnotes.sessions import clear_cache
-		clear_cache('Guest')
-
 	def set_home_page(self):
 
 		import webnotes
diff --git a/website/helpers/blog.py b/website/helpers/blog.py
index dcb15cb..69aa621 100644
--- a/website/helpers/blog.py
+++ b/website/helpers/blog.py
@@ -6,11 +6,13 @@
 import website.utils
 
 @webnotes.whitelist(allow_guest=True)
-def get_blog_list(start=0, by=None):
+def get_blog_list(start=0, by=None, category=None):
 	import webnotes
 	condition = ""
 	if by:
 		condition = " and t1.blogger='%s'" % by.replace("'", "\'")
+	if category:
+		condition += " and t1.blog_category='%s'" % category.replace("'", "\'")
 	query = """\
 		select
 			t1.title, t1.name, t1.page_name, t1.creation as creation, 
@@ -115,4 +117,8 @@
 	import webnotes.utils
 	content = webnotes.utils.escape_html(content)
 	return content
-	
\ No newline at end of file
+
+def get_blog_template_args():
+	return {
+		"categories": webnotes.conn.sql_list("select name from `tabBlog Category` order by name")
+	}
\ No newline at end of file
diff --git a/website/page/website_home/website_home.js b/website/page/website_home/website_home.js
index d770586..40e29e8 100644
--- a/website/page/website_home/website_home.js
+++ b/website/page/website_home/website_home.js
@@ -12,22 +12,34 @@
 				doctype:"Web Page"
 			},
 			{
-				label: wn._("Blog"),
-				description: wn._("Blog entry."),
-				doctype:"Blog"
-			},
-			{
 				label: wn._("Website Slideshow"),
 				description: wn._("Embed image slideshows in website pages."),
 				doctype:"Website Slideshow"
 			},
+		]
+	},
+	{
+		title: wn._("Blog"),
+		icon: "icon-edit",
+		items: [
+			{
+				label: wn._("Blog"),
+				description: wn._("Blog post."),
+				doctype:"Blog"
+			},
 			{
 				label: wn._("Blogger"),
 				description: wn._("Profile of a blog writer."),
 				doctype:"Blogger"
 			},
+			{
+				label: wn._("Blog Category"),
+				description: wn._("Categorize blog posts."),
+				doctype:"Blogger"
+			},
 		]
 	},
+
 	{
 		title: wn._("Website Overall Settings"),
 		icon: "icon-wrench",
diff --git a/website/templates/html/blog_footer.html b/website/templates/html/blog_footer.html
new file mode 100644
index 0000000..81b92ab
--- /dev/null
+++ b/website/templates/html/blog_footer.html
@@ -0,0 +1,12 @@
+<div class="span12">
+	<hr />
+	<p><a href="blog">Show posts by everyone</a></p>
+	{% if categories %}
+	<h5>Explore posts by categories</h5>
+	<ul class="breadcrumb" style="background-color: transparent; padding-left: 0px;">
+	{% for category in categories %}
+		<li><a href="blog?category={{ category }}">{{ category }}</a> 
+		{% if not loop.last %}<span class="divider">/</span>{% endif %}</li>
+	{% endfor %}
+	{% endif %}
+</div>
diff --git a/website/templates/html/blog_page.html b/website/templates/html/blog_page.html
index 6f7796b..e669642 100644
--- a/website/templates/html/blog_page.html
+++ b/website/templates/html/blog_page.html
@@ -14,7 +14,7 @@
 
 	<!-- begin blog content -->
 	<div class="help" style="color: #aaa">
-		{{ blogger_info and blogger_info.full_name or full_name }} wrote this on {{ updated }}</div>
+		{{ blogger_info and blogger_info.full_name or full_name }} / {{ updated }}</div>
 	<br>
 	{{ content_html }}
 	<!-- end blog content -->
@@ -30,23 +30,23 @@
 			<h4>{{ blogger_info.full_name }}</h4>
 			<p>{{ blogger_info.bio }}</p>
 			<p><a href="blog?by={{ blogger_info.name }}&by_name={{ blogger_info.full_name }}">
-				All posts by {{ blogger_info.full_name }}</a></p>
+				{{ texts.all_posts_by }} {{ blogger_info.full_name }}</a></p>
 		</div>
 	</div>
 	{% endif %}
 	<hr>
-	<h3>Comments</h3><br>
+	<h3>{{ texts.comments }}</h3><br>
 	<div class="blog-comments">
 		
 		{% if not comment_list %}
 		<div class="no-comment">
-			<p>Be the first one to comment</p>
+			<p>{{ texts.first_comment }}</p>
 		</div>
 		{% endif %}
 		
 		{% include 'html/comment.html' %}
 	</div>
-	<div><button class="btn add-comment">Add Comment</button></div>
+	<div><button class="btn add-comment">{{ texts.add_comment }}</button></div>
 	<div style="display: none; margin-top: 10px;" 
 		id="comment-form">
 		<div class="alert" style="display:none;"></div>
@@ -56,11 +56,10 @@
 				<input name="comment_by" placeholder="Your Email Id" type="text"/><br>
 				<textarea name="comment" placeholder="Comment" style="width: 300px; height: 120px;"/>
 				</textarea><br>
-				<button class="btn btn-info" id="submit-comment">Submit</button>
+				<button class="btn btn-info" id="submit-comment">{{ texts.submit }}</button>
 			</fieldset>
 		</form>
 	</div>
-	<hr>
-	<a href="blog">Show posts by everyone</p>
 </div>
+{% include 'html/blog_footer.html' %}
 {% endblock %}
\ No newline at end of file
diff --git a/website/templates/js/blog.js b/website/templates/js/blog.js
index 70df99c..3cfb234 100644
--- a/website/templates/js/blog.js
+++ b/website/templates/js/blog.js
@@ -26,8 +26,12 @@
 	
 	if(get_url_arg("by_name")) {
 		$("#blog-title").html("Posts by " + get_url_arg("by_name"));
-		$("#blog-link").toggle(true);
 	}
+
+	if(get_url_arg("category")) {
+		$("#blog-title").html("Posts filed under " + get_url_arg("category"));
+	}
+
 });
 
 var blog = {
@@ -39,7 +43,8 @@
 			data: {
 				cmd: "website.helpers.blog.get_blog_list",
 				start: blog.start,
-				by: get_url_arg("by")
+				by: get_url_arg("by"),
+				category: get_url_arg("category")
 			},
 			dataType: "json",
 			success: function(data) {
diff --git a/website/templates/pages/blog.html b/website/templates/pages/blog.html
index def83fe..05302c6 100644
--- a/website/templates/pages/blog.html
+++ b/website/templates/pages/blog.html
@@ -13,7 +13,6 @@
 {% block content %}
 <div class="span12">
 	<h2 id="blog-title">Blog</h2>
-	<p id="blog-link" style="display:none"><a href="blog">Show posts by everyone.</a></p>
 	<br>
 	<div id="blog-list">
 		<!-- blog list will be generated dynamically -->
@@ -23,4 +22,5 @@
 			style="display:none;">More...</button>
 	</div>
 </div>
+{% include 'html/blog_footer.html' %}
 {% endblock %}
\ No newline at end of file
diff --git a/website/utils.py b/website/utils.py
index 97c03bc..eac9f0e 100644
--- a/website/utils.py
+++ b/website/utils.py
@@ -41,7 +41,8 @@
 
 page_settings_map = {
 	"about": "About Us Settings",
-	"contact": "Contact Us Settings"
+	"contact": "Contact Us Settings",
+	"blog": "website.helpers.blog.get_blog_template_args"
 }
 
 def render(page_name):
@@ -155,7 +156,11 @@
 			'name': page_name,
 		})
 		if page_name in page_settings_map:
-			args.obj = webnotes.bean(page_settings_map[page_name]).obj
+			target = page_settings_map[page_name]
+			if "." in target:
+				args.update(webnotes.get_method(target)())
+			else:
+				args.obj = webnotes.bean(page_settings_map[page_name]).obj
 	else:
 		args = get_doc_fields(page_name)