From c8d2e73ee6e3d46d6a1d776c04c907f4b2b2b793 Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Fri, 27 Jan 2012 15:57:17 +0530 Subject: [PATCH] added blog --- .../jan_mar_2012/subdomain_login_patch.py | 4 +- erpnext/patches/jan_mar_2012/website.py | 9 +- .../website/Module Def/Website/Website.txt | 61 ++++++++++++- .../doctype/about_us_settings/template.html | 2 +- erpnext/website/doctype/blog/__init__.py | 0 erpnext/website/doctype/blog/blog.py | 58 ++++++++++++ erpnext/website/doctype/blog/blog.txt | 88 +++++++++++++++++++ erpnext/website/doctype/blog/blog_page.js | 71 +++++++++++++++ erpnext/website/doctype/blog/template.html | 13 +++ erpnext/website/page/about/about.txt | 5 +- erpnext/website/page/blog/__init__.py | 0 erpnext/website/page/blog/blog.txt | 44 ++++++++++ index.html | 2 +- version.num | 2 +- 14 files changed, 348 insertions(+), 11 deletions(-) create mode 100644 erpnext/website/doctype/blog/__init__.py create mode 100644 erpnext/website/doctype/blog/blog.py create mode 100644 erpnext/website/doctype/blog/blog.txt create mode 100644 erpnext/website/doctype/blog/blog_page.js create mode 100644 erpnext/website/doctype/blog/template.html create mode 100644 erpnext/website/page/blog/__init__.py create mode 100644 erpnext/website/page/blog/blog.txt diff --git a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py b/erpnext/patches/jan_mar_2012/subdomain_login_patch.py index 5c58b08e15..df26e4da3d 100644 --- a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py +++ b/erpnext/patches/jan_mar_2012/subdomain_login_patch.py @@ -21,8 +21,8 @@ def cleanup(): reload_doc("core", "doctype", "control_panel") # cleanup page - delete_doc("DocType", "Control Panel") - reload_doc("core", "doctype", "control_panel") + delete_doc("DocType", "Page") + reload_doc("core", "doctype", "page") webnotes.conn.sql("""delete from tabSingles where field like 'startup_%' and doctype='Control Panel'""") diff --git a/erpnext/patches/jan_mar_2012/website.py b/erpnext/patches/jan_mar_2012/website.py index ee1f251941..dfa0a3d5f1 100644 --- a/erpnext/patches/jan_mar_2012/website.py +++ b/erpnext/patches/jan_mar_2012/website.py @@ -9,13 +9,18 @@ def execute(): cleanup_file_data() update_patch_log() from webnotes.modules import reload_doc - reload_doc('website', 'Module Def', 'Website') reload_doc('website', 'Role', 'Website Manager') + reload_doc('website', 'Module Def', 'Website') reload_doc('website', 'doctype', 'home_settings') reload_doc('website', 'doctype', 'top_bar_settings') reload_doc('website', 'doctype', 'top_bar_item') - reload_doc('website', 'page', 'home') + reload_doc('website', 'doctype', 'contact_us_settings') + reload_doc('website', 'doctype', 'about_us_settings') + reload_doc('website', 'page', 'home') + reload_doc('website', 'page', 'contact') + reload_doc('website', 'page', 'about') + def add_website_manager(): """add website manager to system manager""" for i in webnotes.conn.sql("""select distinct parent from tabUserRole diff --git a/erpnext/website/Module Def/Website/Website.txt b/erpnext/website/Module Def/Website/Website.txt index 1d5985b3c2..1fe044460f 100644 --- a/erpnext/website/Module Def/Website/Website.txt +++ b/erpnext/website/Module Def/Website/Website.txt @@ -5,13 +5,14 @@ { 'creation': '2012-01-23 17:05:32', 'docstatus': 0, - 'modified': '2012-01-27 10:14:58', + 'modified': '2012-01-27 14:30:06', 'modified_by': 'Administrator', 'owner': 'Administrator' }, # These values are common for all Module Def Role { + '__islocal': 1, 'doctype': 'Module Def Role', 'name': '__common__', 'parent': 'Website', @@ -21,7 +22,7 @@ # These values are common for all Module Def Item { - 'doc_type': 'Single DocType', + '__islocal': 1, 'doctype': 'Module Def Item', 'name': '__common__', 'parent': 'Website', @@ -49,6 +50,15 @@ { 'display_name': 'Top Bar Settings', 'doc_name': 'Top Bar Settings', + 'doc_type': 'Single DocType', + 'doctype': 'Module Def Item' + }, + + # Module Def Item + { + 'display_name': 'Blog', + 'doc_name': 'Blog', + 'doc_type': 'Forms', 'doctype': 'Module Def Item' }, @@ -56,6 +66,15 @@ { 'display_name': 'Home Settings', 'doc_name': 'Home Settings', + 'doc_type': 'Single DocType', + 'doctype': 'Module Def Item' + }, + + # Module Def Item + { + 'display_name': 'Top Bar Settings', + 'doc_name': 'Top Bar Settings', + 'doc_type': 'Single DocType', 'doctype': 'Module Def Item' }, @@ -63,6 +82,15 @@ { 'display_name': 'Contact Us Settings', 'doc_name': 'Contact Us Settings', + 'doc_type': 'Single DocType', + 'doctype': 'Module Def Item' + }, + + # Module Def Item + { + 'display_name': 'Home Settings', + 'doc_name': 'Home Settings', + 'doc_type': 'Single DocType', 'doctype': 'Module Def Item' }, @@ -70,6 +98,23 @@ { 'display_name': 'About Us Settings', 'doc_name': 'About Us Settings', + 'doc_type': 'Single DocType', + 'doctype': 'Module Def Item' + }, + + # Module Def Item + { + 'display_name': 'Contact Us Settings', + 'doc_name': 'Contact Us Settings', + 'doc_type': 'Single DocType', + 'doctype': 'Module Def Item' + }, + + # Module Def Item + { + 'display_name': 'About Us Settings', + 'doc_name': 'About Us Settings', + 'doc_type': 'Single DocType', 'doctype': 'Module Def Item' }, @@ -79,6 +124,18 @@ 'role': 'System Manager' }, + # Module Def Role + { + 'doctype': 'Module Def Role', + 'role': 'System Manager' + }, + + # Module Def Role + { + 'doctype': 'Module Def Role', + 'role': 'Website Manager' + }, + # Module Def Role { 'doctype': 'Module Def Role', diff --git a/erpnext/website/doctype/about_us_settings/template.html b/erpnext/website/doctype/about_us_settings/template.html index 21d6729b18..47ef402d1c 100644 --- a/erpnext/website/doctype/about_us_settings/template.html +++ b/erpnext/website/doctype/about_us_settings/template.html @@ -1,5 +1,5 @@
-
+
{% if doc.headline %}

