[MERGE] : merge with lp:~openerp-dev/openobject-addons/trunk-website-al-blog-imp-aja

bzr revid: aja@tinyerp.com-20140207061928-2s378cq1okd0fs2v
This commit is contained in:
ajay javiya (OpenERP) 2014-02-07 11:49:28 +05:30
commit 9e5733c7a8
33 changed files with 4790 additions and 614 deletions

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-06-20 16:14+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"PO-Revision-Date: 2014-02-02 15:35+0000\n"
"Last-Translator: Jakub Drozd <Unknown>\n"
"Language-Team: Czech <openerp-i18n-czech@lists.launchpad.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2014-01-28 05:54+0000\n"
"X-Generator: Launchpad (build 16914)\n"
"X-Launchpad-Export-Date: 2014-02-03 05:18+0000\n"
"X-Generator: Launchpad (build 16916)\n"
"X-Poedit-Language: Czech\n"
#. module: account
@ -195,7 +195,7 @@ msgstr "Označení sloupce"
#. module: account
#: help:account.config.settings,code_digits:0
msgid "No. of digits to use for account code"
msgstr ""
msgstr "Počet číslic použitých v čísle účtu"
#. module: account
#: help:account.analytic.journal,type:0
@ -258,7 +258,7 @@ msgstr ""
#. module: account
#: field:account.config.settings,sale_refund_sequence_next:0
msgid "Next credit note number"
msgstr ""
msgstr "Další číslo dobropisu"
#. module: account
#: help:account.config.settings,module_account_voucher:0
@ -444,7 +444,7 @@ msgstr ""
#: code:addons/account/static/src/xml/account_move_line_quickadd.xml:8
#, python-format
msgid "Period :"
msgstr ""
msgstr "Období :"
#. module: account
#: field:account.account.template,chart_template_id:0
@ -660,12 +660,12 @@ msgstr "Hlavní číselná řada musí být odlišná od současné!"
#: code:addons/account/wizard/account_change_currency.py:70
#, python-format
msgid "Current currency is not configured properly."
msgstr ""
msgstr "Stávající měna není správně nakonfigurována."
#. module: account
#: field:account.journal,profit_account_id:0
msgid "Profit Account"
msgstr ""
msgstr "Účet zisků"
#. module: account
#: code:addons/account/account_move_line.py:1156
@ -761,6 +761,8 @@ msgid ""
"The date of your Journal Entry is not in the defined period! You should "
"change the date or remove this constraint from the journal."
msgstr ""
"Datum vašeho záznamu deníku není v určeném období! Měli byste změnit datum "
"nebo odstranit omezení z deníku."
#. module: account
#: model:ir.model,name:account.model_account_report_general_ledger
@ -781,7 +783,7 @@ msgstr "Opravdu chcete vytvořit záznamy?"
#: code:addons/account/account_invoice.py:1361
#, python-format
msgid "Invoice partially paid: %s%s of %s%s (%s%s remaining)."
msgstr ""
msgstr "Faktura částečně uhrazena: %s%s z %s%s (%s%s zbývá)."
#. module: account
#: view:account.invoice:0
@ -890,7 +892,7 @@ msgstr "Analytický účet knihy"
#. module: account
#: view:account.invoice:0
msgid "Send by Email"
msgstr ""
msgstr "Odeslat e-mailem"
#. module: account
#: help:account.central.journal,amount_currency:0
@ -992,7 +994,7 @@ msgstr ""
#. module: account
#: model:mail.message.subtype,description:account.mt_invoice_paid
msgid "Invoice paid"
msgstr ""
msgstr "Faktura uhrazena"
#. module: account
#: view:validate.account.move:0
@ -1095,7 +1097,7 @@ msgstr "Kód"
#. module: account
#: view:account.config.settings:0
msgid "Features"
msgstr ""
msgstr "Vlastnosti"
#. module: account
#: code:addons/account/account.py:2346
@ -1162,7 +1164,7 @@ msgstr "Režim na šířku"
#. module: account
#: help:account.fiscalyear.close,fy_id:0
msgid "Select a Fiscal year to close"
msgstr "Vyberte finanční rok k uzavření"
msgstr "Vyberte fiskální rok k uzavření"
#. module: account
#: help:account.account.template,user_type:0
@ -1296,7 +1298,7 @@ msgstr "Kód bude zobrazen na výkazech."
#. module: account
#: view:account.tax.template:0
msgid "Taxes used in Purchases"
msgstr "Daně použité při nákuu"
msgstr "Daně použité při nákupu"
#. module: account
#: field:account.invoice.tax,tax_code_id:0
@ -1310,13 +1312,13 @@ msgstr "Kód daně"
#. module: account
#: field:account.account,currency_mode:0
msgid "Outgoing Currencies Rate"
msgstr "Odchozí měnový poměr"
msgstr "Odchozí měnový kurz"
#. module: account
#: view:account.analytic.account:0
#: field:account.config.settings,chart_template_id:0
msgid "Template"
msgstr ""
msgstr "Šablona"
#. module: account
#: selection:account.analytic.journal,type:0
@ -1389,7 +1391,7 @@ msgstr "Účet"
#. module: account
#: field:account.tax,include_base_amount:0
msgid "Included in base amount"
msgstr "Včetně základu"
msgstr "Zahrnuto v základní částce"
#. module: account
#: view:account.entries.report:0
@ -1457,7 +1459,7 @@ msgstr "Položky vyrovnání"
#: model:ir.actions.report.xml,name:account.account_overdue
#: view:res.company:0
msgid "Overdue Payments"
msgstr "Zpožděné platby"
msgstr "Platby po splatnosti"
#. module: account
#: report:account.third_party_ledger:0
@ -1529,7 +1531,7 @@ msgstr "Účet pohledávek"
#: code:addons/account/account.py:768
#, python-format
msgid "%s (copy)"
msgstr ""
msgstr "%s (kopie)"
#. module: account
#: report:account.account.balance:0
@ -1572,7 +1574,7 @@ msgstr "# z položek"
#. module: account
#: field:account.automatic.reconcile,max_amount:0
msgid "Maximum write-off amount"
msgstr "Max.množství odpisu"
msgstr "Maximální hodnota odpisu"
#. module: account
#. openerp-web
@ -1605,7 +1607,7 @@ msgstr ""
#. module: account
#: view:account.invoice.refund:0
msgid "Credit Note"
msgstr ""
msgstr "Dobropis"
#. module: account
#: view:account.config.settings:0
@ -1615,7 +1617,7 @@ msgstr "Elektronická fakturace a platby"
#. module: account
#: view:account.analytic.cost.ledger.journal.report:0
msgid "Cost Ledger for Period"
msgstr "Kniha nákladových účtu za období"
msgstr "Kniha nákladových účtú za období"
#. module: account
#: view:account.entries.report:0
@ -1690,7 +1692,7 @@ msgstr "Bez daně"
#. module: account
#: view:account.journal:0
msgid "Advanced Settings"
msgstr ""
msgstr "Rozšířená nastavení"
#. module: account
#: view:account.bank.statement:0
@ -1796,7 +1798,7 @@ msgstr "Analytické účtenictví"
#. module: account
#: report:account.overdue:0
msgid "Sub-Total :"
msgstr "Mezisoučet"
msgstr "Mezisoučet :"
#. module: account
#: help:res.company,tax_calculation_rounding_method:0
@ -1826,7 +1828,7 @@ msgstr "15 dnů"
#. module: account
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
msgid "Invoicing"
msgstr "Fakturování"
msgstr "Fakturace"
#. module: account
#: code:addons/account/report/account_partner_balance.py:115
@ -1951,7 +1953,7 @@ msgstr ""
#. module: account
#: help:account.period,special:0
msgid "These periods can overlap."
msgstr "Tyto období se mohou překrývat."
msgstr "Tato období se mohou překrývat."
#. module: account
#: model:process.node,name:account.process_node_draftstatement0
@ -1977,7 +1979,7 @@ msgstr "Částka Dal"
#: field:account.bank.statement,message_ids:0
#: field:account.invoice,message_ids:0
msgid "Messages"
msgstr ""
msgstr "Zprávy"
#. module: account
#: view:account.vat.declaration:0
@ -2075,7 +2077,7 @@ msgstr "Analýza faktur"
#. module: account
#: model:ir.model,name:account.model_mail_compose_message
msgid "Email composition wizard"
msgstr ""
msgstr "Průvodce vytvořením emailu"
#. module: account
#: model:ir.model,name:account.model_account_period_close
@ -7494,7 +7496,7 @@ msgstr "Pro procenta zadejte násobek mezi 0-1."
#: field:account.invoice,date_invoice:0
#: field:report.invoice.created,date_invoice:0
msgid "Invoice Date"
msgstr "Datum vystavení"
msgstr "Datum vystavení faktury"
#. module: account
#: view:account.invoice.report:0

