Merge branch 'latest' of github.com:webnotes/erpnext into latest
diff --git a/erpnext/patches/jan_mar_2012/subdomain_login_patch.py b/erpnext/patches/jan_mar_2012/subdomain_login_patch.py
index 5c58b08..df26e4d 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 @@
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 ee1f251..dfa0a3d 100644
--- a/erpnext/patches/jan_mar_2012/website.py
+++ b/erpnext/patches/jan_mar_2012/website.py
@@ -9,13 +9,18 @@
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 1d5985b..1fe0444 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'
},
@@ -82,6 +127,18 @@
# 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',
'role': 'Website Manager'
}
]
\ No newline at end of file
diff --git a/erpnext/website/doctype/about_us_settings/template.html b/erpnext/website/doctype/about_us_settings/template.html
index 21d6729..47ef402 100644
--- a/erpnext/website/doctype/about_us_settings/template.html
+++ b/erpnext/website/doctype/about_us_settings/template.html
@@ -1,5 +1,5 @@
<div class="layout_wrapper">
- <div class="web-content" id="content-contact-us">
+ <div class="web-content" id="content-about-us">
{% if doc.headline %}
<h1>{{ doc.headline }}</h1>
{% endif %}
diff --git a/erpnext/website/doctype/blog/__init__.py b/erpnext/website/doctype/blog/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/erpnext/website/doctype/blog/__init__.py
diff --git a/erpnext/website/doctype/blog/blog.py b/erpnext/website/doctype/blog/blog.py
new file mode 100644
index 0000000..1545741
--- /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 0000000..9e09492
--- /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 0000000..1df9b54
--- /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('<h4>Recent Posts</h4>').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('<a href="#!%(name)s">%(title)s</a>\
+ <div class="comment">%(content)s</div><br>', data);
+ },
+ page_length: 5
+ });
+ wrapper.recent_list.run();
+
+
+ // comments
+ $(wrapper).find('.web-main-section').append('<h3>Comments</h3>');
+
+ 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("<div style='color:#777'>\
+ On %(comment_date)s %(comment_by_fullname)s said:\
+ </div>\
+ <p style='margin-left: 20px;'>%(comment)s</p><br>", data))
+ },
+ hide_refresh: true
+ });
+ wrapper.comment_list.run();
+
+ // add comment
+ $(wrapper).find('.web-main-section').append('<br><button class="btn add-comment">\
+ Add Comment</button>');
+ $(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 0000000..8a22cc2
--- /dev/null
+++ b/erpnext/website/doctype/blog/template.html
@@ -0,0 +1,13 @@
+<div class="layout_wrapper">
+ <div class="web-content" id="blog-{{ doc.name }}">
+ <h1>Blog</h1>
+ <br>
+ <div class="web-main-section">
+ <h2>{{ doc.title }}</h2>
+ {{ doc.content_html }}
+ </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/about/about.txt b/erpnext/website/page/about/about.txt
index 7e045de..a106513 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 0000000..e69de29
--- /dev/null
+++ b/erpnext/website/page/blog/__init__.py
diff --git a/erpnext/website/page/blog/blog.txt b/erpnext/website/page/blog/blog.txt
new file mode 100644
index 0000000..4443ec8
--- /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 02a2e50..9d2726d 100644
--- a/index.html
+++ b/index.html
@@ -3,7 +3,7 @@
<meta charset="utf-8">
<title>ERPNext</title>
<meta name="author" content="">
- <script type="text/javascript">window._version_number="215";
+ <script type="text/javascript">window._version_number="228";
/*
* lib/js/wn/class.js
diff --git a/version.num b/version.num
index 58e77f3..b3b2268 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-215
\ No newline at end of file
+228
\ No newline at end of file