{{ doc.headline }}

{% endif %} diff --git a/erpnext/website/doctype/blog/__init__.py b/erpnext/website/doctype/blog/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/website/doctype/blog/blog.py b/erpnext/website/doctype/blog/blog.py new file mode 100644 index 0000000000..15457412a3 --- /dev/null +++ b/erpnext/website/doctype/blog/blog.py @@ -0,0 +1,58 @@ +""" +record of files + +naming for same name files: file.gif, file-1.gif, file-2.gif etc +""" + +import webnotes + +class DocType(): + def __init__(self, d, dl): + self.doc, self.doclist = d, dl + + def autoname(self): + """save file by its name""" + import re + self.doc.name = re.sub('[~!@#$%^&*()<>,."\']', '', self.doc.title.lower()) + self.doc.name = '-'.join(self.doc.name.split()[:4]) + if webnotes.conn.sql("""select name from tabBlog where name=%s""", self.doc.name) or \ + webnotes.conn.sql("""select name from tabPage where name=%s""", self.doc.name): + webnotes.msgprint("Another page with similar title exists, please change the title",\ + raise_exception=1) + + def on_update(self): + """write/update 'Page' with the blog""" + from webnotes.model.doc import Document + + if webnotes.conn.sql("""select name from tabPage where name=%s""", self.doc.name): + p = Document('Page', self.doc.name) + else: + p = Document('Page') + + p.title = self.doc.title + p.name = p.page_name = self.doc.name + p.module = 'Website' + p.standard = 'No' + + from jinja2 import Template + import markdown2 + import os + + self.doc.content_html = markdown2.markdown(self.doc.content or '') + + with open(os.path.join(os.path.dirname(__file__), 'template.html'), 'r') as f: + p.content = Template(f.read()).render(doc=self.doc) + + with open(os.path.join(os.path.dirname(__file__), 'blog_page.js'), 'r') as f: + p.script = Template(f.read()).render(doc=self.doc) + + p.save() + + # add guest access + if not webnotes.conn.sql("""select parent from `tabPage Role` + where role='Guest' and parent=%s""", self.doc.name): + d = Document('Page Role') + d.parent = self.doc.name + d.role = 'Guest' + d.save() + \ No newline at end of file diff --git a/erpnext/website/doctype/blog/blog.txt b/erpnext/website/doctype/blog/blog.txt new file mode 100644 index 0000000000..9e0949203f --- /dev/null +++ b/erpnext/website/doctype/blog/blog.txt @@ -0,0 +1,88 @@ +# DocType, Blog +[ + + # These values are common in all dictionaries + { + 'creation': '2012-01-27 12:24:03', + 'docstatus': 0, + 'modified': '2012-01-27 12:24:03', + 'modified_by': 'Administrator', + 'owner': 'Administrator' + }, + + # These values are common for all DocType + { + 'colour': 'White:FFF', + 'doctype': 'DocType', + 'module': 'Website', + 'name': '__common__', + 'section_style': 'Simple', + 'show_in_menu': 0, + 'version': 1 + }, + + # These values are common for all DocField + { + 'doctype': 'DocField', + 'name': '__common__', + 'parent': 'Blog', + 'parentfield': 'fields', + 'parenttype': 'DocType', + 'permlevel': 0 + }, + + # These values are common for all DocPerm + { + 'create': 1, + 'doctype': 'DocPerm', + 'name': '__common__', + 'parent': 'Blog', + 'parentfield': 'permissions', + 'parenttype': 'DocType', + 'permlevel': 0, + 'read': 1, + 'write': 1 + }, + + # DocType, Blog + { + 'doctype': 'DocType', + 'name': 'Blog' + }, + + # DocPerm + { + 'doctype': 'DocPerm', + 'role': 'Website Manager' + }, + + # DocPerm + { + 'doctype': 'DocPerm', + 'role': 'Blogger' + }, + + # DocField + { + 'doctype': 'DocField', + 'fieldname': 'title', + 'fieldtype': 'Data', + 'label': 'Title' + }, + + # DocField + { + 'doctype': 'DocField', + 'fieldname': 'published', + 'fieldtype': 'Check', + 'label': 'Published' + }, + + # DocField + { + 'doctype': 'DocField', + 'fieldname': 'content', + 'fieldtype': 'Code', + 'label': 'Content' + } +] \ No newline at end of file diff --git a/erpnext/website/doctype/blog/blog_page.js b/erpnext/website/doctype/blog/blog_page.js new file mode 100644 index 0000000000..1df9b5498c --- /dev/null +++ b/erpnext/website/doctype/blog/blog_page.js @@ -0,0 +1,71 @@ +// js inside blog page + +pscript['onload_{{ doc.name }}'] = function(wrapper) { + // sidebar + var side = $(wrapper).find('.web-side-section') + .append('

