From dc111831ba6c459f3686b80708f45e1894ae7630 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 4 Feb 2016 13:44:11 +0000 Subject: [PATCH 1/2] [ADD] contact snippet addon initial commit --- website_contact_snippet/__init__.py | 1 + website_contact_snippet/__openerp__.py | 42 ++++++ website_contact_snippet/readme.rst | 8 ++ .../static/src/img/thumbnail.png | Bin 0 -> 2623 bytes .../src/js/website_contact_snippet.editor.js | 81 +++++++++++ .../static/src/xml/contact_form.xml | 50 +++++++ .../static/src/xml/contact_form_modal.xml | 130 ++++++++++++++++++ website_contact_snippet/views/assets.xml | 12 ++ website_contact_snippet/views/snippet.xml | 20 +++ 9 files changed, 344 insertions(+) create mode 100644 website_contact_snippet/__init__.py create mode 100644 website_contact_snippet/__openerp__.py create mode 100755 website_contact_snippet/readme.rst create mode 100644 website_contact_snippet/static/src/img/thumbnail.png create mode 100644 website_contact_snippet/static/src/js/website_contact_snippet.editor.js create mode 100644 website_contact_snippet/static/src/xml/contact_form.xml create mode 100644 website_contact_snippet/static/src/xml/contact_form_modal.xml create mode 100644 website_contact_snippet/views/assets.xml create mode 100644 website_contact_snippet/views/snippet.xml diff --git a/website_contact_snippet/__init__.py b/website_contact_snippet/__init__.py new file mode 100644 index 0000000..7c68785 --- /dev/null +++ b/website_contact_snippet/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- \ No newline at end of file diff --git a/website_contact_snippet/__openerp__.py b/website_contact_snippet/__openerp__.py new file mode 100644 index 0000000..a1b1e0f --- /dev/null +++ b/website_contact_snippet/__openerp__.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Odoo, an open source suite of business apps +# This module copyright (C) 2015 bloopark systems (). +# +# 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 . +# +############################################################################## +{ + 'name': 'Contact Snippet', + 'description': 'Snippet for simple contact form with lead creation', + 'category': 'Themes/Corporate', + + 'author': "bloopark systems GmbH & Co. KG", + 'website': "http://www.bloopark.de", + + 'version': '1.0', + + 'data': [ + 'views/assets.xml', + 'views/snippet.xml', + 'static/src/xml/contact_form.xml' + ], + + 'depends': [ + 'website', + 'website_crm', + 'website_form' + ], +} diff --git a/website_contact_snippet/readme.rst b/website_contact_snippet/readme.rst new file mode 100755 index 0000000..c0322bb --- /dev/null +++ b/website_contact_snippet/readme.rst @@ -0,0 +1,8 @@ +==================== +Contact Form Snippet +==================== + +Dynamic snippet to allow web forms on Odoo pages outside of the contact page. Easily create leads by positioning the snippet +at strategic positions on your website. Leads are collected just as you are used to in the backend. +Currently the snippet allows to add/remove preset fields that exist in the original contact form. For future development, we are +aiming to provide the possibility to add custom fields. \ No newline at end of file diff --git a/website_contact_snippet/static/src/img/thumbnail.png b/website_contact_snippet/static/src/img/thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..e36580efdf050e81f8d49b7eebe57eb981ef9ce7 GIT binary patch literal 2623 zcmbW3`9Bkm1I9O`xszK;=#wGs<6eiNO@!E*qvZ;@&8QEXatkeI5xEPC5t1zTK=KZN~9lriq6E) zR=#HA{KLenr_H{3=;}-DLfR;-*wOKo?W6~ao5UORl)1(r#uUG* zba7ZHX$zres9epy=P zVplS!>%+6sB|>Y)725Tgra=N5;NmHjh9poc*H*pdTC^^_?e2rYU{XHz+VM)jlV^b^ zJs)xj%>p~UvX#Tx8;hnj9pAlX&8P=U+c6pE3&vnaH+^q;5QmjFR|t-3AJ@TtCqvWe zHHvlZ=g}{`hg~v39H1_gCU(SqZWDn0s>cDgVrPdekWD^5lDk=-Vscf(?!V0QT7PEH zXYsLs47BP|EPXttcO3#YrniHE z{&16+vh{X>gsE`qVLz%B<0*zKP4PVJJCz zewXXT-*~?Ac)%{b@o?P@*);FXcY(D}R^$IN%Ct*Y#VO!R*HN=V+SLp7N`Alax~)+fS6$&8v=c0- zq4V%@(BGO_JIECCkq5CM(nkTih|{>GC%WF92^bNsq`p@p$G8*s&4o}*Gx97$ktx_K zowxYwoZX`tTtf4ZuuM)5JYk`5MJSRmCUq(YmitU~A#k^8Q?9+;??j1+>7yycPklm> zM$#8s(pi^r5|O_J0sv6A-sn6Bo5I>Pg@*6+&x#1(w>^4Oz`O+w)0xljeQ~(froaaX zlW+Wo9O1Rr?#Ek`rGPxH%zaDL?7Ot49*D$&sH{$?952+N-18HZ*H}Ejm(Jw#buUs^~jQRZDOoll3 z+kI|k)6TVNKwO7c3&lj-d52d0-THBL$3n*K(rlt2m2K*Zwh6EyO~0Do-ztNe$KT4i zE8I7=@=s7WA2m{fY}a}E%eI&I#3>I+?yBmB=~N;^B(KCK={0)13+e`24#CP@e5}4Y zfymL!hCr5@`wc_wi+H=sInm3iFJZSCebE=kJbWD&l*d~MYde#b33=K{sTb5k2<@EO zkF`48J^ogm%Dg6_wTqhKO0!{%sX$`4{AD@PqSdU_w0WAdk z44oV)8m#{NL$Mc!%?&6pONc7bBJMstFCRnYX4;#+G{TD?p`J<27D;B%O(J;yv!Xz0 z<36Rm8eq(zPQ`#o0jim|`>#|8)P3H$94Wz+H!FMLwxe18H157v8V@4$w>4kbXEjWr zyOOl%*g4)Yza~Q;J%0!Mi_TIVbC?nEM}#m5JtO}6+Hj_5L z%{Ilg%fq0fTFULO21yPlJOd=Eg$;6d!4r&!t;xmCgo3 z_tW{LnY`Y9J0cy}ex)C7bkE-%pr);aOxJpT|CiQpqmm?@9{bmk)ZRHI7+~2rTLqA0 z7(KDgxFzsKxpZ8BGbIF3IEC4hbPTQ1b#X}_pN>`iSGyNqUhmsVod>$?CAM@D?q=P| z_v2B@FOmvGs|590-S?m=UpA;A*gd&xD@Rr3rNq;?kA7+X2vo`(|AYA8y>JLOGXTxzY5ds$BO8JYx)UvG8zY zSjdZ~{wx#L{HhuEQ%%ouTjT8YxO-%cH}ry_brYaWD~2Xyz`9c@sM}c z0*>$$veTgTQx{|74rSr{9e=Ot(QxUh&(K|$@W?CF7I^91q#u$0eV>1Zy%rCUY&#Q` zktpI89{vNmP(R=C=7n#Hf2|NJsp~{f;_{2E5i)8{A02)w<>Q7-`KZ$q{r*FaK&*H) V7Mr)9_U91-ZW&p?D{kD6`XAk<4XywH literal 0 HcmV?d00001 diff --git a/website_contact_snippet/static/src/js/website_contact_snippet.editor.js b/website_contact_snippet/static/src/js/website_contact_snippet.editor.js new file mode 100644 index 0000000..130e77d --- /dev/null +++ b/website_contact_snippet/static/src/js/website_contact_snippet.editor.js @@ -0,0 +1,81 @@ +odoo.define('website_contact_snippet.editor', function(require) { + 'use strict'; + + var options = require('web_editor.snippets.options'); + var ajax = require('web.ajax'); + var snippet_editor = require('web_editor.snippet.editor'); + var core = require('web.core'); + var qweb = core.qweb; + + ajax.loadXML('/website_contact_snippet/static/src/xml/contact_form_modal.xml', qweb); + + options.registry.website_contact_snippet = options.Class.extend({ + form_opt: function(type, value, $li) { + if (type !== 'click') {return}; + var self = this; + self.$modal = $(qweb.render("website_contact_snippet.contactus_form_modal")); + self.$modal.appendTo('body'); + self.$modal.modal(); + + var $subData = self.$modal.find($('#sub-data')), + $sendForm = self.$target.find($('.o_website_form_send').closest('.form-group')), + formItems = ['name','email','phone','company','subject','message'], + modalIds = formItems.map(function(formItem) { + return formItem = self.$modal.find($('#' + formItem)); + }); + + _.each(formItems, function(formItem) { + form_to_modal(formItem); + }); + + self.addEventHandler(modalIds, 'click', function() { + ($(this).attr('checked')) ? $(this).attr('checked', false) : $(this).attr('checked', true); + }); + + $subData.on('click', function() { + formItems.forEach(function(formItem) { + modal_to_form(formItem); + }); + }); + + function modal_to_form(formItem) { + var $formEl = self.$target.find($('.form-' + formItem)), + $modalCheck = self.$modal.find($('#' + formItem)); + + if ($modalCheck.attr('checked') === 'checked' && $formEl.length < 1) { + + var template = $(qweb.render("website_contact_snippet.form_" + formItem)); + template.insertBefore($sendForm); + + } else if ($modalCheck.attr('checked') === 'checked' && $formEl.length > 0) { + + (formItem === 'subject') ? $formEl.removeClass('hidden').val('') : ''; + + } else if ($modalCheck.attr('checked') !== 'checked') { + + (formItem !== 'subject') ? $formEl.remove() : $formEl.addClass('hidden').val('Message from contact snippet'); + } + } + + function form_to_modal(formItem) { + var $formEl = self.$target.find($('.form-' + formItem)), + $modalCheck = self.$modal.find($('#' + formItem)); + + ($formEl.length > 0 && formItem !== 'subject' || formItem === 'subject' && !$formEl.hasClass('hidden')) + ? $modalCheck.attr('checked', true) + : $modalCheck.attr('checked', false); + } + + this.$modal.on('hidden.bs.modal', function () { + $(this).remove(); + }); + }, + + addEventHandler: function (array, type, func) { + var len = array.length; + $(array).each(function(index, item) { + $(item).bind(type, func); + }); + }, + }); +}); \ No newline at end of file diff --git a/website_contact_snippet/static/src/xml/contact_form.xml b/website_contact_snippet/static/src/xml/contact_form.xml new file mode 100644 index 0000000..80ac79f --- /dev/null +++ b/website_contact_snippet/static/src/xml/contact_form.xml @@ -0,0 +1,50 @@ + + + + + + + + \ No newline at end of file diff --git a/website_contact_snippet/static/src/xml/contact_form_modal.xml b/website_contact_snippet/static/src/xml/contact_form_modal.xml new file mode 100644 index 0000000..87fbac6 --- /dev/null +++ b/website_contact_snippet/static/src/xml/contact_form_modal.xml @@ -0,0 +1,130 @@ + + + + + + + + +
+
+ +
+ +
+
+
+
+ + + + + + +
+
+ +
+ +
+
+
+
+ + +
+
+ +
+ +
+
+
+
+ + +
+
+ +
+ +
+
+
+
+ + +
diff --git a/website_contact_snippet/views/assets.xml b/website_contact_snippet/views/assets.xml new file mode 100644 index 0000000..44b8da3 --- /dev/null +++ b/website_contact_snippet/views/assets.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/website_contact_snippet/views/snippet.xml b/website_contact_snippet/views/snippet.xml new file mode 100644 index 0000000..b056433 --- /dev/null +++ b/website_contact_snippet/views/snippet.xml @@ -0,0 +1,20 @@ + + + + + + + + + + \ No newline at end of file From d36c6f1b071f588f40481413e8942d073425c846 Mon Sep 17 00:00:00 2001 From: Florian Fischer Date: Thu, 4 Feb 2016 13:56:53 +0000 Subject: [PATCH 2/2] [FIX] change path to thumbnail --- .../static/src/img/thumbnail.png | Bin 2623 -> 1154 bytes website_contact_snippet/views/snippet.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/website_contact_snippet/static/src/img/thumbnail.png b/website_contact_snippet/static/src/img/thumbnail.png index e36580efdf050e81f8d49b7eebe57eb981ef9ce7..b2e3b0108b550582809b47c00472924e7609bc46 100644 GIT binary patch literal 1154 zcmeAS@N?(olHy`uVBq!ia0vp^DM0Mc!3HE{I};WHDVB6cUq=Rpjs4tz5?O&{>E>SON_)j6qRmF7+N2t=bRUrYFq7Tmg-{ACqZ^ifi3;Pc)5~+IO zYoqzfmA`A@LM^YJuD~r_`){3F+;mWNX07VXlSb8_&c3@n^Kad~H}7t%YySSby+O>7 zi{*&RqQ(j?4S_`dCZ<4zLm~oVeQ6y`g3B5<6qq=RbQrLdMutj-jDbzbY)b`{Ba}hM7KWw{G7~%*fyn5ZF2; z@PA-lU7g&r<;z$8mAc*A+k5cJm5{JlrHKtwr;5IK`?mGft5<7w1?{V-scD%zSC*sI z$-v0SNsi0Xxv#%Jv9@;ZosBCW9yoA-`}3<;S|#P>)~w9zk{m313LhSByXiD{UqpFi zd3kw3Y3WnnP<;=}1P6_W1rmOKekT?uvIYePKD70;c)ly@!@|`oS1R)Ni*mT#ym*oE z_wV0N8oXCN{Q1)|CO+P|xY*b-=hLEnd-w8sdwW0W^X09ss!Av*Fj&pSJa6{w=C(Gr zjLgi!r0J#g_5A7S=^M6hXFq)Sut2Zd=3{eSH}R;1tN)KKudaTbE5XOdH>Z;S;F=fj z-?uMYrlwu#!mzRH#>ZoCvO6CCisJWgjPMS-A$>x>t(AxQewMkp`NIz%F03?NvVQ&f z>fr4c`}VXwIDPiryLG00Dl+G)jFCKG2Tue+sf~V@Xvv{BXyt2rO2&w+#3%73l z`g20@KVLQ@YisVwlP6nRpANS)G-Nb3HjX?iCN92r&5KvBPHoyCRya8hJWm%zxCHZaxZfl(3L}yyfbR8y<2}m4WKtUo3w3>61}T zZf@nl+cmMDAFk5a{=lS%y?g7{tp-+BS*5qMnK)Lpv=^=nIrZBv=+*vjAHVqSUAy+| zFGd08BUVN3`3dpPGFPvD-yqVF|B|bCF_UJ`x_#B6g*#qY|5Cd1<8eA$(98J$Pgi~} zm56h7T4E>SAvbehjrW1;?@!vSEefyy_l3`{?!}qAFXGqwMXJo~y6({^;-5W9oz-d5 z%8FhQkB?i_DuWcj66KMVTl)6*ADZp=D|7A2-8XJ`oXpwsGICm=nB8K($eLTyw%P)V tb!yyL4=vw&aWj+QsYB@@3Um=ZX8&lJ_+ys8*`Pv&!PC{xWt~$(696r&4D$d0 literal 2623 zcmbW3`9Bkm1I9O`xszK;=#wGs<6eiNO@!E*qvZ;@&8QEXatkeI5xEPC5t1zTK=KZN~9lriq6E) zR=#HA{KLenr_H{3=;}-DLfR;-*wOKo?W6~ao5UORl)1(r#uUG* zba7ZHX$zres9epy=P zVplS!>%+6sB|>Y)725Tgra=N5;NmHjh9poc*H*pdTC^^_?e2rYU{XHz+VM)jlV^b^ zJs)xj%>p~UvX#Tx8;hnj9pAlX&8P=U+c6pE3&vnaH+^q;5QmjFR|t-3AJ@TtCqvWe zHHvlZ=g}{`hg~v39H1_gCU(SqZWDn0s>cDgVrPdekWD^5lDk=-Vscf(?!V0QT7PEH zXYsLs47BP|EPXttcO3#YrniHE z{&16+vh{X>gsE`qVLz%B<0*zKP4PVJJCz zewXXT-*~?Ac)%{b@o?P@*);FXcY(D}R^$IN%Ct*Y#VO!R*HN=V+SLp7N`Alax~)+fS6$&8v=c0- zq4V%@(BGO_JIECCkq5CM(nkTih|{>GC%WF92^bNsq`p@p$G8*s&4o}*Gx97$ktx_K zowxYwoZX`tTtf4ZuuM)5JYk`5MJSRmCUq(YmitU~A#k^8Q?9+;??j1+>7yycPklm> zM$#8s(pi^r5|O_J0sv6A-sn6Bo5I>Pg@*6+&x#1(w>^4Oz`O+w)0xljeQ~(froaaX zlW+Wo9O1Rr?#Ek`rGPxH%zaDL?7Ot49*D$&sH{$?952+N-18HZ*H}Ejm(Jw#buUs^~jQRZDOoll3 z+kI|k)6TVNKwO7c3&lj-d52d0-THBL$3n*K(rlt2m2K*Zwh6EyO~0Do-ztNe$KT4i zE8I7=@=s7WA2m{fY}a}E%eI&I#3>I+?yBmB=~N;^B(KCK={0)13+e`24#CP@e5}4Y zfymL!hCr5@`wc_wi+H=sInm3iFJZSCebE=kJbWD&l*d~MYde#b33=K{sTb5k2<@EO zkF`48J^ogm%Dg6_wTqhKO0!{%sX$`4{AD@PqSdU_w0WAdk z44oV)8m#{NL$Mc!%?&6pONc7bBJMstFCRnYX4;#+G{TD?p`J<27D;B%O(J;yv!Xz0 z<36Rm8eq(zPQ`#o0jim|`>#|8)P3H$94Wz+H!FMLwxe18H157v8V@4$w>4kbXEjWr zyOOl%*g4)Yza~Q;J%0!Mi_TIVbC?nEM}#m5JtO}6+Hj_5L z%{Ilg%fq0fTFULO21yPlJOd=Eg$;6d!4r&!t;xmCgo3 z_tW{LnY`Y9J0cy}ex)C7bkE-%pr);aOxJpT|CiQpqmm?@9{bmk)ZRHI7+~2rTLqA0 z7(KDgxFzsKxpZ8BGbIF3IEC4hbPTQ1b#X}_pN>`iSGyNqUhmsVod>$?CAM@D?q=P| z_v2B@FOmvGs|590-S?m=UpA;A*gd&xD@Rr3rNq;?kA7+X2vo`(|AYA8y>JLOGXTxzY5ds$BO8JYx)UvG8zY zSjdZ~{wx#L{HhuEQ%%ouTjT8YxO-%cH}ry_brYaWD~2Xyz`9c@sM}c z0*>$$veTgTQx{|74rSr{9e=Ot(QxUh&(K|$@W?CF7I^91q#u$0eV>1Zy%rCUY&#Q` zktpI89{vNmP(R=C=7n#Hf2|NJsp~{f;_{2E5i)8{A02)w<>Q7-`KZ$q{r*FaK&*H) V7Mr)9_U91-ZW&p?D{kD6`XAk<4XywH diff --git a/website_contact_snippet/views/snippet.xml b/website_contact_snippet/views/snippet.xml index b056433..768e3a7 100644 --- a/website_contact_snippet/views/snippet.xml +++ b/website_contact_snippet/views/snippet.xml @@ -4,7 +4,7 @@