View File

@ -30,7 +30,7 @@ from openerp.tools import exception_to_unicode
_logger = logging.getLogger(__name__)
class Home(openerp.addons.web.controllers.main.Home):
class AuthSignup(openerp.addons.web.controllers.main.Home):
@http.route()
def web_login(self, *args, **kw):
@ -60,7 +60,7 @@ class Home(openerp.addons.web.controllers.main.Home):
qcontext.update(config)
if 'error' in qcontext or mode not in ('reset', 'signup') or (not token and not config[mode]):
response = super(Home, self).web_login(*args, **kw)
response = super(AuthSignup, self).web_login(*args, **kw)
if isinstance(response, LazyResponse):
response.params['values'].update(config)
return response
@ -86,7 +86,7 @@ class Home(openerp.addons.web.controllers.main.Home):
request.cr.commit()
except SignupError, e:
qcontext['error'] = exception_to_unicode(e)
return super(Home, self).web_login(*args, **kw)
return super(AuthSignup, self).web_login(*args, **kw)
return response

View File

@ -0,0 +1,515 @@
# Bosnian translation for openobject-addons
# Copyright (c) 2014 Rosetta Contributors and Canonical Ltd 2014
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2014.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2014-02-01 22:19+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Bosnian <bs@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: 2014-02-02 05:31+0000\n"
"X-Generator: Launchpad (build 16916)\n"
#. module: email_template
#: field:email.template,email_from:0
#: field:email_template.preview,email_from:0
msgid "From"
msgstr "Od"
#. module: email_template
#: field:mail.compose.message,template_id:0
msgid "Template"
msgstr "Predložak"
#. module: email_template
#: help:email.template,ref_ir_value:0
#: help:email_template.preview,ref_ir_value:0
msgid "Sidebar button to open the sidebar action"
msgstr "Dugme za otvaranje akcije sidebar-a"
#. module: email_template
#: field:res.partner,opt_out:0
msgid "Opt-Out"
msgstr "Isključiti iz masovne e-pošte"
#. module: email_template
#: field:email.template,email_to:0
#: field:email_template.preview,email_to:0
msgid "To (Emails)"
msgstr "Za (E-mailovi)"
#. module: email_template
#: field:email.template,mail_server_id:0
#: field:email_template.preview,mail_server_id:0
msgid "Outgoing Mail Server"
msgstr "Odlazni E-mail server"
#. module: email_template
#: help:email.template,ref_ir_act_window:0
#: help:email_template.preview,ref_ir_act_window:0
msgid ""
"Sidebar action to make this template available on records of the related "
"document model"
msgstr ""
"Akcija sidebar-a za postavljanje ovog prijedloga dostupnog na akcijama "
"povezanog modela dokumenta"
#. module: email_template
#: field:email.template,model_object_field:0
#: field:email_template.preview,model_object_field:0
msgid "Field"
msgstr "Polje"
#. module: email_template
#: help:email.template,email_from:0
#: help:email_template.preview,email_from:0
msgid "Sender address (placeholders may be used here)"
msgstr ""
#. module: email_template
#: view:email.template:0
msgid "Remove context action"
msgstr "Ukloni kontekstnu akciju"
#. module: email_template
#: help:email.template,mail_server_id:0
#: help:email_template.preview,mail_server_id:0
msgid ""
"Optional preferred server for outgoing mails. If not set, the highest "
"priority one will be used."
msgstr ""
"Opcioni preferirani server za izlaznu poštu. Ako nije podešen koristiti će "
"se onaj sa najvišim prioritetom."
#. module: email_template
#: field:email.template,report_name:0
#: field:email_template.preview,report_name:0
msgid "Report Filename"
msgstr "Naziv fajla izvještaja"
#. module: email_template
#: view:email.template:0
msgid "Preview"
msgstr "Pregled"
#. module: email_template
#: field:email.template,reply_to:0
#: field:email_template.preview,reply_to:0
msgid "Reply-To"
msgstr "Odgovori na"
#. module: email_template
#: view:mail.compose.message:0
msgid "Use template"
msgstr "Koristi predložak"
#. module: email_template
#: field:email.template,body_html:0
#: field:email_template.preview,body_html:0
msgid "Body"
msgstr "Sadržaj"
#. module: email_template
#: code:addons/email_template/email_template.py:247
#, python-format
msgid "%s (copy)"
msgstr "%s (kopija)"
#. module: email_template
#: help:email.template,user_signature:0
#: help:email_template.preview,user_signature:0
msgid ""
"If checked, the user's signature will be appended to the text version of the "
"message"
msgstr ""
"Ako je odabrano, potpis korisnika biti će dodan tekst verziji poruke."
#. module: email_template
#: view:email.template:0
msgid "SMTP Server"
msgstr "SMTP server"
#. module: email_template
#: view:mail.compose.message:0
msgid "Save as new template"
msgstr "Spremi kao novi predložak"
#. module: email_template
#: help:email.template,sub_object:0
#: help:email_template.preview,sub_object:0
msgid ""
"When a relationship field is selected as first field, this field shows the "
"document model the relationship goes to."
msgstr ""
"Kada je relaciono polje odabrano kao prvo polje, ovo polje prikazuje model "
"dokumenta kojem relacija odlazi."
#. module: email_template
#: model:ir.model,name:email_template.model_email_template
msgid "Email Templates"
msgstr "E-mail predlošci"
#. module: email_template
#: help:email.template,report_name:0
#: help:email_template.preview,report_name:0
msgid ""
"Name to use for the generated report file (may contain placeholders)\n"
"The extension can be omitted and will then come from the report type."
msgstr ""
"Naziv za korišćenje generisanog fajla izvještaja(može da sadrži držače "
"mjesta)\n"
"Ekstenzija može biti zanemarena i biće zamjenjena tipom izvještaja."
#. module: email_template
#: field:email.template,ref_ir_act_window:0
#: field:email_template.preview,ref_ir_act_window:0
msgid "Sidebar action"
msgstr "Akcija sidebar-a"
#. module: email_template
#: help:email.template,lang:0
#: help:email_template.preview,lang:0
msgid ""
"Optional translation language (ISO code) to select when sending out an "
"email. If not set, the english version will be used. This should usually be "
"a placeholder expression that provides the appropriate language code, e.g. "
"${object.partner_id.lang.code}."
msgstr ""
"Opcioni jezik prevoda (ISO šifra) za izbor prilikom slanja email-a. Ako nije "
"postavljeno, koristiće se engleska verzija. Ovo bi najčešće treblo biti "
"izraz držača mjesta koja obezbjeđuje odgovarajuću šifru jezika, npr: "
"${object.partner_id.lang.code}."
#. module: email_template
#: field:email_template.preview,res_id:0
msgid "Sample Document"
msgstr "Primjer dokumenta"
#. module: email_template
#: help:email.template,model_object_field:0
#: help:email_template.preview,model_object_field:0
msgid ""
"Select target field from the related document model.\n"
"If it is a relationship field you will be able to select a target field at "
"the destination of the relationship."
msgstr ""
"Odaberite ciljno polje iz povezanog modela dokumenta.\n"
"Ako je ovo relaciono polje moći će te odabrati ciljano polje na odredištu "
"relacije."
#. module: email_template
#: view:email.template:0
msgid "Dynamic Value Builder"
msgstr "Kreator dinamičke vrijednosti"
#. module: email_template
#: model:ir.actions.act_window,name:email_template.wizard_email_template_preview
msgid "Template Preview"
msgstr "Pregled predloška"
#. module: email_template
#: view:mail.compose.message:0
msgid "Save as a new template"
msgstr "Spremi kao novi predložak"
#. module: email_template
#: view:email.template:0
msgid ""
"Display an option on related documents to open a composition wizard with "
"this template"
msgstr ""
"Na povezanim dokumentima prikaži opciju koja poziva čarobnjak sa ovim "
"predloškom"
#. module: email_template
#: help:email.template,email_cc:0
#: help:email_template.preview,email_cc:0
msgid "Carbon copy recipients (placeholders may be used here)"
msgstr "Primaoci kopije(mogu se koristiti držači mjesta)"
#. module: email_template
#: help:email.template,email_to:0
#: help:email_template.preview,email_to:0
msgid "Comma-separated recipient addresses (placeholders may be used here)"
msgstr "Adrese primatelja odvojene zarezom"
#. module: email_template
#: view:email.template:0
msgid "Advanced"
msgstr "Napredno"
#. module: email_template
#: view:email_template.preview:0
msgid "Preview of"
msgstr "Pregled"
#. module: email_template
#: view:email_template.preview:0
msgid "Using sample document"
msgstr "Koristi primjer dokumenta"
#. module: email_template
#: view:email.template:0
#: model:ir.actions.act_window,name:email_template.action_email_template_tree_all
#: model:ir.ui.menu,name:email_template.menu_email_templates
msgid "Templates"
msgstr "Predlošci"
#. module: email_template
#: field:email.template,name:0
#: field:email_template.preview,name:0
msgid "Name"
msgstr "Naziv"
#. module: email_template
#: field:email.template,lang:0
#: field:email_template.preview,lang:0
msgid "Language"
msgstr "Jezik"
#. module: email_template
#: model:ir.model,name:email_template.model_email_template_preview
msgid "Email Template Preview"
msgstr "Pregled e-mail predloška"
#. module: email_template
#: view:email_template.preview:0
msgid "Email Preview"
msgstr "Pregled e-maila"
#. module: email_template
#: view:email.template:0
msgid ""
"Remove the contextual action to use this template on related documents"
msgstr ""
"Ukloni dodatnu akciju da se ovaj predložak koristi na povezanim dokumentima"
#. module: email_template
#: field:email.template,copyvalue:0
#: field:email_template.preview,copyvalue:0
msgid "Placeholder Expression"
msgstr "Izraz držača mjesta"
#. module: email_template
#: field:email.template,sub_object:0
#: field:email_template.preview,sub_object:0
msgid "Sub-model"
msgstr "Podmodel"
#. module: email_template
#: help:email.template,subject:0
#: help:email_template.preview,subject:0
msgid "Subject (placeholders may be used here)"
msgstr "Tema(mogu se koristiti držači mjesta)"
#. module: email_template
#: help:email.template,reply_to:0
#: help:email_template.preview,reply_to:0
msgid "Preferred response address (placeholders may be used here)"
msgstr "Preferirana adresa za odgovor (modu se koristiti držači mjesta)"
#. module: email_template
#: field:email.template,ref_ir_value:0
#: field:email_template.preview,ref_ir_value:0
msgid "Sidebar Button"
msgstr "Dugme sidebar-a"
#. module: email_template
#: field:email.template,report_template:0
#: field:email_template.preview,report_template:0
msgid "Optional report to print and attach"
msgstr "Opcioni izvještaj za ispis i zakačku"
#. module: email_template
#: help:email.template,null_value:0
#: help:email_template.preview,null_value:0
msgid "Optional value to use if the target field is empty"
msgstr "Opciona vrijednost koja će se koristiti ako je ciljano polje prazno"
#. module: email_template
#: view:email.template:0
msgid "Model"
msgstr "Model"
#. module: email_template
#: model:ir.model,name:email_template.model_mail_compose_message
msgid "Email composition wizard"
msgstr "Čarobnjak sastavljanja email-a"
#. module: email_template
#: view:email.template:0
msgid "Add context action"
msgstr "Dodaj kontekstualnu akciju"
#. module: email_template
#: help:email.template,model_id:0
#: help:email_template.preview,model_id:0
msgid "The kind of document with with this template can be used"
msgstr "Vrsta dokumenta koja se može koristiti sa ovi predloškom"
#. module: email_template
#: field:email.template,email_recipients:0
#: field:email_template.preview,email_recipients:0
msgid "To (Partners)"
msgstr "Za (Partneri)"
#. module: email_template
#: field:email.template,auto_delete:0
#: field:email_template.preview,auto_delete:0
msgid "Auto Delete"
msgstr "Auto brisanje"
#. module: email_template
#: help:email.template,copyvalue:0
#: help:email_template.preview,copyvalue:0
msgid ""
"Final placeholder expression, to be copy-pasted in the desired template "
"field."
msgstr ""
"Krajnji izraz držača mjesta, koji će biti kopiran-zalijepljen na željenom "
"polju predloška."
#. module: email_template
#: field:email.template,model:0
#: field:email_template.preview,model:0
msgid "Related Document Model"
msgstr "Povezani model dokumenta"
#. module: email_template
#: view:email.template:0
msgid "Addressing"
msgstr "Adresiranje"
#. module: email_template
#: help:email.template,email_recipients:0
#: help:email_template.preview,email_recipients:0
msgid ""
"Comma-separated ids of recipient partners (placeholders may be used here)"
msgstr ""
"IDovi zarezom odvojeni partnera primatelja(mogu se koristiti držači mjesta)"
#. module: email_template
#: field:email.template,attachment_ids:0
#: field:email_template.preview,attachment_ids:0
msgid "Attachments"
msgstr "Zakačke"
#. module: email_template
#: code:addons/email_template/email_template.py:234
#, python-format
msgid "Deletion of the action record failed."
msgstr "Brisanje zapisa akcije polja."
#. module: email_template
#: field:email.template,email_cc:0
#: field:email_template.preview,email_cc:0
msgid "Cc"
msgstr "Cc"
#. module: email_template
#: field:email.template,model_id:0
#: field:email_template.preview,model_id:0
msgid "Applies to"
msgstr "Odnosi se na"
#. module: email_template
#: field:email.template,sub_model_object_field:0
#: field:email_template.preview,sub_model_object_field:0
msgid "Sub-field"
msgstr "Podpolje"
#. module: email_template
#: view:email.template:0
msgid "Email Details"
msgstr "Detalji e-maila"
#. module: email_template
#: code:addons/email_template/email_template.py:199
#, python-format
msgid "Send Mail (%s)"
msgstr "Pošalji e-mail (%s)"
#. module: email_template
#: help:res.partner,opt_out:0
msgid ""
"If checked, this partner will not receive any automated email notifications, "
"such as the availability of invoices."
msgstr ""
#. module: email_template
#: help:email.template,auto_delete:0
#: help:email_template.preview,auto_delete:0
msgid "Permanently delete this email after sending it, to save space"
msgstr "Trajno obriši ovaj e-mail nakon slanja, radi uštede prostora"
#. module: email_template
#: view:email.template:0
msgid "Group by..."
msgstr "Grupiši po..."
#. module: email_template
#: help:email.template,sub_model_object_field:0
#: help:email_template.preview,sub_model_object_field:0
msgid ""
"When a relationship field is selected as first field, this field lets you "
"select the target field within the destination document model (sub-model)."
msgstr ""
"Kada je relaciono polje izabrano kao prvo polje, ovo polje Vam dozvoljava da "
"odaberete ciljno polje u sklopu odredišnok dokumentnog modela (podmodela)"
#. module: email_template
#: code:addons/email_template/email_template.py:234
#, python-format
msgid "Warning"
msgstr "Upozorenje"
#. module: email_template
#: field:email.template,user_signature:0
#: field:email_template.preview,user_signature:0
msgid "Add Signature"
msgstr "Dodaj potpis"
#. module: email_template
#: model:ir.model,name:email_template.model_res_partner
msgid "Partner"
msgstr "Partner"
#. module: email_template
#: field:email.template,null_value:0
#: field:email_template.preview,null_value:0
msgid "Default Value"
msgstr "Podrazumijevana vrijednost"
#. module: email_template
#: help:email.template,attachment_ids:0
#: help:email_template.preview,attachment_ids:0
msgid ""
"You may attach files to this template, to be added to all emails created "
"from this template"
msgstr ""
"Možete priložiti datoteke ovom predlošku, one će biti dodate svim e-"
"mailovima kreiranim iz ovog predloška"
#. module: email_template
#: help:email.template,body_html:0
#: help:email_template.preview,body_html:0
msgid "Rich-text/HTML version of the message (placeholders may be used here)"
msgstr "Rich-text/HTML verzija poruke"
#. module: email_template
#: view:email.template:0
msgid "Contents"
msgstr "Sadržaj"
#. module: email_template
#: field:email.template,subject:0
#: field:email_template.preview,subject:0
msgid "Subject"
msgstr "Tema"