Recent Posts

').get(0); + + wrapper.recent_list = new wn.widgets.Listing({ + parent: side, + query: 'select name, title, left(content, 100) as content from tabBlog\ + where ifnull(published,1)=1', + hide_refresh: true, + render_row: function(parent, data) { + if(data.content.length==100) data.content += '...'; + parent.innerHTML = repl('%(title)s\ +
%(content)s

', data); + }, + page_length: 5 + }); + wrapper.recent_list.run(); + + + // comments + $(wrapper).find('.web-main-section').append('

Comments

'); + + wrapper.comment_list = new wn.widgets.Listing({ + parent: $(wrapper).find('.web-main-section').get(0), + query: 'select comment, comment_by_fullname, comment_date\ + from `tabComment Widget Record` where comment_doctype="Page"\ + and comment_docname="{{ doc.name }}"', + no_result_message: 'Be the first one to comment', + render_row: function(parent, data) { + data.comment_date = dateutil.str_to_user(data.comment_date); + $(parent).html(repl("
\ + On %(comment_date)s %(comment_by_fullname)s said:\ +
\ +

%(comment)s


", data)) + }, + hide_refresh: true + }); + wrapper.comment_list.run(); + + // add comment + $(wrapper).find('.web-main-section').append('
'); + $(wrapper).find('button.add-comment').click(function(){ + d = new wn.widgets.Dialog({ + title: 'Add Comment', + fields: [ + {fieldname:'comment_by_fullname', label:'Your Name', reqd:1, fieldtype:'Data'}, + {fieldname:'comment_by', label:'Email Id', reqd:1, fieldtype:'Data'}, + {fieldname:'comment', label:'Comment', reqd:1, fieldtype:'Text'}, + {fieldname:'post', label:'Post', fieldtype:'Button'} + ] + }); + d.fields_dict.post.input.onclick = function() { + var btn = this; + var args = d.get_values(); + if(!args) return; + args.comment_doctype = 'Page'; + args.comment_docname = '{{ doc.name }}'; + $(btn).set_working(); + $c('webnotes.widgets.form.comments.add_comment', args, function(r) { + $(btn).done_working(); + d.hide(); + wrapper.comment_list.refresh(); + }) + } + d.show(); + }) +} \ No newline at end of file diff --git a/erpnext/website/doctype/blog/template.html b/erpnext/website/doctype/blog/template.html new file mode 100644 index 0000000000..8a22cc2ef3 --- /dev/null +++ b/erpnext/website/doctype/blog/template.html @@ -0,0 +1,13 @@ +
+
+

