[REF] website_forum: renamed models (website.forum -> forum) + cleaned models.

Added favorite_count function field, like vote_count and so on, to be able
to have badges based on a simple model.

bzr revid: tde@openerp.com-20140410133928-i0lncz8us9wueb13
This commit is contained in:
Thibault Delavallée 2014-04-10 15:39:28 +02:00
parent 7493326daf
commit cbac424f91
7 changed files with 155 additions and 147 deletions

View File

@ -4,4 +4,6 @@ goal_definition_portal,"Goal Definition Portal",gamification.model_gamification_
challenge_portal,"Goal Challenge Portal",gamification.model_gamification_challenge,base.group_portal,1,0,0,0
challenge_line_portal,"Challenge Line Portal",gamification.model_gamification_challenge_line,base.group_portal,1,0,0,0
badge_portal,"Badge Portal",gamification.model_gamification_badge,base.group_portal,1,0,0,0
badge_public,"Badge Public",gamification.model_gamification_badge,base.group_public,1,0,0,0
badge_user_portal,"Badge-user Portal",gamification.model_gamification_badge_user,base.group_portal,1,1,1,0
badge_user_public,"Badge-user Public",gamification.model_gamification_badge_user,base.group_public,1,0,0,0

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 challenge_portal Goal Challenge Portal gamification.model_gamification_challenge base.group_portal 1 0 0 0
5 challenge_line_portal Challenge Line Portal gamification.model_gamification_challenge_line base.group_portal 1 0 0 0
6 badge_portal Badge Portal gamification.model_gamification_badge base.group_portal 1 0 0 0
7 badge_public Badge Public gamification.model_gamification_badge base.group_public 1 0 0 0
8 badge_user_portal Badge-user Portal gamification.model_gamification_badge_user base.group_portal 1 1 1 0
9 badge_user_public Badge-user Public gamification.model_gamification_badge_user base.group_public 1 0 0 0

View File

@ -2,7 +2,7 @@
<openerp>
<data>
<record id="forum_help" model="website.forum">
<record id="forum_help" model="forum.forum">
<field name="name">Help</field>
</record>
@ -32,32 +32,24 @@
<!-- Answers subtypes -->
<record id="mt_answer_new" model="mail.message.subtype">
<field name="name">New Answer</field>
<field name="res_model">website.forum.post</field>
<field name="res_model">forum.post</field>
<field name="default" eval="True"/>
<field name="hidden" eval="False"/>
<field name="description">New Answer</field>
</record>
<record id="mt_answer_edit" model="mail.message.subtype">
<field name="name">Answer Edited</field>
<field name="res_model">website.forum.post</field>
<field name="res_model">forum.post</field>
<field name="default" eval="False"/>
<field name="description">Answer Edited</field>
</record>
<!-- Questions subtypes -->
<record id="mt_question_edit" model="mail.message.subtype">
<field name="name">Question Edited</field>
<field name="res_model">website.forum.post</field>
<field name="res_model">forum.post</field>
<field name="default" eval="False"/>
<field name="description">Question Edited</field>
</record>
<!-- Questions subtypes to follow Answers -->
<!-- <record id="mt_question_answer_new" model="mail.message.subtype">
<field name="name">New Answer (tech for questions)</field>
<field name="res_model">website.forum.post</field>
<field name="default" eval="True"/>
<field name="parent_id" eval="ref('mt_answer_new')"/>
<field name="relation_field">parent_id</field>
</record> -->
<!--At this time create_date is not stores in db for administrator only so for that forcefully updating date. -->
<record id="base.user_root" model="res.users">
@ -68,31 +60,31 @@
<data noupdate="1">
<!-- Reasons for closing Post -->
<record id="reason_1" model="website.forum.post.reason">
<record id="reason_1" model="forum.post.reason">
<field name="name">duplicate question</field>
</record>
<record id="reason_2" model="website.forum.post.reason">
<record id="reason_2" model="forum.post.reason">
<field name="name">off-topic or not relevant</field>
</record>
<record id="reason_3" model="website.forum.post.reason">
<record id="reason_3" model="forum.post.reason">
<field name="name">too subjective and argumentative</field>
</record>
<record id="reason_4" model="website.forum.post.reason">
<record id="reason_4" model="forum.post.reason">
<field name="name">not a real question</field>
</record>
<record id="reason_5" model="website.forum.post.reason">
<record id="reason_5" model="forum.post.reason">
<field name="name">already answered and an answer was accepted</field>
</record>
<record id="reason_6" model="website.forum.post.reason">
<record id="reason_6" model="forum.post.reason">
<field name="name">not relevant or out dated</field>
</record>
<record id="reason_7" model="website.forum.post.reason">
<record id="reason_7" model="forum.post.reason">
<field name="name">contains offensive or malicious remarks</field>
</record>
<record id="reason_8" model="website.forum.post.reason">
<record id="reason_8" model="forum.post.reason">
<field name="name">spam or advertising</field>
</record>
<record id="reason_9" model="website.forum.post.reason">
<record id="reason_9" model="forum.post.reason">
<field name="name">too localized</field>
</record>