View File

@ -14,7 +14,7 @@
<field name="user_id" eval="ref('base.user_demo')" />
<field name="line_id" eval="ref('line_crm_sale1')" />
<field name="start_date" eval="time.strftime('%Y-%m-01')" />
<field name="end_date" eval="time.strftime('%Y-%m-31')" />
<field name="end_date" eval="(DateTime.today().replace(day=1)+relativedelta(months=1, days=-1)).strftime('%Y-%m-%d')" />
<field name="target_goal">2000</field>
<field name="state">inprogress</field>
</record>

File diff suppressed because it is too large Load Diff

View File

@ -59,7 +59,7 @@
</record>
<record id="action_website_tutorial" model="ir.actions.act_url">
<field name="name">Website With Tutorial</field>
<field name="url">/?tutorial.banner=true</field>
<field name="url">/#tutorial.banner=true</field>
<field name="target">self</field>
</record>
<record id="action_website_homepage" model="ir.actions.act_url">

View File

@ -13,7 +13,7 @@
website.BannerTour = website.Tour.extend({
id: 'banner',
name: "Insert a banner",
path: '/page/website.homepage',
path: '/',
init: function (editor) {
var self = this;
self.steps = [
@ -48,13 +48,12 @@
{
waitFor: '.oe_overlay_options .oe_options:visible',
element: '#wrap [data-snippet-id=carousel]:first .carousel-caption',
sampleText: 'My Title',
placement: 'top',
title: "Customize banner's text",
content: "Click in the text and start editing it. Click continue once it's done.",
template: self.popover({ next: "Continue" }),
},
{
waitNot: '#wrap [data-snippet-id=carousel]:first .carousel-caption:contains("Your Banner Title")',
element: '.oe_overlay_options .oe_options',
placement: 'left',
title: "Customize the banner",

View File

@ -7,10 +7,6 @@ website.add_template_file('/website/static/src/xml/website.tour.xml');
website.EditorBar.include({
tours: [],
start: function () {
// $('.tour-backdrop').click(function (e) {
// e.stopImmediatePropagation();
// e.preventDefault();
// });
var self = this;
var menu = $('#help-menu');
_.each(this.tours, function (tour) {
@ -113,11 +109,13 @@ website.Tour = openerp.Class.extend({
this.localStorage.setItem("tour-"+this.id+"-test-automatic", true);
}
// redirect to begin of the tour
if (this.path) {
var path = this.path.split('?');
window.location.href = path[0] + "?tutorial."+this.id+"=true" + path.slice(1, path.length).join("?");
return;
// redirect to begin of the tour in function of the language
if (!this.testUrl(this.path+"(#.*)?$")) {
var path = this.path.split('#');
window.location.href = "/"+this.getLang()+path[0] + "#tutorial."+this.id+"=true&" + path.slice(1, path.length).join("#");
return;
}
}
var self = this;
@ -125,12 +123,12 @@ website.Tour = openerp.Class.extend({
website.Tour.waitReady.call(this, function () {self._running();});
},
running: function () {
if (+this.localStorage.getItem("tour-"+this.id+"-test") >= this.steps.length) {
if (+this.localStorage.getItem("tour-"+this.id+"-test") >= this.steps.length-1) {
this.endTour();
return;
}
if (website.Tour.is_busy() || !this.testUrl()) return;
if (website.Tour.is_busy() || !this.testPathUrl()) return;
// launch tour with url
this.checkRunningUrl();
@ -143,7 +141,6 @@ website.Tour = openerp.Class.extend({
var self = this;
website.Tour.waitReady.call(this, function () {self._running();});
},
_running: function () {
var stepId = this.localStorage.getItem("tour-"+this.id+"-test");
var automatic = !!this.localStorage.getItem("tour-"+this.id+"-test-automatic");
@ -174,13 +171,19 @@ website.Tour = openerp.Class.extend({
$('.popover.tour').remove();
},
testUrl: function () {
return !this.testPath || this.testPath.test(window.location.href);
getLang: function () {
return $("html").attr("lang").replace(/-/, '_');
},
testUrl: function (url) {
return new RegExp("(/"+this.getLang()+")?"+url, "i").test(window.location.href);
},
testPathUrl: function () {
if (!this.testPath || this.testUrl(this.testPath)) return true;
},
checkRunningUrl: function () {
if (window.location.search.indexOf("tutorial."+this.id+"=true") > -1) {
if (window.location.hash.indexOf("tutorial."+this.id+"=true") > -1) {
this.localStorage.setItem("tour-"+this.id+"-test", 0);
window.location.href = window.location.href.replace(/tutorial.+=true&?/, '');
window.location.hash = window.location.hash.replace(/tutorial.+=true&?/, '');
}
},
@ -315,7 +318,11 @@ website.Tour = openerp.Class.extend({
}
},
endTour: function () {
console.log('{ "event": "success" }');
if (parseInt(this.localStorage.getItem("tour-"+this.id+"-test"),10) >= this.steps.length-1) {
console.log('{ "event": "success" }');
} else {
console.log('{ "event": "canceled" }');
}
this.reset();
},
autoNextStep: function () {

View File

@ -25,6 +25,7 @@ from openerp.tools.translate import _
from openerp import SUPERUSER_ID
import werkzeug
import random
@ -205,7 +206,9 @@ class WebsiteBlog(http.Controller):
MONTHS = [None, _('January'), _('February'), _('March'), _('April'),
_('May'), _('June'), _('July'), _('August'), _('September'),
_('October'), _('November'), _('December')]
post_ids = blog_post_obj.search(cr, uid, [], context=context)
random_post_list = list(set(post_ids)-set([blog_post.id]))
next_blog_id = random_post_list[random.randint(0, len(blog_ids))]
values = {
'blog': blog_post.blog_id,
'blogs': blogs,
@ -217,7 +220,8 @@ class WebsiteBlog(http.Controller):
'nav_list': self.nav_list(),
'enable_editor': enable_editor,
'date': date,
'date_name': date and "%s %s" % (MONTHS[int(date.split("-")[1])], date.split("-")[0]) or None
'date_name': date and "%s %s" % (MONTHS[int(date.split("-")[1])], date.split("-")[0]) or None,
'next_post' : request.registry['blog.post'].browse(cr, uid, next_blog_id, context=context)
}
return request.website.render("website_blog.blog_post_complete", values)

View File

@ -20,7 +20,7 @@
<record id="action_open_website" model="ir.actions.act_url">
<field name="name">Website Blogs</field>
<field name="target">self</field>
<field name="url" eval="'/blog/'+str(ref('website_blog.blog_blog_1'))+'/?tutorial.blog=true'"/>
<field name="url" eval="'/blog/'+str(ref('website_blog.blog_blog_1'))+'/#tutorial.blog=true'"/>
</record>
<record id="base.open_menu" model="ir.actions.todo">
<field name="action_id" ref="action_open_website"/>

View File

@ -75,7 +75,7 @@
easily mark messages for future actions. Every inbox
should be empty after having been processed; no more
overload of information.
<img class="img-responsive shadow" src="/website/static/src/img/mail-sc-00.png"/>
<img class="img-responsive shadow" src="/website_blog/static/src/img/mail-sc-00.png"/>
</li><li>
Keep control of what you want to receive or don't want
to receive. People should never receive spam. You
@ -86,7 +86,7 @@
does not require you to click on every mail to read a
thread. Reading a full thread, replying, attaching
documents is super fast.
<img class="img-responsive shadow" src="/website/static/src/img/mail-sc-03.png"/>
<img class="img-responsive shadow" src="/website_blog/static/src/img/mail-sc-03.png"/>
</li><li>
<strong>A mix of push & pull:</strong> Today, people are victims
of what others decide to push to them. OpenERP differentiates:
@ -137,7 +137,7 @@
<div class="container">
<div class="row">
<div class="col-md-12">
<img class="img-responsive" src="/website/static/src/img/CMS_WMS_screens.jpg" style="margin: 0 auto;"/>
<img class="img-responsive" src="/website_blog/static/src/img/CMS_WMS_screens.jpg" style="margin: 0 auto;"/>
</div>
<div class="col-md-6 col-md-offset-3 mb16 mt16">
<p class="text-center">
@ -367,7 +367,7 @@
have a salary at that time.</p>
<p>We changed the deal and I got the 3 million EUR. It allowed
me to recruit a rocking management team.</p>
<img class="img-responsive shadow" src="/website/static/src/img/OpemERP_board.jpg"/>
<img class="img-responsive shadow" src="/website_blog/static/src/img/OpemERP_board.jpg"/>
<h3 class="mt16">Being a mature company<h3>
<p>With this money in our bank account, we boosted two
departments: R&D and Sales. We burned two million EUR in 18 months,
@ -392,7 +392,7 @@
over the span of roughly two years! This is when we understood
that OpenERP is a marathon, not a sprint. Only 100% growth a
year is ok... if you can keep the rhythm for several years.</p>
<img class="img-responsive shadow" src="/website/static/src/img/turnover_updated.png"/>
<img class="img-responsive shadow" src="/website_blog/static/src/img/turnover_updated.png"/>
<p class="text-center" section_inner="1">
<strong>OpenERP Monthly Turnover</strong></p>
<p>As usual, I should have listened to my wife. She is way more

View File

@ -1,206 +0,0 @@
/* line 2, ../scss/_extensions.scss */
.container, main div.page .content {
max-width: 100%;
margin: 0 auto;
}
/* line 7, ../scss/_extensions.scss */
.stretchy-bg, main div.page .big-image {
background-position: center center;
background-repeat: none;
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover !important;
}
main div.page.next .big-image{
height : 50vh;
}
main div.page.current .big-image {
height: 100vh;
}
@media (min-width: 500px) {
.big-image, main div.page .big-image {
height: 420px;
}
}
/* line 4, ../scss/_mixins.scss */
::-webkit-scrollbar {
width: 3px;
height: 3px;
}
/* line 9, ../scss/_mixins.scss */
::-webkit-scrollbar-thumb {
background: #666666;
}
/* line 13, ../scss/_mixins.scss */
::-webkit-scrollbar-track {
background: rgba(255, 255, 255, 0.1);
}
/* line 18, ../scss/_mixins.scss */
main {
scrollbar-face-color: #666666;
scrollbar-track-color: rgba(255, 255, 255, 0.1);
}
/* line 11, ../scss/styles.scss */
main {
color: #555;
padding: 20px;
padding: 0;
margin: 0;
-webkit-backface-visibility: hidden;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
line-height: 1.8em;
/* Responsive typography, yay! */
}
main h1, main h2, main h3, main h4, main h5, main h6 {
color: #333;
}
/* line 36, ../scss/styles.scss */
main div.page {
-webkit-transform-origin: bottom center;
/* Class applied when when page fades away. */
/* The large image that accompanies every post. */
/* The content. */
}
/* line 39, ../scss/styles.scss */
main div.page.hidden {
display: none;
}
/* line 42, ../scss/styles.scss */
main div.page.next .big-image, main div.page.next .big-image {
cursor: pointer;
}
/* line 43, ../scss/styles.scss */
main div.page.next .big-image .inner, main div.page.next .big-image .inner {
opacity: 1;
}
main div.page.current .big-image .inner, main div.page.current .big-image .inner {
opacity: 1;
}
main div.page.current .big-image .inner .fader .text .goto-next, main div.page.current .big-image .inner .fader .text .goto-next {
opacity: 0;
}
main div.page.next .post-meta {
opacity: 0;
}
/* line 47, ../scss/styles.scss */
main div.page.content-hidden .content {
display: none;
}
/* line 51, ../scss/styles.scss */
main div.page.fade-up-out {
opacity: 0;
-webkit-transform: scale(0.8) translate3d(0, -10%, 0);
-moz-transform: scale(0.8) translate3d(0, -10%, 0);
-ms-transform: scale(0.8) translate3d(0, -10%, 0);
-o-transform: scale(0.8) translate3d(0, -10%, 0);
transform: scale(0.8) translate3d(0, -10%, 0);
-webkit-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-moz-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-o-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
}
/* line 57, ../scss/styles.scss */
main div.page.easing-upward {
-webkit-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-moz-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-o-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
}
/* line 69, ../scss/styles.scss */
main div.page .big-image .inner, main div.page .big-image .inner {
position: relative;
width: 100%;
height: 100%;
text-align: center;
opacity: 0;
text-shadow: 1px 1px 5px rgba(0, 0, 0, 0.2);
-webkit-transition: all 0.1s ease;
-moz-transition: all 0.1s ease;
-o-transition: all 0.1s ease;
transition: all 0.1s ease;
}
/* line 78, ../scss/styles.scss */
main div.page .big-image .inner .fader, main div.page .big-image .inner .fader {
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.3);
}
/* line 83, ../scss/styles.scss */
main div.page .big-image .inner .fader .text {
position: absolute;
top: 50%;
left: 50%;
width: 80%;
-webkit-transform: translateX(-50%) translateY(-50%);
-moz-transform: translateX(-50%) translateY(-50%);
-ms-transform: translateX(-50%) translateY(-50%);
-o-transform: translateX(-50%) translateY(-50%);
transform: translateX(-50%) translateY(-50%);
}
/* line 89, ../scss/styles.scss */
main div.page .big-image .inner .fader .text a, main div.page .big-image .inner .fader .text h1, main div.page .big-image .inner .fader .text h2, main div.page .big-image .inner .fader .text h4 {
color: white;
}
body article.page .big-image .inner .fader .text h4 {
color: white;
}
/* line 91, ../scss/styles.scss */
main div.page .big-image .inner .fader .text a {
color: white;
border-bottom: 1px solid white;
text-decoration: none;
line-height: 1.5em;
}
/* line 99, ../scss/styles.scss */
main div.page .big-image .inner .fader .text h1 {
margin: 0;
margin-top: 0.1em;
padding-top: 0em;
padding-bottom: 0em;
margin-bottom: 0em;
line-height: 1.1em;
}
/* line 105, ../scss/styles.scss */
main div.page .big-image .inner .fader .text h2 {
margin: 0;
margin-top: 0.2em;
padding-top: 0em;
padding-bottom: 0em;
margin-bottom: 0em;
line-height: 1.2em;
}
/* line 119, ../scss/styles.scss */
main div.page .content {
padding: 0 3em;
}
/* line 123, ../scss/styles.scss */
main div.page .content h3 {
color: #999;
margin-top: 3em;
padding-top: 0em;
padding-bottom: 0em;
margin-bottom: 0.375em;
line-height: 1.5em;
}
/* line 131, ../scss/styles.scss */
main div.page .content h1 {
margin-top: 0em;
padding-top: 0em;
padding-bottom: 0em;
margin-bottom: 0.24em;
line-height: 1.08em;
}
/* line 140, ../scss/styles.scss */
main div.page .content p:last-child {
margin-bottom: 3em;
}

View File

@ -1,224 +0,0 @@
/*
jQuery Setup
************************************************************************/
jQuery.ajaxSetup({
cache: false
})
/*
ArticleAnimator Object
************************************************************************/
var ArticleAnimator = ArticleAnimator || {
canScroll: true,
initialLoad: true,
animationDuration: 500,
postCount: 5,
currentPostIndex: 1,
postCache: {},
pageTemplate: null,
};
ArticleAnimator.load = function(){
this.currentPostIndex = getURLIndex();
this.makeSelections();
$body.empty();
$body.append( this.$current )
$body.append( this.$next )
var self = this;
this.createPost({ type: 'current' }, function(){
self.createPost({ type: 'next' }, function(){
/* Selections. */
self.refreshCurrentAndNextSelection();
/* Push initial on to stack */
history.pushState(pageState(), "", "#" + self.currentPostIndex)
/* Bind to some events. */
self.bindGotoNextClick();
self.bindPopstate();
self.bindWindowScroll();
})
})
}
ArticleAnimator.makeSelections = function(){
this.$page = $('.page');
this.pageTemplate = elementToTemplate( this.$page.clone());
this.$current = this.currentElementClone();
this.$next = this.nextElementClone();
}
ArticleAnimator.getPost = function(index, callback){
callback = callback || $.noop;
if ( this.postCache[index] ){
callback( this.postCache[index] );
return;
}
var self = this;
openerp.jsonRpc("/blog_post/post/", 'call', {
'blog': index,
})
.then(function (data) {
if(!data)
return;
self.postCache[index] = data[0];
callback(data[0])
});
}
ArticleAnimator.nextPostIndex = function(index){
return (index === this.postCount) ? 1 : index + 1
}
ArticleAnimator.createPost = function(opts, callback){
opts = opts || {};
var self = this;
var type = opts['type'] || 'next';
if ( opts['fromTemplate'] ){
$body.append( this.nextElementClone() );
this['$' + type] = $('.' + type)
}
var index = (type == 'next') ? this.nextPostIndex( this.currentPostIndex) : this.currentPostIndex;
this.getPost(index, function(d){
self.contentizeElement(self['$' + type], d);
callback && callback();
});
}
ArticleAnimator.contentizeElement = function($el, d){
$el.find('.big-image').css({ backgroundImage: (d.image)?"url(data:image/png;base64," + d.image + ")":""});
$el.find('h1.title').html(d.title);
$el.find('h2.description').html(d.title_secondary);
$el.find('.content .text').html(d.content);
$el.find('h4.byline time').html(d.date);
$el.find('h4.byline .author').html(d.author);
$el.find('h4.byline .author_image').html("<img class='img-circle' style='width: 3%; margin-right:10px;' src='" + d.author_image + "'/>")
}
ArticleAnimator.animatePage = function(callback){
var self = this;
var translationValue = this.$next.get(0).getBoundingClientRect().top;
this.canScroll = false;
this.$current.addClass('fade-up-out');
this.$next.removeClass('content-hidden next')
.addClass('easing-upward')
.css({ "transform": "translate3d(0, -"+ translationValue +"px, 0)" });
setTimeout(function(){
scrollTop();
self.$next.removeClass('easing-upward')
self.$current.remove();
self.$next.css({ "transform": "" });
self.$current = self.$next.addClass('current');
self.canScroll = true;
self.currentPostIndex = self.nextPostIndex( self.currentPostIndex );
callback();
}, self.animationDuration );
}
ArticleAnimator.bindGotoNextClick = function(){
var self = this;
var e = 'ontouchstart' in window ? 'touchstart' : 'click';
this.$next.find('.big-image').on(e, function(e){
e.preventDefault();
$(this).unbind(e);
self.animatePage(function(){
self.createPost({ fromTemplate: true, type: 'next' });
self.bindGotoNextClick();
history.pushState( pageState(), '', "#" + self.currentPostIndex);
});
});
}
ArticleAnimator.bindPopstate = function(){
var self = this;
$window.on('popstate', function(e){
if( !history.state || self.initialLoad ){
self.initialLoad = false;
return;
}
self.currentPostIndex = history.state.index;
self.$current.replaceWith( history.state.current );
self.$next.replaceWith( history.state.next );
self.refreshCurrentAndNextSelection();
self.createPost({ type: 'next' });
self.bindGotoNextClick();
});
}
ArticleAnimator.bindWindowScroll = function(){
var self = this;
$window.on('mousewheel', function(ev){
if ( !self.canScroll )
ev.preventDefault()
})
}
ArticleAnimator.refreshCurrentAndNextSelection = function(){
this.$current = $('.page.current');
this.$next = $('.page.next');
}
ArticleAnimator.nextElementClone = function(){
return this.$page.clone().removeClass('hidden').addClass('next content-hidden');
}
ArticleAnimator.currentElementClone = function(){
return this.$page.clone().removeClass('hidden').addClass('current');
}
/*
Helper Functions.
************************************************************************/
function elementToTemplate($element){
return $element.get(0).outerHTML;
}
function scrollTop(){
$body.add($html).scrollTop(0);
}
function pageState(){
return { index: ArticleAnimator.currentPostIndex, current: elementToTemplate(ArticleAnimator.$current), next: elementToTemplate(ArticleAnimator.$next) }
}
function getURLIndex(){
return parseInt( (history.state && history.state.index) ||window.location.hash.replace('#', "") || ArticleAnimator.currentPostIndex );
}
/*
Document ready.
************************************************************************/
$(document).ready(function(){
/* A couple of selections. */
$body = $('#wrap');
$window = $(window);
$html = $(document.documentElement);
/* Let's get it started. */
openerp.jsonRpc("/blog_post/change_layout", 'call', {})
.then(function (data) {
if(!data[0])
return;
ArticleAnimator.load();
});
})

View File

@ -1,5 +1,4 @@
@charset "utf-8";
@import url(compass/css3.css);
@charset "UTF-8";
.css_website_mail .has-error {
border-color: red;
}
@ -28,8 +27,44 @@ p.post-meta {
-o-background-size: cover;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: rgba(0, 0, 0, 0.3);
height: 100vh;
color: white;
padding-top: 20%;
margin-bottom: 8px;
}
.cover_footer {
-webkit-background-size: cover;
-moz-background-size: cover;
-o-background-size: cover;
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: rgba(0, 0, 0, 0.3);
height: 50vh;
color: white;
padding-top: 10%;
margin-bottom: 8px;
}
.page_fadeup_out {
opacity: 0;
-webkit-transform: scale(0.8) translate3d(0, -10%, 0);
-moz-transform: scale(0.8) translate3d(0, -10%, 0);
-ms-transform: scale(0.8) translate3d(0, -10%, 0);
-o-transform: scale(0.8) translate3d(0, -10%, 0);
transform: scale(0.8) translate3d(0, -10%, 0);
-webkit-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-moz-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-o-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
}
.page_upward {
-webkit-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-moz-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
-o-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1);
}

View File

@ -26,7 +26,40 @@ p.post-meta
-o-background-size: cover
background-size: cover
background-position: center
background-repeat: no-repeat
background-color: rgba(0, 0, 0, 0.3)
height: 100vh
color: white
padding-top: 20%
margin-bottom: 8px
.cover_footer
-webkit-background-size: cover
-moz-background-size: cover
-o-background-size: cover
background-size: cover
background-position: center
background-repeat: no-repeat
background-color: rgba(0, 0, 0, 0.3)
height: 50vh
color: white
padding-top: 10%
margin-bottom: 8px
.page_fadeup_out
opacity: 0
-webkit-transform: scale(0.8) translate3d(0, -10%, 0)
-moz-transform: scale(0.8) translate3d(0, -10%, 0)
-ms-transform: scale(0.8) translate3d(0, -10%, 0)
-o-transform: scale(0.8) translate3d(0, -10%, 0)
transform: scale(0.8) translate3d(0, -10%, 0)
-webkit-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
-moz-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
-o-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
.page_upward
-webkit-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
-moz-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
-o-transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)
transition: all 450ms cubic-bezier(0.165, 0.84, 0.44, 1)

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

View File

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

@ -13,7 +13,7 @@
website.BlogTour = website.Tour.extend({
id: 'blog',
name: "Create a blog post",
testPath: /\/(blog|blogpost)\/[0-9]+\//,
testPath: '/(blog|blogpost)',
init: function (editor) {
var self = this;
self.steps = [

View File

@ -0,0 +1,23 @@
$(document).ready(function() {
$('.js_next').click(function(event) {
event.preventDefault();
var translationValue = $('.cover_footer').get(0).getBoundingClientRect().top;
newLocation = this.href;
$('.blog_cover').addClass('page_fadeup_out');
$('.cover_footer')
.addClass('page_upward')
.css({ "transform": "translate3d(0, -"+ translationValue +"px, 0)" })
.fadeIn(10000, newpage);
});
function newpage() {
$.ajax({
url: newLocation,
}).done(function(data) {
document.getElementsByTagName('html')[0].innerHTML = data;
if (newLocation != window.location) {
history.pushState(null, null, newLocation);
}
});
}
});

View File

@ -7,9 +7,8 @@
<script type="text/javascript" src="/website_blog/static/src/js/website_blog.editor.js"></script>
<script type="text/javascript" src="/website_blog/static/src/js/website.tour.blog.js"></script>
<script type="text/javascript" src="/website_blog/static/lib/contentshare.js"></script>
<script type="text/javascript" src="/website_blog/static/lib/page-transitions/js/app.js"></script>
<script type="text/javascript" src="/website_blog/static/lib/inlineDisqussions/inlineDisqussions.js"></script>
<script type="text/javascript" src="/website_blog/static/src/js/website_blog.js"/>
</xpath>
</template>
@ -166,6 +165,7 @@
<h1 class="text-center" t-field="blog_post.name"/>
<p class="post-meta text-muted text-center" name="blog_post_data">
<span class="fa fa-calendar oe_date"> <span t-field="blog_post.create_date"/> &amp;nbsp;</span>
<span>Visit <span class="badge" t-field="blog_post.counter"></span></span>
<span t-if="len(blog_post.message_ids) &gt; 0" class="fa fa-comment-o"> With
<a t-attf-href="#comments">
<t t-if="len(blog_post.message_ids) &lt;= 1" ><t t-esc="len(blog_post.message_ids)"/> comment</t>
@ -187,7 +187,7 @@
</t>
</div>
<div t-field="blog_post.content"/>
<div id="blog_content" t-field="blog_post.content"/>
<section id="comments" class="container">
<ul class="media-list" id="comments-list">
@ -210,32 +210,6 @@
</t>
</template>
<template id="blog_post_cover" name="Blog Cover" inherit_option_id="website_blog.blog_post_complete">
<xpath expr="//div[@id='title']" position="replace">
<div class='page hidden' id="title">
<div class='big-image'>
<div class='inner'>
<div class='fader'>
<div class='text'>
<a class='goto-next'>Read Next</a>
<h1 class='title'></h1>
<h2 class='description'></h2>
<h4 class='byline'>
<span class="author_image"/>
<span class='author'></span>
</h4>
<p class="post-meta text-muted text-center" name="blog_post_data"/>
</div>
</div>
</div>
</div>
<div class="content">
<div class='text'></div>
</div>
</div>
</xpath>
</template>
<template id="blog_breadcrumb" name="Breadcrumb"
inherit_option_id="website_blog.blog_post_complete">
<xpath expr="//div[@id='title']" position="before">
@ -256,61 +230,72 @@
</xpath>
</template>
<!--<template id="blog_background_cover" name="Blog Cover"-->
<!-- inherit_option_id="website_blog.blog_post_complete">-->
<!-- <xpath expr="//div[@id='title']" position="attributes">-->
<!-- <attribute name="class">blog_cover</attribute>-->
<!-- <attribute t-if="blog_post.content_image" name="t-attf-style">background : url('data:image/png;base64,#{blog_post.content_image}') center center no-repeat;</attribute>-->
<!-- <attribute t-if="not blog_post.content_image" name="style">background : #34495E;</attribute>-->
<!-- </xpath>-->
<!-- <xpath expr="//div[@id='title']" position="inside">-->
<!-- <div class="text-center blog_item">-->
<!-- <img class="img-circle" t-att-src="'/website/image?model=res.partner&amp;field=image_small&amp;id='+str(blog_post.create_uid.id)" style="width: 50px; margin-right: 10px;"/>-->
<!-- <small class="text-muted" id="blog_author" t-field="blog_post.create_uid.name"/>-->
<!-- </div>-->
<!-- <div class="text-center mt64">-->
<!-- <a href="#blog_content"><span class="fa fa-angle-down fa-2x fa-inverse"/></a>-->
<!-- </div>-->
<!-- </xpath>-->
<!--</template>-->
<!-- Options: Blog Post: Full Screen Background Image -->
<template id="blog_post_background_cover" name="Blog Cover"
inherit_option_id="website_blog.blog_post_complete">
<xpath expr="//div[@id='title']" position="attributes">
<attribute name="class">blog_cover</attribute>
<attribute name="t-attf-style">background-image : url(data:image/jpg;base64,#{blog_post.content_image})</attribute>
</xpath>
<xpath expr="//div[@id='title']" position="inside">
<div class="text-center blog_item">
<img class="img-circle" t-att-src="'/website/image?model=res.partner&amp;field=image_small&amp;id='+str(blog_post.create_uid.partner_id.id)" style="width: 30px; margin-right: 10px;"/>
<small class="text-muted" id="blog_author" t-field="blog_post.create_uid.name"/>
</div>
<div class="text-center mt64">
<a href="#blog_content"><span class="fa fa-angle-down fa-2x fa-inverse"/></a>
</div>
</xpath>
<xpath expr="//section[@id='comments']" position="after">
<div class="cover_footer" t-attf-style="background-image: url(data:image/jpg;base64,#{next_post.content_image})">
<a class="js_next " t-attf-href="/blogpost/#{ slug(next_post) }"><p class="text-center">Read Next</p></a>
<h1 class="text-center" t-field="next_post.name"/>
<div class="text-center blog_item">
<img class="img-circle" t-att-src="'/website/image?model=res.partner&amp;field=image_small&amp;id='+str(next_post.create_uid.partner_id.id)" style="width: 30px; margin-right: 10px;"/>
<small class="text-muted" id="blog_author" t-field="next_post.create_uid.name"/>
</div>
</div>
</xpath>
</template>
<!--<template id="blog_footer" name="Blog Footer"-->
<!-- inherit_option_id="website_blog.blog_post_complete">-->
<!-- <xpath expr="//section[@id='comments']" position="before">-->
<!-- <div class="container mt16 mb32">-->
<!-- <div class="col-sm-12">-->
<!-- <div class="col-sm-4 col-sm-offset-2">-->
<!-- <hr class="mt0 mb0"/>-->
<!-- <strong class="text-muted text-right">WRITTEN BY</strong>-->
<!-- <div class="media">-->
<!-- <a class="pull-left" href="#">-->
<!-- <img class="img-rounded" t-att-src="'/website/image?model=res.partner&amp;field=image_small&amp;id='+str(blog_post.create_uid.id)" style="width: 50px; margin-right: 10px;"/>-->
<!-- </a>-->
<!-- <div class="media-body">-->
<!-- <h4 class="media-heading" t-field="blog_post.create_uid.name"></h4>-->
<!-- <p t-field="blog_post.create_uid.email"></p>-->
<!-- <small t-if="blog_post.website_published_datetime" class="text-right text-muted">Published on <t t-esc="blog_post.website_published_datetime"/></small>-->
<!-- <small t-if="not blog_post.website_published_datetime" class="text-right text-muted">Last Modified on <t t-esc="blog_post.write_date"/></small>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="col-sm-4 col-sm-offset-2" t-if="blog_post.blog_id">-->
<!-- <hr class="mt0 mb0"/>-->
<!-- <strong class="text-muted text-right">PUBLISHED IN</strong>-->
<!-- <div class="media">-->
<!-- <a class="pull-left" href="#">-->
<!-- <img class="img-rounded" t-att-src="'/website/image?model=blog.blog&amp;field=image&amp;id='+str(blog_post.blog_id.id)" style="width: 50px; margin-right: 10px;"/>-->
<!-- </a>-->
<!-- <div class="media-body">-->
<!-- <h4 class="media-heading" t-field="blog_post.blog_id.name"></h4>-->
<!-- <span t-field="blog_post.blog_id.description"/>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </xpath>-->
<!--</template>-->
<!-- Options: Blog Post: Footer author detail -->
<template id="blog_post_footer" name="Blog Footer"
inherit_option_id="website_blog.blog_post_complete">
<xpath expr="//section[@id='comments']" position="before">
<div class="container mt16 mb32">
<div class="col-sm-12">
<div class="col-sm-4 col-sm-offset-2">
<hr class="mt0 mb0"/>
<strong class="text-muted text-right">WRITTEN BY</strong>
<div class="media">
<a class="pull-left" href="#">
<img class="img-rounded" t-att-src="'/website/image?model=res.partner&amp;field=image_small&amp;id='+str(blog_post.create_uid.id)" style="width: 50px; margin-right: 10px;"/>
</a>
<div class="media-body">
<h4 class="media-heading" t-field="blog_post.create_uid.name"></h4>
<p t-field="blog_post.create_uid.email"></p>
<small t-if="blog_post.website_published_datetime" class="text-right text-muted">Published on <t t-esc="blog_post.website_published_datetime"/></small>
<small t-if="not blog_post.website_published_datetime" class="text-right text-muted">Last Modified on <t t-esc="blog_post.write_date"/></small>
</div>
</div>
</div>
<div class="col-sm-4 col-sm-offset-2" t-if="blog_post.blog_id">
<hr class="mt0 mb0"/>
<strong class="text-muted text-right">PUBLISHED IN</strong>
<div class="media">
<a class="pull-left" href="#">
<img class="img-rounded" t-att-src="'/website/image?model=blog.blog&amp;field=image&amp;id='+str(blog_post.blog_id.id)" style="width: 50px; margin-right: 10px;"/>
</a>
<div class="media-body">
<h4 class="media-heading" t-field="blog_post.blog_id.name"></h4>
<span t-field="blog_post.blog_id.description"/>
</div>
</div>
</div>
</div>
</div>
</xpath>
</template>
<!-- Options: Blog Post: user can reply -->
<template id="opt_blog_post_complete_comment" name="Allow Comments"

View File

@ -1,12 +1,13 @@
# -*- coding: utf-8 -*-
import werkzeug
import openerp
from openerp import SUPERUSER_ID
from openerp.addons.web import http
from openerp.tools.translate import _
from openerp.addons.web.http import request
from openerp.addons.website_partner.controllers import main as website_partner
import werkzeug.urls
class WebsiteCrmPartnerAssign(http.Controller):
_references_per_page = 20
@ -14,16 +15,25 @@ class WebsiteCrmPartnerAssign(http.Controller):
@http.route([
'/partners/',
'/partners/page/<int:page>/',
'/partners/grade/<int:grade_id>',
'/partners/grade/<int:grade_id>/page/<int:page>/',
'/partners/country/<int:country_id>',
'/partners/country/<country_name>-<int:country_id>',
'/partners/country/<int:country_id>/page/<int:page>/',
'/partners/country/<country_name>-<int:country_id>/page/<int:page>/',
'/partners/grade/<int:grade_id>/country/<int:country_id>/',
'/partners/grade/<int:grade_id>/country/<country_name>-<int:country_id>',
'/partners/grade/<int:grade_id>/country/<int:country_id>/page/<int:page>/',
'/partners/grade/<int:grade_id>/country/<country_name>-<int:country_id>/page/<int:page>/',
], type='http', auth="public", website=True, multilang=True)
def partners(self, country_id=0, page=0, **post):
def partners(self, country_id=0, grade_id=0, page=0, **post):
country_obj = request.registry['res.country']
partner_obj = request.registry['res.partner']
post_name = post.get('search', '')
grade_id = post.get('grade', '')
country = None
# format displayed membership lines domain
@ -83,7 +93,7 @@ class WebsiteCrmPartnerAssign(http.Controller):
context=request.context, count=True)
grades.insert(0, {
'grade_id_count': grades_partners,
'grade_id': ("all", _("All Levels"))
'grade_id': (0, _("All Categories"))
})
values = {

View File

@ -35,13 +35,27 @@
Contact a reseller
</h2>
</div>
<div class="col-md-4 mb32" id="partner_left">
<h3>Resellers by Country</h3>
<ul class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Categories</h3></li>
<t t-foreach="grades" t-as="grade">
<li t-if="grade['grade_id']" t-att-class="grade['grade_id'][0] == grade_id and 'active' or ''">
<a t-attf-href="#{ grade['grade_id'][0] and '/partners/grade/%s' % grade['grade_id'][0] or '/partners' }#{ current_country_id and ('/country/%s' % current_country_id) or '' }#{ search_path }">
<span class="badge pull-right" t-esc="grade['grade_id_count'] or ''"/>
<t t-esc="grade['grade_id'][1]"/>
</a>
</li>
</t>
</ul>
<ul id="reseller_countries" class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Locations</h3></li>
<t t-foreach="countries" t-as="country_dict">
<t t-if="country_dict['country_id']">
<li t-att-class="country_dict['country_id'][0] == current_country_id and 'active' or ''">
<a t-attf-href="#{ country_dict['country_id'][0] and '/partners/country/%s' % slug(country_dict['country_id']) or '/partners/' }#{ search_path }">
<a t-attf-href="#{ country_dict['country_id'][0] and ('/partners/country/%s' % slug(country_dict['country_id'])) or '/partners/' }#{ search_path }">
<span class="badge pull-right" t-esc="country_dict['country_id_count'] or ''"/>
<t t-esc="country_dict['country_id'][1]"/>
</a>
@ -49,7 +63,9 @@
</t>
</t>
</ul>
</div>
<div class="col-md-8" id="ref_content">
<div class='navbar'>
<div>
@ -60,17 +76,7 @@
<div class="form-group">
<input type="text" name="search" class="search-query col-md-2 mt4 form-control" placeholder="Search" t-att-value="searches.get('search', '')"/>
</div>
<div class="form-group">
<select class="search-query col-md-2 mt4 form-control" name="grade" t-if="len(grades) > 1" onchange="submit()">
<t t-foreach="grades">
<t t-if="grade_id">
<option t-att-selected="searches.get('grade') == str(grade_id and grade_id[0]) and 'selected'" t-att-value="grade_id[0]">
<t t-esc="grade_id[1]"/> (<t t-esc="grade_id_count"/>)
</option>
</t>
</t>
</select>
</div>
</form>
</div>
</div>
@ -103,7 +109,7 @@
</template>
<template id="ref_country" inherit_id="website_crm_partner_assign.index" inherit_option_id="website_crm_partner_assign.index" name="Left World Map">
<xpath expr="//div[@id='partner_left']//ul" position="after">
<xpath expr="//ul[@id='reseller_countries']" position="after">
<h3>World Map</h3>
<ul class="nav">
<iframe t-attf-src="/google_map/?width=320&amp;height=240&amp;partner_ids=#{ google_map_partner_ids }&amp;partner_url=/partners/"

View File

@ -13,7 +13,7 @@
website.EventTour = website.Tour.extend({
id: 'event',
name: "Create an event",
testPath: /\/event\/[0-9]+\/register/,
testPath: '/event(/[0-9]+/register)?',
init: function (editor) {
var self = this;
self.steps = [

View File

@ -11,7 +11,7 @@ testRunner.run(function eventTest (page, timeout) {
});
}, function executeTest () {
page.evaluate(function () {
window.openerp.website.Tour.run_test('event');
window.openerp.website.Tour.get('event').run(true);
});
}, timeout);
});

View File

@ -16,7 +16,7 @@
<record id="action_open_website" model="ir.actions.act_url">
<field name="name">Website Shop</field>
<field name="target">self</field>
<field name="url">/shop?tutorial.shop=true</field>
<field name="url">/shop#tutorial.shop=true</field>
</record>
<record id="base.open_menu" model="ir.actions.todo">
<field name="action_id" ref="action_open_website"/>

View File

@ -27,7 +27,7 @@
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Create Awsome Product Pages</h2>
<h2 class="oe_slogan">Create Awesome Product Pages</h2>
<h3 class="oe_slogan">Get rid of old WYSIWYG editors</h3>
<div class="oe_span6">
<p class='oe_mt32'>
@ -295,7 +295,7 @@
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan">Fully Integrated With Others Apps</h2>
<h2 class="oe_slogan">Fully Integrated With Other Apps</h2>
<h3 class="oe_slogan">Get hundreds of open source apps for free</h3>
<div class="oe_span4">
<a href="/apps/website">

View File

@ -14,7 +14,7 @@
website.EditorShopTour = website.Tour.extend({
id: 'shop',
name: "Create a product",
testPath: /\/shop\/.*/,
testPath: '/shop',
init: function (editor) {
var self = this;
self.steps = [
@ -145,7 +145,7 @@
id: 'shop_buy_product',
name: "Try to buy products",
path: '/shop',
testPath: /\/shop/,
testPath: '/shop',
init: function (editor) {
var self = this;
self.steps = [
@ -216,11 +216,7 @@
},
},
{
title: "select acquirer",
element: 'input[name="acquirer"]',
},
{
title: "confirm",
title: "Pay Now",
element: 'button:contains("Pay Now")',
},
{

View File

@ -26,11 +26,12 @@ $(document).ready(function () {
if (isNaN(value)) value = 0;
openerp.jsonRpc("/shop/set_cart_json/", 'call', {'order_line_id': $input.data('id'), 'set_number': value})
.then(function (data) {
if (!data) {
location.reload();
return;
}
set_my_cart_quantity(data[1]);
$input.val(data[0]);
if (!data[0]) {
location.reload();
}
});
});

View File

@ -2,7 +2,7 @@ import openerp.addons.website.tests.test_ui as test_ui
def load_tests(loader, base, _):
base.addTest(test_ui.WebsiteUiSuite(test_ui.full_path(__file__,'website_sale-sale_process-test.js'),
{'redirect': '/page/website.homepage'}))
{'redirect': '/page/website.homepage'}, 120))
base.addTest(test_ui.WebsiteUiSuite(test_ui.full_path(__file__,'website_sale-sale_process-test-2.js'),
{'redirect': '/page/website.homepage'}))
return base

View File

@ -530,7 +530,7 @@
<a t-if="website_sale_order and website_sale_order.website_order_line" href="/shop/checkout/" class="btn btn-primary pull-right mb32">Process Checkout <span class="fa fa-long-arrow-right"/></a>
<div class="oe_structure"/>
</div>
<div class="col-lg-3 col-lg-offset-1 col-sm-3 text-muted" id="right_column">
<div class="col-lg-3 col-lg-offset-1 col-sm-3 col-md-3 text-muted" id="right_column">
<h4>Policies</h4>
<ul class="list-unstyled mb32">
<li>&#9745; 30-days money-back guarantee</li>
@ -828,7 +828,7 @@
</div>
<button type="submit" class="btn btn-default btn-primary pull-right mb32">Confirm <span class="fa fa-long-arrow-right"/></button>
</div>
<div class="col-lg-offset-1 col-lg-3 text-muted">
<div class="col-lg-offset-1 col-lg-3 col-md-3 text-muted">
<h3 class="page-header mt16">Your Order <small><a href="/shop/mycart"><span class="fa fa-arrow-right"/> change</a></small></h3>
<div class="row">
<div class="col-sm-6 text-right">Subtotal:</div>