Blog

+
+
+

{{ doc.title }}

+ {{ doc.content_html }} +
+
+
+
+
+
\ No newline at end of file diff --git a/erpnext/website/page/about/about.txt b/erpnext/website/page/about/about.txt index 7e045de50f..a10651308a 100644 --- a/erpnext/website/page/about/about.txt +++ b/erpnext/website/page/about/about.txt @@ -5,7 +5,7 @@ { 'creation': '2012-01-27 11:37:57', 'docstatus': 0, - 'modified': '2012-01-27 11:37:57', + 'modified': '2012-01-27 13:26:42', 'modified_by': 'Administrator', 'owner': 'Administrator' }, @@ -16,7 +16,8 @@ 'module': 'Website', 'name': '__common__', 'page_name': 'about', - 'standard': 'Yes' + 'standard': 'Yes', + 'title': 'About Us' }, # These values are common for all Page Role diff --git a/erpnext/website/page/blog/__init__.py b/erpnext/website/page/blog/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/erpnext/website/page/blog/blog.txt b/erpnext/website/page/blog/blog.txt new file mode 100644 index 0000000000..4443ec813d --- /dev/null +++ b/erpnext/website/page/blog/blog.txt @@ -0,0 +1,44 @@ +# Page, blog +[ + + # These values are common in all dictionaries + { + 'creation': '2012-01-27 15:47:52', + 'docstatus': 0, + 'modified': '2012-01-27 15:47:52', + 'modified_by': 'Administrator', + 'owner': 'Administrator' + }, + + # These values are common for all Page + { + 'doctype': 'Page', + 'module': 'Website', + 'name': '__common__', + 'page_name': 'blog', + 'standard': 'Yes', + 'title': 'Blog' + }, + + # These values are common for all Page Role + { + '__islocal': 1, + 'doctype': 'Page Role', + 'name': '__common__', + 'parent': 'blog', + 'parentfield': 'roles', + 'parenttype': 'Page', + 'role': 'Guest' + }, + + # Page, blog + { + 'doctype': 'Page', + 'name': 'blog' + }, + + # Page Role + { + 'doctype': 'Page Role' + } +] \ No newline at end of file diff --git a/index.html b/index.html index 02a2e506eb..9d2726d130 100644 --- a/index.html +++ b/index.html @@ -3,7 +3,7 @@ ERPNext -