View File

@ -3,39 +3,32 @@
<data>
<!-- Tag -->
<record id="tags_0" model="website.forum.tag">
<record id="tags_0" model="forum.tag">
<field name="name">Contract</field>
<field name="forum_id" ref="website_forum.forum_help"/>
</record>
<record id="tags_1" model="website.forum.tag">
<record id="tags_1" model="forum.tag">
<field name="name">Action</field>
<field name="forum_id" ref="website_forum.forum_help"/>
</record>
<record id="tags_2" model="website.forum.tag">
<record id="tags_2" model="forum.tag">
<field name="name">Alert</field>
<field name="forum_id" ref="website_forum.forum_help"/>
</record>
<record id="tags_3" model="website.forum.tag">
<record id="tags_3" model="forum.tag">
<field name="name">ecommerce</field>
<field name="forum_id" ref="website_forum.forum_help"/>
</record>
<!-- <record id="base.user_demo" model="res.users">
<field name="forum_member" eval="True"/>
</record>
<record id="base.user_root" model="res.users">
<field name="forum_member" eval="True"/>
</record> -->
<!-- Questions -->
<record id="question_0" model="website.forum.post">
<record id="question_0" model="forum.post">
<field name="name">How to configure alerts for employee contract expiration</field>
<field name="forum_id" ref="website_forum.forum_help"/>
<field name="views">5</field>
<field name="tag_ids" eval="[(4,ref('website_forum.tags_0')),(4,ref('website_forum.tags_1')),(4,ref('website_forum.tags_2'))]"/>
<field name="user_id" ref="base.user_root"/>
</record>
<record id="question_1" model="website.forum.post">
<record id="question_1" model="forum.post">
<field name="name">CMS replacement for ERP and eCommerce</field>
<field name="views">23</field>
<field name="forum_id" ref="website_forum.forum_help"/>
@ -49,7 +42,7 @@ In simple words does OpenERP became CMS+ERP platform?</field>
</record>
<!-- Answer -->
<record id="answer_0" model="website.forum.post">
<record id="answer_0" model="forum.post">
<field name="forum_id" ref="website_forum.forum_help"/>
<field name="content">Just for posterity so other can see. Here are the steps to set automatic alerts on any contract.. i.e. HR Employee, or Fleet for example. I will use fleet as an example.
Step 1. As a user who has access rights to Technical Features, go to Settings --> Automated Actions. Create A new Automated Action. For the Related Document Model choose.. Contract information on a vehicle (you can also type in the actual model name.. fleet.vehicle.log.contract ) . Set the trigger date to ... Contract Expiration Date.
@ -62,7 +55,7 @@ In simple words does OpenERP became CMS+ERP platform?</field>
<field name="parent_id" ref="question_0" />
<field name="user_id" ref="base.user_root"/>
</record>
<record id="answer_1" model="website.forum.post">
<record id="answer_1" model="forum.post">
<field name="forum_id" ref="website_forum.forum_help"/>
<field name="content">OpenERP v8 (next release) provides a web module and an e-commerce module: www.openerp.com/website_cms
The CMS editor in OpernERP web is nice but I prefer drupal for customization and there is a drupal module for OpenERP. I think WP is better than OpenERP web too.
@ -72,12 +65,12 @@ In simple words does OpenERP became CMS+ERP platform?</field>
</record>
<!-- Post Vote -->
<record id="post_vote_0" model="website.forum.post.vote">
<record id="post_vote_0" model="forum.post.vote">
<field name="post_id" ref="question_0"/>
<field name="user_id" ref="base.user_root"/>
<field name="vote">1</field>
</record>
<record id="post_vote_6" model="website.forum.post.vote">
<record id="post_vote_1" model="forum.post.vote">
<field name="post_id" ref="answer_0"/>
<field name="user_id" ref="base.user_root"/>
<field name="vote">1</field>

