[ADD] website_forum for question and answer
bzr revid: tpa@tinyerp.com-20140221131608-e37a88h2u8ljkomr
This commit is contained in:
parent
d24b67ed3e
commit
d743ac0a83
|
@ -35,6 +35,7 @@ import werkzeug.urls
|
|||
class website_event(http.Controller):
|
||||
@http.route(['/event/', '/event/page/<int:page>'], type='http', auth="public", website=True, multilang=True)
|
||||
def events(self, page=1, **searches):
|
||||
print "events----------------",self,page,searches
|
||||
cr, uid, context = request.cr, request.uid, request.context
|
||||
event_obj = request.registry['event.event']
|
||||
type_obj = request.registry['event.type']
|
||||
|
@ -162,6 +163,7 @@ class website_event(http.Controller):
|
|||
|
||||
@http.route(['/event/<model("event.event"):event>/page/<page:page>'], type='http', auth="public", website=True, multilang=True)
|
||||
def event_page(self, event, page, **post):
|
||||
print "event_page-------------------"
|
||||
values = {
|
||||
'event': event,
|
||||
'main_object': event
|
||||
|
@ -170,6 +172,7 @@ class website_event(http.Controller):
|
|||
|
||||
@http.route(['/event/<model("event.event"):event>'], type='http', auth="public", website=True, multilang=True)
|
||||
def event(self, event, **post):
|
||||
print "in event---------------"
|
||||
if event.menu_id and event.menu_id.child_id:
|
||||
target_url = event.menu_id.child_id[0].url
|
||||
else:
|
||||
|
@ -180,6 +183,7 @@ class website_event(http.Controller):
|
|||
|
||||
@http.route(['/event/<model("event.event"):event>/register'], type='http', auth="public", website=True, multilang=True)
|
||||
def event_register(self, event, **post):
|
||||
print "event_register-------------------"
|
||||
values = {
|
||||
'event': event,
|
||||
'main_object': event,
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2013-Today OpenERP SA (<http://www.openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import controllers
|
||||
import models
|
|
@ -0,0 +1,25 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
{
|
||||
'name': 'Forum',
|
||||
'category': 'Website',
|
||||
'summary': 'Ask Questions and give Answers',
|
||||
'version': '1.0',
|
||||
'description': """
|
||||
Ask questions, get answers, no distractions
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['website', 'website_mail'],
|
||||
'data': [
|
||||
'data/forum_data.xml',
|
||||
'views/website_forum.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'security/website_forum.xml',
|
||||
],
|
||||
'qweb': ['static/src/xml/*.xml'],
|
||||
'demo': [
|
||||
'data/forum_demo.xml'
|
||||
],
|
||||
'installable': True,
|
||||
'application': True,
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
import main
|
|
@ -0,0 +1,94 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2013-Today OpenERP SA (<http://www.openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.tools.translate import _
|
||||
from openerp.addons.website.controllers.main import Website as controllers
|
||||
controllers = controllers()
|
||||
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from dateutil.relativedelta import relativedelta
|
||||
from openerp import tools
|
||||
import werkzeug.urls
|
||||
|
||||
class website_forum(http.Controller):
|
||||
@http.route(['/question/', '/question/page/<int:page>'], type='http', auth="public", website=True, multilang=True)
|
||||
def questions(self, page=1, **searches):
|
||||
print "questions----------------",self,page,searches
|
||||
cr, uid, context = request.cr, request.uid, request.context
|
||||
forum_obj = request.registry['website.forum.post']
|
||||
tag_obj = request.registry['website.forum.tag']
|
||||
|
||||
step = 5
|
||||
question_count = forum_obj.search(
|
||||
request.cr, request.uid, [], count=True,
|
||||
context=request.context)
|
||||
pager = request.website.pager(url="/question/", total=question_count, page=page, step=step, scope=5)
|
||||
|
||||
obj_ids = forum_obj.search(
|
||||
request.cr, request.uid, [], limit=step,
|
||||
offset=pager['offset'], context=request.context)
|
||||
question_ids = forum_obj.browse(request.cr, request.uid, obj_ids,
|
||||
context=request.context)
|
||||
|
||||
print "question_ids----",question_ids
|
||||
values = {
|
||||
'question_ids': question_ids,
|
||||
'pager': pager,
|
||||
'searches': searches,
|
||||
}
|
||||
|
||||
return request.website.render("website_forum.index", values)
|
||||
|
||||
@http.route(['/question/<model("website.forum.post"):question>/page/<page:page>'], type='http', auth="public", website=True, multilang=True)
|
||||
def question_page(self, question, page, **post):
|
||||
values = {
|
||||
'question': question,
|
||||
'main_object': question
|
||||
}
|
||||
return request.website.render(page, values)
|
||||
|
||||
@http.route(['/question/<model("website.forum.post"):question>'], type='http', auth="public", website=True, multilang=True)
|
||||
def question_register(self, question, **post):
|
||||
values = {
|
||||
'question': question,
|
||||
'main_object': question,
|
||||
'range': range,
|
||||
}
|
||||
return request.website.render("website_forum.question_description_full", values)
|
||||
|
||||
@http.route('/question/add_question/', type='http', auth="user", multilang=True, methods=['POST'], website=True)
|
||||
def add_question(self, question_name="New question", **kwargs):
|
||||
return self._add_question(question_name, request.context, **kwargs)
|
||||
|
||||
def _add_question(self, question_name=None, context={}, **kwargs):
|
||||
if not question_name:
|
||||
question_name = _("New Question")
|
||||
Question = request.registry.get('website.forum.post')
|
||||
date_begin = datetime.today() + timedelta(days=(14))
|
||||
vals = {
|
||||
'topic': question_name,
|
||||
}
|
||||
question_id = Question.create(request.cr, request.uid, vals, context=context)
|
||||
return request.redirect("/question/%s/?enable_editor=1" % question_id)
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
<record id="menu_questions" model="website.menu">
|
||||
<field name="name">Questions</field>
|
||||
<field name="url">/question</field>
|
||||
<field name="parent_id" ref="website.main_menu"/>
|
||||
<field name="sequence" type="int">40</field>
|
||||
</record>
|
||||
<!--record id="action_open_website" model="ir.actions.act_url">
|
||||
<field name="name">Website Home</field>
|
||||
<field name="target">self</field>
|
||||
<field name="url">/question?tutorial.question=true</field>
|
||||
</record>
|
||||
<record id="base.open_menu" model="ir.actions.todo">
|
||||
<field name="action_id" ref="action_open_website"/>
|
||||
<field name="state">open</field>
|
||||
</record-->
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,71 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="question_0" model="website.forum.post">
|
||||
<field name="name">How to configure alerts for employee contract expiration.</field>
|
||||
<field name="views">45</field>
|
||||
</record>
|
||||
|
||||
<record id="question_1" model="website.forum.post">
|
||||
<field name="name">How to get translated state through browse ?</field>
|
||||
<field name="body">Hello everybody,
|
||||
|
||||
I use a XML-RPC to access to invoices, I want to get the states of invoices, but always I get paid instead of Payé (French)</field>
|
||||
<field name="views">45</field>
|
||||
</record>
|
||||
|
||||
<record id="question_2" model="website.forum.post">
|
||||
<field name="name">Restrain the user from confirming the Purchase requisition</field>
|
||||
<field name="views">45</field>
|
||||
<field name="body">Can anybody tell me how to restrict the user from confirming the purchase requisition? In my case when a user is creating a purchase requisition than the user after saving it is able to send it to the supplier rather I want the user to just generate the purchase requisition and let the manager do the remaining works like sending the purchase requisition to the supplier and than receiving the goods. Please help me out. Thanks in advance.</field>
|
||||
</record>
|
||||
|
||||
<record id="question_4" model="website.forum.post">
|
||||
<field name="name">Offline installing for add-ons</field>
|
||||
<field name="views">45</field>
|
||||
<field name="body">How can I install web based addons without Internet connections (I'm using OpenERP over LAN)?
|
||||
|
||||
P.S.
|
||||
|
||||
AFAIK current version (7.x) supports web interface while the desktop clients became deprecated.
|
||||
BTW, I left OpenERP since ver. 6.x to use PostBooks instead but I recently decided to use OpenERP once again after recent new features.</field>
|
||||
</record>
|
||||
|
||||
<record id="question_5" model="website.forum.post">
|
||||
<field name="name">CMS replacement for ERP and eCommerce</field>
|
||||
<field name="views">45</field>
|
||||
<field name="body">I use Wordpress as a CMS and eCommerce platform. The developing in Wordpress is too easy and solid but it missing ERP feature (there is single plugin to integrate with Frontaccounting) so I wonder:
|
||||
|
||||
Can I use OpenERP as a replacement CMS of Wordpress + eCommerce plugin?
|
||||
|
||||
In simple words does OpenERP became CMS+ERP platform?</field>
|
||||
</record>
|
||||
|
||||
<record id="question_6" model="website.forum.post">
|
||||
<field name="name">Register payment using XMLRPC</field>
|
||||
<field name="views">45</field>
|
||||
<field name="body">Hi there,
|
||||
|
||||
I have been trying to register an invoice payment through OpenERP. I have been able to manually create and approve the invoice, the voucher and its line
|
||||
|
||||
I'm currently creating the voucher using this information:</field>
|
||||
</record>
|
||||
|
||||
<record id="question_7" model="website.forum.post">
|
||||
<field name="name">Create one field on two modules</field>
|
||||
<field name="views">45</field>
|
||||
<field name="body">Hello,
|
||||
|
||||
I shall like creating a field "x" on an order form ( stock.picking.form ) and to reveal it also on the delivery slip ( stock.picking.form ).
|
||||
|
||||
Thank you in advance</field>
|
||||
</record>
|
||||
|
||||
<record id="question_8" model="website.forum.post">
|
||||
<field name="name">access rights to one2many field</field>
|
||||
<field name="views">45</field>
|
||||
<field name="body">Now i create new group , assign user and access right as READ & CREATE to object stock.picking.ads but nothing is reflected , iam able to delete and write which should not happen. Very Strange!!!</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,9 @@
|
|||
.. _changelog:
|
||||
|
||||
Changelog
|
||||
=========
|
||||
|
||||
`trunk (saas-3)`
|
||||
----------------
|
||||
|
||||
- created ``website_forum``
|
|
@ -0,0 +1,10 @@
|
|||
Website Forum Module documentation topics
|
||||
'''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
Changelog
|
||||
'''''''''
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
changelog.rst
|
|
@ -0,0 +1 @@
|
|||
import forum
|
|
@ -0,0 +1,85 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2013-Today OpenERP SA (<http://www.openerp.com>).
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from openerp.osv import osv, fields
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
from openerp.tools.translate import _
|
||||
import re
|
||||
|
||||
from openerp.addons.website.models.website import slug
|
||||
|
||||
#class WebsiteForum(osv.Model):
|
||||
# _inhrit = "website"
|
||||
|
||||
class website_form_post_rate(osv.Model):
|
||||
_name = "website.forum.post.rate"
|
||||
_column = {
|
||||
'post_id': fields.many2one('website.forum.post', 'Forum Post'),
|
||||
'user_id': fields.many2one('res.users', 'User'),
|
||||
'rate': fields.integer('rate'),
|
||||
}
|
||||
|
||||
class website_forum_post(osv.Model):
|
||||
_name = "website.forum.post"
|
||||
_description = "Website forum post"
|
||||
_inherit = ['mail.thread', 'website.seo.metadata']
|
||||
|
||||
_columns = {
|
||||
#add version and category , instead of page use category in website,
|
||||
'name': fields.char('Topic', size=64),
|
||||
'body': fields.html('Contents', help='Automatically sanitized HTML contents'),
|
||||
#'forum_id': fields.many2one('website.forum', 'Forum'),
|
||||
'create_date': fields.datetime('Created on', select=True, readonly=True),
|
||||
'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True ),
|
||||
'write_date': fields.datetime('Last Modified on', select=True, readonly=True ),
|
||||
'write_uid': fields.many2one('res.users', 'Last Contributor', select=True, readonly=True),
|
||||
'tags': fields.many2many('website.forum.tag', 'forum_tag_rel', 'forum_id', 'forum_tag_id', 'Tag'),
|
||||
'up_votes': fields.many2many('res.users', 'forum_user_upvotes_rel', 'forum_id', 'user_id', 'Up votes'),
|
||||
'favourite_que_ids': fields.many2many('res.users', 'forum_user_fav_rel', 'forum_id', 'user_id', 'Down votes'),
|
||||
'views': fields.integer('Views'),
|
||||
'state': fields.selection([('active', 'Active'),('close', 'Close'),('offensive', 'Offensive')], 'Status'),
|
||||
'parent_id': fields.many2one('website.forum.post', 'Parent'),
|
||||
'child_ids': fields.one2many('website.forum.post', 'parent_id', 'Child'),
|
||||
# TODO FIXME: when website_mail/mail_thread.py inheritance work -> this field won't be necessary
|
||||
'website_message_ids': fields.one2many(
|
||||
'mail.message', 'res_id',
|
||||
domain=lambda self: [
|
||||
'&', ('model', '=', self._name), ('type', '=', 'comment')
|
||||
],
|
||||
string='Website Messages',
|
||||
help="Website communication history",
|
||||
),
|
||||
}
|
||||
_defaults = {
|
||||
'state': 'active',
|
||||
}
|
||||
|
||||
class website_forum_tag(osv.Model):
|
||||
_name = "website.forum.tag"
|
||||
_description = "Website forum tag"
|
||||
_inherit = ['website.seo.metadata']
|
||||
_columns = {
|
||||
'name': fields.char('Order Reference', size=64, required=True),
|
||||
#'forum_id': fields.many2one('website.forum', 'Forum'),
|
||||
'post_ids': fields.many2many('website.forum.post', 'forum_tag_que_rel', 'tag_id', 'forum_id', 'Question', readonly=True),
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
</data>
|
||||
</openerp>
|
|
@ -0,0 +1,2 @@
|
|||
sass:
|
||||
sass --compass --unix-newlines -t expanded website_forum.sass:website_forum.css
|
|
@ -0,0 +1,55 @@
|
|||
@charset "utf-8";
|
||||
@import url(compass/css3.css);
|
||||
|
||||
.MainBody{
|
||||
max-width: 700px;
|
||||
}
|
||||
.AskButton{
|
||||
float: right;
|
||||
}
|
||||
.search-navbar{
|
||||
width: 80%;
|
||||
}
|
||||
.user-profile-image{
|
||||
height: 32px;
|
||||
width: 32px;
|
||||
}
|
||||
.action-links{
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
.like{
|
||||
color: green;
|
||||
}
|
||||
.badge-gold{
|
||||
color : #FFD700;
|
||||
text-shadow: 0px 0px 10px yellow;
|
||||
}
|
||||
.badge-silver{
|
||||
color : #C0C0C0;
|
||||
text-shadow: 0px 0px 10px yellow;
|
||||
}
|
||||
.badge-bronze{
|
||||
color : #8c7853;
|
||||
text-shadow: 0px 0px 10px yellow;
|
||||
}
|
||||
.-heading{
|
||||
background-color: #428bca;
|
||||
color: white;
|
||||
}
|
||||
.user-name-pannel{
|
||||
height: 20px;
|
||||
}
|
||||
.custom-arrow-height{
|
||||
height: 15px;
|
||||
}
|
||||
.custom-vote-height{
|
||||
height: 30px;
|
||||
}
|
||||
.correct-answer{
|
||||
color: green;
|
||||
}
|
||||
.user-big-profile-image{
|
||||
height: 140px;
|
||||
width: 140px;
|
||||
}
|
|
@ -0,0 +1,5 @@
|
|||
@charset "utf-8"
|
||||
|
||||
@import "compass/css3"
|
||||
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
var website = openerp.website;
|
||||
var _t = openerp._t;
|
||||
|
||||
website.EditorBar.include({
|
||||
start: function () {
|
||||
this.registerTour(new website.QuestionTour(this));
|
||||
return this._super();
|
||||
},
|
||||
});
|
||||
|
||||
website.QuestionTour = website.Tour.extend({
|
||||
id: 'question',
|
||||
name: "Create a question",
|
||||
testPath: '/question(/[0-9]+/register)?',
|
||||
init: function (editor) {
|
||||
var self = this;
|
||||
self.steps = [
|
||||
{
|
||||
title: _t("Create a question"),
|
||||
content: _t("Let's go through the first steps to create a new question."),
|
||||
popover: { next: _("Start Tutorial"), end: _("Skip It") },
|
||||
},
|
||||
];
|
||||
return this._super();
|
||||
}
|
||||
});
|
||||
|
||||
}());
|
|
@ -0,0 +1,31 @@
|
|||
(function() {
|
||||
"use strict";
|
||||
|
||||
var website = openerp.website;
|
||||
var _t = openerp._t;
|
||||
website.add_template_file('/website_forum/static/src/xml/website_forum.xml');
|
||||
|
||||
website.is_editable = true;
|
||||
website.EditorBar.include({
|
||||
start: function() {
|
||||
website.is_editable_button = website.is_editable_button || !!$("#wrap.js_event").size();
|
||||
var res = this._super();
|
||||
this.$(".dropdown:has(.oe_content_menu)").removeClass("hidden");
|
||||
return res;
|
||||
},
|
||||
events: _.extend({}, website.EditorBar.prototype.events, {
|
||||
'click a[data-action=new_question]': function (ev) {
|
||||
ev.preventDefault();
|
||||
website.prompt({
|
||||
id: "editor_new_question",
|
||||
window_title: _t("New Question"),
|
||||
input: "Question Name",
|
||||
}).then(function (question_name) {
|
||||
website.form('/forum/add_question', 'POST', {
|
||||
question_name: question_name
|
||||
});
|
||||
});
|
||||
}
|
||||
}),
|
||||
});
|
||||
})();
|
|
@ -0,0 +1,7 @@
|
|||
<templates id="template" xml:space="preserve">
|
||||
<t t-extend="website.editorbar">
|
||||
<t t-jquery="ul.oe_content_menu" t-operation="append">
|
||||
<li><a href="#" data-action="new_question">New Question</a></li>
|
||||
</t>
|
||||
</t>
|
||||
</templates>
|
|
@ -0,0 +1,24 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Business Applications
|
||||
# Copyright (c) 20123TODAY OpenERP S.A. <http://www.openerp.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
# published by the Free Software Foundation, either version 3 of the
|
||||
# License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Affero General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Affero General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
#import test_ui
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,6 @@
|
|||
import openerp.tests
|
||||
|
||||
class TestUi(openerp.tests.HttpCase):
|
||||
def test_admin(self):
|
||||
self.phantom_js("/", "openerp.website.Tour.run_test('question')", "openerp.website.Tour")
|
||||
|
|
@ -0,0 +1,292 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<template id="editor_head" inherit_id="website.editor_head" name="Event Editor" groups="event.group_event_manager">
|
||||
<xpath expr="//script[@id='website_tour_js']" position="after">
|
||||
<script type="text/javascript" src="/website_forum/static/src/js/website_forum.editor.js"></script>
|
||||
<script type="text/javascript" src="/website_forum/static/src/js/website.tour.forum.js"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<!-- Layout add nav and footer -->
|
||||
<template id="header_footer_custom" inherit_id="website.layout" name="Footer Questions Link">
|
||||
<xpath expr="//footer//ul[@name='products']" position="inside">
|
||||
<li><a href="/question">Questions</a></li>
|
||||
</xpath>
|
||||
</template>
|
||||
|
||||
<!-- Page -->
|
||||
|
||||
<template id="question_list">
|
||||
<div class="tab-pane active" id="all">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="row">
|
||||
<div class="col-xs-9">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h4><a t-attf-href="/question/#{ slug(question) }"><span> <t t-esc="question.name"/></span></a></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a href="" class="badge">6.1</a>
|
||||
<a href="" class="badge">7.0</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-right">
|
||||
<small>
|
||||
<span><t t-esc="question.write_date"/></span>
|
||||
<a href=""><span><t t-esc="question.create_uid.name"/></span></a>
|
||||
<a href=""><span><t t-esc="question.create_uid.id"/></span></a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<h5>
|
||||
<span itemprop="Votes" class="label label-success"><t t-esc="len(question.up_votes)"/> Votes</span>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<h5>
|
||||
<span itemprop="Votes" class="label label-success"><t t-esc="len(question.up_votes)"/> Answers</span>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<h5>
|
||||
<span itemprop="Votes" class="label label-success"><t t-esc="question.views"/> Views</span>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="question_search">
|
||||
<form class="navbar-form " role="search">
|
||||
<div class="form-group search-navbar">
|
||||
<input type="text" class="form-control" placeholder="Search Or Ask your Question"/>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-default AskButton">Ask Question</button>
|
||||
</form>
|
||||
</template>
|
||||
|
||||
|
||||
<template id="index" name="Question">
|
||||
<t t-call="website.layout">
|
||||
<div id="wrap">
|
||||
<t t-call="website_forum.question_search"/>
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<span itemprop="name" class="badge"><t t-esc="len(question_ids)"/> Question</span>
|
||||
</div>
|
||||
<div class="col-xs-3">
|
||||
<h5>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Short by <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">By Date</a></li>
|
||||
<li><a href="#">By Activity</a></li>
|
||||
<li><a href="#">By Answer</a></li>
|
||||
<li><a href="#">By Votes</a></li>
|
||||
</ul>
|
||||
</h5>
|
||||
</div>
|
||||
</div>
|
||||
<ul id="tabs" class="nav nav-tabs" data-tabs="tabs">
|
||||
<li class="active"><a href="#all" data-toggle="tab">ALL</a></li>
|
||||
<li><a href="#unanswerd" data-toggle="tab">Unanswerd</a></li>
|
||||
</ul>
|
||||
|
||||
<ul class="media-list">
|
||||
<li t-foreach="question_ids" t-as="question" class="media">
|
||||
<t t-call="website_forum.question_list"/>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
|
||||
<template id="404">
|
||||
<t t-call="website.layout">
|
||||
<div id="wrap">
|
||||
<div class="oe_structure oe_empty">
|
||||
<div class="container">
|
||||
<h1 class="mt32">Question not found!</h1>
|
||||
<p>Sorry, the requested question is not available anymore.</p>
|
||||
<p><a t-attf-href="/question/">Return to the question list.</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
<template id="user_detail">
|
||||
<div class="col-xs-7 col-xs-offset-5 col-sm-3 col-sm-offset-9 col-md-4 col-md-offset-8 col-lg-4 col-lg-offset-8 text-right">
|
||||
<div class="panel panel-primary ">
|
||||
<p class="text-center -heading">
|
||||
<small>asked Sep 12'13</small>
|
||||
</p>
|
||||
<div class="row">
|
||||
<div class="col-xs-3">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<img src="images/profile_picture/png/user_1.png" class="user-profile-image" alt="" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-9">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div class="text-left">
|
||||
<a href="">Than N.</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<div style="font-size:10px" class="text-left">
|
||||
<b style="color : green">11</b>
|
||||
<span class="glyphicon glyphicon-certificate badge-gold"></span>1
|
||||
<span class="glyphicon glyphicon-certificate badge-silver"></span>10
|
||||
<span class="glyphicon glyphicon-certificate badge-bronze"></span>5
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="question_vote">
|
||||
<div class="col-md-1 col-xs-1">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 custom-arrow-height">
|
||||
<span class="glyphicon glyphicon-chevron-up"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 custom-vote-height">
|
||||
<h4><span>0</span></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 custom-arrow-height">
|
||||
<span class="glyphicon glyphicon-chevron-down"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<template id="question_links">
|
||||
<div class="row">
|
||||
<div class="col-xs-12 text-right">
|
||||
<a class="action-links" href="" ><span class="glyphicon glyphicon-pencil"></span></a>
|
||||
<a class="action-links" href=""><span class="glyphicon glyphicon-flag"></span></a>
|
||||
<a class="action-links" href=""><span class="glyphicon glyphicon-trash"></span></a>
|
||||
<a class="action-links" href="" ><span class="glyphicon glyphicon-link"></span></a>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
<template id="question_description_full">
|
||||
<t t-call="website.layout">
|
||||
<t t-call="website_forum.question_search"/>
|
||||
<div class="container MainBody">
|
||||
<div class="row">
|
||||
<t t-call="website_forum.question_vote"/>
|
||||
|
||||
<div class="col-md-9 col-xs-11">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h4><div itemprop="name" t-field="question.name"></div></h4>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<span class="badge">openerp-7</span>
|
||||
<span class="badge">pos</span>
|
||||
<span class="badge">receipt</span>
|
||||
<span class="badge">cash</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<span>
|
||||
<h6>
|
||||
How to send some signal to cash drawer to open it after click print receipt or something similar? I don't know whether this depends on cash drawer's driver or not ?
|
||||
</h6>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<t t-call="website_forum.user_detail"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-12 page-header">
|
||||
<span class="badge">2 Answers</span>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Short by <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#">Oldest</a></li>
|
||||
<li><a href="#">Newest</a></li>
|
||||
<li><a href="#">Most Viewd</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<t t-call="website_forum.question_vote"/>
|
||||
<div class="col-md-9 col-xs-10">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<span>
|
||||
<h6>
|
||||
There should be a call to the cash drawers API. Read the technical manual of the hardware you are using. Thanks.
|
||||
</h6>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<t t-call="website_forum.user_detail"/>
|
||||
</div>
|
||||
<t t-call="website_forum.question_links"/>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
|
||||
<div class="row">
|
||||
<t t-call="website_forum.question_vote"/>
|
||||
</div>
|
||||
|
||||
<div class="col-md-9 col-xs-10">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<span>
|
||||
<h6>
|
||||
Usually the cash drawer behaves like a printer in the sense that it has a RS232 or USB port. However the cash drawer is dummy and only uses the port to receive a signal (positive voltage) which causes it to open.
|
||||
So you only need send any signal to the RS232 or USB port (like for insance print the ascii character "a" to the rs232 port) and it will open!. I the old days you could test it from hyperterminal, I guess nowadays you will have to make a javascript app that sends a character to the rs232 port.
|
||||
</h6>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<t t-call="website_forum.user_detail"/>
|
||||
</div>
|
||||
<t t-call="website_forum.question_links"/>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</template>
|
||||
|
||||
</data>
|
||||
</openerp>
|
Loading…
Reference in New Issue