[MERGE]merge with trunk

bzr revid: sgo@tinyerp.com-20120813064924-cvva3iqsxik3sn4q
This commit is contained in:
Sanjay Gohel (Open ERP)
2012-08-13 12:19:24 +05:30
328 changed files with 4854 additions and 8382 deletions
+1 -1
View File
@@ -169,7 +169,7 @@ class account_cash_statement(osv.osv):
return result
_columns = {
'total_entry_encoding': fields.function(_get_sum_entry_encoding, string="Total Cash Transactions",
'total_entry_encoding': fields.function(_get_sum_entry_encoding, string="Total Transactions",
store = {
'account.bank.statement': (lambda self, cr, uid, ids, context=None: ids, ['line_ids','move_line_ids'], 10),
'account.bank.statement.line': (_get_statement_from_line, ['amount'], 10),
+9 -5
View File
@@ -163,8 +163,10 @@
<sheet string="Supplier Invoice">
<div class="oe_title">
<h1>
<label string="Draft Invoice" attrs="{'invisible': [('state', '&lt;&gt;', 'draft')]}"/>
<label string="Invoice" attrs="{'invisible': [('state', '=', 'draft')]}"/>
<label string="Draft Invoice" attrs="{'invisible': ['|',('state','&lt;&gt;','draft'), ('type','&lt;&gt;','in_invoice')]}"/>
<label string="Draft Refund" attrs="{'invisible': ['|',('state','&lt;&gt;','draft'), ('type','&lt;&gt;','in_refund')]}"/>
<label string="Invoice" attrs="{'invisible': ['|',('state', '=', 'draft'), ('type','&lt;&gt;','in_invoice')]}"/>
<label string="Refund" attrs="{'invisible': ['|',('state', '=', 'draft'), ('type','&lt;&gt;','in_refund')]}"/>
<field name="number" class="oe_inline" attrs="{'invisible': [('state', '=', 'draft')]}"/>
</h1>
</div>
@@ -309,9 +311,11 @@
</header>
<sheet string="Invoice">
<h1>
<label string="Draft Invoice " attrs="{'invisible': [('state','not in',('draft',))]}"/>
<label string="Draft Invoice " attrs="{'invisible': ['|',('state','not in',('draft',)), ('type','&lt;&gt;','out_invoice')]}"/>
<label string="Draft Refund " attrs="{'invisible': ['|',('state','not in',('draft',)), ('type','&lt;&gt;','out_refund')]}"/>
<label string="Pro Forma Invoice " attrs="{'invisible': [('state','not in',('proforma','proforma2'))]}"/>
<label string="Invoice " attrs="{'invisible': [('state','in',('draft','proforma','proforma2'))]}"/>
<label string="Invoice " attrs="{'invisible': ['|',('state','in',('draft','proforma','proforma2')), ('type','&lt;&gt;','out_invoice')]}"/>
<label string="Refund " attrs="{'invisible': ['|',('state','in',('draft','proforma','proforma2')), ('type','&lt;&gt;','out_refund')]}"/>
<field name="number" readonly="1" class="oe_inline"/>
</h1>
<field name="type" invisible="1"/>
@@ -347,7 +351,7 @@
<field name="invoice_line" nolabel="1" widget="one2many_list" context="{'type': type}">
<tree string="Invoice Lines" editable="bottom">
<field name="invoice_line_tax_id" invisible="1"/>
<field name="product_id" invisible="1"/>
<field name="product_id" />
<field name="name"/>
<field name="account_id" groups="account.group_account_user"
domain="[('company_id', '=', parent.company_id), ('journal_id', '=', parent.journal_id), ('type', '&lt;&gt;', 'view')]"
+1
View File
@@ -20,6 +20,7 @@
rml="account/report/account_print_invoice.rml"
string="Invoices"
attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')"
attachment_use="True"
usage="default"
/>
<report id="account_transfers" model="account.transfer" name="account.transfer" string="Transfers" xml="account/report/transfer.xml" xsl="account/report/transfer.xsl"/>
+2 -2
View File
@@ -109,8 +109,8 @@
<field name="zip" class="oe_inline" placeholder="ZIP"/>
<field name="city" class="oe_inline" placeholder="City"/>
</div>
<field name="state_id" placeholder="State"/>
<field name="country_id" placeholder="Country"/>
<field name="state_id" placeholder="State" options='{"no_open": true}'/>
<field name="country_id" placeholder="Country" options='{"no_open": true}'/>
</div>
</group>
<group name="bank" string="Information About the Bank">
+20 -19
View File
@@ -6,17 +6,17 @@
<field name="model">cash.box.in</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Put Money In">
<form string="Put Money In" version="7.0">
<separator string="Fill in this form if you put money in the cash register:" colspan="4" />
<field name="name" />
<field name="amount" />
<separator colspan="4" />
<group colspan="4" col="4">
<group col="2" colspan="2" />
<button icon="gtk-stop" special="cancel" string="Cancel" />
<button name="run" string="Put Money In" colspan="1" type="object" icon="gtk-apply" />
<group>
<field name="name" class="oe_inline"/>
<field name="amount" class="oe_inline"/>
</group>
<footer>
<button name="run" string="Put Money In" type="object" class="oe_highlight"/>
or
<button special="cancel" string="Cancel" class="oe_link"/>
</footer>
</form>
</field>
</record>
@@ -35,17 +35,18 @@
<field name="model">cash.box.out</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Take Money Out">
<separator string="Describe why you take money from the cash register:" colspan="4" />
<field name="name" />
<field name="amount" />
<separator colspan="4" />
<group colspan="4" col="4">
<group col="2" colspan="2" />
<button icon="gtk-stop" special="cancel" string="Cancel" />
<button name="run" string="Take Money Out" colspan="1" type="object" icon="gtk-apply" />
<form string="Take Money Out" version="7.0">
<separator string="Describe why you take money from the cash register:"/>
<group>
<field name="name" class="oe_inline"/>
<field name="amount" class="oe_inline"/>
</group>
<footer>
<button name="run" string="Take Money Out" type="object" class="oe_highlight"/>
or
<button class="oe_link" special="cancel" string="Cancel" />
</footer>
</form>
</field>
</record>
-1
View File
@@ -49,7 +49,6 @@ eInvoicing & Payments module manage all Voucher Entries such as "Reconciliation
"account_voucher_sequence.xml",
"account_voucher_workflow.xml",
"account_voucher_report.xml",
"wizard/account_voucher_unreconcile_view.xml",
"wizard/account_statement_from_invoice_view.xml",
"account_voucher_view.xml",
"voucher_payment_receipt_view.xml",
+9 -11
View File
@@ -46,11 +46,7 @@ class account_voucher(osv.osv):
def _check_paid(self, cr, uid, ids, name, args, context=None):
res = {}
for voucher in self.browse(cr, uid, ids, context=context):
paid = False
for line in voucher.move_ids:
if (line.account_id.type, 'in', ('receivable', 'payable')) and line.reconcile_id:
paid = True
res[voucher.id] = paid
res[voucher.id] = any([((line.account_id.type, 'in', ('receivable', 'payable')) and line.reconcile_id) for line in voucher.move_ids])
return res
def _get_type(self, cr, uid, context=None):
@@ -186,15 +182,16 @@ class account_voucher(osv.osv):
res['arch'] = etree.tostring(doc)
return res
def _compute_writeoff_amount(self, cr, uid, line_dr_ids, line_cr_ids, amount):
def _compute_writeoff_amount(self, cr, uid, line_dr_ids, line_cr_ids, amount, type):
debit = credit = 0.0
sign = type == 'payment' and -1 or 1
for l in line_dr_ids:
debit += l['amount']
for l in line_cr_ids:
credit += l['amount']
return abs(amount - abs(credit - debit))
return amount - sign * (credit - debit)
def onchange_line_ids(self, cr, uid, ids, line_dr_ids, line_cr_ids, amount, voucher_currency, context=None):
def onchange_line_ids(self, cr, uid, ids, line_dr_ids, line_cr_ids, amount, voucher_currency, type, context=None):
context = context or {}
if not line_dr_ids and not line_cr_ids:
return {'value':{}}
@@ -215,7 +212,7 @@ class account_voucher(osv.osv):
if voucher_line.get('currency_id', company_currency) != company_currency:
is_multi_currency = True
break
return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount), 'is_multi_currency': is_multi_currency}}
return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount, type), 'is_multi_currency': is_multi_currency}}
def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None):
if not ids: return {}
@@ -223,12 +220,13 @@ class account_voucher(osv.osv):
res = {}
debit = credit = 0.0
for voucher in self.browse(cr, uid, ids, context=context):
sign = voucher.type == 'payment' and -1 or 1
for l in voucher.line_dr_ids:
debit += l.amount
for l in voucher.line_cr_ids:
credit += l.amount
currency = voucher.currency_id or voucher.company_id.currency_id
res[voucher.id] = currency_obj.round(cr, uid, currency, abs(voucher.amount - abs(credit - debit)))
res[voucher.id] = currency_obj.round(cr, uid, currency, voucher.amount - sign * (credit - debit))
return res
def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None):
@@ -716,7 +714,7 @@ class account_voucher(osv.osv):
default['value']['pre_line'] = 1
elif ttype == 'receipt' and len(default['value']['line_dr_ids']) > 0:
default['value']['pre_line'] = 1
default['value']['writeoff_amount'] = self._compute_writeoff_amount(cr, uid, default['value']['line_dr_ids'], default['value']['line_cr_ids'], price)
default['value']['writeoff_amount'] = self._compute_writeoff_amount(cr, uid, default['value']['line_dr_ids'], default['value']['line_cr_ids'], price, ttype)
return default
def onchange_payment_rate_currency(self, cr, uid, ids, currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context=None):
@@ -274,4 +274,19 @@
</record>
</data>
<data noupdate="1">
<!-- After installation of the module, open the related menu -->
<record id="action_client_invoice_menu" model="ir.actions.client">
<field name="name">Open Invoicing Menu</field>
<field name="tag">reload</field>
<field name="params" eval="{'menu_id': ref('account.menu_finance')}"/>
</record>
<record id="todo_open_invoice_menu" model="ir.actions.todo">
<field name="action_id" ref="action_client_invoice_menu"/>
<field name="type">automatic</field>
<field name="sequence">100</field>
</record>
</data>
</openerp>
+1 -1
View File
@@ -40,7 +40,7 @@ class invoice(osv.osv):
'domain': '[]',
'context': {
'default_partner_id': inv.partner_id.id,
'default_amount': inv.residual,
'default_amount': inv.type in ('out_refund', 'in_refund') and -inv.residual or inv.residual,
'default_name':inv.name,
'close_after_process': True,
'invoice_type':inv.type,
@@ -141,7 +141,7 @@
!context
'type': 'receipt'
-
I create the first voucher of payment with values 240 USD, journal USD,
On the first March, I create the first voucher of payment with values 240 USD, journal USD,
-
!record {model: account.voucher, id: account_voucher_1_case1, view: view_vendor_receipt_form}:
account_id: account.cash
@@ -173,12 +173,12 @@
self.pool.get('account.voucher.line').write(cr, uid, [line_id], {'amount': amount})
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 10.0
I check that writeoff amount computed is -10.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 1 USD/USD'), ('partner_id', '=', ref('base.res_partner_seagate'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 10.0), "Writeoff amount is not 10.0"
assert (voucher_id.writeoff_amount == -10.0), "Writeoff amount is not -10.0"
-
I confirm the voucher
-
@@ -235,7 +235,7 @@
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 30.0) , "Residual amount is not correct for first Invoice"
-
I create the second voucher of payment with values 45 USD, journal USD,
On the first April, I create the second voucher of payment with values 45 USD, journal USD,
-
!record {model: account.voucher, id: account_voucher_2_case1}:
account_id: account.cash
@@ -266,12 +266,12 @@
self.pool.get('account.voucher.line').write(cr, uid, [line_id], {'amount': amount})
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 5.0
I check that writeoff amount computed is -5.0
-
!python {model: account.voucher}: |
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 1'), ('partner_id', '=', ref('base.res_partner_seagate'))])
voucher_id = self.browse(cr, uid, voucher[0])
assert (voucher_id.writeoff_amount == 5.0), "Writeoff amount is not 5.0"
assert (voucher_id.writeoff_amount == -5.0), "Writeoff amount is not -5.0"
-
I confirm the voucher
-
+3 -3
View File
@@ -107,11 +107,11 @@
self.pool.get('account.voucher.line').write(cr, uid, [line_id], {'amount': amount})
assert (voucher.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is 50.0
I check that writeoff amount computed is -50.0
-
!python {model: account.voucher}: |
voucher = self.browse(cr, uid, ref('account_voucher_eur_usd_case'))
assert (voucher.writeoff_amount == 50.0), "Writeoff amount is not 50.0"
assert (voucher.writeoff_amount == -50.0), "Writeoff amount is not -50.0"
-
I confirm the voucher
-
@@ -167,4 +167,4 @@
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 0.0 and move_line.amount_residual == 0.0 and invoice_id.state == 'paid') , "Residual amount is not correct for Invoice"
@@ -74,7 +74,7 @@
</group>
<notebook>
<page string="Payment Information">
<field name="line_dr_ids" attrs="{'invisible': [('type', '=', 'receipt')]}" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" colspan="4" nolabel="1" height="140" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, context)">
<field name="line_dr_ids" attrs="{'invisible': [('type', '=', 'receipt')]}" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" colspan="4" nolabel="1" height="140" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
<tree string="Open Supplier Journal Entries" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
@@ -87,7 +87,7 @@
<field name="amount" sum="Total Allocation"/>
</tree>
</field>
<field name="line_cr_ids" attrs="{'invisible': [('type', '=', 'payment')]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, context)">
<field name="line_cr_ids" attrs="{'invisible': [('type', '=', 'payment')]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
<tree string="Open Customer Journal Entries" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
@@ -332,7 +332,7 @@
<notebook>
<page string="Payment Information" groups="base.group_user">
<field name="line_cr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, context)">
<field name="line_cr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
<tree string="Invoices and outstanding transactions" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
@@ -348,7 +348,7 @@
<field name="amount" sum="Total Allocation" on_change="onchange_amount(amount, amount_unreconciled, context)" string="Allocation"/>
</tree>
</field>
<field name="line_dr_ids" attrs="{'invisible': [('pre_line','=',False)]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, context)">
<field name="line_dr_ids" attrs="{'invisible': [('pre_line','=',False)]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
<tree string="Credits" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)"
+1 -2
View File
@@ -19,7 +19,6 @@
#
##############################################################################
import account_voucher_unreconcile
import account_statement_from_invoice
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -75,16 +75,26 @@ class account_statement_from_invoice_lines(osv.osv_memory):
statement.currency.id, amount, context=ctx)
context.update({'move_line_ids': [line.id]})
result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, amount=abs(amount), currency_id= statement.currency.id, ttype=(amount < 0 and 'payment' or 'receipt'), date=line_date, context=context)
voucher_res = { 'type':(amount < 0 and 'payment' or 'receipt'),
type = 'general'
ttype = amount < 0 and 'payment' or 'receipt'
sign = 1
if line.journal_id.type in ('sale', 'sale_refund'):
type = 'customer'
ttype = 'receipt'
elif line.journal_id.type in ('purchase', 'purhcase_refund'):
type = 'supplier'
ttype = 'payment'
sign = -1
result = voucher_obj.onchange_partner_id(cr, uid, [], partner_id=line.partner_id.id, journal_id=statement.journal_id.id, amount=sign*amount, currency_id= statement.currency.id, ttype=ttype, date=line_date, context=context)
voucher_res = { 'type': ttype,
'name': line.name,
'partner_id': line.partner_id.id,
'journal_id': statement.journal_id.id,
'account_id': result.get('account_id', statement.journal_id.default_credit_account_id.id), # improve me: statement.journal_id.default_credit_account_id.id
'company_id':statement.company_id.id,
'currency_id':statement.currency.id,
'date':line.date,
'amount':abs(amount),
'account_id': result.get('account_id', statement.journal_id.default_credit_account_id.id),
'company_id': statement.company_id.id,
'currency_id': statement.currency.id,
'date': line.date,
'amount': sign*amount,
'period_id':statement.period_id.id}
voucher_id = voucher_obj.create(cr, uid, voucher_res, context=context)
@@ -97,12 +107,6 @@ class account_statement_from_invoice_lines(osv.osv_memory):
if voucher_line_dict:
voucher_line_dict.update({'voucher_id': voucher_id})
voucher_line_obj.create(cr, uid, voucher_line_dict, context=context)
if line.journal_id.type == 'sale':
type = 'customer'
elif line.journal_id.type == 'purchase':
type = 'supplier'
else:
type = 'general'
statement_line_obj.create(cr, uid, {
'name': line.name or '?',
'amount': amount,
@@ -112,81 +116,10 @@ class account_statement_from_invoice_lines(osv.osv_memory):
'statement_id': statement_id,
'ref': line.ref,
'voucher_id': voucher_id,
'date': time.strftime('%Y-%m-%d'), #time.strftime('%Y-%m-%d'), #line.date_maturity or,
'date': time.strftime('%Y-%m-%d'),
}, context=context)
return {'type': 'ir.actions.act_window_close'}
account_statement_from_invoice_lines()
class account_statement_from_invoice(osv.osv_memory):
"""
Generate Entries by Statement from Invoices
"""
_name = "account.statement.from.invoice"
_description = "Entries by Statement from Invoices"
_columns = {
'date': fields.date('Date payment',required=True),
'journal_ids': fields.many2many('account.journal', 'account_journal_relation', 'account_id', 'journal_id', 'Journal'),
'line_ids': fields.many2many('account.move.line', 'account_move_line_relation', 'move_id', 'line_id', 'Invoices'),
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
}
def search_invoices(self, cr, uid, ids, context=None):
if context is None:
context = {}
line_obj = self.pool.get('account.move.line')
statement_obj = self.pool.get('account.bank.statement')
journal_obj = self.pool.get('account.journal')
mod_obj = self.pool.get('ir.model.data')
statement_id = 'statement_id' in context and context['statement_id']
data = self.read(cr, uid, ids, context=context)[0]
statement = statement_obj.browse(cr, uid, statement_id, context=context)
args_move_line = []
repeated_move_line_ids = []
# Creating a group that is unique for importing move lines(move lines, once imported into statement lines, should not appear again)
for st_line in statement.line_ids:
args_move_line = []
args_move_line.append(('name', '=', st_line.name))
args_move_line.append(('ref', '=', st_line.ref))
if st_line.partner_id:
args_move_line.append(('partner_id', '=', st_line.partner_id.id))
args_move_line.append(('account_id', '=', st_line.account_id.id))
move_line_id = line_obj.search(cr, uid, args_move_line, context=context)
if move_line_id:
repeated_move_line_ids += move_line_id
journal_ids = data['journal_ids']
if journal_ids == []:
journal_ids = journal_obj.search(cr, uid, [('type', 'in', ('sale', 'cash', 'purchase'))], context=context)
args = [
('reconcile_id', '=', False),
('journal_id', 'in', journal_ids),
('account_id.reconcile', '=', True)]
if repeated_move_line_ids:
args.append(('id', 'not in', repeated_move_line_ids))
line_ids = line_obj.search(cr, uid, args,
context=context)
model_data_ids = mod_obj.search(cr, uid, [('model', '=', 'ir.ui.view'), ('name', '=', 'view_account_statement_from_invoice_lines')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
return {
'domain': "[('id','in', ["+','.join([str(x) for x in line_ids])+"])]",
'name': _('Import Entries'),
'context': context,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'account.statement.from.invoice.lines',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
account_statement_from_invoice()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,34 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_account_statement_from_invoice" model="ir.ui.view">
<field name="name">account.statement.from.invoice.form</field>
<field name="model">account.statement.from.invoice</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Import Invoices in Statement" version="7.0">
<group>
<field name="date"/>
<field name="journal_ids" domain="[('type','in',['sale','purchase','cash'])]"/>
</group>
<footer>
<button string="Go" name="search_invoices" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_view_account_statement_from_invoice" model="ir.actions.act_window">
<field name="name">Import Invoices in Statement</field>
<field name="res_model">account.statement.from.invoice</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_account_statement_from_invoice"/>
<field name="target">new</field>
</record>
<record id="view_account_statement_from_invoice_lines" model="ir.ui.view">
<field name="name">account.statement.from.invoice.lines.form</field>
<field name="model">account.statement.from.invoice.lines</field>
@@ -1,62 +0,0 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import osv
from osv import fields
class account_voucher_unreconcile(osv.osv_memory):
_name = "account.voucher.unreconcile"
_description = "Account voucher unreconcile"
_columns = {
'remove':fields.boolean('Want to remove accounting entries too ?', required=False),
}
_defaults = {
'remove': True,
}
def trans_unrec(self, cr, uid, ids, context=None):
# res = self.browse(cr, uid, ids[0])
if context is None:
context = {}
voucher_pool = self.pool.get('account.voucher')
reconcile_pool = self.pool.get('account.move.reconcile')
if context.get('active_id'):
voucher = voucher_pool.browse(cr, uid, context.get('active_id'), context=context)
recs = []
for line in voucher.move_ids:
if line.reconcile_id:
recs += [line.reconcile_id.id]
if line.reconcile_partial_id:
recs += [line.reconcile_partial_id.id]
#for rec in recs:
reconcile_pool.unlink(cr, uid, recs)
# if res.remove:
voucher_pool.cancel_voucher(cr, uid, [context.get('active_id')], context)
# wf_service = netsvc.LocalService("workflow")
# wf_service.trg_validate(uid, 'account.voucher', context.get('active_id'), 'cancel_voucher', cr)
return {'type': 'ir.actions.act_window_close'}
account_voucher_unreconcile()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,31 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_account_voucher_unreconcile" model="ir.ui.view">
<field name="name">Account voucher unreconcile</field>
<field name="model">account.voucher.unreconcile</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Unreconciliation" version="7.0">
<separator string="Unreconciliation Transactions" />
<label string="If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"/>
<footer>
<button name="trans_unrec" default_focus="1" string="Unreconcile" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<record model="ir.actions.act_window" id="action_view_account_voucher_unreconcile">
<field name="name">Unreconcile entries</field>
<field name="res_model">account.voucher.unreconcile</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="view_account_voucher_unreconcile"/>
<field name="target">new</field>
</record>
</data>
</openerp>
+35 -35
View File
@@ -14,9 +14,9 @@
<form string="AuditTrail Rule" version="7.0">
<header>
<button string="_Subscribe" name="subscribe" icon="gtk-ok"
type="object" states="draft" />
type="object" states="draft"/>
<button string="UnSubscribe" name="unsubscribe" icon="gtk-cancel"
type="object" states="subscribed" />
type="object" states="subscribed"/>
<field name="state" widget="statusbar"/>
</header>
<sheet>
@@ -29,11 +29,11 @@
<field name="log_create"/>
<field name="log_action"/>
<field name="log_workflow"/>
<separator string="Users (if User is not added then it will applicable for all users)" colspan="4" />
<field name="user_id" colspan="4" nolabel="1" />
<separator string="Users (if User is not added then it will applicable for all users)" colspan="4"/>
<field name="user_id" colspan="4" nolabel="1"/>
<field name="action_id" colspan="4" readonly="1" groups="base.group_no_one"/>
</group>
</sheet>
</sheet>
</form>
</field>
</record>
@@ -44,15 +44,15 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree colors="blue:state == 'draft';black:state == 'subscribed'" string="AuditTrail Rules">
<field name="name" />
<field name="name"/>
<field name="object_id"/>
<field name="log_read" />
<field name="log_write" />
<field name="log_unlink" />
<field name="log_create" />
<field name="log_read"/>
<field name="log_write"/>
<field name="log_unlink"/>
<field name="log_create"/>
<field name="log_action"/>
<field name="log_workflow"/>
<field name="state" />
<field name="state"/>
</tree>
</field>
</record>
@@ -108,36 +108,36 @@
<form string="Log Lines" version="7.0">
<group col="4">
<field name="field_id" colspan="4"
readonly="1" />
<newline />
readonly="1"/>
<newline/>
<field name="field_description" colspan="4"
readonly="1" />
<newline />
readonly="1"/>
<newline/>
<separator string="Old Value : "
colspan="2" />
colspan="2"/>
<separator string="New Value : "
colspan="2" />
<newline />
colspan="2"/>
<newline/>
<field name="old_value" nolabel="1"
colspan="2" readonly="1" />
colspan="2" readonly="1"/>
<field name="new_value" nolabel="1"
colspan="2" readonly="1" />
<newline />
colspan="2" readonly="1"/>
<newline/>
<separator string="Old Value Text : "
colspan="2" />
colspan="2"/>
<separator string="New Value Text: "
colspan="2" />
<newline />
colspan="2"/>
<newline/>
<field name="old_value_text" nolabel="1"
colspan="2" readonly="1" />
colspan="2" readonly="1"/>
<field name="new_value_text" nolabel="1"
colspan="2" readonly="1" />
colspan="2" readonly="1"/>
</group>
</form>
<tree string="Log Lines">
<field name="field_description" />
<field name="old_value_text" />
<field name="new_value_text" />
<field name="field_description"/>
<field name="old_value_text"/>
<field name="new_value_text"/>
</tree>
</field>
</sheet>
@@ -151,11 +151,11 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="AuditTrail Logs">
<field name="timestamp" />
<field name="name" />
<field name="object_id" />
<field name="method" />
<field name="user_id" />
<field name="timestamp"/>
<field name="name"/>
<field name="object_id"/>
<field name="method"/>
<field name="user_id"/>
</tree>
</field>
</record>
@@ -185,7 +185,7 @@
<field name="search_view_id" ref="view_audittrail_log_search"/>
</record>
<menuitem id="menu_audit_logs" name="Audit Logs" parent="menu_audit" action="action_audittrail_log_tree" />
<menuitem id="menu_audit_logs" name="Audit Logs" parent="menu_audit" action="action_audittrail_log_tree"/>
</data>
</openerp>
+34 -29
View File
@@ -21,7 +21,7 @@
import logging
import os
import sys
import tempfile
import urllib
import werkzeug.urls
@@ -31,53 +31,51 @@ from openerp.modules.registry import RegistryManager
try:
import openerp.addons.web.common.http as openerpweb
except ImportError:
import web.common.http as openerpweb
import web.common.http as openerpweb # noqa
from openid import oidutil
from openid.store import memstore
#from openid.store import filestore
from openid.store import filestore
from openid.consumer import consumer
from openid.cryptutil import randomString
from openid.extensions import ax, sreg
from .. import utils
_logger = logging.getLogger(__name__)
oidutil.log = _logger.debug
_storedir = os.path.join(tempfile.gettempdir(), 'openerp-auth_openid-store')
class GoogleAppsAwareConsumer(consumer.GenericConsumer):
def complete(self, message, endpoint, return_to):
if message.getOpenIDNamespace() == consumer.OPENID2_NS:
server_url = message.getArg(consumer.OPENID2_NS, 'op_endpoint', consumer.no_default)
server_url = message.getArg(consumer.OPENID2_NS, 'op_endpoint', '')
if server_url.startswith('https://www.google.com/a/'):
# update fields
for attr in ['claimed_id', 'identity']:
value = message.getArg(consumer.OPENID2_NS, attr)
value = 'https://www.google.com/accounts/o8/user-xrds?uri=%s' % urllib.quote_plus(value)
message.setArg(consumer.OPENID2_NS, attr, value)
# now, resign the message
assoc_handle = message.getArg(consumer.OPENID_NS, 'assoc_handle')
assoc = self.store.getAssociation(server_url, assoc_handle)
message.delArg(consumer.OPENID2_NS, 'sig')
message.delArg(consumer.OPENID2_NS, 'signed')
message = assoc.signMessage(message)
if assoc:
# update fields
for attr in ['claimed_id', 'identity']:
value = message.getArg(consumer.OPENID2_NS, attr, '')
value = 'https://www.google.com/accounts/o8/user-xrds?uri=%s' % urllib.quote_plus(value)
message.setArg(consumer.OPENID2_NS, attr, value)
return super(GoogleAppsAwareConsumer, self).complete(message, endpoint, return_to)
# now, resign the message
message.delArg(consumer.OPENID2_NS, 'sig')
message.delArg(consumer.OPENID2_NS, 'signed')
message = assoc.signMessage(message)
return super(GoogleAppsAwareConsumer, self).complete(message, endpoint, return_to)
class OpenIDController(openerpweb.Controller):
_cp_path = '/auth_openid/login'
_store = memstore.MemoryStore() # TODO use a filestore
_store = filestore.FileOpenIDStore(_storedir)
_REQUIRED_ATTRIBUTES = ['email']
_OPTIONAL_ATTRIBUTES = 'nickname fullname postcode country language timezone'.split()
def _add_extensions(self, request):
"""Add extensions to the request"""
@@ -118,8 +116,20 @@ class OpenIDController(openerpweb.Controller):
def _get_realm(self, req):
return req.httprequest.host_url
@openerpweb.httprequest
def verify_direct(self, req, db, url):
result = self._verify(req, db, url)
if 'error' in result:
return werkzeug.exceptions.BadRequest(result['error'])
if result['action'] == 'redirect':
return werkzeug.utils.redirect(result['value'])
return result['value']
@openerpweb.jsonrequest
def verify(self, req, db, url):
return self._verify(req, db, url)
def _verify(self, req, db, url):
redirect_to = werkzeug.urls.Href(req.httprequest.host_url + 'auth_openid/login/process')(session_id=req.session_id)
realm = self._get_realm(req)
@@ -145,7 +155,6 @@ class OpenIDController(openerpweb.Controller):
form_html = request.htmlMarkup(realm, redirect_to)
return {'action': 'post', 'value': form_html, 'session_id': req.session_id}
@openerpweb.httprequest
def process(self, req, **kw):
session = getattr(req.session, 'openid_session', None)
@@ -185,10 +194,8 @@ class OpenIDController(openerpweb.Controller):
domain += ['|', ('openid_email', '=', False)]
domain += [('openid_email', '=', openid_email)]
domain += [
('openid_url', '=', openid_url),
('active', '=', True),
]
domain += [('openid_url', '=', openid_url), ('active', '=', True)]
ids = Users.search(cr, 1, domain)
assert len(ids) < 2
if ids:
@@ -199,12 +206,11 @@ class OpenIDController(openerpweb.Controller):
# TODO fill empty fields with the ones from sreg/ax
cr.commit()
u = req.session.login(dbname, login, key)
req.session.authenticate(dbname, login, key, {})
if not user_id:
session['message'] = 'This OpenID identifier is not associated to any active users'
elif info.status == consumer.SETUP_NEEDED:
session['message'] = info.setup_url
elif info.status == consumer.FAILURE and display_identifier:
@@ -217,9 +223,8 @@ class OpenIDController(openerpweb.Controller):
# information in a log.
session['message'] = 'Verification failed.'
fragment = '#loginerror' if not user_id else ''
return werkzeug.utils.redirect('/'+fragment)
return werkzeug.utils.redirect('/' + fragment)
@openerpweb.jsonrequest
def status(self, req):
+90 -90
View File
@@ -12,7 +12,7 @@
<header>
<button name="do_tentative" states="needs-action,declined,accepted" string="Uncertain" type="object" class="oe_highlight"/>
<button name="do_accept" string="Accept" states="needs-action,tentative,declined" type="object" class="oe_highlight"/>
<button name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d" string="Delegate" type="action" states="needs-action,tentative,declined,accepted" context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
<button name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d" string="Delegate" type="action" states="needs-action,tentative,declined,accepted" context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}"/>
<button name="do_decline" string="Decline" states="needs-action,tentative,accepted" type="object" class="oe_highlight"/>
<field name="state" widget="statusbar"
statusbar_visible="tentative,needs-action,accepted" statusbar_colors='{"proforma":"blue"}'/>
@@ -20,36 +20,36 @@
<sheet>
<div class="oe_title">
<label for="email" string="Invitation To" class="oe_edit_only" />
<label for="email" string="Invitation To" class="oe_edit_only"/>
<h1>
<field name="email" class="oe_inline" />
(<field name="language" class="oe_inline" />)
<field name="email" class="oe_inline"/>
(<field name="language" class="oe_inline"/>)
</h1>
<h2>
From <field name="event_date" class="oe_inline" />
From <field name="event_date" class="oe_inline"/>
to <field name="event_end_date" class="oe_inline"/>
</h2>
</div>
<group>
<group>
<field name="sent_by_uid" string="Invitation From" />
<field name="sent_by_uid" string="Invitation From"/>
<field name="user_id" string="Invited User"/>
<field name="partner_id" string="Contact" />
<field name="partner_id" string="Contact"/>
</group>
<group>
<field name="cutype" string="Invitation Type" />
<field name="role" string="Role" />
<field name="rsvp" />
<field name="cutype" string="Invitation Type"/>
<field name="role" string="Role"/>
<field name="rsvp"/>
<field name="ref" readonly="1"/>
</group>
</group>
<group>
<group string="Delegated From">
<field name="parent_ids" readonly="1" nolabel="1" />
<field name="parent_ids" readonly="1" nolabel="1"/>
</group>
<group string="Delegated To" >
<field name="child_ids" readonly="1" nolabel="1" />
<field name="child_ids" readonly="1" nolabel="1"/>
</group>
</group>
</sheet>
@@ -65,12 +65,12 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Invitation details">
<field name="sent_by_uid" string="Invitation From" />
<field name="sent_by_uid" string="Invitation From"/>
<field name="role" string="My Role"/>
<field name="user_id" invisible="1"/>
<field name="partner_id" invisible="1"/>
<field name="cutype" string="Invitation Type"/>
<field name="state" />
<field name="state"/>
<field name="rsvp" string="Required to Join"/>
</tree>
</field>
@@ -86,20 +86,20 @@
<search string="Search Invitations">
<field name="email" string="Email"/>
<field name="event_date"/>
<filter icon="terp-gtk-jump-to-ltr" name="toreview" string="To Review" domain="[('state','=', 'needs-action')]" help="Invitations To Review" />
<filter icon="terp-check" string="Accepted" domain="[('state','=', 'accepted')]" help="Accepted Invitations" />
<filter icon="terp-dialog-close" string="Declined" domain="[('state','=', 'declined')]" help="Declined Invitations" />
<filter icon="gtk-sort-descending" string="Delegated" domain="[('state','=', 'delegated')]" help="Delegated Invitations" />
<filter icon="terp-gtk-jump-to-ltr" name="toreview" string="To Review" domain="[('state','=', 'needs-action')]" help="Invitations To Review"/>
<filter icon="terp-check" string="Accepted" domain="[('state','=', 'accepted')]" help="Accepted Invitations"/>
<filter icon="terp-dialog-close" string="Declined" domain="[('state','=', 'declined')]" help="Declined Invitations"/>
<filter icon="gtk-sort-descending" string="Delegated" domain="[('state','=', 'delegated')]" help="Delegated Invitations"/>
<field name="user_id" string="Responsible"/>
<field name="cutype" string="Invitation type"/>
<group expand="0" string="Group By...">
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Contact" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}" />
<filter string="Type" icon="terp-stock_symbol-selection" help="Invitation Type" domain="[]" context="{'group_by':'cutype'}" />
<filter string="Role" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'role'}" />
<filter string="Required Reply" icon="terp-mail-replied" domain="[]" context="{'group_by':'rsvp'}" />
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Contact" icon="terp-personal" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Type" icon="terp-stock_symbol-selection" help="Invitation Type" domain="[]" context="{'group_by':'cutype'}"/>
<filter string="Role" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'role'}"/>
<filter string="Required Reply" icon="terp-mail-replied" domain="[]" context="{'group_by':'rsvp'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" help="Invitation Type"
domain="[]" context="{'group_by':'state'}" />
domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
@@ -110,7 +110,7 @@
<field name="res_model">calendar.attendee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="base_calendar.base_calendar_attendee_tree_view" />
<field name="view_id" ref="base_calendar.base_calendar_attendee_tree_view"/>
<field name="context">{'default_sent_by_uid': uid}</field>
</record>
@@ -122,7 +122,7 @@
<menuitem id="menu_attendee_invitations"
parent="base.menu_calendar_configuration"
sequence="10" action="action_view_attendee_form" />
sequence="10" action="action_view_attendee_form"/>
<!-- ALARM FORM VIEW-->
@@ -133,13 +133,13 @@
<field name="arch" type="xml">
<form string="Reminder details" version="7.0">
<group col="4">
<field name="name" />
<field name="active" />
<separator string="Reminder Details" colspan="4" />
<field name="trigger_duration" />
<field name="trigger_interval" />
<field name="trigger_occurs" />
<field name="trigger_related" />
<field name="name"/>
<field name="active"/>
<separator string="Reminder Details" colspan="4"/>
<field name="trigger_duration"/>
<field name="trigger_interval"/>
<field name="trigger_occurs"/>
<field name="trigger_related"/>
</group>
</form>
</field>
@@ -169,7 +169,7 @@
<field name="view_mode">tree,form</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to setup a new alarm type.
Click to setup a new alarm type.
</p><p>
You can define a customized type of calendar alarm that may be
assigned to calendar events or meetings.
@@ -195,25 +195,25 @@
<header>
<button name="do_confirm" string="Confirm" states="tentative,cancelled" type="object" class="oe_highlight"/>
<button name="do_tentative" states="confirmed,cancelled" string="Uncertain" type="object" class="oe_highlight"/>
<button name="do_cancel" string="Cancel" states="tentative,confirmed" type="object" />
<button name="do_cancel" string="Cancel" states="tentative,confirmed" type="object"/>
<field name="state" widget="statusbar"
statusbar_visible="tentative,confirmed" statusbar_colors='{"proforma":"blue"}'/>
</header>
<sheet>
<group col="6">
<field name="name" string="Summary"
colspan="4" required="1" />
<field name="allday" colspan="2" on_change="onchange_dates(date,False,False,allday)" />
colspan="4" required="1"/>
<field name="allday" colspan="2" on_change="onchange_dates(date,False,False,allday)"/>
<newline/>
<field name="date" string="Start Date" required="1"
on_change="onchange_dates(date,duration,False,allday)" />
on_change="onchange_dates(date,duration,False,allday)"/>
<field name="duration" widget="float_time"
on_change="onchange_dates(date,duration,False,allday)" attrs="{'invisible': [('allday', '=', True)]}"/>
<field name="date_deadline" string="End Date" required="1"
on_change="onchange_dates(date,False,date_deadline)" />
<field name="location" />
on_change="onchange_dates(date,False,date_deadline)"/>
<field name="location"/>
<field name="alarm_id" string="Reminder"
widget="selection" />
widget="selection"/>
<group colspan="2" col="4" attrs="{'readonly': [('state','=','done')]}">
<field name="recurrency"/>
</group>
@@ -222,11 +222,11 @@
<page string="Event">
<group col="6" colspan="4">
<separator colspan="6" string="Visibility"/>
<field name="user_id" string="Responsible User" />
<field name="user_id" string="Responsible User"/>
<field name="show_as" string="Show Time as"/>
<field name="class" string="Privacy"/>
<field name="recurrent_id" invisible="1" />
<field name="recurrent_uid" invisible="1" />
<field name="recurrent_id" invisible="1"/>
<field name="recurrent_uid" invisible="1"/>
</group>
<separator string="Description"/>
<field name="description"/>
@@ -241,31 +241,31 @@
<tree string="Invitation details" editable="top">
<field name="sent_by_uid" string="From"/>
<field name="user_id" string="To"/>
<field name="email" />
<field name="role" width="200" />
<field name="state" />
<field name="email"/>
<field name="role" width="200"/>
<field name="state"/>
<button name="do_tentative"
states="needs-action,declined,accepted"
string="Uncertain" type="object"
icon="terp-crm" />
icon="terp-crm"/>
<button name="do_accept" string="Accept"
states="needs-action,tentative,declined"
type="object" icon="gtk-apply" />
type="object" icon="gtk-apply"/>
<button name="do_decline" string="Decline"
states="needs-action,tentative,accepted"
type="object" icon="gtk-cancel" />
type="object" icon="gtk-cancel"/>
<button
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
string="Delegate" type="action"
icon="gtk-sort-descending"
states="needs-action,tentative,declined,accepted"
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}"/>
</tree>
<form string="Invitation details" version="7.0">
<notebook colspan="4">
<page string="Details">
<group col="4">
<field name="email" />
<field name="email"/>
<field name="rsvp"/>
<field name="cutype"/>
<field name="role"/>
@@ -276,24 +276,24 @@
states="needs-action,declined,accepted"
string="Uncertain"
type="object"
icon="terp-crm" />
icon="terp-crm"/>
<button name="do_accept"
string="Accept"
states="needs-action,tentative,declined"
type="object"
icon="gtk-apply" />
icon="gtk-apply"/>
<button name="do_decline"
string="Decline"
states="needs-action,tentative,accepted"
type="object"
icon="gtk-cancel" />
icon="gtk-cancel"/>
<button
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
string="Delegate"
type="action"
icon="gtk-sort-descending"
states="needs-action,tentative,declined,accepted"
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}"/>
</group>
</page>
</notebook>
@@ -304,49 +304,49 @@
<group col="4" colspan="4" name="rrule">
<group col="4" colspan="4">
<field name="rrule_type" string="Recurrency period"
attrs="{'readonly':[('recurrent_uid','!=',False)]}" />
<field name="interval" />
attrs="{'readonly':[('recurrent_uid','!=',False)]}"/>
<field name="interval"/>
<separator string="End of Recurrence" colspan="4"/>
<field name="end_type" />
<label string=" " colspan="2" />
<newline />
<field name="end_type"/>
<label string=" " colspan="2"/>
<newline/>
<field name="count" attrs="{'invisible' : [('end_type', '!=', 'count')] }"/>
<label string=" " colspan="2" />
<newline />
<label string=" " colspan="2"/>
<newline/>
<field name="end_date" attrs="{'invisible' : [('end_type', '!=', 'end_date')] }"/>
<newline />
<newline/>
</group>
<group col="8" colspan="4" name="Select weekdays" attrs="{'invisible' :[('rrule_type','not in', ['weekly'])]}">
<separator string="Choose day where repeat the meeting" colspan="8"/>
<field name="mo" colspan="1" />
<field name="tu" colspan="1" />
<field name="we" colspan="1" />
<field name="th" colspan="1" />
<field name="mo" colspan="1"/>
<field name="tu" colspan="1"/>
<field name="we" colspan="1"/>
<field name="th" colspan="1"/>
<newline/>
<field name="fr" colspan="1"/>
<field name="sa" colspan="1" />
<field name="su" colspan="1" />
<newline/>
<field name="fr" colspan="1" />
<field name="sa" colspan="1" />
<field name="su" colspan="1" />
<newline />
</group>
<group col="10" colspan="4"
attrs="{'invisible' : [('rrule_type','!=','monthly')]}">
<separator string="Choose day in the month where repeat the meeting" colspan="12"/>
<group col="2" colspan="1">
<field name="select1" />
<field name="select1"/>
</group>
<group col="2" colspan="1">
<field name="day"
attrs="{'required' : [('select1','=','date'), ('rrule_type','=','monthly')],
'invisible' : ['|', ('select1','=','day'), ('rrule_type','!=','monthly')]}" />
'invisible' : ['|', ('select1','=','day'), ('rrule_type','!=','monthly')]}"/>
</group>
<group col="3" colspan="1"
attrs="{'invisible' : ['|', ('select1','=','date'), ('rrule_type','!=','monthly')]}">
<field name="byday" string="The"
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')]}" />
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')]}"/>
<field name="week_list" nolabel="1"
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')]}" />
attrs="{'required' : [('select1','=','day'), ('rrule_type','=','monthly')]}"/>
</group>
</group>
</group>
@@ -366,11 +366,11 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Events">
<field name="name" string="Subject" />
<field name="date" string="Event Date" />
<field name="location" />
<field name="show_as" />
<field name="class" string="Privacy" />
<field name="name" string="Subject"/>
<field name="date" string="Event Date"/>
<field name="location"/>
<field name="show_as"/>
<field name="class" string="Privacy"/>
<field name="user_id" invisible="1"/>
<field name="state" invisible="1"/>
</tree>
@@ -404,16 +404,16 @@
<field name="name" filter_domain="['|',('name','ilike',self),('location','ilike',self)]" string="Event"/>
<field name="show_as"/>
<field name="class" string="Privacy"/>
<filter icon="terp-go-today" string="My Events" domain="[('user_id','=',uid)]" help="My Events" />
<filter icon="terp-go-today" string="My Events" domain="[('user_id','=',uid)]" help="My Events"/>
<separator/>
<filter icon="terp-check" string="Confirmed" domain="[('state','=','confirmed')]" help="Confirmed Events" />
<filter icon="terp-check" string="Confirmed" domain="[('state','=','confirmed')]" help="Confirmed Events"/>
<field name="user_id"/>
<group expand="0" string="Group By...">
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Availability" icon="terp-camera_test" domain="[]" context="{'group_by':'show_as'}" />
<filter string="Privacy" icon="terp-locked" domain="[]" context="{'group_by':'class'}" />
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}" />
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" />
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Availability" icon="terp-camera_test" domain="[]" context="{'group_by':'show_as'}"/>
<filter string="Privacy" icon="terp-locked" domain="[]" context="{'group_by':'class'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}"/>
</group>
</search>
</field>
@@ -435,7 +435,7 @@
<menuitem id="menu_events"
name="Events" parent="base.menu_calendar_configuration"
sequence="15" action="action_view_event" />
sequence="15" action="action_view_event"/>
</data>
</openerp>
+1 -1
View File
@@ -91,7 +91,7 @@
<page string="Meeting Detail">
<group>
<group>
<field name="user_id" />
<field name="user_id"/>
<field name="categ_ids" widget="many2many_tags"/>
<field name="location"/>
<field name="organizer" groups="base.group_no_one"/>
+2
View File
@@ -53,6 +53,8 @@ class sale_config_settings(osv.osv_memory):
_name = 'sale.config.settings'
_inherit = 'res.config.settings'
_columns = {
'module_web_linkedin': fields.boolean('get contacts automatically from LinkedIn',
help="""When you create a new contact (person or company), you will be able to load all the data from LinkedIn (photos, address, etc)."""),
'module_crm': fields.boolean('CRM'),
'module_plugin_thunderbird': fields.boolean('enable Thunderbird plugin',
help="""The plugin allows you archive email and its attachments to the selected
+12
View File
@@ -71,6 +71,18 @@
or
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<div name="linkedin">
<separator string="Social Network Integration"/>
<group name="LinkedIn">
<label for="id" string="Contacts"/>
<div name="LinkedIn">
<div name="module_web_linkedin" class="oe_inline">
<field name="module_web_linkedin"/>
<label for="module_web_linkedin"/>
</div>
</div>
</group>
</div>
<div name="customer feature">
<separator string="Quotations and Sales Orders"/>
<group name="Customer">
+4 -3
View File
@@ -1,8 +1,9 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2010-2012 OpenERP s.a. (<http://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
@@ -15,11 +16,11 @@
# 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/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import board
import wizard
import controllers
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+10 -5
View File
@@ -3,6 +3,7 @@
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2010-2012 OpenERP s.a. (<http://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
@@ -35,15 +36,19 @@ The user can also publish notes.
'depends': ['base'],
'update_xml': [
'security/ir.model.access.csv',
'wizard/board_menu_create_view.xml',
'board_view.xml',
'board_data_admin.xml',
'board_data_home.xml',
'board_mydashboard_view.xml'
],
'demo_xml': [
'board_demo.xml'
"js": [
'static/src/js/dashboard.js',
],
"css": [
'static/src/css/dashboard.css',
],
'qweb': [
"static/src/xml/*.xml",
],
'installable': True,
'auto_install': False,
'certificate': '0076912305725',
+109 -57
View File
@@ -3,6 +3,7 @@
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2010-2012 OpenERP s.a. (<http://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
@@ -19,75 +20,58 @@
#
##############################################################################
from operator import itemgetter
from textwrap import dedent
from osv import fields, osv
import time
import tools
class board_board(osv.osv):
"""
Board
"""
_name = 'board.board'
_description = "Board"
_auto = False
_columns = {}
def create_view(self, cr, uid, ids, context=None):
"""
Create view
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Board's IDs
@return: arch of xml view.
"""
arch = """<?xml version="1.0"?>
<form string="My Board" version="7.0">
<board style="1-1">
<column/>
<column/>
</board>
</form>"""
return arch
@tools.cache()
def list(self, cr, uid, context=None):
Actions = self.pool.get('ir.actions.act_window')
Menus = self.pool.get('ir.ui.menu')
IrValues = self.pool.get('ir.values')
act_ids = Actions.search(cr, uid, [('res_model', '=', self._name)], context=context)
refs = ['%s,%s' % (Actions._name, act_id) for act_id in act_ids]
# cannot search "action" field on menu (non stored function field without search_fnct)
irv_ids = IrValues.search(cr, uid, [
('model', '=', 'ir.ui.menu'),
('key', '=', 'action'),
('key2', '=', 'tree_but_open'),
('value', 'in', refs),
], context=context)
menu_ids = map(itemgetter('res_id'), IrValues.read(cr, uid, irv_ids, ['res_id'], context=context))
menu_names = Menus.name_get(cr, uid, menu_ids, context=context)
return [dict(id=m[0], name=m[1]) for m in menu_names]
def _clear_list_cache(self):
self.list.clear_cache(self)
def create(self, cr, user, vals, context=None):
"""
create new record.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param vals: dictionary of values for every field.
dictionary must use this form: {‘name_of_the_field’: value, ...}
@return: id of new created record of board.board.
"""
return 0
if not 'name' in vals:
return False
id = super(board_board, self).create(cr, user, vals, context=context)
view_id = self.pool.get('ir.ui.view').create(cr, user, {
'name': vals['name'],
'model': 'board.board',
'priority': 16,
'type': 'form',
'arch': self.create_view(cr, user, id, context=context),
})
super(board_board, self).write(cr, user, [id], {'view_id': view_id}, context)
return id
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None,\
toolbar=False, submenu=False):
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
"""
Overrides orm field_view_get.
@return: Dictionary of Fields, arch and toolbar.
"""
res = {}
res = super(board_board, self).fields_view_get(cr, user, view_id, view_type,\
context, toolbar=toolbar, submenu=submenu)
res = super(board_board, self).fields_view_get(cr, user, view_id, view_type,
context, toolbar=toolbar, submenu=submenu)
vids = self.pool.get('ir.ui.view.custom').search(cr, user,\
[('user_id', '=', user), ('ref_id' ,'=', view_id)])
CustView = self.pool.get('ir.ui.view.custom')
vids = CustView.search(cr, user, [('user_id', '=', user), ('ref_id', '=', view_id)], context=context)
if vids:
view_id = vids[0]
arch = self.pool.get('ir.ui.view.custom').browse(cr, user, view_id, context=context)
arch = CustView.browse(cr, user, view_id, context=context)
res['custom_view_id'] = view_id
res['arch'] = arch.arch
res['arch'] = self._arch_preprocessing(cr, user, res['arch'], context=context)
@@ -98,10 +82,10 @@ class board_board(osv.osv):
from lxml import etree
def remove_unauthorized_children(node):
for child in node.iterchildren():
if child.tag=='action' and child.get('invisible'):
if child.tag == 'action' and child.get('invisible'):
node.remove(child)
else:
child=remove_unauthorized_children(child)
child = remove_unauthorized_children(child)
return node
def encode(s):
@@ -110,16 +94,84 @@ class board_board(osv.osv):
return s
archnode = etree.fromstring(encode(arch))
return etree.tostring(remove_unauthorized_children(archnode),pretty_print=True)
return etree.tostring(remove_unauthorized_children(archnode), pretty_print=True)
class board_create(osv.osv_memory):
def board_create(self, cr, uid, ids, context=None):
assert len(ids) == 1
this = self.browse(cr, uid, ids[0], context=context)
view_arch = dedent("""<?xml version="1.0"?>
<form string="%s" version="7.0">
<board style="2-1">
<column/>
<column/>
</board>
</form>
""".strip() % (this.name,))
view_id = self.pool.get('ir.ui.view').create(cr, uid, {
'name': this.name,
'model': 'board.board',
'priority': 16,
'type': 'form',
'arch': view_arch,
}, context=context)
action_id = self.pool.get('ir.actions.act_window').create(cr, uid, {
'name': this.name,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'board.board',
'usage': 'menu',
'view_id': view_id,
'help': dedent('''<div class="oe_empty_custom_dashboard">
<p>
<b>This dashboard is empty.</b>
</p><p>
To add the first report into this dashboard, go to any
menu, switch to list or graph view, and click <i>'Add to
Dashboard'</i> in the extended search options.
</p><p>
You can filter and group data before inserting into the
dashboard using the search options.
</p>
</div>
''')
}, context=context)
menu_id = self.pool.get('ir.ui.menu').create(cr, uid, {
'name': this.name,
'parent_id': this.menu_parent_id.id,
'action': 'ir.actions.act_window,%s' % (action_id,)
}, context=context)
self.pool.get('board.board')._clear_list_cache()
return {
'type': 'ir.actions.client',
'tag': 'reload',
'params': {
'menu_id': menu_id
},
}
def _default_menu_parent_id(self, cr, uid, context=None):
_, menu_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'menu_reporting_dashboard')
return menu_id
_name = "board.create"
_description = "Board Creation"
_columns = {
'name': fields.char('Dashboard', size=64, required=True),
'view_id': fields.many2one('ir.ui.view', 'Board View'),
'name': fields.char('Board Name', size=64, required=True),
'menu_parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', required=True),
}
# the following lines added to let the button on dashboard work.
_defaults = {
'name':lambda *args: 'Dashboard'
'menu_parent_id': _default_menu_parent_id,
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-6
View File
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
</data>
</openerp>
-41
View File
@@ -1,41 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- neat client actions that can be used in dashboards to display res_widgets -->
<record id="action_application_tiles" model="ir.actions.client">
<field name="name">Applications Tiles</field>
<field name="tag">board.home.applications</field>
</record>
<record id="action_res_widgets_tweets" model="ir.actions.client">
<field name="name">Tweets Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.openerp_favorites_twitter_widget')}"/>
</record>
<record id="action_res_widgets_events" model="ir.actions.client">
<field name="name">Events Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.events_widget')}"/>
</record>
<record id="action_res_widgets_facebook" model="ir.actions.client">
<field name="name">Facebook Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.facebook_widget')}"/>
</record>
<record id="action_res_widgets_note" model="ir.actions.client">
<field name="name">Note Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.note_widget')}"/>
</record>
<record id="action_res_widgets_map" model="ir.actions.client">
<field name="name">Google Maps Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.google_maps_widget')}"/>
</record>
<record id="action_res_widgets_currency_converter" model="ir.actions.client">
<field name="name">Currency Converter Widget</field>
<field name="tag">board.home.widgets</field>
<field name="params" eval="{'widget_id': ref('base.currency_converter_widget')}"/>
</record>
</data>
</openerp>
-5
View File
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
</data>
</openerp>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0"?>
<openerp>
<data>
<data noupdate="1">
<!--My Dashboard-->
<record model="ir.ui.view" id="board_my_dash_view">
<field name="name">My Dashboard</field>
+23 -50
View File
@@ -1,64 +1,37 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Board Search View -->
<record id="view_board_search" model="ir.ui.view">
<field name="name">board.board.search</field>
<field name="model">board.board</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Dashboard">
<field name="name" string="Dashboard"/>
</search>
</field>
</record>
<!-- Board Tree View -->
<record id="view_board_tree" model="ir.ui.view">
<field name="name">board.board.tree</field>
<field name="model">board.board</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Dashboard">
<field name="name"/>
</tree>
</field>
</record>
<!-- Board Form View -->
<record id="view_board_form" model="ir.ui.view">
<field name="name">board.board.form</field>
<field name="model">board.board</field>
<record id="view_board_create" model="ir.ui.view">
<field name="name">board.create.form</field>
<field name="model">board.create</field>
<field name="type">form</field>
<field eval="1" name="priority"/>
<field name="arch" type="xml">
<form string="Dashboard" version="7.0">
<header>
<button name="%(action_board_menu_create)d" string="Create Menu" type="action" class="oe_highlight"/>
</header>
<sheet>
<group>
<field name="name"/>
<field name="view_id" invisible="1"/>
</group>
</sheet>
</form>
<form string="Create New Dashboard" version="7.0">
<group colspan="4">
<field name="name"/>
<field name="menu_parent_id"/>
</group>
<footer>
<button string="Create" name="board_create" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action for DashBoard Definition form -->
<record id="action_view_board_list_form" model="ir.actions.act_window">
<field name="name">Dashboard Definition</field>
<field name="res_model">board.board</field>
<record id="action_board_create" model="ir.actions.act_window">
<field name="name">Create Board</field>
<field name="res_model">board.create</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_board_search"/>
<field name="view_mode">form</field>
<field name="view_id" ref="view_board_create"/>
<field name="target">new</field>
</record>
<menuitem action="action_view_board_list_form"
id="menu_view_board_form" parent="base.menu_reporting_config"
<menuitem action="action_board_create"
id="menu_board_create" parent="base.menu_reporting_config"
groups="base.group_no_one"
sequence="2"/>
</data>
</openerp>
+55
View File
@@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
from xml.etree import ElementTree
try:
import openerp.addons.web.common.http as openerpweb
from openerp.addons.web.common import nonliterals
from openerp.addons.web.controllers.main import load_actions_from_ir_values
except ImportError:
import web.common.http as openerpweb # noqa
from web.common import nonliterals # noqa
from web.controllers.main import load_actions_from_ir_values # noqa
class Board(openerpweb.Controller):
_cp_path = '/board'
@openerpweb.jsonrequest
def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''):
# FIXME move this method to board.board model
to_eval = nonliterals.CompoundContext(context_to_save)
to_eval.session = req.session
ctx = dict((k, v) for k, v in to_eval.evaluate().iteritems()
if not k.startswith('search_default_'))
ctx['dashboard_merge_domains_contexts'] = False # TODO: replace this 6.1 workaround by attribute on <action/>
domain = nonliterals.CompoundDomain(domain)
domain.session = req.session
domain = domain.evaluate()
dashboard_action = load_actions_from_ir_values(req, 'action', 'tree_but_open', [('ir.ui.menu', menu_id)], False)
if dashboard_action:
action = dashboard_action[0][2]
if action['res_model'] == 'board.board' and action['views'][0][1] == 'form':
# Maybe should check the content instead of model board.board ?
view_id = action['views'][0][0]
board = req.session.model(action['res_model']).fields_view_get(view_id, 'form')
if board and 'arch' in board:
xml = ElementTree.fromstring(board['arch'])
column = xml.find('./board/column')
if column is not None:
new_action = ElementTree.Element('action', {
'name': str(action_id),
'string': name,
'view_mode': view_mode,
'context': str(ctx),
'domain': str(domain)
})
column.insert(0, new_action)
arch = ElementTree.tostring(xml, 'utf-8')
return req.session.model('ir.ui.view.custom').create({
'user_id': req.session._uid,
'ref_id': view_id,
'arch': arch
}, req.session.eval_context(req.context))
return False
@@ -1,3 +1,2 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_board_board all,board.board,model_board_board,,1,0,0,0
access_board_board system,board.board system,model_board_board,base.group_system,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_board_board all board.board model_board_board 1 0 0 0
access_board_board system board.board system model_board_board base.group_system 1 1 1 1
+73
View File
@@ -0,0 +1,73 @@
.openerp .oe_dashboard_links {
text-align: right;
margin: 0 4px 6px 0;
}
.openerp .oe_dashboard {
width: 100%;
}
.openerp .oe_dashboard .oe_action {
margin: 0 8px 8px 0;
background-color: white;
border: 1px solid;
border-color: #e5e5e5 #dbdbdb #d2d2d2;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
-moz-box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
-webkit-box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
box-shadow: 0 0 2px rgba(0, 0, 0, 0.2);
}
.openerp .oe_dashboard .oe_action .oe_header {
font-size: 16px;
vertical-align: middle;
margin: 0;
padding: 12px;
-moz-border-radius: 3px 3px 0 0;
-webkit-border-radius: 3px 3px 0 0;
border-radius: 3px 3px 0 0;
}
.openerp .oe_dashboard .oe_action .oe_header:hover {
cursor: move;
}
.openerp .oe_dashboard .oe_action .oe_header .oe_icon {
float: right;
cursor: pointer;
color: #b3b3b3;
}
.openerp .oe_dashboard .oe_action .oe_header .oe_icon:hover {
color: #666666;
text-decoration: none;
}
.openerp .oe_dashboard .oe_action .oe_header .oe_close:after {
content: "×";
margin-left: 4px;
}
.openerp .oe_dashboard .oe_action .oe_header .oe_minimize:after {
content: "-";
margin-left: 4px;
}
.openerp .oe_dashboard .oe_action .oe_header .oe_maximize:after {
content: "+";
margin-left: 4px;
}
.openerp .oe_dashboard .oe_action .oe_header_empty {
padding-top: 0;
padding-bottom: 2px;
}
.openerp .oe_dashboard .oe_action .oe_button_create {
margin-left: 4px;
padding: 0 4px 0 4px;
height: 16px !important;
}
.openerp .oe_dashboard .oe_action .oe_content {
padding: 0 12px 12px 12px;
}
.openerp .oe_dashboard .oe_action .oe_content .oe_view_manager_header {
display: none;
}
.openerp .oe_dashboard .oe_action .oe_content .oe_list_content > thead {
border-bottom: 1px;
}
.openerp .oe_dashboard .oe_action .oe_content .oe_list_content > tbody tr:nth-child(odd) {
background: transparent;
}
@@ -0,0 +1,83 @@
@mixin radius($radius: 5px)
-moz-border-radius: $radius
-webkit-border-radius: $radius
border-radius: $radius
@mixin box-shadow($bsval: 0px 1px 4px #777)
-moz-box-shadow: $bsval
-webkit-box-shadow: $bsval
box-shadow: $bsval
.openerp
.oe_dashboard_links
text-align: right
margin: 0 4px 6px 0
.oe_dashboard
width: 100%
.oe_action
margin: 0 8px 8px 0
background-color: white
border: 1px solid
border-color: #e5e5e5 #dbdbdb #d2d2d2
@include radius(3px)
@include box-shadow(0 0 2px rgba(0,0,0,0.2))
.oe_header
font-size: 16px
vertical-align: middle
margin: 0
padding: 12px
@include radius(3px 3px 0 0)
//border-bottom: 1px dotted #dbdbdb
//@include radius(2px 2px 0 0)
//@include vertical-gradient(#FCFCFC, #DEDEDE)
&:hover
cursor: move
.oe_icon
float: right
cursor: pointer
color: #b3b3b3
&:hover
color: #666
text-decoration: none
.oe_close:after
content: "×"
margin-left: 4px
.oe_minimize:after
content: "-"
margin-left: 4px
.oe_maximize:after
content: "+"
margin-left: 4px
.oe_header_empty
padding-top: 0
padding-bottom: 2px
.oe_button_create
margin-left: 4px
padding: 0 4px 0 4px
height: 16px !important
//.oe_rename
//float: left
//padding-right: 4px
//position: relative
//top: 1px
//.oe_input
//height: 16px;
//position: relative;
//top: 2px;
//.ui-sortable-placeholder
//border: 1px dotted black;
//visibility: visible !important;
//height: 50px !important;
//*
//visibility: hidden;
.oe_content
padding: 0 12px 12px 12px
.oe_view_manager_header
display: none
.oe_list_content
> thead
border-bottom: 1px
> tbody
tr:nth-child(odd)
background: transparent
Binary file not shown.

After

Width:  |  Height:  |  Size: 306 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 313 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 292 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

+378
View File
@@ -0,0 +1,378 @@
openerp.board = function(instance) {
var QWeb = instance.web.qweb,
_t = instance.web._t;
if (!instance.board) {
/** @namespace */
instance.board = {};
}
instance.web.form.DashBoard = instance.web.form.FormWidget.extend({
init: function(view, node) {
this._super(view, node);
this.form_template = 'DashBoard';
this.actions_attrs = {};
this.action_managers = [];
},
start: function() {
var self = this;
this._super.apply(this, arguments);
this.$element.find('.oe_dashboard_column').sortable({
connectWith: '.oe_dashboard_column',
handle: '.oe_header',
scroll: false
}).disableSelection().bind('sortstop', self.do_save_dashboard);
// Events
this.$element.find('.oe_dashboard_link_reset').click(this.on_reset);
this.$element.find('.oe_dashboard_link_change_layout').click(this.on_change_layout);
this.$element.delegate('.oe_dashboard_column .oe_fold', 'click', this.on_fold_action);
this.$element.delegate('.oe_dashboard_column .oe_close', 'click', this.on_close_action);
// Init actions
_.each(this.node.children, function(column, column_index) {
_.each(column.children, function(action, action_index) {
delete(action.attrs.width);
delete(action.attrs.height);
delete(action.attrs.colspan);
var action_id = _.str.toNumber(action.attrs.name);
if (!_.isNaN(action_id)) {
self.rpc('/web/action/load', {action_id: action_id}, function(result) {
self.on_load_action(result, column_index + '_' + action_index, action.attrs);
});
}
});
});
},
on_reset: function() {
this.rpc('/web/view/undo_custom', {
view_id: this.view.fields_view.view_id,
reset: true
}, this.do_reload);
},
on_change_layout: function() {
var self = this;
var qdict = {
current_layout : this.$element.find('.oe_dashboard').attr('data-layout')
};
var $dialog = instance.web.dialog($('<div>'), {
modal: true,
title: _t("Edit Layout"),
width: 'auto',
height: 'auto'
}).html(QWeb.render('DashBoard.layouts', qdict));
$dialog.find('li').click(function() {
var layout = $(this).attr('data-layout');
$dialog.dialog('destroy');
self.do_change_layout(layout);
});
},
do_change_layout: function(new_layout) {
var $dashboard = this.$element.find('.oe_dashboard');
var current_layout = $dashboard.attr('data-layout');
if (current_layout != new_layout) {
var clayout = current_layout.split('-').length,
nlayout = new_layout.split('-').length,
column_diff = clayout - nlayout;
if (column_diff > 0) {
var $last_column = $();
$dashboard.find('.oe_dashboard_column').each(function(k, v) {
if (k >= nlayout) {
$(v).find('.oe_action').appendTo($last_column);
} else {
$last_column = $(v);
}
});
}
$dashboard.toggleClass('oe_dashboard_layout_' + current_layout + ' oe_dashboard_layout_' + new_layout);
$dashboard.attr('data-layout', new_layout);
this.do_save_dashboard();
}
},
on_fold_action: function(e) {
var $e = $(e.currentTarget),
$action = $e.parents('.oe_action:first'),
id = parseInt($action.attr('data-id'), 10);
if ($e.is('.oe_minimize')) {
$action.data('action_attrs').fold = '1';
} else {
delete($action.data('action_attrs').fold);
}
$e.toggleClass('oe_minimize oe_maximize');
$action.find('.oe_content').toggle();
this.do_save_dashboard();
},
on_close_action: function(e) {
if (confirm(_t("Are you sure you want to remove this item ?"))) {
$(e.currentTarget).parents('.oe_action:first').remove();
this.do_save_dashboard();
}
},
do_save_dashboard: function() {
var self = this;
var board = {
form_title : this.view.fields_view.arch.attrs.string,
style : this.$element.find('.oe_dashboard').attr('data-layout'),
columns : []
};
this.$element.find('.oe_dashboard_column').each(function() {
var actions = [];
$(this).find('.oe_action').each(function() {
var action_id = $(this).attr('data-id'),
new_attrs = _.clone($(this).data('action_attrs'));
if (new_attrs.domain) {
new_attrs.domain = new_attrs.domain_string;
delete(new_attrs.domain_string);
}
if (new_attrs.context) {
new_attrs.context = new_attrs.context_string;
delete(new_attrs.context_string);
}
actions.push(new_attrs);
});
board.columns.push(actions);
});
var arch = QWeb.render('DashBoard.xml', board);
this.rpc('/web/view/add_custom', {
view_id: this.view.fields_view.view_id,
arch: arch
}, function() {
self.$element.find('.oe_dashboard_link_reset').show();
});
},
on_load_action: function(result, index, action_attrs) {
var self = this,
action = result.result,
view_mode = action_attrs.view_mode;
if (action_attrs.context && action_attrs.context['dashboard_merge_domains_contexts'] === false) {
// TODO: replace this 6.1 workaround by attribute on <action/>
action.context = action_attrs.context || {};
action.domain = action_attrs.domain || [];
} else {
if (action_attrs.context) {
action.context = _.extend((action.context || {}), action_attrs.context);
}
if (action_attrs.domain) {
action.domain = action.domain || [];
action.domain.unshift.apply(action.domain, action_attrs.domain);
}
}
var action_orig = _.extend({ flags : {} }, action);
if (view_mode && view_mode != action.view_mode) {
action.views = _.map(view_mode.split(','), function(mode) {
mode = mode === 'tree' ? 'list' : mode;
return _(action.views).find(function(view) { return view[1] == mode; })
|| [false, mode];
});
}
action.flags = {
search_view : false,
sidebar : false,
views_switcher : false,
action_buttons : false,
pager: false,
low_profile: true,
display_title: false,
list: {
selectable: false
}
};
var am = new instance.web.ActionManager(this),
// FIXME: ideally the dashboard view shall be refactored like kanban.
$action = $('#' + this.view.element_id + '_action_' + index);
$action.parent().data('action_attrs', action_attrs);
this.action_managers.push(am);
am.appendTo($action);
am.do_action(action);
am.do_action = function (action) {
self.do_action(action);
};
if (action_attrs.creatable && action_attrs.creatable !== 'false') {
var action_id = parseInt(action_attrs.creatable, 10);
$action.parent().find('button.oe_dashboard_button_create').click(function() {
if (isNaN(action_id)) {
action_orig.flags.default_view = 'form';
self.do_action(action_orig);
} else {
self.rpc('/web/action/load', {
action_id: action_id
}, function(result) {
result.result.flags = result.result.flags || {};
result.result.flags.default_view = 'form';
self.do_action(result.result);
});
}
});
}
if (am.inner_widget) {
am.inner_widget.on_mode_switch.add(function(mode) {
var new_views = [];
_.each(action_orig.views, function(view) {
new_views[view[1] === mode ? 'unshift' : 'push'](view);
});
if (!new_views.length || new_views[0][1] !== mode) {
new_views.unshift([false, mode]);
}
action_orig.views = new_views;
action_orig.res_id = am.inner_widget.dataset.ids[am.inner_widget.dataset.index];
self.do_action(action_orig);
});
}
},
renderElement: function() {
this._super();
var check = _.detect(this.node.children, function(column, column_index) {
return _.detect(column.children,function(element){
return element.tag === "action"? element: false;
});
});
if (!check) {
return this.no_result();
}
// We should start with three columns available
for (var i = this.node.children.length; i < 3; i++) {
this.node.children.push({
tag: 'column',
attrs: {},
children: []
});
}
var rendered = QWeb.render(this.form_template, this);
this.$element.html(rendered);
},
no_result: function() {
if (this.view.options.action.help) {
this.$element.append(
$('<div class="oe_view_nocontent">')
.append($('<div>').html(this.view.options.action.help || " "))
);
}
},
do_reload: function() {
var view_manager = this.view.getParent(),
action_manager = view_manager.getParent();
this.view.destroy();
action_manager.do_action(view_manager.action);
}
});
instance.web.form.DashBoardLegacy = instance.web.form.DashBoard.extend({
renderElement: function() {
if (this.node.tag == 'hpaned') {
this.node.attrs.style = '2-1';
} else if (this.node.tag == 'vpaned') {
this.node.attrs.style = '1';
}
this.node.tag = 'board';
_.each(this.node.children, function(child) {
if (child.tag.indexOf('child') == 0) {
child.tag = 'column';
var actions = [], first_child = child.children[0];
if (first_child && first_child.tag == 'vpaned') {
_.each(first_child.children, function(subchild) {
actions.push.apply(actions, subchild.children);
});
child.children = actions;
}
}
});
this._super(this);
}
});
instance.web.form.tags.add('hpaned', 'instance.web.form.DashBoardLegacy');
instance.web.form.tags.add('vpaned', 'instance.web.form.DashBoardLegacy');
instance.web.form.tags.add('board', 'instance.web.form.DashBoard');
instance.board.AddToDashboard = instance.web.search.Input.extend({
template: 'SearchView.addtodashboard',
_in_drawer: true,
start: function () {
var self = this;
this.$element
.on('click', 'h4', this.proxy('show_option'))
.on('submit', 'form', function (e) {
e.preventDefault();
self.add_dashboard();
});
return this.load_data().then(this.proxy("render_data"));
},
load_data:function(){
var board = new instance.web.Model('board.board');
return board.call('list');
},
_x:function() {
if (!instance.webclient) { return $.Deferred().reject(); }
var dashboard_menu = instance.webclient.menu.data.data.children;
return new instance.web.Model('ir.model.data')
.query(['res_id'])
.filter([['name','=','menu_reporting_dashboard']])
.first().pipe(function (result) {
var menu = _(dashboard_menu).chain()
.pluck('children')
.flatten(true)
.find(function (child) { return child.id === result.res_id; })
.value();
return menu ? menu.children : [];
});
},
render_data: function(dashboard_choices){
var selection = instance.web.qweb.render(
"SearchView.addtodashboard.selection", {
selections: dashboard_choices});
this.$("input").before(selection)
},
add_dashboard: function(){
var self = this;
var getParent = this.getParent();
var view_parent = this.getParent().getParent();
if (! view_parent.action || ! this.$element.find("select").val()) {
this.do_warn("Can't find dashboard action");
return;
}
var data = getParent.build_search_data();
var context = new instance.web.CompoundContext(getParent.dataset.get_context() || []);
var domain = new instance.web.CompoundDomain(getParent.dataset.get_domain() || []);
_.each(data.contexts, context.add, context);
_.each(data.domains, domain.add, domain);
this.rpc('/board/add_to_dashboard', {
menu_id: this.$element.find("select").val(),
action_id: view_parent.action.id,
context_to_save: context,
domain: domain,
view_mode: view_parent.active_view,
name: this.$element.find("input").val()
}, function(r) {
if (r === false) {
self.do_warn("Could not add filter to dashboard");
} else {
self.$element.toggleClass('oe_opened');
self.do_notify("Filter added to dashboard", '');
}
});
},
show_option:function(){
this.$element.toggleClass('oe_opened');
if (! this.$element.hasClass('oe_opened'))
return;
this.$("input").val(this.getParent().fields_view.name || "" );
}
});
instance.web.SearchView.include({
add_common_inputs: function() {
this._super();
(new instance.board.AddToDashboard(this));
}
});
};
+80
View File
@@ -0,0 +1,80 @@
<template>
<t t-name="DashBoard">
<div class="oe_dashboard_links">
<button type="button" class="button oe_dashboard_link_reset" title="Reset Layout.." t-att-style="view.fields_view.custom_view_id ? null : 'display: none'">
<img src="/board/static/src/img/layout_2-1.png" width="16" height="16"/>
<span> Reset </span>
</button>
<button type="button" class="button oe_dashboard_link_change_layout" title="Change Layout..">
<img src="/board/static/src/img/layout_1-1-1.png" width="16" height="16"/>
<span> Change Layout </span>
</button>
</div>
<table t-att-data-layout="node.attrs.style" t-attf-class="oe_dashboard oe_dashboard_layout_#{node.attrs.style}" cellspacing="0" cellpadding="0" border="0">
<tr>
<td t-foreach="node.children" t-as="column" t-if="column.tag == 'column'"
t-att-id="view.element_id + '_column_' + column_index" t-attf-class="oe_dashboard_column index_#{column_index}">
<t t-foreach="column.children" t-as="action" t-if="action.tag == 'action'" t-call="DashBoard.action"/>
</td>
</tr>
</table>
</t>
<t t-name="DashBoard.action">
<div t-att-data-id="action.attrs.name" class="oe_action">
<h2 t-attf-class="oe_header #{action.attrs.string ? '' : 'oe_header_empty'}">
<t t-esc="action.attrs.string"/>
<t t-if="!action.attrs.string">&amp;nbsp;</t>
<button t-if="action.attrs.creatable and action.attrs.creatable !== 'false'" class="oe_button oe_button_create">Create</button>
<span class='oe_icon oe_close'></span>
<span class='oe_icon oe_minimize oe_fold' t-if="!action.attrs.fold"></span>
<span class='oe_icon oe_maximize oe_fold' t-if="action.attrs.fold"></span>
</h2>
<div t-attf-id="#{view.element_id}_action_#{column_index}_#{action_index}" class="oe_content" t-att-style="action.attrs.fold ? 'display: none' : null"></div>
</div>
</t>
<t t-name="DashBoard.layouts">
<div class="oe_dashboard_layout_selector">
<p>
<strong>Choose dashboard layout</strong>
</p>
<ul>
<li t-foreach="'1 1-1 1-1-1 1-2 2-1'.split(' ')" t-as="layout" t-att-data-layout="layout">
<img t-attf-src="/board/static/src/img/layout_#{layout}.png"/>
<img t-if="layout == current_layout"
src="/web/static/src/img/icons/gtk-apply.png" width="16" height="16" class="oe_dashboard_selected_layout"/>
</li>
</ul>
</div>
</t>
<t t-name="DashBoard.xml">
<form t-att-string="form_title" version="7.0">
<board t-att-style="style">
<column t-foreach="columns" t-as="column">
<action t-foreach="column" t-as="action" t-att="action"/>
</column>
</board>
</form>
</t>
<div t-name="HomeWidget" class="oe_dashboard_home_widget"/>
<t t-name="HomeWidget.content">
<h3><t t-esc="widget.title"/></h3>
<iframe width="100%" frameborder="0" t-att-src="url"/>
</t>
<div t-name="SearchView.addtodashboard" class="oe_searchview_dashboard">
<h4>Add to Dashboard</h4>
<form>
<p><input placeholder="Title of new dashboard item"/></p>
<button class="oe_apply" type="submit">Add</button>
</form>
</div>
<t t-name="SearchView.addtodashboard.selection">
<select>
<option t-foreach="selections" t-as="element"
t-att-value="element.id ">
<t t-esc="element.name"/></option>
</select>
</t>
</template>
-102
View File
@@ -1,102 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
from tools.translate import _
class board_menu_create(osv.osv_memory):
"""
Create Menu
"""
def view_init(self, cr, uid, fields, context=None):
"""
This function checks for precondition before wizard executes
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param fields: List of fields for default value
@param context: A standard dictionary for contextual values
check dashboard view on menu name field.
@return: False
"""
data = context and context.get('active_id', False) or False
if data:
return False
def board_menu_create(self, cr, uid, ids, context=None):
"""
Create Menu.
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@param ids: List of Board Menu Create's IDs
@return: Dictionary {}.
"""
if context is None:
context = {}
context_id = context and context.get('active_id', False) or False
if context_id:
board = self.pool.get('board.board').browse(cr, uid, context_id, context=context)
action_id = self.pool.get('ir.actions.act_window').create(cr, uid, {
'name': board.name,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'board.board',
'view_id': board.view_id.id,
'help': _('''<div class="oe_empty_custom_dashboard">
<p>
<b>This dashboard is empty.</b>
</p><p>
To add the first report into this dashboard, go to any
menu, switch to list or graph view, and click <i>'Add to
Dashboard'</i> in the extended search options.
</p><p>
You can filter and group data before inserting into the
dashboard using the search options.
</p>
</div>
''')
})
obj_menu = self.pool.get('ir.ui.menu')
#start Loop
for data in self.browse(cr, uid, ids, context=context):
obj_menu.create(cr, uid, {
'name': data.menu_name,
'parent_id': data.menu_parent_id.id,
'action': 'ir.actions.act_window,' + str(action_id)
}, context=context)
#End Loop
return {'type': 'ir.actions.act_window_close'}
_name = "board.menu.create"
_description = "Menu Create"
_columns = {
'menu_name': fields.char('Menu Name', size=64, required=True),
'menu_parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', required=True),
}
board_menu_create()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -1,38 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--Board menu create wizard -->
<record id="view_board_menu_create" model="ir.ui.view">
<field name="name">board.menu.create.form</field>
<field name="model">board.menu.create</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Menu For Dashboard" version="7.0">
<group colspan="4" string="Menu Information">
<field name="menu_name"/>
<field name="menu_parent_id"/>
</group>
<footer>
<button string="Create Menu" name="board_menu_create" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
<!-- Action for Board Menu create wizard. -->
<record id="action_board_menu_create" model="ir.actions.act_window">
<field name="name">Create Board Menu</field>
<field name="res_model">board.menu.create</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_board_menu_create"/>
<field name="target">new</field>
</record>
</data>
</openerp>
+821
View File
@@ -0,0 +1,821 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
"PO-Revision-Date: 2012-08-10 08:54+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-11 05:46+0000\n"
"X-Generator: Launchpad (build 15780)\n"
#. module: caldav
#: view:basic.calendar:0
msgid "Value Mapping"
msgstr ""
#. module: caldav
#: help:caldav.browse,url:0
msgid "Url of the caldav server, use for synchronization"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/caldav_browse.py:99
#, python-format
msgid ""
"\n"
"Prerequire\n"
"----------\n"
"There is no buit-in way to synchronize calendar with caldav.\n"
"So you need to install a third part software : Calendar (CalDav)\n"
"for now it's the only one\n"
"\n"
"configuration\n"
"-------------\n"
"\n"
"1. Open Calendar Sync\n"
" I'll get an interface with 2 tabs\n"
" Stay on the first one\n"
"\n"
"2. CaDAV Calendar URL : put the URL given above (ie : "
"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
"\n"
"3. Put your openerp username and password\n"
"\n"
"4. If your server don't use SSL, you'll get a warnign, say \"Yes\"\n"
"\n"
"5. Then you can synchronize manually or custom the settings to synchronize "
"every x minutes.\n"
"\n"
" "
msgstr ""
#. module: caldav
#: field:basic.calendar.alias,name:0
msgid "Filename"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_calendar_event_export
msgid "Event Export"
msgstr ""
#. module: caldav
#: view:calendar.event.subscribe:0
msgid "Provide Path for Remote Calendar"
msgstr ""
#. module: caldav
#: model:ir.actions.act_window,name:caldav.action_calendar_event_import_values
msgid "Import .ics File"
msgstr ""
#. module: caldav
#: view:caldav.browse:0
#: view:calendar.event.export:0
msgid "_Close"
msgstr ""
#. module: caldav
#: selection:basic.calendar.attributes,type:0
#: selection:basic.calendar.lines,name:0
msgid "Attendee"
msgstr ""
#. module: caldav
#: sql_constraint:basic.calendar.fields:0
msgid "Can not map a field more than once"
msgstr ""
#. module: caldav
#: model:ir.actions.act_window,help:caldav.action_caldav_form
msgid ""
"\"Calendars\" allow you to Customize calendar event and todo attribute with "
"any of OpenERP model.Caledars provide iCal Import/Export "
"functionality.Webdav server that provides remote access to calendar.Help You "
"to synchronize Meeting with Calendars client.You can access Calendars using "
"CalDAV clients, like sunbird, Calendar Evaluation, Mobile."
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:789
#: code:addons/caldav/calendar.py:879
#: code:addons/caldav/wizard/calendar_event_import.py:63
#, python-format
msgid "Warning !"
msgstr ""
#. module: caldav
#: field:basic.calendar.lines,object_id:0
msgid "Object"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
msgid "Todo"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_user_preference
msgid "User preference Form"
msgstr ""
#. module: caldav
#: field:user.preference,service:0
msgid "Services"
msgstr ""
#. module: caldav
#: selection:basic.calendar.fields,fn:0
msgid "Expression as constant"
msgstr ""
#. module: caldav
#: selection:user.preference,device:0
msgid "Evolution"
msgstr ""
#. module: caldav
#: view:calendar.event.import:0
#: view:calendar.event.subscribe:0
msgid "Ok"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/caldav_browse.py:123
#, python-format
msgid ""
"\n"
" 1. Go to Calendar View\n"
"\n"
" 2. File -> New -> Calendar\n"
"\n"
" 3. Fill the form\n"
" - type : CalDav\n"
" - name : Whaterver you want (ie : Meeting)\n"
" - url : "
"http://HOST:PORT/webdav/DB_NAME/calendars/users/USER/c/Meetings (ie : "
"http://localhost:8069/webdav/db_1/calendars/users/demo/c/Meetings) the one "
"given on the top of this window\n"
" - uncheck \"User SSL\"\n"
" - Username : Your username (ie : Demo)\n"
" - Refresh : everytime you want that evolution synchronize the data "
"with the server\n"
"\n"
" 4. Click ok and give your openerp password\n"
"\n"
" 5. A new calendar named with the name you gave should appear on the left "
"side.\n"
" "
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:879
#, python-format
msgid "Please provide proper configuration of \"%s\" in Calendar Lines"
msgstr ""
#. module: caldav
#: view:user.preference:0
msgid "Caldav's host name configuration"
msgstr ""
#. module: caldav
#: field:caldav.browse,url:0
msgid "Caldav Server"
msgstr ""
#. module: caldav
#: selection:basic.calendar.fields,fn:0
msgid "Datetime In UTC"
msgstr ""
#. module: caldav
#: selection:user.preference,device:0
msgid "iPhone"
msgstr ""
#. module: caldav
#: selection:basic.calendar,type:0
#: selection:basic.calendar.attributes,type:0
#: selection:basic.calendar.lines,name:0
msgid "TODO"
msgstr ""
#. module: caldav
#: view:calendar.event.export:0
msgid "Export ICS"
msgstr ""
#. module: caldav
#: selection:basic.calendar.fields,fn:0
msgid "Use the field"
msgstr "Энгийн талбар"
#. module: caldav
#: code:addons/caldav/calendar.py:789
#, python-format
msgid "Can not create line \"%s\" more than once"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
msgid "Webcal Calendar"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
#: field:basic.calendar,line_ids:0
#: model:ir.model,name:caldav.model_basic_calendar_lines
msgid "Calendar Lines"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_calendar_event_subscribe
msgid "Event subscribe"
msgstr ""
#. module: caldav
#: view:calendar.event.import:0
msgid "Import ICS"
msgstr ""
#. module: caldav
#: view:calendar.event.import:0
#: view:calendar.event.subscribe:0
#: view:user.preference:0
msgid "_Cancel"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_event
msgid "basic.calendar.event"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
#: selection:basic.calendar,type:0
#: selection:basic.calendar.attributes,type:0
#: selection:basic.calendar.lines,name:0
msgid "Event"
msgstr ""
#. module: caldav
#: field:document.directory,calendar_collection:0
#: field:user.preference,collection:0
msgid "Calendar Collection"
msgstr "Каледарын Цуглуулга"
#. module: caldav
#: constraint:document.directory:0
msgid "Error! You can not create recursive Directories."
msgstr ""
#. module: caldav
#: view:user.preference:0
msgid "_Open"
msgstr ""
#. module: caldav
#: view:user.preference:0
msgid "Next"
msgstr ""
#. module: caldav
#: field:basic.calendar,type:0
#: field:basic.calendar.attributes,type:0
#: field:basic.calendar.fields,type_id:0
#: field:basic.calendar.lines,name:0
msgid "Type"
msgstr ""
#. module: caldav
#: help:calendar.event.export,name:0
msgid "Save in .ics format"
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:1293
#, python-format
msgid "Error !"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_attributes
msgid "Calendar attributes"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_caldav_browse
msgid "Caldav Browse"
msgstr ""
#. module: caldav
#: selection:user.preference,device:0
msgid "Android based device"
msgstr "Андройд дээр суурилсан төхөөрөмж"
#. module: caldav
#: view:user.preference:0
msgid "Configure your openerp hostname. For example : "
msgstr ""
#. module: caldav
#: field:basic.calendar,create_date:0
msgid "Created Date"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
msgid "Attributes Mapping"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_document_directory
msgid "Directory"
msgstr ""
#. module: caldav
#: field:calendar.event.subscribe,url_path:0
msgid "Provide path for remote calendar"
msgstr ""
#. module: caldav
#: field:basic.calendar.lines,domain:0
msgid "Domain"
msgstr ""
#. module: caldav
#: view:calendar.event.subscribe:0
msgid "_Subscribe"
msgstr ""
#. module: caldav
#: field:basic.calendar,user_id:0
msgid "Owner"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
#: field:basic.calendar.alias,cal_line_id:0
#: field:basic.calendar.lines,calendar_id:0
#: model:ir.ui.menu,name:caldav.menu_calendar
#: field:user.preference,calendar:0
msgid "Calendar"
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:41
#, python-format
msgid ""
"Please install python-vobject from http://vobject.skyhouseconsulting.com/"
msgstr ""
"Уучлаарай python-vobject эндээс http://vobject.skyhouseconsulting.com/ "
"суулгана уу"
#. module: caldav
#: code:addons/caldav/wizard/calendar_event_import.py:63
#, python-format
msgid "Invalid format of the ics, file can not be imported"
msgstr ""
#. module: caldav
#: selection:user.preference,service:0
msgid "CalDAV"
msgstr ""
#. module: caldav
#: field:basic.calendar.fields,field_id:0
msgid "OpenObject Field"
msgstr ""
#. module: caldav
#: field:basic.calendar.alias,res_id:0
msgid "Res. ID"
msgstr ""
#. module: caldav
#: view:calendar.event.subscribe:0
msgid "Message..."
msgstr "Мессеж"
#. module: caldav
#: view:basic.calendar:0
#: field:basic.calendar,has_webcal:0
msgid "WebCal"
msgstr ""
#. module: caldav
#: view:document.directory:0
#: model:ir.actions.act_window,name:caldav.action_calendar_collection_form
#: model:ir.ui.menu,name:caldav.menu_calendar_collection
msgid "Calendar Collections"
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:815
#: sql_constraint:basic.calendar.alias:0
#, python-format
msgid "The same filename cannot apply to two records!"
msgstr ""
#. module: caldav
#: sql_constraint:document.directory:0
msgid "Directory cannot be parent of itself!"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
#: field:document.directory,calendar_ids:0
#: model:ir.actions.act_window,name:caldav.action_caldav_form
#: model:ir.ui.menu,name:caldav.menu_caldav_directories
msgid "Calendars"
msgstr ""
#. module: caldav
#: field:basic.calendar,collection_id:0
msgid "Collection"
msgstr ""
#. module: caldav
#: field:basic.calendar,write_date:0
msgid "Write Date"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/caldav_browse.py:32
#, python-format
msgid ""
"\n"
" * Webdav server that provides remote access to calendar\n"
" * Synchronisation of calendar using WebDAV\n"
" * Customize calendar event and todo attribute with any of OpenERP model\n"
" * Provides iCal Import/Export functionality\n"
"\n"
" To access Calendars using CalDAV clients, point them to:\n"
" "
"http://HOSTNAME:PORT/webdav/DATABASE_NAME/calendars/users/USERNAME/c\n"
"\n"
" To access OpenERP Calendar using WebCal to remote site use the URL "
"like:\n"
" "
"http://HOSTNAME:PORT/webdav/DATABASE_NAME/Calendars/CALENDAR_NAME.ics\n"
"\n"
" Where,\n"
" HOSTNAME: Host on which OpenERP server(With webdav) is running\n"
" PORT : Port on which OpenERP server is running (By Default : 8069)\n"
" DATABASE_NAME: Name of database on which OpenERP Calendar is "
"created\n"
" "
msgstr ""
#. module: caldav
#: sql_constraint:document.directory:0
msgid "The directory name must be unique !"
msgstr ""
#. module: caldav
#: view:user.preference:0
msgid "User Preference"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
#, python-format
msgid "Please provide Proper URL !"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_timezone
msgid "basic.calendar.timezone"
msgstr ""
#. module: caldav
#: field:basic.calendar.fields,expr:0
msgid "Expression"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_attendee
msgid "basic.calendar.attendee"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_alias
msgid "basic.calendar.alias"
msgstr ""
#. module: caldav
#: view:calendar.event.import:0
#: field:calendar.event.import,file_path:0
msgid "Select ICS File"
msgstr ""
#. module: caldav
#: field:user.preference,device:0
msgid "Software/Devices"
msgstr "Програм /Төхөөрөмжүүд"
#. module: caldav
#: field:basic.calendar.lines,mapping_ids:0
msgid "Fields Mapping"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/caldav_browse.py:141
#, python-format
msgid ""
"\n"
"Prerequire\n"
"----------\n"
"If you are using thunderbird, first you need to install the lightning "
"module\n"
"http://www.mozilla.org/projects/calendar/lightning/\n"
"\n"
"configuration\n"
"-------------\n"
"\n"
"1. Go to Calendar View\n"
"\n"
"2. File -> New Calendar\n"
"\n"
"3. Chosse \"On the Network\"\n"
"\n"
"4. for format choose CalDav\n"
" and as location the url given above (ie : "
"http://host.com:8069/webdav/db/calendars/users/demo/c/Meetings)\n"
"\n"
"5. Choose a name and a color for the Calendar, and we advice you to uncheck "
"\"alarm\"\n"
"\n"
"6. Then put your openerp login and password (to give the password only check "
"the box \"Use password Manager to remember this password\"\n"
"\n"
"7. Then Finish, your meetings should appear now in your calendar view\n"
msgstr ""
#. module: caldav
#: view:caldav.browse:0
msgid "Browse Caldav"
msgstr ""
#. module: caldav
#: field:user.preference,host_name:0
msgid "Host Name"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar
msgid "basic.calendar"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
msgid "Other Info"
msgstr ""
#. module: caldav
#: selection:user.preference,device:0
msgid "Other"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
msgid "My Calendar(s)"
msgstr ""
#. module: caldav
#: help:basic.calendar,has_webcal:0
msgid ""
"Also export a <name>.ics entry next to the calendar folder, with WebCal "
"content."
msgstr ""
#. module: caldav
#: field:basic.calendar.fields,fn:0
msgid "Function"
msgstr ""
#. module: caldav
#: view:user.preference:0
msgid "database.my.openerp.com or companyserver.com"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
#: field:basic.calendar,description:0
#: view:caldav.browse:0
#: field:caldav.browse,description:0
msgid "Description"
msgstr ""
#. module: caldav
#: help:basic.calendar.alias,cal_line_id:0
msgid "The calendar/line this mapping applies to"
msgstr ""
#. module: caldav
#: field:basic.calendar.fields,mapping:0
msgid "Mapping"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/calendar_event_import.py:86
#, python-format
msgid "Import Sucessful"
msgstr ""
#. module: caldav
#: view:calendar.event.import:0
msgid "_Import"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_calendar_event_import
msgid "Event Import"
msgstr ""
#. module: caldav
#: selection:basic.calendar.fields,fn:0
msgid "Interval in hours"
msgstr ""
#. module: caldav
#: field:calendar.event.export,name:0
msgid "File name"
msgstr ""
#. module: caldav
#: view:calendar.event.subscribe:0
msgid "Subscribe to Remote Calendar"
msgstr ""
#. module: caldav
#: help:basic.calendar,calendar_color:0
msgid "For supporting clients, the color of the calendar entries"
msgstr ""
#. module: caldav
#: field:basic.calendar,name:0
#: field:basic.calendar.attributes,name:0
#: field:basic.calendar.fields,name:0
msgid "Name"
msgstr ""
#. module: caldav
#: selection:basic.calendar.attributes,type:0
#: selection:basic.calendar.lines,name:0
msgid "Alarm"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_alarm
msgid "basic.calendar.alarm"
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:1293
#, python-format
msgid "Attendee must have an Email Id"
msgstr ""
#. module: caldav
#: model:ir.actions.act_window,name:caldav.action_calendar_event_export_values
msgid "Export .ics File"
msgstr ""
#. module: caldav
#: code:addons/caldav/calendar.py:41
#, python-format
msgid "vobject Import Error!"
msgstr "vobject Импорт алдаа !"
#. module: caldav
#: field:calendar.event.export,file_path:0
msgid "Save ICS file"
msgstr "ICS файл хадгалах"
#. module: caldav
#: code:addons/caldav/wizard/caldav_browse.py:50
#, python-format
msgid ""
"\n"
" For SSL specific configuration see the documentation below\n"
"\n"
"Now, to setup the calendars, you need to:\n"
"\n"
"1. Click on the \"Settings\" and go to the \"Mail, Contacts, Calendars\" "
"page.\n"
"2. Go to \"Add account...\"\n"
"3. Click on \"Other\"\n"
"4. From the \"Calendars\" group, select \"Add CalDAV Account\"\n"
"\n"
"5. Enter the host's name\n"
" (ie : if the url is http://openerp.com:8069/webdav/db_1/calendars/ , "
"openerp.com is the host)\n"
"\n"
"6. Fill Username and password with your openerp login and password\n"
"\n"
"7. As a description, you can either leave the server's name or\n"
" something like \"OpenERP calendars\".\n"
"\n"
"9. If you are not using a SSL server, you'll get an error, do not worry and "
"push \"Continue\"\n"
"\n"
"10. Then click to \"Advanced Settings\" to specify the right\n"
" ports and paths.\n"
"\n"
"11. Specify the port for the OpenERP server: 8071 for SSL, 8069 without.\n"
"\n"
"12. Set the \"Account URL\" to the right path of the OpenERP webdav:\n"
" the url given by the wizard (ie : "
"http://my.server.ip:8069/webdav/dbname/calendars/ )\n"
"\n"
"11. Click on Done. The phone will hopefully connect to the OpenERP server\n"
" and verify it can use the account.\n"
"\n"
"12. Go to the main menu of the iPhone and enter the Calendar application.\n"
" Your OpenERP calendars will be visible inside the selection of the\n"
" \"Calendars\" button.\n"
" Note that when creating a new calendar entry, you will have to specify\n"
" which calendar it should be saved at.\n"
"\n"
"IF you need SSL (and your certificate is not a verified one, as usual),\n"
"then you first will need to let the iPhone trust that. Follow these\n"
"steps:\n"
"\n"
" s1. Open Safari and enter the https location of the OpenERP server:\n"
" https://my.server.ip:8071/\n"
" (assuming you have the server at \"my.server.ip\" and the HTTPS port\n"
" is the default 8071)\n"
" s2. Safari will try to connect and issue a warning about the "
"certificate\n"
" used. Inspect the certificate and click \"Accept\" so that iPhone\n"
" now trusts it.\n"
" "
msgstr ""
#. module: caldav
#: selection:user.preference,device:0
msgid "Sunbird/Thunderbird"
msgstr ""
#. module: caldav
#: field:basic.calendar,calendar_order:0
msgid "Order"
msgstr ""
#. module: caldav
#: code:addons/caldav/wizard/calendar_event_subscribe.py:59
#, python-format
msgid "Error!"
msgstr ""
#. module: caldav
#: field:basic.calendar,calendar_color:0
msgid "Color"
msgstr ""
#. module: caldav
#: view:basic.calendar:0
msgid "MY"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_fields
msgid "Calendar fields"
msgstr ""
#. module: caldav
#: view:calendar.event.import:0
msgid "Import Message"
msgstr "Импортын Мессеж"
#. module: caldav
#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe
#: model:ir.actions.act_window,name:caldav.action_calendar_event_subscribe_values
msgid "Subscribe"
msgstr ""
#. module: caldav
#: sql_constraint:document.directory:0
msgid "Directory must have a parent or a storage"
msgstr ""
#. module: caldav
#: model:ir.model,name:caldav.model_basic_calendar_todo
msgid "basic.calendar.todo"
msgstr ""
#. module: caldav
#: help:basic.calendar,calendar_order:0
msgid "For supporting clients, the order of this folder among the calendars"
msgstr ""
+296 -317
View File
@@ -41,7 +41,7 @@
<!--
CRM CASE STAGE
-->
-->
<!-- Stage Search view -->
<record id="crm_lead_stage_search" model="ir.ui.view">
@@ -77,7 +77,7 @@
<!--
LEADS/OPPORTUNITIES CATEGORIES
-->
-->
<!-- Categories Form View -->
<record id="crm_lead_categ_action" model="ir.actions.act_window">
@@ -89,7 +89,7 @@
<field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new sales tag.
Click to define a new sales tag.
</p><p>
Create specific tags that fit your company's activities
to better classify and analyse your leads and opportunities.
@@ -105,7 +105,7 @@
<!--
LEADS
-->
-->
<act_window
id="act_crm_opportunity_crm_phonecall_new"
name="Phone calls"
@@ -134,7 +134,7 @@
<header>
<button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
states="draft,open,pending" help="Convert to Opportunity" class="oe_highlight"/>
<button name="case_escalate" string="Escalate" type="object"
<button name="case_escalate" string="Escalate" type="object"
states="draft,open,pending"/>
<button name="case_reset" string="Reset" type="object"
states="cancel"/>
@@ -156,7 +156,7 @@
<group>
<group>
<field name="partner_name" string="Company Name"/>
<field name="partner_id" string="Customer"
<field name="partner_id" string="Customer"
on_change="on_change_partner(partner_id)" />
<label for="street" string="Address"/>
<div>
@@ -174,7 +174,7 @@
<label for="contact_name" />
<div>
<field name="contact_name" class="oe_inline"/>,
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline"/>
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" class="oe_inline" options='{"no_open": true}'/>
</div>
<field name="email_from" widget="email"/>
<field name="function" />
@@ -189,7 +189,7 @@
-->
</group>
<group>
<field name="user_id" />
<field name="user_id"/>
<field name="section_id"/>
<field name="type" invisible="1"/>
</group>
@@ -285,286 +285,265 @@
</field>
</record>
<!-- CRM Lead Kanban View -->
<record model="ir.ui.view" id="crm_case_kanban_view_leads">
<field name="name">CRM - Leads Kanban</field>
<field name="model">crm.lead</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<field name="state" groups="base.group_no_one"/>
<field name="color"/>
<field name="priority"/>
<field name="planned_revenue" sum="Expected Revenues"/>
<field name="user_email"/>
<field name="user_id"/>
<field name="partner_address_email"/>
<field name="message_summary"/>
<field name="needaction_pending"/>
<templates>
<t t-name="lead_details">
<ul class="oe_kanban_tooltip">
<li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
<li><b>Probability:</b> <field name="probability"/>%%</li>
<li><b>Creation date:</b> <field name="create_date"/></li>
<li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
</ul>
</t>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
<div class="oe_dropdown_toggle oe_dropdown_kanban">
<span class="oe_e">í</span>
<ul class="oe_dropdown_menu">
<li><a type="edit" >Edit...</a></li>
<li><a type="delete">Delete</a></li>
<li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
<li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
<li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
<!-- CRM Lead Kanban View -->
<record model="ir.ui.view" id="crm_case_kanban_view_leads">
<field name="name">CRM - Leads Kanban</field>
<field name="model">crm.lead</field>
<field name="type">kanban</field>
<field name="arch" type="xml">
<kanban default_group_by="stage_id">
<field name="state" groups="base.group_no_one"/>
<field name="color"/>
<field name="priority"/>
<field name="planned_revenue" sum="Expected Revenues"/>
<field name="user_email"/>
<field name="user_id"/>
<field name="partner_address_email"/>
<field name="message_summary"/>
<field name="needaction_pending"/>
<templates>
<t t-name="lead_details">
<ul class="oe_kanban_tooltip">
<li t-if="record.phone.raw_value"><b>Phone:</b> <field name="phone"/></li>
<li><b>Probability:</b> <field name="probability"/>%%</li>
<li><b>Creation date:</b> <field name="create_date"/></li>
<li t-if="record.date_deadline.raw_value"><b>Date Deadline:</b> <field name="date_deadline"/></li>
</ul>
</t>
<t t-name="kanban-box">
<div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_global_click">
<div class="oe_dropdown_toggle oe_dropdown_kanban">
<span class="oe_e">í</span>
<ul class="oe_dropdown_menu">
<li><a type="edit" >Edit...</a></li>
<li><a type="delete">Delete</a></li>
<li><a name="%(mail.action_email_compose_message_wizard)d" type="action">Send Email</a></li>
<li><a name="%(opportunity2phonecall_act)d" type="action">Log Call</a></li>
<li><a name="action_makeMeeting" type="object">Schedule Meeting</a></li>
<li><ul class="oe_kanban_colorpicker" data-field="color"/></li>
</ul>
</div>
<div class="oe_kanban_content">
<div>
<b><field name="name"/></b>
<t t-if="record.planned_revenue.raw_value">
- <b><t t-esc="Math.round(record.planned_revenue.value)"/>
<field name="company_currency"/></b>
</t>
</div>
<div>
<field name="partner_id"/>
</div>
<div style="padding-left: 0.5em">
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
<span t-attf-class="#{red || ''}"><field name="date_action"/></span>
<t t-if="record.date_action.raw_value"> : </t>
<field name="title_action"/>
</div>
<div class="oe_kanban_bottom_right">
<a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
<a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
</div>
<div class="oe_kanban_footer_left">
<t t-if="record.needaction_pending.raw_value"><span class="oe_kanban_mail_new">New</span></t>
<t t-raw="record.message_summary.raw_value"/>
</div>
</div>
<div class="oe_clear"></div>
</div>
<div class="oe_kanban_content">
<div>
<b><field name="name"/></b>
<t t-if="record.planned_revenue.raw_value">
- <b><t t-esc="Math.round(record.planned_revenue.value)"/>
<field name="company_currency"/></b>
</t>
</div>
<div>
<field name="partner_id"/>
</div>
<div style="padding-left: 0.5em">
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kanban_text_red</t>
<span t-attf-class="#{red || ''}"><field name="date_action"/></span>
<t t-if="record.date_action.raw_value"> : </t>
<field name="title_action"/>
</div>
<div class="oe_kanban_bottom_right">
<a t-if="record.priority.raw_value == 1" type="object" name="set_normal_priority" class="oe_e oe_star_on">7</a>
<a t-if="record.priority.raw_value != 1" type="object" name="set_high_priority" class="oe_e oe_star_off">7</a>
<!--
<t t-if="record.date_deadline.raw_value and record.date_deadline.raw_value lt (new Date())" t-set="red">oe_kaban_status_red</t>
<span t-attf-class="oe_kanban_status #{red}"> </span>
-->
<img t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value[0])" t-att-title="record.user_id.value" width="24" height="24" class="oe_kanban_avatar"/>
</div>
<div class="oe_kanban_footer_left">
<t t-if="record.needaction_pending.raw_value"><span class="oe_kanban_mail_new">New</span></t>
<t t-raw="record.message_summary.raw_value"/>
</div>
</div>
<div class="oe_clear"></div>
</div>
<!--
<div class="oe_kanban_right">
<a name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" icon="kanban-stop" />
<a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause" />
<a name="case_open" string="Open" states="pending" type="object" icon="gtk-media-play" />
<a name="case_mark_won" string="Mark Won" states="open,pending" type="object" icon="kanban-apply" />
</div>
-->
</t>
</templates>
</kanban>
</field>
</record>
</t>
</templates>
</kanban>
</field>
</record>
<!-- CRM Lead Search View -->
<record id="view_crm_case_leads_filter" model="ir.ui.view">
<field name="name">CRM - Leads Search</field>
<field name="model">crm.lead</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leads">
<field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]" />
<!-- subjects is not set as store=True so, it is placed outside filter_domain-->
<field name="subjects"/>
<field name="create_date"/>
<filter icon="terp-mail-message-new" string="Inbox" help="Unread messages" name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
<separator/>
<filter icon="terp-check" string="New" name="new" help="New Leads" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="Open" name="open" domain="[('state','=','open')]"/>
<separator/>
<filter string="Unassigned Leads" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Leads" />
<separator/>
<filter string="Leads Assigned to Me or My Team(s)" icon="terp-personal+" context="{'invisible_section': False}"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="Leads that are assigned to one of the sale teams I manage, or to me"/>
<field name="user_id"/>
<field name="section_id" context="{'invisible_section': False}"/>
<field name="country_id" context="{'invisible_country': False}"/>
<group expand="0" string="Group By...">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}" />
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
<separator orientation="vertical"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Creation" help="Create date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
</group>
<group string="Display">
<filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
</group>
</search>
</field>
</record>
<!-- CRM Lead Search View -->
<record id="view_crm_case_leads_filter" model="ir.ui.view">
<field name="name">CRM - Leads Search</field>
<field name="model">crm.lead</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leads">
<field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]" />
<!-- subjects is not set as store=True so, it is placed outside filter_domain-->
<field name="subjects"/>
<field name="create_date"/>
<filter icon="terp-mail-message-new" string="Inbox" help="Unread messages" name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
<separator/>
<filter icon="terp-check" string="New" name="new" help="New Leads" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="Open" name="open" domain="[('state','=','open')]"/>
<separator/>
<filter string="Unassigned Leads" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Leads" />
<separator/>
<filter string="Leads Assigned to Me or My Team(s)" icon="terp-personal+" context="{'invisible_section': False}"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="Leads that are assigned to one of the sale teams I manage, or to me"/>
<field name="user_id"/>
<field name="section_id" context="{'invisible_section': False}"/>
<field name="country_id" context="{'invisible_country': False}"/>
<group expand="0" string="Group By...">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Referrer" icon="terp-personal" domain="[]" context="{'group_by':'referred'}"/>
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}" />
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
<separator orientation="vertical"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Creation" help="Create date" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
</group>
<group string="Display">
<filter string="Show Countries" icon="terp-personal+" context="{'invisible_country': False}" help="Show Countries"/>
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
</group>
</search>
</field>
</record>
<!--
OPPORTUNITY
<!--
OPPORTUNITY
-->
<!-- Opportunities Form View -->
<record model="ir.ui.view" id="crm_case_form_view_oppor">
<field name="name">Opportunities</field>
<field name="model">crm.lead</field>
<field name="type">form</field>
<field name="priority">20</field>
<field name="arch" type="xml">
<form string="Opportunities" version="7.0">
<header>
<button name="case_mark_won" string="Mark Won" type="object"
states="open" class="oe_highlight"/>
<button name="case_mark_won" string="Mark Won" type="object"
states="draft,pending"/>
<button name="case_escalate" string="Escalate" type="object"
states="open" />
<button name="case_mark_lost" string="Mark Lost" type="object"
states="draft,open"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft"/>
<field name="stage_id" widget="statusbar" clickable="True"/>
</header>
<sheet>
<div class="oe_right oe_button_box">
<button string="Schedule/Log Call"
name="%(opportunity2phonecall_act)d"
type="action"/>
<button string="Meeting"
name="action_makeMeeting"
type="object"
context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"
/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<label for="planned_revenue" class="oe_edit_only"/>
<h2>
<field name="planned_revenue" class="oe_inline"/>
<field name="company_currency" class="oe_inline"/> at
<field name="probability" class="oe_inline" widget="integer"/>%% success rate
</h2>
</div>
<group>
<group>
<field name="partner_id"
on_change="onchange_partner_id(partner_id, email_from)"
string="Customer"
context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
<field name="email_from" string="Email"/>
<field name="phone"/>
</group>
<group>
<label for="title_action"/>
<div>
<field name="date_action" nolabel="1"/> <label string="-" attrs="{'invisible': ['|', ('date_action', '=', False), ('title_action', '=', False)]}"/>
<field name="title_action" class="oe_inline" nolabel="1" placeholder="e.g. Call for proposal"/>
</div>
<field name="date_deadline"/>
<field name="priority"/>
</group>
<group>
<field name="user_id"/>
<field name="section_id" colspan="1" widget="selection"/>
</group>
<group>
<field name="categ_ids"
string="Categories" widget="many2many_tags"
domain="[('object_id.model', '=', 'crm.lead')]"/>
</group>
</group>
<!--<button string="Mail"
name="%(mail.action_email_compose_message_wizard)d"
context="{'mail':'new', 'model': 'crm.lead'}"
icon="terp-mail-message-new" type="action" />-->
<notebook colspan="4">
<page string="Internal Notes">
<field name="description"/>
</page>
<page string="Lead">
<!-- Opportunities Form View -->
<record model="ir.ui.view" id="crm_case_form_view_oppor">
<field name="name">Opportunities</field>
<field name="model">crm.lead</field>
<field name="type">form</field>
<field name="priority">20</field>
<field name="arch" type="xml">
<form string="Opportunities" version="7.0">
<header>
<button name="case_mark_won" string="Mark Won" type="object"
states="draft,open,pending" class="oe_highlight"/>
<button name="case_mark_lost" string="Mark Lost" type="object"
states="draft,open" class="oe_highlight"/>
<button name="case_escalate" string="Escalate" type="object"
states="open" />
<field name="stage_id" widget="statusbar" clickable="True"/>
</header>
<sheet>
<div class="oe_right oe_button_box">
<button string="Schedule/Log Call"
name="%(opportunity2phonecall_act)d"
type="action"/>
<button string="Meeting"
name="action_makeMeeting"
type="object"
context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"
/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
<h1><field name="name"/></h1>
<label for="planned_revenue" class="oe_edit_only"/>
<h2>
<field name="planned_revenue" class="oe_inline"/>
<field name="company_currency" class="oe_inline"/> at
<field name="probability" class="oe_inline" widget="integer"/>%% success rate
</h2>
</div>
<group>
<group>
<field name="partner_name"/>
<label for="street" string="Address"/>
<field name="partner_id"
on_change="onchange_partner_id(partner_id, email_from)"
string="Customer"
context="{'default_name': partner_name, 'default_email': email_from, 'default_phone': phone}"/>
<field name="email_from" string="Email"/>
<field name="phone"/>
</group>
<group>
<label for="title_action"/>
<div>
<field name="street" placeholder="Street..."/>
<field name="street2"/>
<div class="address_format">
<field name="city" placeholder="City" style="width: 40%%"/>
<field name="state_id" options='{"no_open": true}' placeholder="State" style="width: 24%%"/>
<field name="zip" placeholder="ZIP" style="width: 34%%"/>
<field name="date_action" nolabel="1"/> <label string="-" attrs="{'invisible': ['|', ('date_action', '=', False), ('title_action', '=', False)]}"/>
<field name="title_action" class="oe_inline" nolabel="1" placeholder="e.g. Call for proposal"/>
</div>
<field name="date_deadline"/>
<field name="priority"/>
</group>
<group>
<field name="user_id"/>
<field name="section_id" colspan="1" widget="selection"/>
</group>
<group>
<field name="categ_ids"
string="Categories" widget="many2many_tags"
domain="[('object_id.model', '=', 'crm.lead')]"/>
</group>
</group>
<notebook colspan="4">
<page string="Internal Notes">
<field name="description"/>
</page>
<page string="Lead">
<group>
<group>
<field name="partner_name"/>
<label for="street" string="Address"/>
<div>
<field name="street" placeholder="Street..."/>
<field name="street2"/>
<div class="address_format">
<field name="city" placeholder="City" style="width: 40%%"/>
<field name="state_id" options='{"no_open": true}' placeholder="State" style="width: 24%%"/>
<field name="zip" placeholder="ZIP" style="width: 34%%"/>
</div>
<field name="country_id" placeholder="Country" options='{"no_open": true}'/>
</div>
<field name="country_id" placeholder="Country" options='{"no_open": true}'/>
</div>
</group>
</group>
<group>
<label for="contact_name" />
<div>
<field name="contact_name" class="oe_inline"/>
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" options='{"no_open": true}' class="oe_inline"/>
</div>
<field name="function" />
<field name="mobile"/>
<field name="fax"/>
</group>
<group string="Categorization">
<field name="type_id" widget="selection"/>
<field name="channel_id" widget="selection"/>
</group>
<group string="Mailings">
<field name="opt_out" />
</group>
<group string="Misc">
<field name="active"/>
<field name="day_open" groups="base.group_no_one"/>
<field name="day_close" groups="base.group_no_one"/>
<field name="referred"/>
<field name="state" groups="base.group_no_one"/>
<field name="type" invisible="1"/>
</group>
<group string="References">
<field name="ref"/>
<field name="ref2"/>
</group>
</group>
</page>
<page string="Fund Raising" groups="crm.group_fund_raising">
<group>
<label for="contact_name" />
<div>
<field name="contact_name" class="oe_inline"/>
<field name="title" placeholder="Title" domain="[('domain', '=', 'contact')]" options='{"no_open": true}' class="oe_inline"/>
</div>
<field name="function" />
<field name="mobile"/>
<field name="fax"/>
<field name="payment_mode" widget="selection"/>
<field name="planned_cost"/>
</group>
<group string="Categorization">
<field name="type_id" widget="selection"/>
<field name="channel_id" widget="selection"/>
</group>
<group string="Mailings">
<field name="opt_out" />
</group>
<group string="Misc">
<field name="active"/>
<field name="day_open" groups="base.group_no_one"/>
<field name="day_close" groups="base.group_no_one"/>
<field name="referred"/>
<field name="state" groups="base.group_no_one"/>
<field name="type" invisible="1"/>
</group>
<group string="References">
<field name="ref"/>
<field name="ref2"/>
</group>
</group>
</page>
<page string="Fund Raising" groups="crm.group_fund_raising">
<group>
<field name="payment_mode" widget="selection"/>
<field name="planned_cost"/>
</group>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
</page>
</notebook>
</sheet>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
</div>
</form>
</field>
</record>
<!-- Opportunities Tree View -->
<record model="ir.ui.view" id="crm_case_tree_view_oppor">
@@ -596,48 +575,48 @@
</record>
<!-- Opportunities Search View -->
<record id="view_crm_case_opportunities_filter" model="ir.ui.view">
<field name="name">CRM - Opportunities Search</field>
<field name="model">crm.lead</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<field name="name" string="Opportunity / Customer"
filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]" />
<filter icon="terp-mail-message-new" string="Inbox" help="Unread messages" name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
<separator/>
<filter icon="terp-check" string="New" help="New Opportunities" name="new" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="Open" help="Open Opportunities" name="open" domain="[('state','=','open')]"/>
<separator/>
<filter string="Unassigned Opportunities" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Opportunities" />
<separator/>
<filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
help="Opportunities that are assigned to either me or one of the sale teams I manage" />
<field name="user_id"/>
<field name="country_id"/>
<field name="partner_id"/>
<field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/>
<group expand="0" string="Group By..." colspan="16">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
</group>
<group string="Display">
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
</group>
</search>
</field>
</record>
<!-- Opportunities Search View -->
<record id="view_crm_case_opportunities_filter" model="ir.ui.view">
<field name="name">CRM - Opportunities Search</field>
<field name="model">crm.lead</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<field name="name" string="Opportunity / Customer"
filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/>
<field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]" />
<filter icon="terp-mail-message-new" string="Inbox" help="Unread messages" name="needaction_pending" domain="[('needaction_pending','=',True)]"/>
<separator/>
<filter icon="terp-check" string="New" help="New Opportunities" name="new" domain="[('state','=','draft')]"/>
<filter icon="terp-camera_test" string="Open" help="Open Opportunities" name="open" domain="[('state','=','open')]"/>
<separator/>
<filter string="Unassigned Opportunities" icon="terp-personal-" domain="[('user_id','=', False)]" help="Unassigned Opportunities" />
<separator/>
<filter string="Opportunities Assigned to Me or My Team(s)" icon="terp-personal+"
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]" context="{'invisible_section': False}"
help="Opportunities that are assigned to either me or one of the sale teams I manage" />
<field name="user_id"/>
<field name="country_id"/>
<field name="partner_id"/>
<field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/>
<group expand="0" string="Group By..." colspan="16">
<filter string="Salesperson" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Customer" help="Partner" icon="terp-personal+" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
<filter string="Campaign" icon="terp-gtk-jump-to-rtl" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Channel" icon="terp-call-start" domain="[]" context="{'group_by':'channel_id'}" />
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
<filter string="Creation" icon="terp-go-month" domain="[]" context="{'group_by':'create_date'}" groups="base.group_no_one"/>
<filter string="Exp.Closing" icon="terp-go-month" help="Expected Closing" domain="[]" context="{'group_by':'date_deadline'}" />
</group>
<group string="Display">
<filter string="Show Sales Team" icon="terp-personal+" context="{'invisible_section': False}" domain="[]" help="Show Sales Team"/>
</group>
</search>
</field>
</record>
</data>
</openerp>
+25 -25
View File
@@ -14,9 +14,9 @@
<record id="action_crm_phonecall_unread" model="ir.values">
<field name="name">action_crm_phonecall_unread</field>
<field name="action_id" ref="actions_server_crm_phonecall_unread"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_unread'))" />
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_unread'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_phonecall" />
<field name="model_id" ref="model_crm_phonecall"/>
<field name="model">crm.phonecall</field>
<field name="key2">client_action_multi</field>
</record>
@@ -32,9 +32,9 @@
<record id="action_crm_phonecall_read" model="ir.values">
<field name="name">action_crm_phonecall_read</field>
<field name="action_id" ref="actions_server_crm_phonecall_read"/>
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_read'))" />
<field name="value" eval="'ir.actions.server,' + str(ref('actions_server_crm_phonecall_read'))"/>
<field name="key">action</field>
<field name="model_id" ref="model_crm_phonecall" />
<field name="model_id" ref="model_crm_phonecall"/>
<field name="model">crm.phonecall</field>
<field name="key2">client_action_multi</field>
</record>
@@ -82,10 +82,10 @@
name="%(phonecall2opportunity_act)d"
states="open,pending"
icon="gtk-index"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
<button string="Meeting"
states="open,pending" icon="gtk-redo"
name="action_make_meeting" type="object" />
name="action_make_meeting" type="object"/>
<field name="state"/>
<button name="case_open" string="Confirm" type="object"
states="draft,pending" icon="gtk-go-forward"/>
@@ -115,14 +115,14 @@
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
type="action"
attrs="{'invisible':[ '|', ('opportunity_id','!=',False), ('state','!=', 'open')]}" />
attrs="{'invisible':[ '|', ('opportunity_id','!=',False), ('state','!=', 'open')]}"/>
<button string="Convert to Opportunity" class="oe_highlight"
name="%(phonecall2opportunity_act)d"
type="action"
attrs="{'invisible':[ '|', ('opportunity_id','!=',False), ('state','!=', 'done')]}" />
attrs="{'invisible':[ '|', ('opportunity_id','!=',False), ('state','!=', 'done')]}"/>
<button string="Schedule Other Call"
name="%(phonecall_to_phonecall_act)d"
type="action" />
type="action"/>
<button string="Schedule a Meeting" name="action_make_meeting" type="object"/>
<button name="case_cancel" string="Cancel" type="object"
states="draft,open,pending"/>
@@ -131,28 +131,28 @@
<sheet string="Phone Call">
<div class="oe_title">
<div class="oe_edit_only">
<label for="name" string="Title"/>
<label for="name" string="Title"/>
</div>
<h1><field name="name" required="1"/></h1>
<div class="oe_edit_only">
<label for="partner_phone" string="Phone" />
<label for="partner_phone" string="Phone"/>
</div>
<h2><field name="partner_phone"/></h2>
</div>
<group col="4">
<field name="date" />
<field name="user_id" />
<field name="duration" widget="float_time" />
<field name="section_id" colspan="1" widget="selection" />
<field name="date"/>
<field name="user_id"/>
<field name="duration" widget="float_time"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="partner_id" on_change="onchange_partner_id(partner_id)"/>
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<field name="partner_mobile" />
<field name="partner_mobile"/>
<field name="priority"/>
<field name="opportunity_id"/>
</group>
<field name="description" placeholder="Description..." />
<field name="description" placeholder="Description..."/>
</sheet>
<div class="oe_chatter">
<field name="message_ids" widget="mail_thread"/>
@@ -186,15 +186,15 @@
<button string="Schedule Other Call"
icon="terp-call-start"
name="%(phonecall_to_phonecall_act)d"
type="action" />
type="action"/>
<button string="Meeting"
icon="gtk-redo"
name="action_make_meeting" type="object" />
name="action_make_meeting" type="object"/>
<button string="Convert to Opportunity"
name="%(phonecall2opportunity_act)d"
states="open,pending"
icon="gtk-index"
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}" />
type="action" attrs="{'invisible':[('opportunity_id','!=',False)]}"/>
</tree>
</field>
</record>
@@ -230,15 +230,15 @@
<filter string="Unassigned Phonecalls" icon="terp-personal-" domain="[('user_id','=',False)]" help="Unassigned Phonecalls"/>
<separator/>
<filter string="Phone Calls Assigned to Me or My Team(s)" icon="terp-personal+" domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
help="Phone Calls that are assigned to me or to my team(s)" />
help="Phone Calls that are assigned to me or to my team(s)"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id" string="Sales Team"/>
<group expand="0" string="Group By...">
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}" />
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}" />
<filter string="Creation" icon="terp-go-month" help="Creation Date" domain="[]" context="{'group_by':'create_date'}" />
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" help="Date of Call" />
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Creation" icon="terp-go-month" help="Creation Date" domain="[]" context="{'group_by':'create_date'}"/>
<filter string="Date" icon="terp-go-month" domain="[]" context="{'group_by':'date'}" help="Date of Call"/>
</group>
</search>
</field>
+10 -9
View File
@@ -7,14 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2011-01-23 16:46+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n"
"PO-Revision-Date: 2012-08-10 16:25+0000\n"
"Last-Translator: Leonardo Pistone - Agile BG - Domsense "
"<leonardo.pistone@domsense.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-07 04:58+0000\n"
"X-Generator: Launchpad (build 15745)\n"
"X-Launchpad-Export-Date: 2012-08-11 05:45+0000\n"
"X-Generator: Launchpad (build 15780)\n"
#. module: crm
#: view:crm.lead.report:0
@@ -213,7 +214,7 @@ msgstr "Telefonata"
#. module: crm
#: field:crm.lead,optout:0
msgid "Opt-Out"
msgstr "Opz-out"
msgstr "Opt-Out"
#. module: crm
#: field:crm.meeting,end_type:0
@@ -308,8 +309,8 @@ msgid ""
"If opt-out is checked, this contact has refused to receive emails or "
"unsubscribed to a campaign."
msgstr ""
"Se il campo opt.out è selezionato allora il conttatto ha rifiutato di "
"ricevere email o si è cancellato da una campagna."
"L'Opt-Out indica che il contatto ha rifiutato di ricevere email o si è "
"disiscritto da una campagna."
#. module: crm
#: model:process.transition,name:crm.process_transition_leadpartner0
@@ -984,7 +985,7 @@ msgstr "Riferimento"
#. module: crm
#: field:crm.lead,optin:0
msgid "Opt-In"
msgstr "Opz-in"
msgstr "Opt-In"
#. module: crm
#: code:addons/crm/crm_lead.py:814 code:addons/crm/crm_phonecall.py:296
@@ -2184,7 +2185,7 @@ msgstr ""
#. module: crm
#: help:crm.lead,optin:0
msgid "If opt-in is checked, this contact has accepted to receive emails."
msgstr "Se opz-in è spuntato, il contatto ha accettato di ricevere email."
msgstr "L'Opt-In indica che il contatto ha accettato di ricevere email."
#. module: crm
#: view:crm.meeting:0
-3
View File
@@ -38,9 +38,6 @@ class crm_configuration(osv.osv_memory):
'module_import_google': fields.boolean("Google (Contacts and Calendar)",
help="""Import google contact in partner address and add google calendar events details in Meeting.
This installs the module import_google."""),
'module_wiki_sale_faq': fields.boolean("share information with sales FAQ",
help="""This provides demo data, thereby creating a Wiki Group and a Wiki Page for Wiki Sale FAQ.
This installs the module wiki_sale_faq."""),
'module_google_map': fields.boolean("add google maps on customer",
help="""Locate customers on Google Map.
This installs the module google_map."""),
-6
View File
@@ -39,12 +39,6 @@
<label for="module_google_map"/>
</div>
</div>
<div name="Sale Features" position="inside">
<div>
<field name="module_wiki_sale_faq"/>
<label for="module_wiki_sale_faq"/>
</div>
</div>
</field>
</record>
@@ -1,5 +1,7 @@
<?xml version="1.0"?>
<openerp>
<data>
<record id="view_crm_lead2opportunity_partner" model="ir.ui.view">
<field name="name">crm.lead2opportunity.partner.form</field>
<field name="model">crm.lead2opportunity.partner</field>
@@ -16,20 +18,20 @@
<separator string="Select Opportunities" attrs="{'invisible': [('name', '=', 'convert')]}"/>
<field name="opportunity_ids" attrs="{'invisible': [('name', '=', 'convert')]}">
<tree>
<field name="name" />
<field name="partner_id" />
<field name="user_id" />
<field name="section_id" />
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id"/>
</tree>
</field>
<footer>
<button name="action_apply" string="Create Opportunity" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
</record>
<record id="view_crm_lead2opportunity_partner_mass" model="ir.ui.view">
<field name="name">crm.lead2opportunity.partner.mass.form</field>
@@ -40,18 +42,18 @@
<field name="action"/>
<field name="name" colspan="4"/>
<group string="Assigned Opportunities to">
<field name="section_id" />
<field name="section_id"/>
</group>
<separator string="Select Salesman"/>
<field name="user_ids">
<tree>
<field name="name" />
<field name="name"/>
</tree>
</field>
<footer>
<button name="mass_convert" string="Convert into Opportunities" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
@@ -65,13 +67,13 @@
<field name="view_id" ref="view_crm_lead2opportunity_partner"/>
<field name="target">new</field>
</record>
<act_window id="action_crm_send_mass_convert"
<act_window id="action_crm_send_mass_convert"
multi="True"
key2="client_action_multi" name="Convert opportunities"
res_model="crm.lead2opportunity.partner.mass" src_model="crm.lead"
view_mode="form" target="new" view_type="form"
context="{'mass_convert' : True}"
view_id="view_crm_lead2opportunity_partner_mass"/>
view_id="view_crm_lead2opportunity_partner_mass"/>
</data>
</openerp>
@@ -13,16 +13,16 @@
<separator string="Select Opportunities"/>
<field name="opportunity_ids">
<tree>
<field name="name" />
<field name="partner_id" />
<field name="user_id" />
<field name="section_id" />
<field name="name"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="section_id"/>
</tree>
</field>
<footer>
<button name="action_merge" type="object" string="_Merge" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
@@ -43,7 +43,7 @@
multi="True"
key2="client_action_multi" name="Merge Opportunities"
res_model="crm.merge.opportunity" src_model="crm.lead"
view_mode="form" target="new" view_type="form" />
view_mode="form" target="new" view_type="form"/>
</data>
</openerp>
@@ -15,7 +15,7 @@
<field name="name"/>
<field name="date" string="Planned Date" attrs="{'invisible': [('action','=','log')]}"/>
<field name="partner_id" readonly="True"/>
<field name="user_id" />
<field name="user_id"/>
<field name="section_id"/>
</group>
<footer>
@@ -2,27 +2,26 @@
<openerp>
<data>
<record model="ir.ui.view" id="crm_lead_forward_to_partner_form">
<field name="name">crm_lead_forward_to_partner</field>
<field name="model">crm.lead.forward.to.partner</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Send Mail" version="7.0">
<separator string="Forward to Partner" colspan="4" />
<separator string="Forward to Partner" colspan="4"/>
<group col="4" colspan="6">
<field name="history" colspan="2" on_change="on_change_history(history, context)"/>
<field name="send_to" colspan="2" />
<field name="send_to" colspan="2"/>
<group col="2" colspan="2" attrs="{ 'invisible' : [('send_to','!=','user')]}">
<field name="user_id"
attrs="{ 'required' : [('send_to','=','user')]}"
on_change="on_change_email(user_id)" />
on_change="on_change_email(user_id)"/>
</group>
<group col="4" colspan="4" attrs="{'invisible' : [('send_to','!=','partner')]}">
<field name="partner_id" attrs="{'required' : [('send_to','=','partner')]}" on_change="on_change_partner(partner_id)" colspan="2" />
<field name="partner_id" attrs="{'required' : [('send_to','=','partner')]}" on_change="on_change_partner(partner_id)" colspan="2"/>
</group>
</group>
<separator string="" colspan="4" />
<separator string="" colspan="4"/>
<group col="6" colspan="4">
<field name="email_from" colspan="4" required="1"/>
<field name="email_to" colspan="4" required="1"/>
@@ -44,7 +43,7 @@
<footer>
<button name="action_forward" string="Send" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
@@ -60,7 +59,7 @@
</record>
<act_window id="action_crm_send_mass_forward"
multi="True"
key2="client_action_multi" name="Mass forward to partner"
@@ -68,7 +67,7 @@
view_mode="form" target="new" view_type="form"
context="{'mail.compose.message.mode' : 'mass_mail'}"
view_id="crm_lead_forward_to_partner_form"
/>
/>
+1
View File
@@ -1,3 +1,4 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem name="Document Management" id="menu_document_management_configuration" parent="knowledge.menu_document_configuration" sequence="1"/>
@@ -19,7 +19,7 @@
#
##############################################################################
import wiki
import document_page
import wizard
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -20,38 +20,41 @@
##############################################################################
{
'name': 'Wiki',
'name': 'Document Page',
'version': '1.0.1',
'category': 'Knowledge Management',
'description': """
The base module to manage documents(wiki).
==========================================
Keep track of Wiki groups, pages, and history.
Pages
=====
Web pages
""",
'author': ['OpenERP SA', 'Axelor'],
'website': 'http://openerp.com',
'author': ['OpenERP SA'],
'website': 'http://www.openerp.com/',
'depends': ['knowledge'],
'web_depends': ['widget_wiki'],
'init_xml': [],
'update_xml': [
'wizard/wiki_wiki_page_open_view.xml',
'wizard/wiki_create_menu_view.xml',
'wizard/wiki_make_index_view.xml',
'wizard/wiki_show_diff_view.xml',
'wiki_view.xml',
'data/wiki_quickstart.xml',
'data/wiki_main.xml',
'security/wiki_security.xml',
'security/ir.model.access.csv'
'wizard/document_page_create_menu_view.xml',
'wizard/document_page_show_diff_view.xml',
'document_page_view.xml',
'security/document_page_security.xml',
'security/ir.model.access.csv',
],
'demo_xml': [
'document_page_demo.xml'
],
'test': [
'test/document_page_test00.yml'
],
'demo_xml': ['wiki_demo.xml'],
'test': ['test/wiki_test00.yml'],
'installable': True,
'auto_install': False,
'certificate': '0086363630317',
'web': True,
'images': ['images/create_index.jpeg','images/page_history.jpeg','images/wiki_groups.jpeg','images/wiki_pages.jpeg'],
'js': ['static/src/lib/wiky/wiky.js', 'static/src/js/wiki.js'],
'images': [],
'js': [
'static/src/lib/wiky/wiky.js',
'static/src/js/document_page.js'
],
'css' : [
"static/src/css/document_page.css"
],
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+131
View File
@@ -0,0 +1,131 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# 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 osv import fields, osv
from tools.translate import _
import difflib
import tools
class document_page(osv.osv):
_name = "document.page"
_description = "Document Page"
_order = 'name'
def _get_page_index(self, cr, uid, page):
index = []
for subpage in page.child_ids:
index += ["<li>"+ self._get_page_index(cr, uid, subpage) +"</li>"]
r = '<a href="#id=%s">%s</a>'%(page.id,page.name)
if index:
r += "<ul>" + "".join(index) + "</ul>"
return r
def _get_display_content(self, cr, uid, ids, name, args, context=None):
res = {}
for page in self.browse(cr, uid, ids, context=context):
if page.type == "category":
content = self._get_page_index(cr, uid, page)
else:
content = page.content
res[page.id] = content
return res
_columns = {
'name': fields.char('Title', required=True),
'type':fields.selection([('content','Content'), ('category','Category')], 'Type', help="Page type"),
'parent_id': fields.many2one('document.page', 'Category', domain=[('type','=','category')]),
'child_ids': fields.one2many('document.page', 'parent_id', 'Children'),
'content': fields.text("Content"),
'display_content': fields.function(_get_display_content, string='Displayed Content', type='text'),
'history_ids': fields.one2many('document.page.history', 'page_id', 'History'),
'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True),
'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("Modification Date", select=True, readonly=True),
'write_uid': fields.many2one('res.users', "Last Contributor", select=True),
}
_defaults = {
'type':'content',
}
def onchange_parent_id(self, cr, uid, ids, parent_id, content, context=None):
res = {}
if parent_id and not content:
parent = self.browse(cr, uid, parent_id, context=context)
if parent.type == "category":
res['value'] = {
'content': parent.content,
}
return res
def create_history(self, cr, uid, ids, vals, context=None):
for i in ids:
history = self.pool.get('document.page.history')
if vals.get('content'):
res = {
'content': vals.get('content', ''),
'page_id': i,
}
history.create(cr, uid, res)
def create(self, cr, uid, vals, context=None):
page_id = super(document_page, self).create(cr, uid, vals, context)
self.create_history(cr, uid, [page_id], vals, context)
return page_id
def write(self, cr, uid, ids, vals, context=None):
result = super(document_page, self).write(cr, uid, ids, vals, context)
self.create_history(cr, uid, ids, vals, context)
return result
class document_page_history(osv.osv):
_name = "document.page.history"
_description = "Document Page History"
_order = 'id DESC'
_rec_name = "create_date"
_columns = {
'page_id': fields.many2one('document.page', 'Page'),
'summary': fields.char('Summary', size=256, select=True),
'content': fields.text("Content"),
'create_date': fields.datetime("Date"),
'create_uid': fields.many2one('res.users', "Modified By"),
}
def getDiff(self, cr, uid, v1, v2, context=None):
history_pool = self.pool.get('document.page.history')
text1 = history_pool.read(cr, uid, [v1], ['content'])[0]['content']
text2 = history_pool.read(cr, uid, [v2], ['content'])[0]['content']
line1 = line2 = ''
if text1:
line1 = tools.ustr(text1.splitlines(1))
if text2:
line2=tools.ustr(text2.splitlines(1))
if (not line1 and not line2) or (line1 == line2):
raise osv.except_osv(_('Warning!'), _('There are no changes in revisions.'))
diff = difflib.HtmlDiff()
return diff.make_file(line1, line2, "Revision-%s" % (v1), "Revision-%s" % (v2), context=False)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data noupdate="1">
<record id="wiki_wiki_main" model="document.page">
<field name="name">The OpenERP wiki</field>
<field name="tags">help, quick start, wiki, formatting</field>
<field name="minor_edit">0</field>
<field name="index">1</field>
<field name="summary">Initial Page</field>
<field name="content">==The OpenERP wiki==
[[File:http://www.openerp.com/sites/all/themes/openerp/logo.png OpenERP]]
The OpenERP wiki allows you to manage your enterprise's contents using wiki
restructured texts. This module provides a collaborative way to manage internal
FAQs, quality manuals, technical references, etc.
==Keypoints==
* Same formating style than MediaWiki,
* Any number of wiki group for different purposes,
* Detailed history on all pages,
* Integrated with the document management system.
==Why you should use the OpenERP integrated wiki than a separate wiki system ?==
* Allows links to any document of the system,
* Uses the access controls of OpenERP for uniq access rights management,
* Use it to describe projects, tasks, products,
* Integrated with customer portal to provide restricted external accesses,
* Linked to users processes for quality manuals.
==To get more information==
* [[Basic Wiki Editing]]
* [[Wiki Documentation]]
* [http://openerp.com The OpenERP website]
</field>
<field name="parent_id" ref="wiki_groups_wikiformatting0"/>
</record>
</data>
</openerp>
+123
View File
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data noupdate="1">
<record id="base.user_demo" model="res.users">
<field eval="[(4, ref('base.group_sale_salesman')),(4, ref('base.group_document_user'))]" name="groups_id"/>
</record>
<record id="demo_category1" model="document.page">
<field name="name">OpenERP Features</field>
<field name="sequence">10</field>
<field name="type">category</field>
<field name="content">
Summary of the feature
Long explanation
Conclusion
Additional ressources
</field>
</record>
<record id="demo_page1" model="document.page">
<field name="name">OpenERP 6.1. Functional Demo</field>
<field name="parent_id" ref="demo_category1"/>
<field name="content">
The news is out, OpenERP's latest version 6.1. is here. It's more
user-friendly, even more business oriented and efficient to manage your company
How to discover the latest version 6.1.?
Demo : [http://demo.openerp.com]
Online: [http://openerp.com/online]
Download: [http://openerp.com/downloads]
We have also put together a functional demo that presents 6.1. Watch this video
to learn directly from us what OpenERP 6.1. can do for you. Share it in your
company, with your clients and implement it now for your business.
==Watch on Youtube!==
[[Video:http://www.youtube.com/embed/7jES2jxKMso ]]
</field>
</record>
<record id="demo_page2" model="document.page">
<field name="name">Personalise Dashboards</field>
<field name="parent_id" ref="demo_category1"/>
<field name="content">
You like OpenERP, but feel like you want to personalise it more? Now, OpenERP
goes a step further and lets you customize your dashboard. Thanks to a new
feature that allows you to customize your dashboard by adding new boards of any
search view.
==How is it done?==
Step 1: access one search view
Step 2: apply the filter you want to see at each connection to the application
(eg. on sales, manufacturing, etc)
Step 3: add it into the dashboard in the same space where you can save the filter
Step 4: choose the application you want it visible on and the name of the array
Look at this simple example below from Purchase, where I want to put on the
application's dashboard "Purchases to Approve". After I access the search view
and apply the filter for "Purchases to Approve", I can add it immediately to my
Purchase dashboard.
[[File:http://www.openerp.com/sites/default/files/fileattach/dashboard2_1(1).png ]]
In less than a minute, the search view is visible on the dashboard
[[File:http://www.openerp.com/sites/default/files/fileattach/dashboard2_2.png ]]
Of course, you are free to delete what you don't need or like, but just in case
you change your mind there is a reset button to return to the default view.
</field>
</record>
<record id="demo_page3" model="document.page">
<field name="name">Touchscreen Point of Sale</field>
<field name="parent_id" ref="demo_category1"/>
<field name="content">
The brand new OpenERP touchscreen point of sale available with 6.1 allows you
to manage your shop sales very easily. It's fully web based so that you don't
have to install or deploy any software and all the sales shops can be easily
consolidated. It works in connected and disconnected modes so that you can
continue to sell if you lose your internet connection.
[[File:http://www.openerp.com/sites/default/files/fileattach/POS(2).png ]]
==Here's a summary of its main features and benefits:==
100% WEB based
* available for any touchscreen device (ipod, ipad, any tablet)mobile (with portable devices)
* no installation required
* no synchronization needed, completely integrated
* continue working even when your connection is down if you close your browser, data won't be lost
* fully web based with a clean interface smart interface
You have different options to select your products. You can do it through the
barcode reader, just browse through the categories you have put in place (ie.
drinks, snacks, meals, etc.), or text search in case neither of the other
options work for you. If you need to use the POS for your restaurant, for
example, your employees can record at the same time multiple tickets without
having to wait to do one transaction at a time. Along, to facilitate payment,
the application allows multiple payment methods.
The POS application is so simple and accessible to use that your shop or
restaurant will never need any other tool to manage orders. Due to its smart
and user-friendly interface you don't need any training to learn how to use it.
Think of it as an out-of-the-box solution to boost your business' productivity.
</field>
</record>
</data>
</openerp>
+163
View File
@@ -0,0 +1,163 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem name="Knowledge" id="knowledge.menu_document"/>
<menuitem name="Pages" id="menu_wiki" parent="knowledge.menu_document" sequence="20" />
<!-- wiki tree view -->
<record id="view_wiki_tree_children" model="ir.ui.view">
<field name="name">document.page.tree</field>
<field name="model">document.page</field>
<field name="type">tree</field>
<field name="field_parent">child_ids</field>
<field name="priority">100</field>
<field name="arch" type="xml">
<tree string="Document Page">
<field name="name"/>
<field name="write_uid"/>
<field name="write_date"/>
</tree>
</field>
</record>
<!-- wiki list view -->
<record id="view_wiki_tree" model="ir.ui.view">
<field name="name">document.page.list</field>
<field name="model">document.page</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Document Page">
<field name="name"/>
<field name="parent_id"/>
<field name="write_uid"/>
<field name="write_date"/>
</tree>
</field>
</record>
<!-- wiki Form view -->
<record id="view_wiki_form" model="ir.ui.view">
<field name="name">document.page.form</field>
<field name="model">document.page</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Document Page" version="7.0">
<field name="type" invisible="1"/>
<h1><field name="name" placeholder="Name"/></h1>
<group class="oe_edit_only">
<group>
<field name="parent_id" on_change="onchange_parent_id(parent_id,content)" string="Category"/>
</group>
<group>
<field name="write_uid" groups="base.group_no_one"/>
<field name="write_date" groups="base.group_no_one"/>
<field name="menu_id" groups="base.group_no_one"/>
</group>
</group>
<div class="oe_edit_only" attrs="{'invisible':[('type','=','content')]}">
<label for="content" string="Template"/>
that will be used as a content template for all new page of this category.
</div>
<field name="content" placeholder="e.g. Once upon a time..." class="oe_edit_only"/>
<div class="oe_document_page">
<field name="display_content" widget="text_wiki" class="oe_view_only"/>
</div>
</form>
</field>
</record>
<!-- page Search view -->
<record id="view_wiki_filter" model="ir.ui.view">
<field name="name">document.page.search</field>
<field name="model">document.page</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Document Page">
<field name="name" string="Content" filter_domain="['|', ('name','ilike',self), ('content','ilike',self)]"/>
<field name="write_uid"/>
<field name="parent_id"/>
<group expand="0" string="Group By...">
<filter string="Document Type" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="Author" domain="[]" context="{'group_by':'create_uid'}"/>
<filter string="Last Contributor" domain="[]" context="{'group_by':'write_uid'}"/>
</group>
</search>
</field>
</record>
<!-- page action -->
<record id="action_category" model="ir.actions.act_window">
<field name="name">Category</field>
<field name="res_model">document.page</field>
<field name="domain">[('type','=','category')]</field>
<field name="context">{'default_type': 'category'}</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_wiki_tree"/>
<field name="search_view_id" ref="view_wiki_filter"/>
</record>
<menuitem id="menu_category" parent="menu_wiki" name="Categories" action="action_category" sequence="10"/>
<record id="action_page" model="ir.actions.act_window">
<field name="name">Pages</field>
<field name="res_model">document.page</field>
<field name="domain">[('type','=','content')]</field>
<field name="context">{'default_type': 'content'}</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_wiki_tree"/>
<field name="search_view_id" ref="view_wiki_filter"/>
<field name="help">Create web pages</field>
</record>
<menuitem id="menu_page" parent="menu_wiki" name="Pages" action="action_page" sequence="20"/>
<!-- History Tree view -->
<record model="ir.ui.view" id="view_wiki_history_tree">
<field name="name">document.page.history.tree</field>
<field name="model">document.page.history</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Document History">
<field name="create_date"/>
<field name="create_uid"/>
<field name="page_id"/>
</tree>
</field>
</record>
<!-- History Form view -->
<record model="ir.ui.view" id="wiki_history_form">
<field name="name">document.page.history.form</field>
<field name="model">document.page.history</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Document Page History" version="7.0">
<label for="page_id" class="oe_edit_only"/>
<h1><field name="page_id" select="1" /></h1>
<label for="create_date" class="oe_edit_only"/>
<field name="create_date" readonly="1"/>
<label for="content" class="oe_edit_only"/>
<field name="content" colspan="4"/>
</form>
</field>
</record>
<!-- History Action -->
<record model="ir.actions.act_window" id="action_history">
<field name="name">Page history</field>
<field name="res_model">document.page.history</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_page_history" parent="menu_wiki" name="Pages history" action="action_history" sequence="30" groups="base.group_no_one"/>
<act_window
id="action_related_page_history"
context="{'search_default_page_id': [active_id], 'default_page_id': active_id}"
domain="[('page_id','=',active_id)]"
name="Page History"
res_model="document.page.history"
src_model="document.page"/>
<act_window
id="action_related_page_create_menu"
name="Create Menu"
res_model="document.page.create.menu"
target="new"
view_type="form"
view_mode="form"
src_model="document.page"/>
</data>
</openerp>
+398
View File
@@ -0,0 +1,398 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * document_page
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-03-19 10:19+0000\n"
"Last-Translator: kifcaliph <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-03-20 04:56+0000\n"
"X-Generator: Launchpad (build 14969)\n"
#. module: document_page
#: field:document.page.type,template:0
msgid "Document Page Template"
msgstr "نموذج ويكي"
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki
#: model:ir.ui.menu,name:document_page.menu_action_wiki_wiki
msgid "Document Pages"
msgstr "صفحات ويكي"
#. module: document_page
#: field:document.page.type,method:0
msgid "Display Method"
msgstr "طريقة العرض"
#. module: document_page
#: view:document.page:0 field:document.page,create_uid:0
msgid "Author"
msgstr "المؤلف"
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_view_wiki_wiki_page_open
#: view:document.page.page.open:0
msgid "Open Page"
msgstr "صفحة عامة"
#. module: document_page
#: field:document.page.type,menu_id:0
msgid "Menu"
msgstr "قائمة"
#. module: document_page
#: help:document.page
msgid "Indicates that this pages have a table of contents or not"
msgstr "يوضح ما اذا كانت هذه الصفحات تحتوى على جدول محتويات او لا تحتوى"
#. module: document_page
#: model:ir.model,name:document_page.model_document_page_history view:document.page.history:0
msgid "Document Page History"
msgstr "تاريخ ويكي"
#. module: document_page
#: field:document.page,minor_edit:0
msgid "Minor edit"
msgstr "تحرير ثانوى"
#. module: document_page
#: view:document.page:0 field:document.page,content:0
msgid "Content"
msgstr "محتوى"
#. module: document_page
#: field:document.page,child_ids:0
msgid "Child Pages"
msgstr "صفحات فرعية"
#. module: document_page
#: field:document.page,parent_id:0
msgid "Parent Page"
msgstr "صفحة رئيسية"
#. module: wiki
#: view:wiki.wiki:0 field:wiki.wiki,write_uid:0
msgid "Last Contributor"
msgstr "المشارك الاخير"
#. module: document_page
#: field:document.page.create.menu,menu_parent_id:0
msgid "Parent Menu"
msgstr "القائمة الرئيسية"
#. module: document_page
#: field:document.page,name:0
msgid "Title"
msgstr "العنوان"
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_create_menu
msgid "Wizard Create Menu"
msgstr "إنشائ قائمة بالمعالج"
#. module: document_page
#: field:document.page,history_id:0
msgid "History Lines"
msgstr "سطور التاريخ"
#. module: document_page
#: view:document.page:0
msgid "Page Content"
msgstr "محتوى الصفحة"
#. module: document_page
#: code:addons/document_page/document_page.py:237
#, python-format
msgid "There are no changes in revisions"
msgstr "لا يوجد تغيير فى المراجعات"
#. module: document_page
#: field:document.page.create.menu,menu_name:0
msgid "Menu Name"
msgstr ""
#. module: document_page
#: field:document.page.type,notes:0
msgid "Description"
msgstr ""
#. module: document_page
#: field:document.page,review:0
msgid "Needs Review"
msgstr ""
#. module: document_page
#: help:document.page,review:0
msgid ""
"Indicates that this page should be reviewed, raising the attention of other "
"contributors"
msgstr ""
#. module: document_page
#: view:document.page.create.menu:0 view:document.page.make.index:0
msgid "Menu Information"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.act_wiki_wiki_history
msgid "Page History"
msgstr ""
#. module: document_page
#: selection:document.page.type,method:0
msgid "Tree"
msgstr ""
#. module: document_page
#: view:document.page.type:0
msgid "Page Template"
msgstr ""
#. module: document_page
#: field:document.page,tags:0
msgid "Keywords"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,help:document_page.action_wiki
msgid ""
"With Wiki Pages you can share ideas and questions with your coworkers. You "
"can create a new document that can be linked to one or several applications "
"(CRM, Sales, etc.). You can use keywords to ease access to your wiki pages. "
"There is a basic wiki editing for text format."
msgstr ""
#. module: document_page
#: code:addons/document_page/wizard/document_page_show_diff.py:54
#, python-format
msgid "Warning"
msgstr ""
#. module: document_page
#: help:document.page.type,home:0
msgid "Required to select home page if display method is Home Page"
msgstr ""
#. module: document_page
#: field:document.page.history,create_date:0
msgid "Date"
msgstr ""
#. module: document_page
#: view:document.page.make.index:0
msgid "Want to create a Index on Selected Pages ? "
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff_values
#: view:wizard.document.page.history.show_diff:0
msgid "Difference"
msgstr ""
#. module: document_page
#: field:document.page.type,page_ids:0
msgid "Pages"
msgstr ""
#. module: document_page
#: view:document.page.type:0
msgid "Group Description"
msgstr ""
#. module: document_page
#: view:document.page.page.open:0
msgid "Want to open a wiki page? "
msgstr ""
#. module: document_page
#: field:document.page.history,content:0
msgid "Content"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Meta Information"
msgstr ""
#. module: document_page
#: field:document.page,create_date:0
msgid "Created on"
msgstr ""
#. module: document_page
#: view:document.page.type:0 view:wizard.document.page.history.show_diff:0
msgid "Notes"
msgstr ""
#. module: document_page
#: selection:document.page.type,method:0
msgid "List"
msgstr ""
#. module: document_page
#: field:document.page,edit_summary:0 field:document.page.history,edit_summary:0
msgid "Summary"
msgstr ""
#. module: document_page
#: field:document.page.type,create_date:0
msgid "Created Date"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_history
msgid "All Page Histories"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_wiki
msgid "document.page"
msgstr ""
#. module: document_page
#: help:document.page.type,method:0
msgid "Define the default behaviour of the menu created on this group"
msgstr ""
#. module: document_page
#: view:wizard.document.page.history.show_diff:0
msgid "Close"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wizard_wiki_history_show_diff
msgid "wizard.document.page.history.show_diff"
msgstr ""
#. module: document_page
#: field:document.page.history,wiki_id:0
msgid "Wiki Id"
msgstr ""
#. module: document_page
#: field:document.page.type,home:0 selection:document.page.type,method:0
msgid "Home Page"
msgstr ""
#. module: document_page
#: help:document.page,parent_id:0
msgid "Allows you to link with the other page with in the current topic"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Modification Information"
msgstr ""
#. module: document_page
#: model:ir.ui.menu,name:document_page.menu_wiki_configuration view:document.page:0
msgid "Wiki"
msgstr ""
#. module: document_page
#: field:document.page,write_date:0
msgid "Modification Date"
msgstr ""
#. module: document_page
#: view:document.page.type:0
msgid "Configuration"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index_values
#: model:ir.model,name:document_page.model_wiki_make_index view:document.page.make.index:0
msgid "Create Index"
msgstr ""
#. module: document_page
#: code:addons/document_page/wizard/document_page_show_diff.py:54
#, python-format
msgid "You need to select minimum 1 or maximum 2 history revision!"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Group By..."
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki_create_menu
#: view:document_page.create.menu:0 view:document.page.type:0 view:document.page.make.index:0
msgid "Create Menu"
msgstr ""
#. module: document_page
#: field:document.page.history,minor_edit:0
msgid "This is a major edit ?"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki_groups
#: model:ir.actions.act_window,name:document_page.action_wiki_groups_browse
#: model:ir.model,name:document_page.model_wiki_groups
#: model:ir.ui.menu,name:document_page.menu_action_wiki_groups view:document.page.type:0
msgid "Wiki Groups"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Topic"
msgstr ""
#. module: document_page
#: field:document.page.history,write_uid:0
msgid "Modify By"
msgstr ""
#. module: document_page
#: code:addons/document_page/web/widgets/wikimarkup/__init__.py:1981
#: field:document.page,type:0
#, python-format
msgid "Table of Contents"
msgstr ""
#. module: document_page
#: view:document.page.type:0 view:document.page.page.open:0
msgid "Open Wiki Page"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_wiki_page_open
msgid "wiz open page"
msgstr ""
#. module: document_page
#: view:document.page.create.menu:0 view:document.page.make.index:0 view:document.page.page.open:0
msgid "Cancel"
msgstr ""
#. module: document_page
#: field:wizard.document.page.history.show_diff,file_path:0
msgid "Diff"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Need Review"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki_review
msgid "Pages Waiting Review"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.act_wiki_group_open
msgid "Search Page"
msgstr ""
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n"
"X-Generator: Launchpad (build 15060)\n"
"X-Poedit-Language: Czech\n"
#. module: wiki
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -392,7 +392,7 @@ msgstr "Wiki Gruppen"
#. module: wiki
#: view:wiki.wiki:0
msgid "Topic"
msgstr "Thema"
msgstr "THema"
#. module: wiki
#: field:wiki.wiki.history,write_uid:0
+423
View File
@@ -0,0 +1,423 @@
# #-#-#-#-# document_page.pot (OpenERP Server 6.1rc1) #-#-#-#-#
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * document_page
#
# #-#-#-#-# document_page.pot.web (PROJECT VERSION) #-#-#-#-#
# Translations template for PROJECT.
# Copyright (C) 2012 ORGANIZATION
# This file is distributed under the same license as the PROJECT project.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
#
#, fuzzy
msgid ""
msgstr ""
"#-#-#-#-# document_page.pot (OpenERP Server 6.1rc1) #-#-#-#-#\n"
"Project-Id-Version: OpenERP Server 6.1rc1\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 00:37+0000\n"
"PO-Revision-Date: 2012-02-08 00:37+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"#-#-#-#-# document_page.pot.web (PROJECT VERSION) #-#-#-#-#\n"
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 0.9.6\n"
#. module: document_page
#: field:document.page.type,template:0
msgid "Document page Template"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki
#: model:ir.ui.menu,name:document_page.menu_action_wiki_wiki
msgid "Document Pages"
msgstr ""
#. module: document_page
#: field:document.page.type,method:0
msgid "Display Method"
msgstr ""
#. module: document_page
#: view:document.page:0 field:document.page,create_uid:0
msgid "Author"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_view_wiki_wiki_page_open
#: view:document.page.page.open:0
msgid "Open Page"
msgstr ""
#. module: document_page
#: field:document.page,menu_id:0
msgid "Menu"
msgstr ""
#. module: document_page
#: help:document.page,type:0
msgid "Indicates that this pages have a table of contents or not"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_wiki_history view:document.page.history:0
msgid "Document page History"
msgstr ""
#. module: document_page
#: field:document.page,minor_edit:0
msgid "Minor edit"
msgstr ""
#. module: document_page
#: view:document.page:0 field:document.page,content:0
msgid "Content"
msgstr ""
#. module: document_page
#: field:document.page,child_ids:0
msgid "Child Pages"
msgstr ""
#. module: document_page
#: field:document.page,parent_id:0
msgid "Parent Page"
msgstr ""
#. module: document_page
#: view:document.page:0 field:document.page,write_uid:0
msgid "Last Contributor"
msgstr ""
#. module: document_page
#: field:document.page.create.menu,menu_parent_id:0
msgid "Parent Menu"
msgstr ""
#. module: document_page
#: field:document.page,name:0
msgid "Title"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_create_menu
msgid "Wizard Create Menu"
msgstr ""
#. module: document_page
#: field:document.page,history_id:0
msgid "History Lines"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Page Content"
msgstr ""
#. module: document_page
#: code:addons/document_page/document_page.py:237 code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "Warning !"
msgstr ""
#. module: document_page
#: code:addons/document_page/document_page.py:237
#, python-format
msgid "There are no changes in revisions"
msgstr ""
#. module: document_page
#: field:document.page.create.menu,menu_name:0
msgid "Menu Name"
msgstr ""
#. module: document_page
#: field:document.page.type,notes:0
msgid "Description"
msgstr ""
#. module: document_page
#: field:document.page,review:0
msgid "Needs Review"
msgstr ""
#. module: document_page
#: help:document.page,review:0
msgid ""
"Indicates that this page should be reviewed, raising the attention of other "
"contributors"
msgstr ""
#. module: document_page
#: view:document.page.create.menu:0 view:document.page.make.index:0
msgid "Menu Information"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.act_wiki_wiki_history
msgid "Page History"
msgstr ""
#. module: document_page
#: selection:document.page.type,method:0
msgid "Tree"
msgstr ""
#. module: document_page
#: view:document.page.type:0
msgid "Page Template"
msgstr ""
#. module: document_page
#: field:document.page,tags:0
msgid "Keywords"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,help:document_page.action_wiki
msgid ""
"With Wiki Pages you can share ideas and questions with your coworkers. You "
"can create a new document that can be linked to one or several applications "
"(CRM, Sales, etc.). You can use keywords to ease access to your wiki pages. "
"There is a basic wiki editing for text format."
msgstr ""
#. module: document_page
#: code:addons/document_page/wizard/document_page_show_diff.py:54
#, python-format
msgid "Warning"
msgstr ""
#. module: document_page
#: help:document.page.type,home:0
msgid "Required to select home page if display method is Home Page"
msgstr ""
#. module: document_page
#: field:document.page.history,create_date:0
msgid "Date"
msgstr ""
#. module: document_page
#: view:document.page.make.index:0
msgid "Want to create a Index on Selected Pages ? "
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff
#: model:ir.actions.act_window,name:document_page.action_view_wiki_show_diff_values
#: view:wizard.document.page.history.show_diff:0
msgid "Difference"
msgstr ""
#. module: document_page
#: field:document.page.type,page_ids:0
msgid "Pages"
msgstr ""
#. module: document_page
#: view:document.page.type:0
msgid "Group Description"
msgstr ""
#. module: document_page
#: view:document.page.page.open:0
msgid "Want to open a wiki page? "
msgstr ""
#. module: document_page
#: field:document.page.history,content:0
msgid "Text area"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Meta Information"
msgstr ""
#. module: document_page
#: field:document.page,create_date:0
msgid "Created on"
msgstr ""
#. module: document_page
#: view:document.page.type:0 view:wizard.document.page.history.show_diff:0
msgid "Notes"
msgstr ""
#. module: document_page
#: selection:document.page.type,method:0
msgid "List"
msgstr ""
#. module: document_page
#: field:document.page,summary:0 field:document.page.history,edit_summary:0
msgid "Summary"
msgstr ""
#. module: document_page
#: field:document.page.groups,create_date:0
msgid "Created Date"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_history
msgid "All Page Histories"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_wiki
msgid "document.page"
msgstr ""
#. module: document_page
#: help:document.page.type,method:0
msgid "Define the default behaviour of the menu created on this group"
msgstr ""
#. module: document_page
#: view:wizard.document.page.history.show_diff:0
msgid "Close"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wizard_wiki_history_show_diff
msgid "wizard.document.page.history.show_diff"
msgstr ""
#. module: document_page
#: field:document.page.history,wiki_id:0
msgid "Wiki Id"
msgstr ""
#. module: document_page
#: field:document.page.type,home:0 selection:document.page.type,method:0
msgid "Home Page"
msgstr ""
#. module: document_page
#: help:document.page,parent_id:0
msgid "Allows you to link with the other page with in the current topic"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Modification Information"
msgstr ""
#. module: document_page
#: model:ir.ui.menu,name:document_page.menu_wiki_configuration view:document.page:0
msgid "Wiki"
msgstr ""
#. module: document_page
#: field:document.page,write_date:0
msgid "Modification Date"
msgstr ""
#. module: document_page
#: view:document.page.type:0
msgid "Configuration"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index
#: model:ir.actions.act_window,name:document_page.action_view_wiki_make_index_values
#: model:ir.model,name:document_page.model_wiki_make_index view:document.page.make.index:0
msgid "Create Index"
msgstr ""
#. module: document_page
#: code:addons/document_page/wizard/document_page_show_diff.py:54
#, python-format
msgid "You need to select minimum 1 or maximum 2 history revision!"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Group By..."
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki_create_menu
#: view:document.page.create.menu:0 view:document.page.type:0 view:document.page.make.index:0
msgid "Create Menu"
msgstr ""
#. module: document_page
#: field:document.page.history,minor_edit:0
msgid "This is a major edit ?"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki_groups
#: model:ir.actions.act_window,name:document_page.action_wiki_groups_browse
#: model:ir.model,name:document_page.model_wiki_groups
#: model:ir.ui.menu,name:document_page.menu_action_wiki_groups view:document.page.type:0
msgid "Document Types"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Topic"
msgstr ""
#. module: document_page
#: field:document.page.history,write_uid:0
msgid "Modify By"
msgstr ""
#. module: document_page
#: code:addons/document_page/web/widgets/wikimarkup/__init__.py:1981
#: field:document.page,type:0
#, python-format
msgid "Type"
msgstr ""
#. module: document_page
#: view:document.page.type:0 view:document.page.page.open:0
msgid "Open Document Page"
msgstr ""
#. module: document_page
#: model:ir.model,name:document_page.model_wiki_wiki_page_open
msgid "wiz open page"
msgstr ""
#. module: document_page
#: view:document.page.create.menu:0 view:document.page.make.index:0 view:document.page.page.open:0
msgid "Cancel"
msgstr ""
#. module: document_page
#: field:wizard.document.page.history.show_diff,file_path:0
msgid "Diff"
msgstr ""
#. module: document_page
#: view:document.page:0
msgid "Need Review"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.action_wiki_review
msgid "Pages Waiting Review"
msgstr ""
#. module: document_page
#: model:ir.actions.act_window,name:document_page.act_wiki_group_open
msgid "Search Page"
msgstr ""
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-11 05:09+0000\n"
"X-Generator: Launchpad (build 14771)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:55+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -8,13 +8,13 @@ msgstr ""
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2012-02-20 01:10+0000\n"
"Last-Translator: Freddy Gonzalez <freddy.gonzalez.contreras@gmail.com>\n"
"Last-Translator: Freddy Gonzalez <freddy.gonzalez@clearcorp.co.cr>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:55+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-21 05:55+0000\n"
"X-Generator: Launchpad (build 14838)\n"
"Language: \n"
#. module: wiki
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -97,7 +97,7 @@ msgstr "Menu Parent"
#: code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "There is no section in this Page"
msgstr "Il n'y a pas de section dans cette page"
msgstr ""
#. module: wiki
#: field:wiki.groups,name:0 view:wiki.wiki:0 field:wiki.wiki,group_id:0
@@ -15,8 +15,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -97,7 +97,7 @@ msgstr "Menu Superiore"
#: code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "There is no section in this Page"
msgstr "Non è presente alcuna sezione in questa pagina"
msgstr ""
#. module: wiki
#: field:wiki.groups,name:0 view:wiki.wiki:0 field:wiki.wiki,group_id:0
@@ -328,7 +328,7 @@ msgstr "Home page"
#. module: wiki
#: help:wiki.wiki,parent_id:0
msgid "Allows you to link with the other page with in the current topic"
msgstr "Consente di collegare con un altra pagina con il topic attuale"
msgstr ""
#. module: wiki
#: view:wiki.wiki:0
@@ -382,7 +382,7 @@ msgstr "Crea Menu"
#. module: wiki
#: field:wiki.wiki.history,minor_edit:0
msgid "This is a major edit ?"
msgstr "E' questa una modifica importante?"
msgstr ""
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki_groups
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-06-17 04:35+0000\n"
"X-Generator: Launchpad (build 15419)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
"Language: lt\n"
#. module: wiki
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -9,13 +9,13 @@ msgstr ""
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
"PO-Revision-Date: 2011-03-31 12:08+0000\n"
"Last-Translator: Rolv Råen <Unknown>\n"
"Last-Translator: Rolv Råen (adEgo) <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:55+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -30,7 +30,7 @@ msgstr "Strony Wiki"
#. module: wiki
#: field:wiki.groups,method:0
msgid "Display Method"
msgstr "Metoda wyświetlania"
msgstr ""
#. module: wiki
#: view:wiki.wiki:0 field:wiki.wiki,create_uid:0
@@ -56,7 +56,7 @@ msgstr "Sekcja"
#. module: wiki
#: help:wiki.wiki,toc:0
msgid "Indicates that this pages have a table of contents or not"
msgstr "Oznacza, czy ta strona na spis treści, czy nie"
msgstr ""
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_wiki_history view:wiki.wiki.history:0
@@ -76,17 +76,17 @@ msgstr "Zawartość"
#. module: wiki
#: field:wiki.wiki,child_ids:0
msgid "Child Pages"
msgstr "Strony podrzędne"
msgstr ""
#. module: wiki
#: field:wiki.wiki,parent_id:0
msgid "Parent Page"
msgstr "Strona nadrzędna"
msgstr ""
#. module: wiki
#: view:wiki.wiki:0 field:wiki.wiki,write_uid:0
msgid "Last Contributor"
msgstr "Ostatni kontrybutor"
msgstr ""
#. module: wiki
#: field:wiki.create.menu,menu_parent_id:0
@@ -97,7 +97,7 @@ msgstr "Menu nadrzędne"
#: code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "There is no section in this Page"
msgstr "Nie ma sekcji na tej stronie"
msgstr ""
#. module: wiki
#: field:wiki.groups,name:0 view:wiki.wiki:0 field:wiki.wiki,group_id:0
@@ -122,24 +122,24 @@ msgstr "Pozycje historii"
#. module: wiki
#: view:wiki.wiki:0
msgid "Page Content"
msgstr "Zawartość strony"
msgstr ""
#. module: wiki
#: code:addons/wiki/wiki.py:237 code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "Warning !"
msgstr "Ostrzeżenie !"
msgstr ""
#. module: wiki
#: code:addons/wiki/wiki.py:237
#, python-format
msgid "There are no changes in revisions"
msgstr "Brak zmian w wersjach"
msgstr ""
#. module: wiki
#: help:wiki.wiki,section:0
msgid "Use page section code like 1.2.1"
msgstr "Stosuj kod sekcji strony jak 1.2.1"
msgstr ""
#. module: wiki
#: field:wiki.create.menu,menu_name:0
@@ -154,29 +154,29 @@ msgstr "Opis"
#. module: wiki
#: field:wiki.wiki,review:0
msgid "Needs Review"
msgstr "Wymaga przejrzenia"
msgstr ""
#. module: wiki
#: help:wiki.wiki,review:0
msgid ""
"Indicates that this page should be reviewed, raising the attention of other "
"contributors"
msgstr "Oznacza, że strona powinna być przejrzana przez innych kontrybutorów"
msgstr ""
#. module: wiki
#: view:wiki.create.menu:0 view:wiki.make.index:0
msgid "Menu Information"
msgstr "Informacja o menu"
msgstr ""
#. module: wiki
#: model:ir.actions.act_window,name:wiki.act_wiki_wiki_history
msgid "Page History"
msgstr "Historia strony"
msgstr ""
#. module: wiki
#: selection:wiki.groups,method:0
msgid "Tree"
msgstr "Drzewo"
msgstr ""
#. module: wiki
#: view:wiki.groups:0
@@ -186,7 +186,7 @@ msgstr "Szablon strony"
#. module: wiki
#: field:wiki.wiki,tags:0
msgid "Keywords"
msgstr "Słowa kluczowe"
msgstr ""
#. module: wiki
#: model:ir.actions.act_window,help:wiki.action_wiki
@@ -201,7 +201,7 @@ msgstr ""
#: code:addons/wiki/wizard/wiki_show_diff.py:54
#, python-format
msgid "Warning"
msgstr "Ostrzeżenie"
msgstr ""
#. module: wiki
#: help:wiki.groups,home:0
@@ -223,7 +223,7 @@ msgstr ""
#: model:ir.actions.act_window,name:wiki.action_view_wiki_show_diff_values
#: view:wizard.wiki.history.show_diff:0
msgid "Difference"
msgstr "Różnica"
msgstr ""
#. module: wiki
#: field:wiki.groups,page_ids:0
@@ -233,7 +233,7 @@ msgstr "Strony"
#. module: wiki
#: view:wiki.groups:0
msgid "Group Description"
msgstr "Opis Grupy"
msgstr ""
#. module: wiki
#: view:wiki.wiki.page.open:0
@@ -253,7 +253,7 @@ msgstr "Obszar tekstu"
#. module: wiki
#: view:wiki.wiki:0
msgid "Meta Information"
msgstr "Metainformacje"
msgstr ""
#. module: wiki
#: field:wiki.wiki,create_date:0
@@ -268,7 +268,7 @@ msgstr "Uwagi"
#. module: wiki
#: selection:wiki.groups,method:0
msgid "List"
msgstr "Lista"
msgstr ""
#. module: wiki
#: field:wiki.wiki,summary:0 field:wiki.wiki.history,summary:0
@@ -298,7 +298,7 @@ msgstr ""
#. module: wiki
#: view:wizard.wiki.history.show_diff:0
msgid "Close"
msgstr "Zamknięte"
msgstr ""
#. module: wiki
#: model:ir.model,name:wiki.model_wizard_wiki_history_show_diff
@@ -313,7 +313,7 @@ msgstr "Wiki Id"
#. module: wiki
#: field:wiki.groups,home:0 selection:wiki.groups,method:0
msgid "Home Page"
msgstr "Strona główna"
msgstr ""
#. module: wiki
#: help:wiki.wiki,parent_id:0
@@ -361,7 +361,7 @@ msgstr ""
#. module: wiki
#: view:wiki.wiki:0
msgid "Group By..."
msgstr "Grupuj wg..."
msgstr ""
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki_create_menu
@@ -385,7 +385,7 @@ msgstr "Grupy wiki"
#. module: wiki
#: view:wiki.wiki:0
msgid "Topic"
msgstr "Temat"
msgstr ""
#. module: wiki
#: field:wiki.wiki.history,write_uid:0
@@ -13,13 +13,13 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
msgid "Wiki Template"
msgstr "Template Wiki"
msgstr "Modelo Wiki"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki
@@ -56,7 +56,7 @@ msgstr "Secção"
#. module: wiki
#: help:wiki.wiki,toc:0
msgid "Indicates that this pages have a table of contents or not"
msgstr "Indica que estas páginas têm uma tabela de conteúdos ou não"
msgstr ""
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_wiki_history view:wiki.wiki.history:0
@@ -76,28 +76,28 @@ msgstr "Conteúdo"
#. module: wiki
#: field:wiki.wiki,child_ids:0
msgid "Child Pages"
msgstr "Páginas Descendentes"
msgstr ""
#. module: wiki
#: field:wiki.wiki,parent_id:0
msgid "Parent Page"
msgstr "Página Ascendente"
msgstr ""
#. module: wiki
#: view:wiki.wiki:0 field:wiki.wiki,write_uid:0
msgid "Last Contributor"
msgstr "Último contribuinte"
msgstr ""
#. module: wiki
#: field:wiki.create.menu,menu_parent_id:0
msgid "Parent Menu"
msgstr "Menu Ascendente"
msgstr "Menu do Ascendente"
#. module: wiki
#: code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "There is no section in this Page"
msgstr "Não há secção nesta página"
msgstr ""
#. module: wiki
#: field:wiki.groups,name:0 view:wiki.wiki:0 field:wiki.wiki,group_id:0
@@ -112,7 +112,7 @@ msgstr "Título"
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_create_menu
msgid "Wizard Create Menu"
msgstr "Assitente de criação do menu"
msgstr "Assitente de criação de menu"
#. module: wiki
#: field:wiki.wiki,history_id:0
@@ -122,19 +122,19 @@ msgstr "Linhas do Histórico"
#. module: wiki
#: view:wiki.wiki:0
msgid "Page Content"
msgstr "Conteúdo da Página"
msgstr "Conteúdo de página"
#. module: wiki
#: code:addons/wiki/wiki.py:237 code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "Warning !"
msgstr "Aviso !"
msgstr "Alerta!"
#. module: wiki
#: code:addons/wiki/wiki.py:237
#, python-format
msgid "There are no changes in revisions"
msgstr "Não há mudanças nas revisões"
msgstr ""
#. module: wiki
#: help:wiki.wiki,section:0
@@ -173,7 +173,7 @@ msgstr "Informação do Menu"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.act_wiki_wiki_history
msgid "Page History"
msgstr "Histórico da Página"
msgstr ""
#. module: wiki
#: selection:wiki.groups,method:0
@@ -183,12 +183,12 @@ msgstr "Árvore"
#. module: wiki
#: view:wiki.groups:0
msgid "Page Template"
msgstr "Template da Página"
msgstr "Modelo da Página"
#. module: wiki
#: field:wiki.wiki,tags:0
msgid "Keywords"
msgstr "Palavras-Chave"
msgstr "Palavras-chave"
#. module: wiki
#: model:ir.actions.act_window,help:wiki.action_wiki
@@ -218,7 +218,7 @@ msgstr "Data"
#. module: wiki
#: view:wiki.make.index:0
msgid "Want to create a Index on Selected Pages ? "
msgstr "Pretende criar um Índice nas Páginas Selecionadas? "
msgstr "Pretende criar um Índice nas Páginas Seleccionadas? "
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_view_wiki_show_diff
@@ -235,12 +235,12 @@ msgstr "Páginas"
#. module: wiki
#: view:wiki.groups:0
msgid "Group Description"
msgstr "Descrição do Grupo"
msgstr ""
#. module: wiki
#: view:wiki.wiki.page.open:0
msgid "Want to open a wiki page? "
msgstr "Quer abrir uma página wiki? "
msgstr ""
#. module: wiki
#: field:wiki.groups,section:0
@@ -270,7 +270,7 @@ msgstr "Notas"
#. module: wiki
#: selection:wiki.groups,method:0
msgid "List"
msgstr "Lista"
msgstr ""
#. module: wiki
#: field:wiki.wiki,summary:0 field:wiki.wiki.history,summary:0
@@ -280,7 +280,7 @@ msgstr "Resumo"
#. module: wiki
#: field:wiki.groups,create_date:0
msgid "Created Date"
msgstr "Data de Criação"
msgstr "Data Criada"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_history
@@ -315,7 +315,7 @@ msgstr "ID do Wiki"
#. module: wiki
#: field:wiki.groups,home:0 selection:wiki.groups,method:0
msgid "Home Page"
msgstr "Página Inicial"
msgstr "Página inicial"
#. module: wiki
#: help:wiki.wiki,parent_id:0
@@ -325,7 +325,7 @@ msgstr ""
#. module: wiki
#: view:wiki.wiki:0
msgid "Modification Information"
msgstr "Informações modificação"
msgstr ""
#. module: wiki
#: help:wiki.wiki,group_id:0
@@ -358,7 +358,7 @@ msgstr "Criar Índex"
#: code:addons/wiki/wizard/wiki_show_diff.py:54
#, python-format
msgid "You need to select minimum 1 or maximum 2 history revision!"
msgstr "Precisa selecionar no mínimo 1 ou no máximo 2 históricos revistos!"
msgstr "Precisa seleccionar no mínimo 1 ou no máximo 2 históricos revistos!"
#. module: wiki
#: view:wiki.wiki:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:55+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -51,12 +51,12 @@ msgstr "Meniu"
#. module: wiki
#: field:wiki.wiki,section:0
msgid "Section"
msgstr "Sectiune"
msgstr "Secţiune"
#. module: wiki
#: help:wiki.wiki,toc:0
msgid "Indicates that this pages have a table of contents or not"
msgstr "Indica daca aceste pagini au un cuprins sau nu"
msgstr "Indică dacă aceste pagini au un cuprins sau nu"
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_wiki_history view:wiki.wiki.history:0
@@ -66,22 +66,22 @@ msgstr "Istoric wiki"
#. module: wiki
#: field:wiki.wiki,minor_edit:0
msgid "Minor edit"
msgstr "Editare minora"
msgstr "Modificare minoră"
#. module: wiki
#: view:wiki.wiki:0 field:wiki.wiki,text_area:0
msgid "Content"
msgstr "Continut"
msgstr "Conţinut"
#. module: wiki
#: field:wiki.wiki,child_ids:0
msgid "Child Pages"
msgstr "Pagini subordonate"
msgstr "Pagini subordonate (copii)"
#. module: wiki
#: field:wiki.wiki,parent_id:0
msgid "Parent Page"
msgstr "Pagini principale"
msgstr "Pagini principale (părinte)"
#. module: wiki
#: view:wiki.wiki:0 field:wiki.wiki,write_uid:0
@@ -91,18 +91,18 @@ msgstr "Ultimul colaborator"
#. module: wiki
#: field:wiki.create.menu,menu_parent_id:0
msgid "Parent Menu"
msgstr "Meniu Principal"
msgstr "Meniu principal (părinte)"
#. module: wiki
#: code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "There is no section in this Page"
msgstr "Nu exista nicio sectiune in aceasta Pagina"
msgstr ""
#. module: wiki
#: field:wiki.groups,name:0 view:wiki.wiki:0 field:wiki.wiki,group_id:0
msgid "Wiki Group"
msgstr "Grup Wiki"
msgstr "Grup wiki"
#. module: wiki
#: field:wiki.wiki,name:0
@@ -112,34 +112,34 @@ msgstr "Titlu"
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_create_menu
msgid "Wizard Create Menu"
msgstr "Wizard Creeaza Meniul"
msgstr "Wizard Creează meniul"
#. module: wiki
#: field:wiki.wiki,history_id:0
msgid "History Lines"
msgstr "Istoric Linii"
msgstr "Istoricul liniilor"
#. module: wiki
#: view:wiki.wiki:0
msgid "Page Content"
msgstr "Continutul Paginii"
msgstr "Conținutul paginii"
#. module: wiki
#: code:addons/wiki/wiki.py:237 code:addons/wiki/wizard/wiki_make_index.py:52
#, python-format
msgid "Warning !"
msgstr "Avertizare !"
msgstr "Avertisment !"
#. module: wiki
#: code:addons/wiki/wiki.py:237
#, python-format
msgid "There are no changes in revisions"
msgstr "Nu exista modificari la revizii"
msgstr "Nu există modificări la revizii"
#. module: wiki
#: help:wiki.wiki,section:0
msgid "Use page section code like 1.2.1"
msgstr "Folositi codul sectiunii paginii, cum ar fi 1.2.1"
msgstr "Folosiți codul secțiunii paginii, cum ar fi 1.2.1"
#. module: wiki
#: field:wiki.create.menu,menu_name:0
@@ -154,7 +154,7 @@ msgstr "Descriere"
#. module: wiki
#: field:wiki.wiki,review:0
msgid "Needs Review"
msgstr "Necesita Verificare"
msgstr "Necesită verificare"
#. module: wiki
#: help:wiki.wiki,review:0
@@ -162,18 +162,18 @@ msgid ""
"Indicates that this page should be reviewed, raising the attention of other "
"contributors"
msgstr ""
"Indica faptul ca aceasta pagina ar trebui verificata, atragand atentia altor "
"Indică faptul că această pagină ar trebui verificată, atrăgand atentia altor "
"colaboratori"
#. module: wiki
#: view:wiki.create.menu:0 view:wiki.make.index:0
msgid "Menu Information"
msgstr "Informatii meniu"
msgstr "Informaţii meniu"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.act_wiki_wiki_history
msgid "Page History"
msgstr "Istoric Pagina"
msgstr "Istoric pagină"
#. module: wiki
#: selection:wiki.groups,method:0
@@ -183,7 +183,7 @@ msgstr "Arbore"
#. module: wiki
#: view:wiki.groups:0
msgid "Page Template"
msgstr "Sablon pagina"
msgstr "Sablon pagină"
#. module: wiki
#: field:wiki.wiki,tags:0
@@ -198,41 +198,41 @@ msgid ""
"(CRM, Sales, etc.). You can use keywords to ease access to your wiki pages. "
"There is a basic wiki editing for text format."
msgstr ""
"Cu Paginile Wiki puteti impartasi idei si intrebari cu colegii "
"dumneavoastra. Puteti crea un document nou care poate fi conectat la una sau "
"mai multe aplicatii (MRC, Vanzari, etc.). Puteti folosi cuvinte cheie pentru "
"a accesa cu usurina paginile dumneavoastra wiki. Exista o editare de baza "
"Cu Paginile WIki puteti impărtăsi idei si intrebări cu colegii "
"dumneavoastră. Puteti crea un document noucare poate fi conectat la una sau "
"mai multe aplicatii (MRC, Vanzări, etc.). Puteti folosi cuvinte cheie pentru "
"a accesa cu usurintă paginile dumneavoastră wiki. Există o editare de bază "
"pentru formatul text."
#. module: wiki
#: code:addons/wiki/wizard/wiki_show_diff.py:54
#, python-format
msgid "Warning"
msgstr "Atentionare"
msgstr "Avertisment"
#. module: wiki
#: help:wiki.groups,home:0
msgid "Required to select home page if display method is Home Page"
msgstr ""
"Este obligatoriu sa selectati pagina de pornire daca metoda de afisare este "
"Este obligatoriu să selectati pagina de pornire dacă metoda de afisare este "
"Pagina de pornire"
#. module: wiki
#: field:wiki.wiki.history,create_date:0
msgid "Date"
msgstr "Data"
msgstr "Dată"
#. module: wiki
#: view:wiki.make.index:0
msgid "Want to create a Index on Selected Pages ? "
msgstr "Doriti sa creati un index pentru Paginile Selectate ? "
msgstr "Doriți să creați un index pentru paginile selectate ? "
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_view_wiki_show_diff
#: model:ir.actions.act_window,name:wiki.action_view_wiki_show_diff_values
#: view:wizard.wiki.history.show_diff:0
msgid "Difference"
msgstr "Diferenta"
msgstr "Diferenţă"
#. module: wiki
#: field:wiki.groups,page_ids:0
@@ -247,27 +247,27 @@ msgstr "Descriere Grup"
#. module: wiki
#: view:wiki.wiki.page.open:0
msgid "Want to open a wiki page? "
msgstr "Doriti sa deschideti o pagina wiki? "
msgstr "Doriti să deschideti o pagină wiki? "
#. module: wiki
#: field:wiki.groups,section:0
msgid "Make Section ?"
msgstr "Creeaza Sectiunea ?"
msgstr "Creează secțiunea ?"
#. module: wiki
#: field:wiki.wiki.history,text_area:0
msgid "Text area"
msgstr "Zona text"
msgstr "Zonă text"
#. module: wiki
#: view:wiki.wiki:0
msgid "Meta Information"
msgstr "Meta Informatii"
msgstr "Meta Informații"
#. module: wiki
#: field:wiki.wiki,create_date:0
msgid "Created on"
msgstr "Creat la"
msgstr "Creat in"
#. module: wiki
#: view:wiki.groups:0 view:wizard.wiki.history.show_diff:0
@@ -277,7 +277,7 @@ msgstr "Note"
#. module: wiki
#: selection:wiki.groups,method:0
msgid "List"
msgstr "Lista"
msgstr "Listă"
#. module: wiki
#: field:wiki.wiki,summary:0 field:wiki.wiki.history,summary:0
@@ -287,12 +287,12 @@ msgstr "Rezumat"
#. module: wiki
#: field:wiki.groups,create_date:0
msgid "Created Date"
msgstr "Data crearii"
msgstr "Data creării"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_history
msgid "All Page Histories"
msgstr "Istoric Toate paginile"
msgstr "Toate paginile istoricului"
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_wiki
@@ -303,17 +303,17 @@ msgstr "wiki.wiki"
#: help:wiki.groups,method:0
msgid "Define the default behaviour of the menu created on this group"
msgstr ""
"Defineste comportamentul predefinit al meniului creat pentru acest grup"
"Defineste comportamentul predefinit al meniului creat pentreu acest grup"
#. module: wiki
#: view:wizard.wiki.history.show_diff:0
msgid "Close"
msgstr "Inchide"
msgstr "Închide"
#. module: wiki
#: model:ir.model,name:wiki.model_wizard_wiki_history_show_diff
msgid "wizard.wiki.history.show_diff"
msgstr "asistent.wiki.istoric.arata_diferente"
msgstr "wizard.wiki.history.show_diff"
#. module: wiki
#: field:wiki.wiki.history,wiki_id:0
@@ -323,17 +323,17 @@ msgstr "ID wiki"
#. module: wiki
#: field:wiki.groups,home:0 selection:wiki.groups,method:0
msgid "Home Page"
msgstr "Pagina de pornire"
msgstr "Pagină de pornire"
#. module: wiki
#: help:wiki.wiki,parent_id:0
msgid "Allows you to link with the other page with in the current topic"
msgstr "Va permite sa va conectati la o alta pagina cu subiectul curent"
msgstr "Vă permite să vă conectati la o altă pagină in subiectul curent"
#. module: wiki
#: view:wiki.wiki:0
msgid "Modification Information"
msgstr "Informatii Modificare"
msgstr "Informatii modificare"
#. module: wiki
#: help:wiki.wiki,group_id:0
@@ -348,7 +348,7 @@ msgstr "Wiki"
#. module: wiki
#: field:wiki.wiki,write_date:0
msgid "Modification Date"
msgstr "Data Modificarii"
msgstr "Data modificării"
#. module: wiki
#: view:wiki.groups:0
@@ -360,29 +360,29 @@ msgstr "Configurare"
#: model:ir.actions.act_window,name:wiki.action_view_wiki_make_index_values
#: model:ir.model,name:wiki.model_wiki_make_index view:wiki.make.index:0
msgid "Create Index"
msgstr "Creeaza Index"
msgstr "Creare index"
#. module: wiki
#: code:addons/wiki/wizard/wiki_show_diff.py:54
#, python-format
msgid "You need to select minimum 1 or maximum 2 history revision!"
msgstr "Trebuie sa selectati minim 1 si maxim 2 revizuiri ale istoricului!"
msgstr "Trebuie să selectati minim 1 și maxim 2 revizuiri ale istoricului"
#. module: wiki
#: view:wiki.wiki:0
msgid "Group By..."
msgstr "Grupeaza dupa..."
msgstr "Grupează după..."
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki_create_menu
#: view:wiki.create.menu:0 view:wiki.groups:0 view:wiki.make.index:0
msgid "Create Menu"
msgstr "Creeaza Meniu"
msgstr "Creează meniu"
#. module: wiki
#: field:wiki.wiki.history,minor_edit:0
msgid "This is a major edit ?"
msgstr "Este aceasta o modificare majora ?"
msgstr "Este aceasta o modificare majoră ?"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki_groups
@@ -417,12 +417,12 @@ msgstr "Deschide Pagina Wiki"
#. module: wiki
#: model:ir.model,name:wiki.model_wiki_wiki_page_open
msgid "wiz open page"
msgstr "wizard deschidere pagina"
msgstr "wizard deschidere pagină"
#. module: wiki
#: view:wiki.create.menu:0 view:wiki.make.index:0 view:wiki.wiki.page.open:0
msgid "Cancel"
msgstr "Anuleaza"
msgstr "Anulează"
#. module: wiki
#: field:wizard.wiki.history.show_diff,file_path:0
@@ -432,17 +432,17 @@ msgstr "Diferit"
#. module: wiki
#: view:wiki.wiki:0
msgid "Need Review"
msgstr "Necesita Verificare"
msgstr "Necesită verificare"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.action_wiki_review
msgid "Pages Waiting Review"
msgstr "Pagini care asteapta verificare"
msgstr "Pagini care asteaptă verificare"
#. module: wiki
#: model:ir.actions.act_window,name:wiki.act_wiki_group_open
msgid "Search Page"
msgstr "Cauta pagina"
msgstr "Caută pagina"
#~ msgid "Document Management - Wiki"
#~ msgstr "Managementul documentelor - wiki"
@@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0
@@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-08-09 04:54+0000\n"
"X-Generator: Launchpad (build 15761)\n"
"X-Launchpad-Export-Date: 2012-02-09 06:46+0000\n"
"X-Generator: Launchpad (build 14763)\n"
#. module: wiki
#: field:wiki.groups,template:0

Some files were not shown because too many files have changed in this diff Show More