View File

@ -9,14 +9,14 @@ from openerp.tools.translate import _
class Forum(osv.Model):
_name = 'website.forum'
_name = 'forum.forum'
_description = 'Forums'
_inherit = ['mail.thread', 'website.seo.metadata']
_inherit = ['website.seo.metadata']
_columns = {
'name': fields.char('Name', required=True, translate=True),
'faq': fields.html('Guidelines'),
'description': fields.text('Description'),
'description': fields.html('Description'),
}
def _get_default_faq(self, cr, uid, context=None):
@ -38,24 +38,50 @@ class Forum(osv.Model):
class Post(osv.Model):
_name = 'website.forum.post'
_description = "Question"
_name = 'forum.post'
_description = 'Forum Post'
_inherit = ['mail.thread', 'website.seo.metadata']
def _get_user_vote(self, cr, uid, ids, field_name, arg, context):
res = dict.fromkeys(ids, 0)
vote_ids = self.pool['forum.post.vote'].search(cr, uid, [('post_id', 'in', ids), ('user_id', '=', uid)], context=context)
for vote in self.pool['forum.post.vote'].browse(cr, uid, vote_ids, context=context):
res[vote.post_id.id] = vote.vote
return res
def _get_vote_count(self, cr, uid, ids, field_name, arg, context):
res = dict.fromkeys(ids, 0)
for post in self.browse(cr, uid, ids, context=context):
if post.vote_ids:
for vote in post.vote_ids:
res[post.id] += int(vote.vote)
for vote in post.vote_ids:
res[post.id] += int(vote.vote)
return res
def _get_vote(self, cr, uid, ids, context=None):
def _get_post_from_vote(self, cr, uid, ids, context=None):
result = {}
for vote in self.pool['website.forum.post.vote'].browse(cr, uid, ids, context=context):
for vote in self.pool['forum.post.vote'].browse(cr, uid, ids, context=context):
result[vote.post_id.id] = True
return result.keys()
def _get_user_favourite(self, cr, uid, ids, field_name, arg, context):
res = dict.fromkeys(ids, False)
for post in self.browse(cr, uid, ids, context=context):
if uid in [f.user_id.id for f in post.favourite_ids]:
res[post.id] = True
return res
def _get_favorite_count(self, cr, uid, ids, field_name, arg, context):
res = dict.fromkeys(ids, 0)
for post in self.browse(cr, uid, ids, context=context):
res[post.id] += len(post.favorite_ids)
return res
def _get_post_from_hierarchy(self, cr, uid, ids, context=None):
post_ids = set(ids)
for post in self.browse(cr, SUPERUSER_ID, ids, context=context):
if post.parent_id:
post_ids.add(post.parent_id.id)
return list(post_ids)
def _get_child_count(self, cr, uid, ids, field_name=False, arg={}, context=None):
res = dict.fromkeys(ids, 0)
for post in self.browse(cr, uid, ids, context=context):
@ -65,71 +91,62 @@ class Post(osv.Model):
res[post.id] = len(post.child_ids)
return res
def _get_user_vote(self, cr, uid, ids, field_name, arg, context):
res = dict.fromkeys(ids, 0)
vote_ids = self.pool['website.forum.post.vote'].search(cr, uid, [('post_id', 'in', ids), ('user_id', '=', uid)], context=context)
for vote in self.pool['website.forum.post.vote'].browse(cr, uid, vote_ids, context=context):
res[vote.post_id.id] = vote.vote
return res
def _get_user_favourite(self, cr, uid, ids, field_name, arg, context):
res = dict.fromkeys(ids, False)
user = self.pool['res.users'].browse(cr, uid, uid, context=context)
for post in self.browse(cr, uid, ids, context=context):
if user in post.favourite_ids:
res[post.id] = True
return res
_columns = {
'name': fields.char('Title', size=128),
'forum_id': fields.many2one('website.forum', 'Forum', required=True),
'content': fields.text('Content'),
'create_date': fields.datetime('Asked on', select=True, readonly=True),
'user_id': fields.many2one('res.users', 'Asked by', select=True, readonly=True),
'write_date': fields.datetime('Update on', select=True, readonly=True),
'write_uid': fields.many2one('res.users', 'Update by', select=True, readonly=True),
'tag_ids': fields.many2many('website.forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id', 'Tag'),
'vote_ids': fields.one2many('website.forum.post.vote', 'post_id', 'Votes'),
'user_vote': fields.function(_get_user_vote, string="My Vote", type='integer'),
'favourite_ids': fields.many2many('res.users', 'forum_favourite_rel', 'forum_id', 'user_id', 'Favourite'),
'user_favourite': fields.function(_get_user_favourite, string="My Favourite", type='boolean'),
'forum_id': fields.many2one('forum.forum', 'Forum', required=True),
'content': fields.html('Content'),
'tag_ids': fields.many2many('forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id', 'Tags'),
'state': fields.selection([('active', 'Active'), ('close', 'Close'), ('offensive', 'Offensive')], 'Status'),
'active': fields.boolean('Active'),
'views': fields.integer('Number of Views'),
'parent_id': fields.many2one('website.forum.post', 'Question', ondelete='cascade'),
'child_ids': fields.one2many('website.forum.post', 'parent_id', 'Answers'),
'child_count': fields.function(
_get_child_count, string="Answers", type='integer',
store={
'website.forum.post': (lambda self, cr, uid, ids, c={}: ids, ['parent_id', 'child_ids'], 10),
}
),
'active': fields.boolean('Active'),
'is_correct': fields.boolean('Valid Answer', help='Correct Answer/ Answer on this question accepted.'),
'website_message_ids': fields.one2many(
'mail.message', 'res_id',
domain=lambda self: [
'&', ('model', '=', self._name), ('type', '=', 'comment')
],
string='Post Messages',
help="Comments on forum post",
string='Post Messages', help="Comments on forum post",
),
# history
'create_date': fields.datetime('Asked on', select=True, readonly=True),
'create_uid': fields.many2one('res.users', 'Created by', select=True, readonly=True),
'write_date': fields.datetime('Update on', select=True, readonly=True),
'write_uid': fields.many2one('res.users', 'Updated by', select=True, readonly=True),
# vote fields
'vote_ids': fields.one2many('forum.post.vote', 'post_id', 'Votes'),
'user_vote': fields.function(_get_user_vote, string='My Vote', type='integer'),
'vote_count': fields.function(
_get_vote_count, string="Votes", type='integer',
store={
'website.forum.post': (lambda self, cr, uid, ids, c={}: ids, ['vote_ids'], 10),
'website.forum.post.vote': (_get_vote, [], 10),
}
),
'is_correct': fields.boolean('Valid Answer', help='Correct Answer/ Answer on this question accepted.'),
'closed_reason_id': fields.many2one('website.forum.post.reason', 'Reason'),
'closed_by': fields.many2one('res.users', 'Closed by'),
'forum.post': (lambda self, cr, uid, ids, c={}: ids, ['vote_ids'], 10),
'forum.post.vote': (_get_post_from_vote, [], 10),
}),
# favorite fields
'favourite_ids': fields.many2many('res.users', 'Favourite'),
'user_favourite': fields.function(_get_user_favourite, string="My Favourite", type='boolean'),
'favorite_count': fields.function(
_get_favorite_count, string='Favorite Count', type='integer',
store={
'forum.post': (lambda self, cr, uid, ids, c={}: ids, ['favorite_ids'], 10),
}),
# hierarchy
'parent_id': fields.many2one('forum.post', 'Question', ondelete='cascade'),
'child_ids': fields.one2many('forum.post', 'parent_id', 'Answers'),
'child_count': fields.function(
_get_child_count, string="Answers", type='integer',
store={
'forum.post': (_get_post_from_hierarchy, ['parent_id', 'child_ids'], 10),
}),
# closing
'closed_reason_id': fields.many2one('forum.post.reason', 'Reason'),
'closed_uid': fields.many2one('res.users', 'Closed by', select=1),
'closed_date': fields.datetime('Closed on', readonly=True),
}
_defaults = {
'user_id': lambda self, cr, uid, ctx=None: uid,
'create_uid': lambda self, cr, uid, ctx=None: uid,
'state': 'active',
'views': 0,
'vote_count': 0,
'active': True,
}
@ -172,13 +189,13 @@ class Post(osv.Model):
return res
def vote(self, cr, uid, ids, upvote=True, context=None):
Vote = self.pool['website.forum.post.vote']
Vote = self.pool['forum.post.vote']
user = self.pool['res.users'].browse(cr, uid, uid, context=context)
# must have at least 10 karma to vote
if not upvote and user.karma <= 10:
return {'error': 'lessthen_10_karma'}
# user can not vote on own post
posts = self.pool['website.forum.post'].browse(cr, uid, ids, context=context)
posts = self.browse(cr, uid, ids, context=context)
if any(post.user_id.id == uid for post in posts):
return {'error': 'own_post'}
@ -203,18 +220,18 @@ class Post(osv.Model):
class PostReason(osv.Model):
_name = "website.forum.post.reason"
_description = "Post Reason"
_name = "forum.post.reason"
_description = "Post Closing Reason"
_columns = {
'name': fields.char('Post Reason'),
'name': fields.char('Post Reason', required=True),
}
class Vote(osv.Model):
_name = 'website.forum.post.vote'
_name = 'forum.post.vote'
_description = 'Vote'
_columns = {
'post_id': fields.many2one('website.forum.post', 'Post', ondelete='cascade', required=True),
'post_id': fields.many2one('forum.post', 'Post', ondelete='cascade', required=True),
'user_id': fields.many2one('res.users', 'User'),
'vote': fields.selection([('1', '1'), ('-1', '-1'), ('0', '0')], 'Vote', required=True),
'create_date': fields.datetime('Create Date', select=True, readonly=True),
@ -234,8 +251,6 @@ class Vote(osv.Model):
def create(self, cr, uid, vals, context=None):
vote_id = super(Vote, self).create(cr, uid, vals, context=context)
self.update_karma(cr, uid, [vote_id], new_vote=vals.get('vote', '1'), context=context)
# body = "voted %s %s" % ('answer' if record.parent_id else 'question','up' if vals.get('vote')==1 else 'down')
# Post.message_post(cr, uid, [record.id], body=_(body), context=context)
return vote_id
def write(self, cr, uid, ids, values, context=None):
@ -247,25 +262,26 @@ class Vote(osv.Model):
class Tags(osv.Model):
_name = "website.forum.tag"
_name = "forum.tag"
_description = "Tag"
_inherit = ['website.seo.metadata']
def _get_posts_count(self, cr, uid, ids, field_name, arg, context=None):
return dict((tag_id, self.pool['website.forum.post'].search_count(cr, uid, [('tag_ids', 'in', tag_id)], context=context)) for tag_id in ids)
return dict((tag_id, self.pool['forum.post'].search_count(cr, uid, [('tag_ids', 'in', tag_id)], context=context)) for tag_id in ids)
def _get_tag_from_post(self, cr, uid, ids, context=None):
return list(set(
[tag.id for post in self.pool['website.forum.post'].browse(cr, SUPERUSER_ID, ids, context=context) for tag in post.tag_ids]
[tag.id for post in self.pool['forum.post'].browse(cr, SUPERUSER_ID, ids, context=context) for tag in post.tag_ids]
))
_columns = {
'name': fields.char('Name', size=64, required=True),
'forum_id': fields.many2one('website.forum', 'Forum', required=True),
'name': fields.char('Name', required=True),
'forum_id': fields.many2one('forum.forum', 'Forum', required=True),
'post_ids': fields.many2many('forum.post', 'forum_tag_rel', 'tag_id', 'post_id', 'Posts'),
'posts_count': fields.function(
_get_posts_count, type='integer', string="# of Posts",
_get_posts_count, type='integer', string="Number of Posts",
store={
'website.forum.post': (_get_tag_from_post, ['tag_ids'], 10),
'forum.post': (_get_tag_from_post, ['tag_ids'], 10),
}
),
}

View File

@ -1,8 +1,19 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_website_forum,website.forum,model_website_forum,,1,0,0,0
access_website_forum_post,website.forum.post,model_website_forum_post,,1,1,1,0
access_website_forum_post_vote,website.forum.post.vote,model_website_forum_post_vote,,1,1,1,0
access_website_forum_post_reason,website.forum.post.reason,model_website_forum_post_reason,,1,0,0,0
access_website_forum_tag,website.forum.tag,model_website_forum_tag,,1,0,1,0
access_gamification_badge_user,gamification.badge.user,gamification.model_gamification_badge_user,,1,0,0,0
access_gamification_badge,gamification_badge,gamification.model_gamification_badge,,1,0,0,0
access_forum_forum,forum.forum,model_forum_forum,,1,0,0,0
access_forum_forum_manager,forum.forum.maanger,model_forum_forum,base.group_erp_manager,1,1,1,1
access_forum_post_public,forum.post.public,model_forum_post,base.group_public,1,0,0,0
access_forum_post_portal,forum.post.portal,model_forum_post,base.group_portal,1,1,1,0
access_forum_post_user,forum.post.user,model_forum_post,base.group_user,1,1,1,1
access_forum_post_vote_public,forum.post.vote.public,model_forum_post_vote,base.group_public,1,0,0,0
access_forum_post_vote_portal,orum.post.vote.portal,model_forum_post_vote,base.group_portal,1,1,1,0
access_forum_post_vote_user,forum.post.vote.user,model_forum_post_vote,base.group_user,1,1,1,1
access_forum_post_reason_public,forum.post.reason.public,model_forum_post_reason,base.group_public,1,0,0,0
access_forum_post_reason_portal,forum.post.reason.portal,model_forum_post_reason,base.group_portal,1,0,0,0
access_forum_post_reason_user,forum.post.reason.user,model_forum_post_reason,base.group_user,1,1,1,1
access_forum_tag_public,forum.tag.public,model_forum_tag,base.group_public,1,0,1,0
access_forum_tag_portal,forum.tag.portal,model_forum_tag,base.group_portal,1,0,1,0
access_forum_tag_user,forum.tag.user,model_forum_tag,base.group_user,1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_website_forum access_forum_forum website.forum forum.forum model_website_forum model_forum_forum 1 0 0 0
3 access_website_forum_post access_forum_forum_manager website.forum.post forum.forum.maanger model_website_forum_post model_forum_forum base.group_erp_manager 1 1 1 0 1
4 access_website_forum_post_vote access_forum_post_public website.forum.post.vote forum.post.public model_website_forum_post_vote model_forum_post base.group_public 1 1 0 1 0 0
5 access_website_forum_post_reason access_forum_post_portal website.forum.post.reason forum.post.portal model_website_forum_post_reason model_forum_post base.group_portal 1 0 1 0 1 0
6 access_website_forum_tag access_forum_post_user website.forum.tag forum.post.user model_website_forum_tag model_forum_post base.group_user 1 0 1 1 0 1
7 access_gamification_badge_user access_forum_post_vote_public gamification.badge.user forum.post.vote.public gamification.model_gamification_badge_user model_forum_post_vote base.group_public 1 0 0 0
8 access_gamification_badge access_forum_post_vote_portal gamification_badge orum.post.vote.portal gamification.model_gamification_badge model_forum_post_vote base.group_portal 1 0 1 0 1 0
9 access_forum_post_vote_user forum.post.vote.user model_forum_post_vote base.group_user 1 1 1 1
10 access_forum_post_reason_public forum.post.reason.public model_forum_post_reason base.group_public 1 0 0 0
11 access_forum_post_reason_portal forum.post.reason.portal model_forum_post_reason base.group_portal 1 0 0 0
12 access_forum_post_reason_user forum.post.reason.user model_forum_post_reason base.group_user 1 1 1 1
13 access_forum_tag_public forum.tag.public model_forum_tag base.group_public 1 0 1 0
14 access_forum_tag_portal forum.tag.portal model_forum_tag base.group_portal 1 0 1 0
15 access_forum_tag_user forum.tag.user model_forum_tag base.group_user 1 1 1 1
16
17
18
19

View File

@ -50,9 +50,7 @@ a.no-decoration
color: #428bca
.oe_comment_grey
-moz-box-shadow: 0px 4px 6px 2px #eeeeee
-webkit-box-shadow: 0px 4px 6px 2px #eeeeee
box-shadow: 0px 4px 6px 2px #eeeeee
color: #f5f5f5
.forum_user_flag
max-width: 25px

View File

@ -6,9 +6,9 @@
parent="mail.mail_feeds_main" sequence="50"/>
<!-- FORUM VIEWS -->
<record id="view_website_forum_list" model="ir.ui.view">
<field name="name">website.forum.list</field>
<field name="model">website.forum</field>
<record id="view_forum_forum_list" model="ir.ui.view">
<field name="name">forum.forum.list</field>
<field name="model">forum.forum</field>
<field name="arch" type="xml">
<tree string="Forums">
<field name="name"/>
@ -16,9 +16,9 @@
</field>
</record>
<record id="view_website_forum_form" model="ir.ui.view">
<field name="name">website.forum.form</field>
<field name="model">website.forum</field>
<record id="view_forum_forum_form" model="ir.ui.view">
<field name="name">forum.forum.form</field>
<field name="model">forum.forum</field>
<field name="arch" type="xml">
<form string="Forum" version="7.0">
<sheet>
@ -27,27 +27,23 @@
<field name="description"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers" groups="base.group_user"/>
<field name="message_ids" widget="mail_thread" options='{"thread_level": 1}' placeholder="Send a message to the group"/>
</div>
</form>
</field>
</record>
<record id="action_forum" model="ir.actions.act_window">
<record id="action_forum_forum" model="ir.actions.act_window">
<field name="name">Forums</field>
<field name="res_model">website.forum</field>
<field name="res_model">forum.forum</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_forum" parent="menu_website_forum" name="Forums" action="action_forum" sequence="10"/>
<menuitem id="menu_forum" parent="menu_website_forum" name="Forums" action="action_forum_forum" sequence="10"/>
<!-- POST VIEWS -->
<record id="view_forum_post_list" model="ir.ui.view">
<field name="name">website.forum.post.list</field>
<field name="model">website.forum.post</field>
<field name="name">forum.post.list</field>
<field name="model">forum.post</field>
<field name="arch" type="xml">
<tree string="Forum Posts">
<field name="name"/>
@ -56,9 +52,9 @@
</field>
</record>
<record id="view_blog_post_form" model="ir.ui.view">
<field name="name">website.forum.post.form</field>
<field name="model">website.forum.post</field>
<record id="view_forum_post_form" model="ir.ui.view">
<field name="name">forum.post.form</field>
<field name="model">forum.post</field>
<field name="arch" type="xml">
<form string="Forum Post" version="7.0">
<sheet>
@ -70,7 +66,7 @@
<field name="content" placeholder="e.g. Once upon a time..." widget="html"/>
<group>
<field name="create_date"/>
<field name="user_id"/>
<field name="create_uid"/>
</group>
<group>
<field name="write_uid"/>
@ -86,17 +82,17 @@
</field>
</record>
<record id="view_blog_post_search" model="ir.ui.view">
<field name="name">website.forum.post.search</field>
<field name="model">website.forum.post</field>
<record id="view_forum_post_search" model="ir.ui.view">
<field name="name">forum.post.search</field>
<field name="model">forum.post</field>
<field name="arch" type="xml">
<search string="Forum Post">
<search string="Search in Post">
<field name="name" string="Content" filter_domain="['|', ('name', 'ilike', self), ('content', 'ilike', self)]"/>
<field name="user_id"/>
<field name="create_uid"/>
<field name="forum_id"/>
<group expand="0" string="Group By...">
<filter string="Forum" domain="[]" context="{'group_by': 'forum_id'}"/>
<filter string="Author" domain="[]" context="{'group_by': 'user_id'}"/>
<filter string="Author" domain="[]" context="{'group_by': 'create_uid'}"/>
</group>
</search>
</field>
@ -104,11 +100,11 @@
<record id="action_forum_post" model="ir.actions.act_window">
<field name="name">Forum Posts</field>
<field name="res_model">website.forum.post</field>
<field name="res_model">forum.post</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_forum_post_list"/>
<field name="search_view_id" ref="view_blog_post_search"/>
<field name="search_view_id" ref="view_forum_post_search"/>
</record>
<menuitem id="menu_forum_posts" parent="menu_website_forum" name="Posts" action="action_forum_post" sequence="20"/>