[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:
parent
7493326daf
commit
cbac424f91
|
@ -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
|
||||
|
|
|
|
@ -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>
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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)
|
||||
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),
|
||||
}
|
||||
),
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
|
@ -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
|
||||
|
|
|
@ -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"/>
|
||||
|
|
Loading…
Reference in New Issue