added blog
This commit is contained in:
parent
51e51da63f
commit
c8d2e73ee6
@ -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'""")
|
||||
|
@ -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
|
||||
|
@ -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',
|
||||
|
@ -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 %}
|
||||
|
0
erpnext/website/doctype/blog/__init__.py
Normal file
0
erpnext/website/doctype/blog/__init__.py
Normal file
58
erpnext/website/doctype/blog/blog.py
Normal file
58
erpnext/website/doctype/blog/blog.py
Normal file
@ -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()
|
||||
|
88
erpnext/website/doctype/blog/blog.txt
Normal file
88
erpnext/website/doctype/blog/blog.txt
Normal file
@ -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'
|
||||
}
|
||||
]
|
71
erpnext/website/doctype/blog/blog_page.js
Normal file
71
erpnext/website/doctype/blog/blog_page.js
Normal file
@ -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();
|
||||
})
|
||||
}
|
13
erpnext/website/doctype/blog/template.html
Normal file
13
erpnext/website/doctype/blog/template.html
Normal file
@ -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>
|
@ -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
|
||||
|
0
erpnext/website/page/blog/__init__.py
Normal file
0
erpnext/website/page/blog/__init__.py
Normal file
44
erpnext/website/page/blog/blog.txt
Normal file
44
erpnext/website/page/blog/blog.txt
Normal file
@ -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'
|
||||
}
|
||||
]
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
215
|
||||
228
|
Loading…
x
Reference in New Issue
Block a user