From 61b7f5034d0d2b8b609dd99fe32766e48ed99114 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Tue, 12 Jun 2012 18:14:54 +0530 Subject: [PATCH 001/328] [ADD] Add linkedin module for integration linkedin with openerp. bzr revid: jra@tinyerp.com-20120612124454-78zfn48kerp93c5z --- addons/web_linkedin/__init__.py | 2 + addons/web_linkedin/__openerp__.py | 27 + addons/web_linkedin/res_config.py | 52 ++ addons/web_linkedin/res_config_view.xml | 26 + addons/web_linkedin/res_partner_view.xml | 36 + .../web_linkedin/static/src/css/linkedin.css | 39 + .../static/src/img/Linkedin_blue.png | Bin 0 -> 5435 bytes .../static/src/img/Linkedin_grey.png | Bin 0 -> 2748 bytes addons/web_linkedin/static/src/img/icon.png | Bin 0 -> 38257 bytes .../static/src/img/linkedin-profile.gif | Bin 0 -> 2244 bytes .../web_linkedin/static/src/img/loading.png | Bin 0 -> 5260 bytes .../static/src/img/twitt-follow.png | Bin 0 -> 12908 bytes addons/web_linkedin/static/src/js/linkedin.js | 667 ++++++++++++++++++ .../web_linkedin/static/src/xml/linkedin.xml | 124 ++++ addons/web_linkedin/web_linkedin.py | 72 ++ 15 files changed, 1045 insertions(+) create mode 100644 addons/web_linkedin/__init__.py create mode 100644 addons/web_linkedin/__openerp__.py create mode 100644 addons/web_linkedin/res_config.py create mode 100644 addons/web_linkedin/res_config_view.xml create mode 100644 addons/web_linkedin/res_partner_view.xml create mode 100644 addons/web_linkedin/static/src/css/linkedin.css create mode 100644 addons/web_linkedin/static/src/img/Linkedin_blue.png create mode 100644 addons/web_linkedin/static/src/img/Linkedin_grey.png create mode 100644 addons/web_linkedin/static/src/img/icon.png create mode 100644 addons/web_linkedin/static/src/img/linkedin-profile.gif create mode 100644 addons/web_linkedin/static/src/img/loading.png create mode 100644 addons/web_linkedin/static/src/img/twitt-follow.png create mode 100644 addons/web_linkedin/static/src/js/linkedin.js create mode 100644 addons/web_linkedin/static/src/xml/linkedin.xml create mode 100644 addons/web_linkedin/web_linkedin.py diff --git a/addons/web_linkedin/__init__.py b/addons/web_linkedin/__init__.py new file mode 100644 index 00000000000..92b70f98cf8 --- /dev/null +++ b/addons/web_linkedin/__init__.py @@ -0,0 +1,2 @@ +import res_config +import web_linkedin \ No newline at end of file diff --git a/addons/web_linkedin/__openerp__.py b/addons/web_linkedin/__openerp__.py new file mode 100644 index 00000000000..680bef0c47b --- /dev/null +++ b/addons/web_linkedin/__openerp__.py @@ -0,0 +1,27 @@ +{ + "name" : "LinkedIn Integration", + 'version': '0.1', + 'category': 'Tools', + 'complexity': "easy", + "description": + """ + OpenERP Web LinkedIn module. + This module provides the Integration of the LinkedIn with OpenERP. + """, + 'update_xml': [ + 'res_partner_view.xml', + 'res_config_view.xml', + ], + "depends" : ["base"], + "js": [ + "static/src/js/*.js" + ], + "css": [ + "static/src/css/*.css" + ], + 'qweb': [ + "static/src/xml/*.xml" + ], + 'installable': True, + 'auto_install': False, +} diff --git a/addons/web_linkedin/res_config.py b/addons/web_linkedin/res_config.py new file mode 100644 index 00000000000..e3e70237086 --- /dev/null +++ b/addons/web_linkedin/res_config.py @@ -0,0 +1,52 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Business Applications +# Copyright (C) 2004-2012 OpenERP S.A. (). +# +# 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 . +# +############################################################################## + +from osv import osv, fields + +class base_config_settings(osv.osv_memory): + _inherit = 'base.config.settings' + _name = 'base.config.settings' + _columns = { + 'default_linkedin_api_key': fields.char('LinkedIn API key', size=128, required=True, default_model='res.company', + help="""Give API key of linkedin."""), + 'generate_key': fields.text('Go to URL', readonly=True, + help="""If you have not generate linkedin API Key yet than Go to URL to generate and enter it in above text field."""), + } + _defaults = { + 'generate_key': "To find contact persons from LinkedIn "\ + "\n====================================="\ + "\n* Go to this URL : www.linkedin.com/secure/developer "\ + "\n* Add New Application and fill the form,"\ + "\n - JavaScript API Domain is Your domain name (e.g. abc.com),"\ + "\n - You can give multiple domain (e.g. abc.com, xyz.com)"\ + "\n - programming tools is Javascript"\ + '\n* Copy the "API Key" and paste it in the field "LinkedIn API Key" here above".' + } + + def execute(self, cr, uid, ids, context=None): + super(base_config_settings,self).execute(cr, uid, ids, context=context) + company_obj = self.pool.get('res.company') + data = self.browse(cr, uid, ids[0], context=context) + company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) + company_obj.write(cr, uid, [company_id], {'default_linkedin_api_key': data.default_linkedin_api_key}, context=context) + +base_config_settings() +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/web_linkedin/res_config_view.xml b/addons/web_linkedin/res_config_view.xml new file mode 100644 index 00000000000..2fef772d0b6 --- /dev/null +++ b/addons/web_linkedin/res_config_view.xml @@ -0,0 +1,26 @@ + + + + General Settings + base.config.settings + + form + 20 + + + + + + + + + + + + + + + + + + diff --git a/addons/web_linkedin/res_partner_view.xml b/addons/web_linkedin/res_partner_view.xml new file mode 100644 index 00000000000..6b8725f60fe --- /dev/null +++ b/addons/web_linkedin/res_partner_view.xml @@ -0,0 +1,36 @@ + + + + + res.partner.linkedin.inherit + res.partner + form + + + + + + + + + + + + + + res.company.linkedin.inherit + res.company + form + + + + + + + + + + + + + diff --git a/addons/web_linkedin/static/src/css/linkedin.css b/addons/web_linkedin/static/src/css/linkedin.css new file mode 100644 index 00000000000..0ca3dc90ac9 --- /dev/null +++ b/addons/web_linkedin/static/src/css/linkedin.css @@ -0,0 +1,39 @@ +.ul-ldn-dropdown { + list-style: none outside none; + padding: 1px; + max-height: 500px; + margin: 0px; + background-color: rgb(255, 255, 255); + border: 1px solid rgb(153, 153, 153); +} + +.li-ldn-dropdown { + margin: 0px; + display: block; + cursor: default; + padding: 3px; + border: 1px solid rgb(255, 255, 255); + background-color: transparent; +} +.li-ldn-dropdown td{ + font-size:10px; + font-weight:normal; + padding: 2px 2px 0px; +} + +.li-ldn-dropdown:hover { + margin: 0px; + display: block; + cursor: pointer; + border: 1px solid rgb(10, 36, 106); + background-color: rgb(182, 189, 210) +} + +.search-box { + background: none repeat scroll 0 0%, -moz-linear-gradient(#EFEFEF, #D8D8D8) repeat scroll 0 0 transparent; + background: none repeat scroll 0 0%, -webkit-linear-gradient(#EFEFEF, #D8D8D8) repeat scroll 0 0 transparent; + border: 1px solid #ABABAB; + border-radius: 3px 3px 3px 3px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + max-height: 450px; +} diff --git a/addons/web_linkedin/static/src/img/Linkedin_blue.png b/addons/web_linkedin/static/src/img/Linkedin_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..c37d0218f7d64711a93bf02cd0469faad5dba9a5 GIT binary patch literal 5435 zcmV-B6~yX^P)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000VRNklC7RuBPcpf?J7;Ik^Pm6ofBxs(IZ8yhn49JzZ+`6urPQJmHD)NK)UDt7 zO=rudzWcQA->HmSbJIV1?wfZ#1O#E%cmNdO-SVwp?rrPa@m!&pXWKw8$6r5* zshagCaCx6guinb=;3+C|Ri;MXx&7b|zVZTKYY6C=yl*OQ?0rN;=-%GN_;C2-MP%I_ zK_y^(_#EBayATnI8+#uCnxZ(Dl|cpgd+vGodM}sX?dLr5&3UHAr$A)g9#i8}lG2S?@=uW z7X$!7)!^m5uu6DdZv+5w49Gd>nw@hPV=+~Ob8h_u5E!aK7>jeR8OS98;ERY75sa}o z=Pn2aIP0*+)vAL^6G0`;DG|XMhl|Qd*5+x&%>#XW;>teSivfQTj`1FX%Q0(oEa;HN*#O*?z)e;erS;O2oo9(v*sZ=RZ5RRBz2 zYbijI4+!m~6T}JD*l=c*@z{ISwnf3$T4zgvFW$5>^L73ohqEE0Yrn@%hwEq|IB^6f z5{-=0zFR)fmw2v!Qyadgs2aN}46x2(ti_4L(Exy&jda$nNCY)1m4d4&sLna8vGv%} z8Bo)Jz|=v=(*FGF5ZCl?iamE^Xq-x5R<#NkV-{*a762^PWe4E7Bk!n@#y?xQ& z4 z)#npp9WIDsX~+N(Tx5i-3x8foJNU*h2j3W8Q%16ct_jGXI?YrylQEP>#L!0sY zLvL~5wV`_7Z{KwTAL`$XQcwv(b@n_>X|}@szx@kUW4Y~`OZn2xS8@54&N^5Cvz36q z9zDTt4!+K@v25l_r99BYGFUf48B?IMrHLD^=#4%1^0CoH*BRKlk;{8Jmi3#OtKcbk zVBa1-f8#*xwOR@}K6&j9Zrs_&qfh>m7Z(7VRt210VHpeo$S#7`CYzjcHCTjvQc0{B z%Y&c$2)A9kqv8G9iUq#^g^zLXT!lk#k2Ep@Q9R2T5MzZG01)|rEJqqs%(Cmm_w8;g zW(xlN+%0me+>HVxQ)ziD}9~KyyB~ydpFg(sf8Flu~tp zPoE3aYUP5@EG_M+dRo;rK&#}wp$m=o9<${tv*maI^n&XrKcV<|Vi};ELr0dF%p#b4 zZhpb)vO?o)oixV8s*?7FtklMuL;$V9N!An)lyeYOgRDkK8Z1cEZtR>(?VC6S7fG!i z=_065T4Fs&Y!y(^lXo%G$25wisc?OOBKRqRh$Jz;fI!>igvLv?j6cCgsoMYK4Y8uTF7fbAU>NzVZ{Ve6G ziFJT!uF#~|>nMIe;hZ#10g;d#G#YoVI$c zqV#m)mc{5>VvYBd~ZEuNUUP3)2wA~>a1^xdGBVuVz5t%biQieNQ}U59ici8`Yc zscV-i(x_}}f>8=MboA9&))XL93WRe3FSeiWc`0-j3OO%PJ5p1?2@1WkB{4z8E+Hkg znR1nhnfcgrvz2Q7I)Sl_PE6BfiWqA#HWXZ?V7xSoiKeZ~*OXN7QQCe3S825=lxIWrq%&}Q$MyeiUbwbds9suh6fl(uB`r{yLA00M3a{a&wZ^*e1qm^gi6j67aIP{pri-086QKP31(5=x zG;Zcx=rJmDV}yGLmN{4ftQ$Z6vWOt_(@4{Xb@`I?vZHAOQl1F`7(f0pVB;8IfxsMl z>4@szRl>P;t$dvJ!Bp4px_d&%iPUSfGLprrgNUClEmm%p$#c;eEHseko zL*}PP?ct~PW6c;)TF8Kul!t-z(gC2YNVm+IejE5*)j>xTbx z6T>p}$^lNk{t9pcI1ZeQ7!cI=62|Nr(?C7~p(g^O2k4~O*-g*REAR`=6g#@no)4^r z?PG$ohPlacOl6+Yx87!MVjP$NMx($-qu{II`bzq~!5RpyKo`&rY>Ggsy>IW=7hBeZ z+eZlZ1qQ%;6zmyb95@He)PjfXJ4b!O-4(6ChUl{;0w)(~###ZuM!{Es*(l)Y=(Eg% lO_Q+zT&(S)-#z}{0RT(!5YZy~6nOvu002ovPDHLkV1hIwQC9!} literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/img/Linkedin_grey.png b/addons/web_linkedin/static/src/img/Linkedin_grey.png new file mode 100644 index 0000000000000000000000000000000000000000..726e012f2209fdd3d40c825f99a23cdd29b9d145 GIT binary patch literal 2748 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 literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/img/twitt-follow.png b/addons/web_linkedin/static/src/img/twitt-follow.png new file mode 100644 index 0000000000000000000000000000000000000000..684813a1ee409af31bd3c4cd197951e1c72fdc51 GIT binary patch literal 12908 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 WR*i`F>{WsQ0000Loading....');*/ + var temp = 0; + $(head).find('script').each( function(i,val) { + if($(val).attr('src')=="http://platform.linkedin.com/in.js"){ + temp = 1; + } + }); + if(temp != 1) { + head.appendChild( tag ); + } + this.notification = new instance.web.Notification(this); + this.notification.appendTo(this.$element); + this.$element.find(".linkedin_icon").click( this.do_load_linkedin ); + this.removeTemplate(); + if(this.view.fields['name'].get_value()!=false){ + /* if value get then display button of profile url */ + if (this.view.fields['profile_id'].get_value() || this.view.datarecord['profile_id']) { + this.setTemplate(this.view.datarecord['profile_id'] , false ); + } + /* if value get then display button of twitter */ + if (this.view.fields['twitter_id'].get_value() || this.view.datarecord['twitter_id']) { + this.setTemplate( false, this.view.datarecord['twitter_id']); + } + } + if (this.view.datarecord['linkedin_id']) { + if (this.view.datarecord['profile_id'] && !this.view.datarecord['twitter_id']) { + if (this.$element.find('#twitterid')) { + this.$element.find('#twitterid').remove(); + } + } + else if (!this.view.datarecord['profile_id'] && this.view.datarecord['twitter_id']) { + if (this.$element.find('#profileid')) { + this.$element.find('#profileid').remove(); + } + } + }else{ + this.removeTemplate(); + } + } else { + this.removeTemplate(); + if(this.view.fields['name'].get_value()!=false){ + var tagtr = document.createElement('tr'); + tagtr.id = "profiletwittor-tr"; + this.$element.append(tagtr); + /* if value get then display button of profile url */ + if (this.view.fields['profile_id'] && this.view.datarecord['profile_id']) { + this.setTemplate( this.view.datarecord['profile_id'] , false ); + } + /* if value get then display button of twitter */ + if (this.view.fields['twitter_id'] && this.view.datarecord['twitter_id']) { + this.setTemplate( false, this.view.datarecord['twitter_id'] ); + } + } + } + }, + APIKeyWarning: function(e) { + e.message= "Linkedin API Key is not registerd/correct.\n Go to Settings, 'General Settings' menu and follow steps to register the LinkedIn API Key."; + instance.web.dialog($(QWeb.render("CrashManager.warning", _t(e))), { + title: _t("Linkedin API Key Warning"), + modal: true, + height: 200, + width: 500, + buttons: [ + { + text: _t("Ok"), + click: function() { $(this).dialog("close"); } + }] + }); + }, + setTemplate: function( URL, AccountName ) { + if(AccountName){ + var AccountName = AccountName.replace(/[^a-zA-Z 0-9]+/g, ''); + Twitt = "https://twitter.com/intent/follow?original_referer=http%3A%2F%2Flocalhost%3A8069%2Fweb%2Fwebclient%2Fhome&screen_name="+AccountName+"&source=followbutton&variant=2.0" + this.$element.find('tr#profiletwittor-tr').append(QWeb.render('TwitterURL',{'URLID': Twitt, 'account': AccountName})) + }else if(URL){ + this.$element.find('tr#profiletwittor-tr').append(QWeb.render('ProfileURL',{'URLID': URL })) + } + }, + removeTemplate: function( flag ) { + if (flag) { + this.$element.find('#searchresults').remove(); + } else { + if (this.$element.find('#profileid')) { + this.$element.find('#profileid').remove(); + } + if (this.$element.find('#twitterid')) { + this.$element.find('#twitterid').remove(); + } + } + }, + /* Load Linkedin Data On search */ + do_load_linkedin: function( e ) { + var self = this; + this.msg_Counter=0; /* used to display notification, when record not found on Linkedin search */ + this.removeTemplate( 1 ); + if(!this.apikey){ + this.APIKeyWarning(this.APIWarning); + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + return false; + } + if (IN.ENV.auth.oauth_token) { + if (self.$element.find("input").val()) { + self.$element.find('#loader').show(); + $('.linkedin_icon').css('display', 'none'); + /* People Search */ + IN.API.Raw("/people-search:(people:(id,first-name,last-name,picture-url,public-profile-url,formatted-name,location,phone-numbers,im-accounts,main-address,headline))") + .params({ + "first-name": self.$element.find("input").val(), + "count" : 4 + }) + .result( self.do_fetch_detail ); + /* Company Search */ + IN.API.Raw("/company-search:(companies:(id,name,description,industry,logo-url,website-url,locations,twitter-id))") + .params({ + "keywords": self.$element.find("input").val(), + "count" : 4 + }) + .result( self.do_fetch_detail ); + }else{ + this.notification.warn(_t("Linkedin Search"), _t("Please Enter Required Field.")); + } + } + else { + self.do_authorize(); + } + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + }, + do_authorize: function(resultCallback){ + this.check_authorized(); + if (this.isAuthorized == false){ + IN.User.authorize(resultCallback); + } + }, + check_authorized: function(){ + this.isAuthorized = IN.User.isAuthorized(); + }, + /* Fetch Result from Linkedin and set in searchbox */ + do_fetch_detail: function(result, metadata) { + var self = this; + if (result.people) { + if (result.people._total==0) { + this.msg_Counter++; + } + var count = 0; + for (i in result.people.values) { + var temp = self.validName(result.people.values[i].firstName, result.people.values[i].lastName) + if (temp) { + count++; + } + } + if (count == 4 || count==result.people._total) { + result.people._total = 0; + } + this.resultcontact = result; + }else if (result.companies) { + if (result.companies._total == 0) { + this.msg_Counter++; + } + this.resultcompany = result; + } + this.removeTemplate( 1 ); + if (this.msg_Counter == 2) { + // dialog box + /*new instance.web.dialog($(QWeb.render("SearchWarning")), { + title: _t("Linkedin Search"), + modal: true, + buttons: [ + {text: _t("Ok"), click: function() { $(this).dialog("close"); }} + ] + });*/ + // notification + this.notification.warn(_t("Linkedin Search"), _t("Record Not Found.")); + this.$element.find('#loader').hide(); + if(this.view.fields['linkedin_id']){ + if(this.view.datarecord['linkedin_id']){ + this.$element.find('#linkedindefault').hide(); + this.$element.find('#linkedinrecord').show(); + }else{ + this.$element.find('#linkedinrecord').hide(); + this.$element.find('#linkedindefault').show(); + } + } + } else { + if (this.resultcontact || this.resultcompany) { + this.$element.find('#linkedin-field-name').append(QWeb.render( 'Linkedincontact', {'result' : this.resultcontact, 'resultcompany' : this.resultcompany})) ; + } + } + if(this.$element.find('#searchresults .search-box ul li')){ + this.$element.find('#loader').hide(); + if(this.view.fields['linkedin_id']){ + if(this.view.datarecord['linkedin_id']){ + this.$element.find('#linkedindefault').hide(); + this.$element.find('#linkedinrecord').show(); + }else{ + this.$element.find('#linkedinrecord').hide(); + this.$element.find('#linkedindefault').show(); + } + } + } + this.$element.find('#searchresults .search-box ul li').click( function() { + self.getdata( this ); + }); + $(document).click( function() { + self.removeTemplate( 1 ); + }); + }, + /* Selected record's data fetched */ + getdata: function( e ) { + var self = this; + if (this.resultcontact) { + for (i in this.resultcontact.people.values) { + if (self.resultcontact.people.values[i].id == $(e).attr('id')) { + self.removeTemplate( 1 ); + this.getTwitterAccount( self.resultcontact.people.values[i] ) + } + } + } + if(this.resultcompany){ + for ( i in this.resultcompany.companies.values ) { + if ( self.resultcompany.companies.values[i].id == $(e).attr('id') ) { + self.removeTemplate( 1 ); + self.map_values(self.resultcompany.companies.values[i]); + } + } + } + }, + /* Based on Linkedin Id of record fetch Twitter Account Detail for People */ + getTwitterAccount: function( values, flag, mainfield ){ + var self = this; + IN.API.Profile(values.id).fields('twitter-accounts') + .result(function(acname){ + values.twitterAccounts = acname.values[0].twitterAccounts + if(flag){ + self.map_values(values, flag, mainfield); + }else{ + self.map_values(values); + } + }); + }, + /* Mapping of Linkedin Fields with res.partner Fields + linkedinrecord : contains linkedin record's data + flag : indicates mapping of People search record or for company's contacts/connections (people) + if(flag) mapping for contacts of company + if(!flag) mapping for people search + mainfield : class of child_ids field + */ + map_values: function (linkedinrecord, flag, mainfield){ + var self = this, tempdata = {}, temp_data = 0, id = this.view.datarecord.id; + _(this.view.fields).each(function (field, f) { + if (f=='name') { + if (!flag) { + if (linkedinrecord.formattedName) { + field.set_value(linkedinrecord['formattedName'] || false); + } else if(linkedinrecord.name) { + field.set_value(linkedinrecord['name'] || false); + } + } else { + tempdata[f] = linkedinrecord.firstName+' '+linkedinrecord.lastName; + } + } + else if (f=='property_account_payable') { + if(flag == 1)tempdata[f] = field.get_value() + } + else if (f=='property_account_receivable') { + if(flag == 1)tempdata[f] = field.get_value() + } + else if (f=='type') { + (flag == 1) ? tempdata[f] = field.get_value() : field.get_value(); + } + else if (f=='linkedin_id') { + (flag == 1) ? tempdata[f] = linkedinrecord['id'] : field.set_value(linkedinrecord['id']); + } + else if (f=='profile_id') { + if (linkedinrecord.publicProfileUrl) { + (flag == 1) ? tempdata[f] = linkedinrecord.publicProfileUrl : field.set_value(linkedinrecord.publicProfileUrl); + } else { + field.set_value(false); + tempdata[f] = false; + } + } + else if (f=='twitter_id') { + if (linkedinrecord.twitterAccounts && linkedinrecord.twitterAccounts._total >= 1) { + (flag == 1) ? tempdata[f] = linkedinrecord.twitterAccounts.values[0].providerAccountName : field.set_value(linkedinrecord.twitterAccounts.values[0].providerAccountName); + }else if (linkedinrecord.twitterId) { + (flag == 1) ? tempdata[f] = linkedinrecord.twitterId : field.set_value(linkedinrecord.twitterId); + } else { + (flag == 1) ? tempdata[f] = false : field.set_value(false); + } + } + else if (f=='mobile') { + if (!flag && linkedinrecord.phoneNumbers && linkedinrecord['phoneNumbers']._total>=1 && linkedinrecord['phoneNumbers'].values[0].phoneType == "mobile") { + field.set_value( linkedinrecord['phoneNumbers'].values[0].phoneNumber || false ); + }else if (flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='phone') { + if (!flag && linkedinrecord.phoneNumbers && linkedinrecord['phoneNumbers']._total>=1 && linkedinrecord['phoneNumbers'].values[0].phoneType != "mobile") { + field.set_value(linkedinrecord['phoneNumbers'].values[0].phoneNumber || false); + } else if(flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='email') { + if (!flag && linkedinrecord.imAccounts && linkedinrecord['imAccounts']._total>=1) { + field.set_value(linkedinrecord['imAccounts'].values[0].imAccountName); + } else if(flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='photo') { + if (!flag) { + if (linkedinrecord.pictureUrl && linkedinrecord['pictureUrl']) { + /* Fetch binary data from URL for People */ + self.rpc('/web_linkedin/binary/url2binary',{'url':linkedinrecord['pictureUrl']},function(data){ + field.set_value(data); + }); + } else if (linkedinrecord.logoUrl && linkedinrecord['logoUrl']) { + /* Fetch binary data from URL for Company */ + self.rpc('/web_linkedin/binary/url2binary',{'url':linkedinrecord['logoUrl']},function(data){ + field.set_value(data); + }); + } else { + field.set_value(false); + } + } + else{ + if (linkedinrecord['pictureUrl']) { + temp_data = 1; + /* Fetch binary data from URL for contact of Company */ + self.rpc('/web_linkedin/binary/url2binary',{'url':linkedinrecord['pictureUrl']}).done(function(res){ + tempdata[f] = res; + self.set_o2mdata(tempdata,mainfield) + }); + } else { + tempdata[f] = "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 TkSuQmCC"; + } + } + } + else if (f=='street') { + if (!flag && linkedinrecord.mainAddress && linkedinrecord['mainAddress']) { + field.set_value(linkedinrecord['mainAddress']); + } else if(flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='country_id') { + if (!flag && linkedinrecord.location && linkedinrecord['location']) { + field.field.domain = [['code', '=', linkedinrecord['location'].country['code'].toUpperCase()]]; + (new instance.web.DataSetSearch(self, field.field.relation,field.field.context,field.field.domain)).read_slice(['id','name'],{}).then(function(res){ + field.original_value = [res[0].id, res[0].name]; + field.set_value(res[0].id) + }) + } else if (!flag && linkedinrecord.locations && linkedinrecord.locations._total>0) { + if (linkedinrecord.locations.values[0].address['country-code']) { + field.field.domain = ['code', '=', linkedinrecord.locations.values[0].address['country-code'].toUpperCase()]; + (new instance.web.DataSetSearch(self, field.field.relation,field.field.context,field.field.domain)).read_slice(['id','name'],{}).then(function(res){ + field.original_value = [res[0].id, res[0].name]; + field.set_value(res[0].id) + }) + } else { + field.set_value(false); + } + } else if(flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='city') { + if (!flag && linkedinrecord.location && linkedinrecord['location']) { + field.set_value(linkedinrecord['location'].name.split(' ')[0] || false); + } else if (!flag && linkedinrecord.locations && linkedinrecord.locations._total>0) { + if (linkedinrecord.locations.values[0].address['city']) { + field.set_value(linkedinrecord.locations.values[0].address['city']); + } else { + field.set_value(false); + } + } else if (flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='website') { + if (!flag && linkedinrecord.websiteUrl) { + field.set_value(linkedinrecord['websiteUrl'] || false); + } else if (flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='customer') { + if(flag == 1)tempdata[f] = true; + } + else if (f=='supplier') { + } + else if (f=='active') { + (flag == 1) ? tempdata[f] = true : field.set_value(true); + } + else if (f=='is_company') { + if (!flag && linkedinrecord.formattedName) { + field.set_value(false); + } else { + field.set_value(true); + tempdata[f] = false; + } + } + else if (f=='zip') { + if (!flag && linkedinrecord.locations && linkedinrecord.locations._total>0) { + if (linkedinrecord.locations.values[0].address['postalCode']) { + field.set_value(linkedinrecord.locations.values[0].address['postalCode']); + } else { + field.set_value(false); + } + }else if (flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='parent_id') { + if (!flag && linkedinrecord.formattedName) { + field.set_value(false); + } else if (!flag && linkedinrecord.name) { + field.set_value(false); + } else { + if (linkedinrecord.formattedName) { + tempdata[f] = [id,self.view.fields['name'].get_value()]; + } + } + } + else if (f=='fax') { + if (!flag && linkedinrecord.locations && linkedinrecord.locations._total>0) { + if (linkedinrecord.locations.values[0].contactInfo['fax']) { + field.set_value(linkedinrecord.locations.values[0].contactInfo['fax']); + } else { + field.set_value(false); + } + } else if (flag == 1) { + tempdata[f] = field.get_value(); + } else { + field.set_value(false); + } + } + else if (f=='use_parent_address') { + (flag == 1) ? tempdata[f] = true : field.set_value(false); + } + else if (f=='child_ids') { + /* For Company Set value of child_ids field */ + if (!flag && linkedinrecord.name) { + self.$element.find('#loader').show(); + $('.linkedin_icon').css('display', 'none'); + /* Fetch contact of Company */ + IN.API.Raw("/people-search:(people:(id,first-name,last-name,formatted-name,picture-url,publicProfileUrl,phone-numbers,im-accounts,main-address,location,relation-to-viewer:(related-connections)))") + //"id", "firstName", "lastName", "pictureUrl", "publicProfileUrl", "formatted-name", "headline", "location", "industry", "languages", "phone-numbers", "im-accounts", "main-address" + .params({ + "company-name" : linkedinrecord.name, + "current-company": true, + "count" : 25 + }) + .result( function (getresult){ + if(getresult.people._total==0){ + self.$element.find('#loader').hide(); + if(self.view.fields['linkedin_id']){ + if(self.view.datarecord['linkedin_id']){ + self.$element.find('#linkedindefault').hide(); + self.$element.find('#linkedinrecord').show(); + }else{ + self.$element.find('#linkedinrecord').hide(); + self.$element.find('#linkedindefault').show(); + } + } + } + self.totalids = [],self.updteids = []; + _(field.dataset.ids).each( function(i) { + if (typeof(i)=="number") { + self.totalids.push(i); + var mobile = self.view.fields['mobile'].get_value(); + var phone = self.view.fields['phone'].get_value(); + var email = self.view.fields['email'].get_value(); + var fax = self.view.fields['fax'].get_value(); + var website = self.view.fields['website'].get_value(); + var zip = self.view.fields['zip'].get_value(); + var city = self.view.fields['city'].get_value(); + var country_id = self.view.fields['country_id'].get_value(); + var street = self.view.fields['street'].get_value(); + field.dataset.write(i,{'mobile':mobile,'phone':phone,'email':email,'fax':fax,'website':website,'zip':zip,'city':city,'country_id':country_id,'street':street},{}); + } + }); + field.dataset.ids = self.totalids; + var counter = 0;/* Indicates All searched records are Invalid or valid */ + self.t_count=0; + self.o2m_count = 0; + for (i in getresult.people.values) { + var connectTemp = self.validName(getresult.people.values[i].firstName, getresult.people.values[i].lastName) + if (connectTemp) { + counter++; + } else { + self.t_count++; + self.getTwitterAccount(getresult.people.values[i], 1, field); + } + } + if (getresult.people._count) { + var total_Count = getresult.people._count; + }else if (getresult.people._total) { + var total_Count = getresult.people._total; + } + /* If counter == total no. of people then all searched records are invalid */ + if (counter == total_Count) { + field.dataset.to_create = []; + field.dataset.ids = []; + field.reload_current_view(); + }else if(getresult.people._total == 0 || getresult.people._count == 0){ + field.dataset.ids = self.totalids; + field.reload_current_view(); + } + }); + } + /* For People Set value of child_ids field */ + else if (!flag && linkedinrecord.formattedName) { + field.set_value(false); + field.set({'invisible':true}); + } + /* For Contact of company Set value of child_ids field */ + else { + tempdata[f] = false; + } + } + else { + (flag == 1) ? tempdata[f] = false : field.set_value(false); + } + field._dirty_flag = true; + field.on('changed_value', self, function() { + if (!flag) { + self.view.do_onchange(field); + self.view.on_form_changed(true); + self.view.do_notify_change(); + } + }); + }); + if (!flag) { + this.removeTemplate(); + if (linkedinrecord.publicProfileUrl) { + this.setTemplate( linkedinrecord.publicProfileUrl , false ); + } + if (linkedinrecord.twitterId) { + this.setTemplate( false , linkedinrecord.twitterId ); + } + if (linkedinrecord.twitterAccounts && linkedinrecord.twitterAccounts._total >= 1) { + this.setTemplate( false , linkedinrecord.twitterAccounts.values[0].providerAccountName ); + } + } + if (flag && temp_data == 0) { + self.set_o2mdata(tempdata, mainfield); + } + }, + /* Update existing value of child_ids field */ + set_childids: function( ids ) { + var self = this; + _(ids).each(function(i){ + self.view.fields['child_ids'].dataset.set_ids(self.view.fields['child_ids'].dataset.ids.concat([i])); + self.view.fields['child_ids'].dataset.write(i, {"parent_id":false}, {}); + }); + }, + /* Set/create o2m contacts of child_ids field */ + set_o2mdata: function(data,field){ + var self = this; + self.o2m_count++; + field.dataset.create(data).then( function(r) { + self.totalids.push(r.result); + field.dataset.set_ids(field.dataset.ids.concat([r.result])); + field.dataset.on_change(); + }).then(); + field.dataset.ids = self.totalids; + field.reload_current_view(); + if (self.t_count == self.o2m_count) { + self.$element.find('#loader').hide(); + //$('.linkedin_icon').css('display', 'block'); + if(this.view.fields['linkedin_id']){ + if(this.view.datarecord['linkedin_id']){ + this.$element.find('#linkedindefault').hide(); + this.$element.find('#linkedinrecord').show(); + }else{ + this.$element.find('#linkedinrecord').hide(); + this.$element.find('#linkedindefault').show(); + } + } + } + }, + /* Name of Searched Linkedin Record is valid or Not */ + validName: function(fname, lname){ + if ((fname == "Private" || fname == "private") || (lname == "Private" || lname == "private") || (fname == "" && lname == "")) { + return true; + } else { + return false; + } + } + }); +}; +// vim:et fdc=0 fdl=0: diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml new file mode 100644 index 00000000000..9321e54787d --- /dev/null +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -0,0 +1,124 @@ + + + + + + + + + + +
+ + +
+ + + Search on LinkedIn + Search on LinkedIn + + + +
+
+
+ + + + + View profile on LinkedIn + + + + + + + + Follow + + + + +
Record Not Found.
+
+ +
+ +
+
+ + + + + + + +
+ + +
    +
  • + + + + + +
    + + + + + + + +
    + +
    +
  • +
+ + +
+
+
\ No newline at end of file diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py new file mode 100644 index 00000000000..77327b92bde --- /dev/null +++ b/addons/web_linkedin/web_linkedin.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2004-2010 Tiny SPRL (). +# +# 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 . +# +############################################################################## +import base64 +import urllib2 +import xmlrpclib +import zlib + +from web import common +openerpweb = common.http + +from osv import fields, osv + +class company(osv.osv): + _inherit = 'res.company' + _columns = { + 'default_linkedin_api_key': fields.char('LinkedIn API key', size=128), + } + +company() + +class res_partner(osv.osv): + _inherit = 'res.partner' + + _columns = { + 'linkedin_id': fields.char('Linkedin Id', size=64), + 'twitter_id': fields.char('Twitter', size=128), + 'profile_id': fields.char('Profile URL', size=240), + } + + def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False): + company_obj = self.pool.get('res.company') + res = super(res_partner, self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu) + company_id = company_obj._company_default_get(cr, user, 'res.users', context=context) + linkedin_api_key = company_obj.browse(cr, user, company_id, context=context).default_linkedin_api_key + fields = res['fields'] + if fields.get('name'): + ctx = fields.get('name').get('context') + if ctx is None: + ctx = {} + ctx.update({'api_key': linkedin_api_key}) + fields.get('name')['context'] = ctx + return res + +res_partner() + +class Binary(openerpweb.Controller): + _cp_path = "/web_linkedin/binary" + + @openerpweb.jsonrequest + def url2binary(self, req,url): + bfile = urllib2.urlopen(url) + return base64.b64encode(bfile.read()) + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 7b2efd67fc5dd9a826e0343fc132024b30ee48bf Mon Sep 17 00:00:00 2001 From: "Anand Patel (OpenERP)" Date: Thu, 14 Jun 2012 12:46:33 +0530 Subject: [PATCH 002/328] [IMP] Improved pop up message when api key not apply. bzr revid: pan@tinyerp.com-20120614071633-vzrq3g0yha1p5skx --- addons/web_linkedin/static/src/img/apikey.png | Bin 0 -> 32154 bytes .../static/src/img/help_to_fill_form.png | Bin 0 -> 146822 bytes addons/web_linkedin/static/src/js/linkedin.js | 19 ++++----- .../web_linkedin/static/src/xml/linkedin.xml | 39 ++++++++++++++++++ 4 files changed, 48 insertions(+), 10 deletions(-) create mode 100644 addons/web_linkedin/static/src/img/apikey.png create mode 100644 addons/web_linkedin/static/src/img/help_to_fill_form.png diff --git a/addons/web_linkedin/static/src/img/apikey.png b/addons/web_linkedin/static/src/img/apikey.png new file mode 100644 index 0000000000000000000000000000000000000000..cd17d071af2bdf57254bd8158bc1abda28f840bb GIT binary patch literal 32154 zcmb@tby!=?7B9SUmm-6nA%bDDH5> zd(L_8{r>;<6SA4fWHM{kTC;vj_D|K1vN)LJm;eCa$jiM40RR#&03i6HBf@)52Y_Yx z4Z#s4D+QDeQSQPU7`C}(8|gyt7?D4B>@0hK>qzZ4Y#?2MRzZa$wi63$3oj2 zm5gNQk>$Mr>ObGe-&y;8GFFqMworTHKNobaO>CuaXRVf=zIIkbR5WQ(@_sHatmI2^ zR)z+`rX@0#Jw_m+g8x7G1O7@p@@Dn(Lfcn8sq(L}ikyD=EOU}LY!A5(HD57!ISlFl zfD*K9?jx?Cy#L?Dm?0v!ZjYKJD= zYc?hk8m-vN{Gi;GhBnojynBVp+vKB9%#<|1z{miea}FESPVw9tE=$N!l>$C)G^0O% zGcP_mO$~jQdSZcb_v!Fr(tvPSzQos`t~gt+M~Wk-W5?4uozw7XsY>2>cvzydf(k+M zV{UO_c|-T#V3Oq|F4676volH#qQGA4=jooBOtw&S(|+w*C<;4(%A8f2=6>$G*?PR7 z3xGOw-qDz&^2*{-*{#?i1I&zIH+tl7k=Hw5Ijun7j%lf3+dI2QfuRj4W^5+D7gFeS z=fjF-RN0@y*Xu@uxTm=LV$-T1_|UO%FP8&uUii=X<4du?plNaN2J-fTO{^Xl_)~Bx z>F3`zL7+F3z35SZREIrUYc#!GZtCh)H~BmU9q2I`JHh6&%cL0R6k^+EM62CZ4!+Bk zZ|JF}^_DFLQd>vzR$MsF8tyxEI;S;Z*+2+B@b_}w*4)f2P%0Av36)Pkz}0h-Z!kJK z+ScbRxvQ%y-RE}Kem&fX)Ny+V2lYD=8t(n^)1xh5N4Xs$aI4*Vt7&GomGSPo*+9ao zAV0t*rIg&m&SZ3&up7EdqvJHR!g}iHq%fx}0v77IW->af+x%?<#^}wbkW?uZvj(R- zg7L=92J3f^Oeu=2lnzW~wQn~ZO;!~u>=z%I6Z{E$@U%i6h-;Sv@n6k{*;B*RlU6wTg@uKBw#}Mq(8Kv!JR0%) zCC_8A?gTOboh3OrdHuvql-kzXdSA!KO1OI)7i4vMaJGBv#^~P88t-mLI^W0RN5{nQI_->n zN5eyueAG3Eq2(IDg7~|2dTzyr)f71$s`962YbG#{yo&Cq=UoT_Ep?}&_~(+!?;9`y z<-92E|^Is7BUXs2Acck1*53`Xk zo^)#;r8z$3A_3nh(mmd2RGMv8CR4PeqAJ5F0L{8SJlZ=B(yJ7g z^^rQ?bWggv+C;}?>nP)LKB#M+?6BPIjn0E>b+49&`6zUOqAN-^P~kJdQs54geo@XB%j~;vq>6{rxqm_<9o& zXq(%fGPrCFLO>iA=Q1~tplVzAYj$zUPNPj7oCIW8m`9M-S@c2H{C(0i^!j|x7Vws= zQT~=*@4~v{4i#$zkb_btuYEapX7`%kHU?AAE+I$8@>cxQ8-OB?;(JaD!57Xnarqj) z9!mb!YU58-Qm#A;PUnxFb+85|>i4j)FdCn0Bfggu5QlRRf&i5NM15` ze%{ewH+vi(=p@+ApQDgSJpAZ&m%G?pqoCasVvf_a4?`+Zrs14*n3`kx?x8>UgNDVR z<+1)X7Er;1L@hEp;dI@eH?8gCuo_q->j^ki@;#`&a{h;AoS2`PUX@S7vy%UXrRZl8 zS4=O=nV&e-z3L;c&?qizgzI%N{dCplaRFT+p#a?mqgqb)``8|}{(@Vx5$=?oX1WDy zI%_K{R2*_>V&d+J+apNrWTG#2_TP)d(CefxmbE98?Cj9i_f7<^B@xsQe>?GFChjeG z0G*dGr^C7GX?@qlvAd&2>)zKS*mTSL%x-QuFU~x8;gBKg%vSa8t_!e$J zY;0^cQ<8J*-A>jNIa;nGeDBvAocGh*w-S%Nk3ChyE;NQS#XGmS$HBZxv42FE(r=0q z&C3!rx!f)AA$5*pe~6b^+&0F3Jv{9BR|egmcy70NIj<(&Y%l)}Tg8kj!QeHTQf(qIMayc`zwmaQ@9~%Zrc0yYnB|) z5W72z)hrOO>U|38oW*M`w;$Y_oJW5niT9@Dp#x9HrY;M zaf((S+@|65b0(DA{XhjM4BXA7t;@8P1+5J|#=}gt4c_vej%bE4Vi_dyBLhnd70ph* zA^=C2q=W)6;u_mBA-(YfI(5Isc8BwCa=Qzp?T9*N+d5 ztfk2#V#+oA#1fBNL&($3v!=BwEPWkhHqUU1KJne22G<8Q;SSXv(e?K4Xe1n;XYAR{ z`N*5khD2E3yx~(OEHH_Sih6+?bX>np?V517S5#(D^L6%Uv9YY_w6D9nySTVm9U*p^pl5V2^K1EL$Tbj;=5aSK{W5_eHn-C_mx}l6 z_{;A+-t@P(!v`dP3$2Qb%-t_kX`Xf-$yyU0FPKB;V)ilFJ{--wF+8aRK04V&&@{fC-crk5GBpU_RZ*iPL1WtGs?|3bbX6j)Pl& z{SgBb7uC9|#8sAZVwwVeX)lsmGnmPa`8C^nYmHWZQyjlZdn-(Y8E|{?HCeV-ho_bn zt4)d0;1rZP+V7`Zx3P#0>@0m#9HLkWzy6pGva9I;iYwTaWknEgvIDmOfZ+{pH$n#Z z=^GLtBrP*UK@6W=mwY3*eJ`nDv^{2?Uia zdX>-1VpE)jjqPS*IefpVZ{e`{`2J8eQT9Wob}vr zktta88;DGL_4z@Po@>p~!sEwTXyzGDV-q!o>>dFnFz|bIwtqV3z&E}CEW_aKC! zgK9f2Pt|v?=V!XFrUJv{+xxDP09rn)orBD&?;?8pR(Sk#(tF|swkRX9#k0~)Q8nK^ z=LG>1Q!^41S6usmK-}JM5y=2K1s;+Y`vX1ZFxAMuDb{8Ye=-IxkjahG<(A1Tg`PQ{ zFc2;lCxfnAZKY{oKn)zsRqw0#-o`*HU@+La60h>OfyXZF_SQpTcO+A~zrUZChbJj1 z$;#S#5po6h6AXPHE~FI7dXNC<7?QK|u;`f*A33p#0UhDPpGtMAOS;Mpu`ce`W4F!k&RfK7 zbz3U>=D*|TM>n`Zlr~kFVN=Mop3O!b2&7lgm5b zbv?~u@v+mnWR?Q=HK3#R&V{+343$QJe@eUNlQUco@dv0hB4M5F?|*yeXy11=E0?sb3C1D+Csy9y%5EuOP0?Kn6%t9CjHmPuQV!(!7V zU%jQJ1u0z|RkgIVz~It#L6E|byP1|&Z7d5ydFo{yvC0g01UpFE@DslPwxZptkCU>X z$6vX|p6nwVs}McWc{CuhTu9(RrvtU$-ZB1e2eDhn#-;@7aK1CTm`3BVc2`@oMl4Wi z0(p(yKSGz3iS!-;5h<_K$7nVqJH;u-JTytj^2=l{(kRk=5&2%p+j%y?@0(+8xI$@^ zy_9o9|DPcM4%Dg^74Y!QW)xs~N9{Z|AByO;8te~E<};{TzqR{hMzbJsEY6Ia_XhR5 zqKA$6vk|bp)s~k3Lj3cMyo@u&bnL-y{nBT{k480@pX;1$ z4p-%}H*s?|3rBX&P!T>M&>H2c6q36v$T8Ls-t+g7iCf(e9Y-%8ef9qxt$D0u2y)^X zl!3e9noh-M1NT0y9SMbn!C5;EL!=^~IE+Gd<6xHLbPOUQjr70jukug;I>_)gR)7?^ z>WxA93S2#WS|x6-lCp@1i3bz7jc?C)_T~mR-^z)K5`o{I2Y#~+xI3j6juwU#+H^(;uv^EV@%lRvT_nHA?&I*FNve8W!PV<+1L8}#C7Yg}PIsQtMcGcF zhkdREr<&^8HJOu692d^j*v!LUZ}?kI`(Xn57vJyjbY21`Dha;p6ZSxcIfNsf91-X* ze3&HMk4ON%fc3nuszNw~uNE9_-xTdJ$BMa3K@I@mt6_b`8!Lpi-~D-JPPm1s7OADu z_L(=lJqUp0^-mb9b$9~U>;9%};W|Og{PFiu@7D*yVXX)P9mWp`Qt;ajHD6d(*lnKUP-QZ?Yp*tY?ok|S z6!s6X3`_yn$s(PAswx*VI*>s`v;nkz6GKY^oEQbY^QRv&x(F9pu?ZCW;E@(8Ab;Ml zat9`T^kX)QMOww|J9IW)S#-G{_|h3NKTX{pmmJ7d%1?S7F~NdugJwctf7-6^=u z8ZXhS4X2SBqU> z6uT(wk*(2-#Z#9_%w7$#to89W)pbe8_woL|a>(O6O7^JvYDtl!{{6J`=%$uc0cL^3 zfzL@)vf;twUinG9#QjJ_Wwps({gjsHd$&jr}g7~&KfI+saq}F7LC&x#tf0aET?*} zx>`?_SywDAJx;Y9+U^42fnKucs~wbw#oFzS^WkrEulEk}Kwfp`=+)ko}-{?cgSLncS3mb{$zyY17|_Zii@F?ho_y+OO#o!SQW zs~xKbv(0(EOCI_T?pj-I>4y9p^F?^iQdEe?A&R4t@f^;KaNN^I@M$;MdUReB49D-_ zQwH+Oj(KhfB6?uZl9Cdzusvl@1zS{-4U{F<(uIvk>i0j~SN)eY{6jY-wM(~aA)GA_ zm-E2i?=<&c#=FA=7M;ckRYco`4B-|@tCG&QSTj}6B8L<}Bo zr&}LuTOV+Me@2;|(h51h;YUW}XYnL8fuW#Cki2&R4<-mvPU=T4m(-6w^z5TXTK2uD zl#~=WvI)Q<+1lCy&)1arK0QJ~S7Bli%4IzYSSAtV0!C9QD7#lvXn=~@V@1W}zP9); zkMSC$)qE6uQbDV|6qM=V^r^$qq;<2wK91$XAzs`RK5HjmJRz7c6;c8Kq_qn?SY703 zr|I7uB!!y;p{c5TPq+JdVf&kprG%xQT<)qaT0hrsNzNd$-*qHnfmlI^#?e$-Hl`O&T*m2Fh9uZ=!`v%bL{Tfue&j!WLupqfmGK{icmCR1 zKlspe-8J_bO>*=!=o+04*!z9v@Wq@J?o}LwpzeX&#dRMr9jlVyp@>si9IBaFzk$u# zfy5S@tFb{ECsCx8`_arUUZxz05MCQcxmvU@PI^A0Ir3Qi0-}p1lV0WPkExxCT*>gz zL41%1r|W^aT3Ywc)QxnSRcLc#5Z(x>Yl366%HEDCU4W^;+nKmxZ)Tq*XosD!WO-6CgGQEHSmnOWd)rJaL; zPb+qE|F*05Z7a&^RuF-{jN_y-Tkla zcqPo$T1Ge!FWd1;ywmob<86$1xtJmABvSobreUzdD{6xdMg*#;s{c6aEZXZN2v}h5 z*Qjcf0(`aavwkttG0;c880donah)(|a3M1=7$s+|r#IwBnJ&9c#YBiumFyy^9#>Lw zUq-T|9)w$Ng9fxYv^9&Wn`Us8Q?4Kaerh8`06^F75G|sn?nls`Q`quWO*Kc3SeBid2O89*oq zBl=ui`ZWgKIrC`A{LK|p!VJ-l$3JoSS?j1|yWd7_(zBRr4((Xb@pHLYV4l*Lv>D97 z&^A~V<$QBSG=2vuVM^l#84St|lz;7!_eO?6xVy@!=-$h~k!*SfGQQMr>=^E?w3cov zFjiDlVk|MXFs>_Mbg%oV+K!|!KV6~~3ygYFp97vz0_n?_qVl*)<0#~7JJu@7?Jkia zquU$8pmVs>Vre3_tyBQA->O~rjP_|f$|*6~>-Wzd@1R6Dz9jmeB^AEB_YHXKAN9|7 z%y?9pci(<Jr;(5p`Zp)@eWV zACLo`h`A=CT%=?)4sEZia}x?Woz$PIn!X|5pPtiN^5~gRI}Sepp@Y<(^5~^DQD6NX z7h@JzA1qP|(a-aa?`jW0hRkn63Q^h~LcUrM=f zqGW&+`~)p!$3Kee5^E$)6`q4+k4a@&o#*a!PSJVH@)RtgC+l&ySyV`Oq?g?P+17{3 zJ5oPrMx*YyvKusb!X!s((KFW{8V!mjFC_>a4d)$LXw1z`b(9hAE+a*dDLC*57ym`c z(SSS1$QvgY*gg?2B`0v`k3U9*jU=_;q5#O`19S+2B$$qkNim@k(RK3$Tv@7S!V6-? zAI%4pQUkWsi2Dy+K^~fBj#tSDqL}N53kF4M3h32!>ql6zJe{iq4D|0aH8d?82Nufj zGI|3BQ5fIL?W!g0+6nONVOG`y00(S{nFN&MQq-}7;$Gib$@@?4x>`cJkQ|1jC}!pL z$)_&nZze?=3S_X{^}0+Q<5XA^Ca+2c5%5b$LW@PJDU@uXgrT|cAA7oR?cj#H66=Bq zI{c$|2h5BNZj*$pFs{xm0tRJHloic{&BvFo+her)vbi|gAL_?-`^1p*Cb++jR!=Nf zMihkVGHDhn_Rxm%jN3B+^!mc6|Jzn0nmg?yW8illOSs+gN4`FY($btpW~iSN1ONgE z6bd>S5!Q0q5{0>caL>IcWj^Ggnd3&4yG1`ud-`ErOrJ1D$|H0PU~M*O?tira zWaPY*Mp!J2$WB{!mJSF6O>dA80}thBg|ji~?L)9wG-bpvLtqLwd~tSlhv+iB8Ej>P zFm?!ZWtvDW;Esq=EqU1o{d85g!Jd>hWz`dttF|byGG5&%_U3;B>8${semrIIU z8-R@Qs8N)I+}ekX(CH#cpr08U4H*o8l4mz`tikP?2J=NBn~}(8M1;TA!HI8(M-sbW zlWLf4cEXBXHnIvMM1_?@Ao18P5ry4gBS)qZ=wN^xDkCAaV4cdbYqDFBnN`* z#2CfKh}2+ZAN4i18v+gNY>XWvF64PxOUVM0D(JC^jSR(qQd2;2>i$p&?PHF@NXEiw z=+KZ^kE74gV7ahjGZX&o!j2LdC5)U3`^xdnO;ZM)w1%F+jVNx3`?1tJl%^T#$p_O@ zfK!0UXx~@~Z^gi#kDxpA^Iv{LU;m>zsa`be1?4;A8vQRsV;5N%!|k>)7In68|EMWo zkPtA?5ostacvHnwC;P#sj^i&N zeummYB!Qjp{I#{wB^MkPmbEox{&`ITvckMzhSQ12kPVkX`|(vUOIVju&)S&Sn{YkM zwmcSiP>2#?MU&K+!N>stq@GYZlCX=;@-_hF+=NBphoQDovfgKWAiY%Za}qxq{4VDQ z*^~p|xl(x_B#SqbWFg7nK!NJoWCK)TW?{9%CN|YTL8{}(Kta18x4drDlcjU5MlP;` z(o#4DAI@z#)(;r+I^mHStQzXN3wCwTLaC<0H830F%Jig35&DVsfCFR`9r(K+9Eo2` zC0G5%%zn2f_}4_sE9wtFb@hEwVX+Poxhm=~B8+533~~KTfO{MP(1%$SLJRS23pFZ? zb;9YRsXD9bH(jumH`fHI)@jCj5cNe+x5wBw$BE=YRMJMFQPN_t5AXbUiBYIYL1wprDlt zbEe`|929IczahMW2yz5S6>R?9n2mzW`ZwZevV`fuLx10PFxRDYaM6IWT%FIqmC=Bv zPYzd!xJ-bqLA8(>1_mbMyY!dxI!6#=npSFFo6ap{xsklN&oatEa*4Z>ev*0}(SVQg zsOB6&C4!{7MWC$ZF7xK}EBpS{Xo8*f>Fi$6NKcs_ZbVWFeEc|&!ERK)T$&Wk24m%0 zQA;w86LF$Ew`8{uVN$d_420)@X_&Rww7|Pou#Tvay*%xXW<8PGcg095SPpVow^z~_!M<8>bc^`&xX<{A-d-LH zTY;N$wBAjHF>hisixdi>D(X$-*5SG%*%~zIQ*q@sLm1!0#Z?w+a6*tGGgO=*Uj-5KB_2vg1Mj zLk!QHp0V6DF2R`JiY7q6=eEH`_7@*?fF$2mHoXC=$ik6#r-}44qw3h-?O~qnTUjq`fOr)A#hc%Pg{0tn z*qoMc+ISHCJt1)k#5$6c-;XPlXIJN{$rSb7aS{!v_9Zgc8&~^Z$(^ zE9?Wo>+N3Y5i=cr73x8Fj))%(<6XL$BU$BF7P|3lkisWIe!1OoVtpexjR<_*Jfc<% zUM|R+-iEFL` zpV1>T3PS7RgQGV#40sZ&d$3)9hhiCFq&4}e`yZmqGsvluR@ZMx;nOxKtn=4W;(|~` z3ysbog9vS9ETF!vIuy7{!;n9%<$4aK%Bm+BqsC|O&h_L483)ocWap$Wk4JMY`iau6 z{QTsyutq>TpXW$7hpi_^cD@%H9S7NcY*?R;wVS{vaFY2>1w-E@k&Al;JgCEfjC7S+ zh=r@-jgx|$Vh0ovv0-fzx|OhM@Dl%gPc|zsGCDW@)riE(&!kkC65Sk*9-Lp!3K@*x zZ%T2Pc?zcP7j_eNOih&!9*PT9bs5OFC{2ffn@2@HK8sH88!Z+6THv|Y_iJ&Hk*jKA zm{>j77-QLQbg2*J3N<8Jsl$_TUG+9?-m+zTvdm8JN4;-oMKJNu(9c{=V3EAlVC>8e zFh(T-nO2pl*oIRa*#ZxUOK{{o%enIQEA?9&44(Pz7a$peUeKpPO>xcMzxmHAUWvo( z!MTbre?+jg?%<)srM*LI`dJ0~96SX%^w};7ecOYLFjn>kA;N_r37>#Z=I;8LhWD~8 zON72=qR1y8872z~j`F%`H%7okTvO(@_-=St#{D{npC<6(fuxqbRPE3Kt^Rs$lc3jtG<9 z;KPgFyJ$ZtORklDB{Q7WmjNJvONdDl9f1R4iE;ItPZ^fW&K9ID<<&s&mMut8N^;tH z{ufTaJ>=Xfc;%H<{V#n@mIqNYITr7vwdsl5sf1*jyW4ZSg^Kzw5EHcXOGv7nAi@sG z2##V^@=IWMeOeMO3K#%cLm|_ZxSM9&u9`#yxs*ceuW(8dPSL9AQoYwm%?yh-4V#V^fL}MgRjdqZm@CWuzp|+`P zRxWg9R3}bbYz*wcqM>ky8Vy^>o;9oc{xrgwK@o1D68lQ>)7oo4Jq00xw?JEV#ehZ; z-~UHQ&M&!Jnf7qA{Ralmbw5{8#6d@T@^~?A0;O3@b_zRmIx1KIY=FZzjOch7oA}#rBVbrPy$JKb_qV7w$Ast zo)z+F->am+@=mn_9bc+JmYWWRQIIX@d45ht7Smz3v$Es?201Bogzm3hpstqO)Li3k z9BWB47lR=|GS_^jYVz>(=f&;x2jX|I)4@czXWmM&V5)t5VuI%ek>w;&YpJ}7PO}fC zWpS^oGCu-xEazsN9#p{^ILWr?H88PLXmVf5IEd9m84yvG;E{i3bEMapa$dL-+ z`_5qg=)OEo)Eb#W5Ew-EygWlpsXz2IwRnH}MdvUFokv?T+kS9qRWx>r(d=}mUC?B#vS?XQp^Ussb$QVy!i zE7I$Kxp*s*5h}-GEURRv^Ce@CU>@>s@u8{THA{LE!rb=G=a266J=F}ac1z5mdxbCG zt^paWX+Nbo#OU{}vu~AYLtE}^r@{AA|47-04m``uEyzwbrULbLZ%^VMkjSap#QMpB zL>;H6n@mqp9*NkEz(_5gmd)Z#_s%=|q*sHh7S@VY%|df?lr}cuH39SVHb31QJvYuQ z#@&&Ehp3#QWGAUOhH2hzRmQ0-E!0v24Cm2YwW3bL#k~?s4z#Gi7a5=C47a6}Alz!b zr(*iiD&xtfUhSvcQ@b9TkAK5FmuEDbY2yr5ixy$VWe*2wx-r`vpDK3GkG9pP?ES)f z=T0j{IMZG59^nE>hYW!Fir=;9h`xpZeg~@E%g2=;g%hijN{SwD?-m{(&DQPI*D_Xr z#`qe^+)|SM~yfx^lcSdayVMaIvY+HLP5(o7HGOzP6oeC`4i&n$^HG}@B)`S z;K{swM$+UWIGDNZv1Hix@lTpVzos-#mG5o)A2Q#r;CNrLrxXMxc!J?^wlbn*sp0r6 z#(TY$wdkR8P;Wob(4%v`KkqT5DsTN+)ufny;E#Qxxw^ZDf&ldC>L)D5%HeQ6s$eg+ zM0c*w%anIbrPcgKelG|bmOJ*tq-6?%PH*aSC_GQo^1uzpe9!{ z2e%Yiioh$P8)7FbWZ89`mR3uw1vIqE3{JG4gm_!7O4)jSx`xAJJ|O+da~_!8wKT34L|LONcdbnbOKtNG`$B!YO^eR3f*Hue1EM8ge>5BTdH_?)Y(o=x|ZbE(AFH) z&Me`@l?ig5Sy0KZ6xA~|X{pW3KD+hUtPwM6zMfOE=Wn8DiSM-XaS@6XBO0l$fq z7t&`P=~b>xw<;gaG%w~6y^Be0?Ja&oM_*BPw~2VX~wo_Qrj5I9>e zcAw(W@MI3Ey~?$)t_^Q8Y^4h4$xM`3FSJcHlJLH(sHK=J0^dZ41Ii+4zB?z=L57Y! zwuU}VeQkfnuf*zEy+UsWubIM-d@4?lPU?NG_Gj|${`s`SWXh_2@6gRuR^qej?V39f zZfP!YdD>^4hg=JNG}9JzISHGiPtGHTiz8OK@4;{>583wVv|3QVvHXoWZ8J+q=5xX*eV$#z z`%t&-b-oQ|7rjK-a}Lq6U2<)wx)QtmL+m0==}Qe~&MV{`s8S{x1>QLhN`k`o@7~TA zG~8hdEWNEA)rmCJrC&wIgulv}NjvVBw|sBmJ|GBTy8Ph6_n`wJf{7r^P~vE=U6;PT zT*7kcA}F>0QLA-4+wIk>DNbHD+S~Tkt)Bob?7&n(o#t<|9>=W1T?3tZX+ks!vY!gS z?-$GO9I0xNF(t~057qI<^IFcd4kx4Y{60sa_U_+BS~Tu1Ym=>gz2{Q_7wm&L3(8x6 z)V;b8EW`%ih1%1D!Fh2ZdqaOSdF@Ps6>CJ#3vo(Xn|HgH z;q~f%-suYX~Kv=GuH)(}mVHS6R1=Ny@EJ0l&#NNfM0$sM-x zQm0bzxP*nvST9>rIc2+q*n$%?W$VsB$Wh8UI_#_dq54&`i)^z-i+#6%S$MO8T+gb* z?tX2PWBwSQjUWF|d%3du42^(SoRV4d2_E(Z!cL5U;0?)*+M~EOLK`wr&emwmh@+vb zKCWHlb%9C|dCP4C3BTGghiGtH6d?e)u#!~7R_IU`;a1Pa;Fo@p{71IkV zoxit24pgR=_~3mQW}~nG%{0jY5qa_ZbMoBM9N~H;#jNs;mFvvx#c3M@%TyY zUB&*n+inAQ^Fec3@{}V6kUy8i>IIT$+JJ*i)mI7+kj>JhVBypr!;Q8eF(Z93W7 zLUMj=l3x$HiLgg+pt=IHd#x{Z^@vL@PL+9m)tgSsSdCzSo8n-+1XJw4zsXbIzj{Y| z2vTBUl+@CSW7+i;tO3kO&+GOga7Z$}ZvCLC(^9?hkl%25IK*PUp2Mc`t1nkP^DWT2j62BAz! z`r@pKES1>^|83v8ig12YYcrdHpyM(*XY&FmT1=I$Dw+a|5IuhFpYtx9@;z@`8GY%( zyXG%iz9-On@^1W_>(TWP9@yuLp6!JuP6mvQ;B7=DanF*S?@_{wZ-1r+(E<%41x#iV z5L9b#4u^x%(@A!0vM+6Q?>2&6Wrq`*uOGWeHg1#1g;gT=Za`(8W!t$_j=gDypM8gI z4N4Am?@8Ga{0JrNjLko<+4@{<)=H#vxjL*Q1g$WmG0%1w(`2OW;|VgE=v|cA%uYM4 zd>^!B(wlKuNsVS?)Vo}@G>1b#8Sf5VbiXd~7AjDqZK=X5ow9HH5$Cg_O zi9}^;p_pC(e}w3E?mo7HPK}s1@9ib#Oppwh(021bC+IlTXKl5oGFDFN&60@ zps|R1TM77$5Z*4NoMpF&nAf+jX4?# zNMn}icn#)I!TL*^_l&HSMpeLx6O}%iY~~Azx*`hkV&{2##y5Qu+h}L4XE8|!{`)>o2C}IL#-|O<6Z=d1^_H@F6-7?7 z)!K```L;_i5{SpkhR@cLs6ff0BJ3GmL5c)5>yd|IVQ0Z{N}nJsqWB z1vWoiSLnqRAI6Y4_3RY?ZDH42F2T^dCd7oNnI&G~rX4u)TH{SVn9ovfMc~WZ&}sB( z8C=dm?-d1IN!2JVS(V%mN}gP=imq^QJlMblQj&nG9RrqW>O*A#UaHV}sP9w^kmOR_ zu$il!cYiv%kBLU$5LzrOSSs}u-4te$LtyIT&gSX@(5;t+E`Ez_F zR)py?xVO+BeGMCT%V=7=68=$$0lAdl#E`g%jSmk~S`tc0Do7y!M7xK_!}qrV7^>FdiRVg^49l`!Rg zm!Lg5Javm%d%;bc3ABsSb0H&Y8@J(4)nQmQXIC+)9L8^NTxMoW8=I(QiKoDM&U$6g zH#CfAIGHfu;XLL#h~MUoa45U{hM(?!YDvIZ6P?9N>7jgeUF?De2|!ULjRla=86{aP zZPbRSJ(lp845s&S%>MQHMp$0+%8-$G$!RS`FfA7chvK{~^B~S-k;=nVXOg# z0H6J1fzGV$l(&~1DVEb8Z|H2VR5_Pi|3$%u?7mlL1H$Mm%$W`Ai^NOz`Rq+bD()AV zR2ZFcw3WO_%Yy42zmQ&slR23AJaOZ4pR~are3C+snO){iMDWA+2VvrJX<7=*%?;+` zOTlwWajS#p1wI^9cIk#3Co*Ku9!-ad3uPb44VOXzG@2Qr*pqkXZ#Q*Eq)17n14)l=_6A*khP;ZH6V|33kJVrUq_@VB6#F_4>_f6?hfK>o?OJL4B}*4}oLYbIW++l3OkHT8M^-S;WqUd1ze({bO3u0Kv=7$B80)UkJ6}) zB)0k74S5ZOR(kn%y@98&uuVlQR1e3q5CzuDf0&-5H6xaaW-`XkyQu3|G&O&qt)ibM z?5X^WNW)}KBfvAla~)v+`giovpRht3nw?+x?VWaoC|q(Zs@A(6FYWD}`WI(+7kvTa zk1bLEeD7bM$0KOUrxkCL&zho5G=Q^}(p=uay~cyBt8b9fvh}mJRuHBgQ| zePLU*w+7|Uk*>_~*nvU;=mbhgZjirauW_21?w$eKmxQ;boA5_jMs@TJMs)<6SKyq) zARg+sDYgrO7WT&zy(B&kBb8xT!w7^+KhPaGW`3@p^S@ev=;o5B9|$Wa0BKYyl1^rp zdwm%3Cb1_1El68U>jldj4$;}LvZ5tbQEwN0i={Dll+3KPg$5k(J9!0yF=N*_NvsS2_}|>1xQ)L4_e3%0VP!4&!=0j|Kmtsq@ zA&=+f98!yWK)W7Opjo_zllNV8bx5#(eY@&v);%Nai0n&`IcbEx@IrIC?&J9f)vBtj zEWV9zUo1S_Z`Phi!nHrYd`w+XOk#Q+!`aK}*k*otuEcA#sq4lWmidK?6#FInr^dRf z9N@U%+w-0iO6NfH?zg&|O+N%M!klAw1Ha-=g*m*03IE?Scw&+yY4Ewy4F3Gw zi~ojH{~NRYUmW(oG28zg;{T1={_ha~Z_M_owfPPQyxw$%{3PuMD8DZk`G)9E$!*0+ zR#*@>s{5{I+MEh*VDcp%;kFk6&ZQDXB(_{`f-qC-nRQ zYDgNEm!5a$o(A^008Egg$pHBEpLg0s1o;2|d2geN8Q^22IK>L>`sbI9&Jc;p_Q>e- zP`${3|I^xAN5!>#38UPb1QH-<0t8JO3+`?qG}gGgySr;bfF@Yb4%)%p-3i{og1fuB z+dJgWd^5k9Z`ND0-s?Zk=~Y!{pQ^p9w$|B&&VY~eWGfl_YOTPo<<8W9#P7UPh%s-| z3aIvCS^G)cAjEvS?Ny+s1ZTX z+RB!*|Ai(!uz!dXZ{DOs-{0s>Xy8jqihv&GQS;y3>hySM2nR=h81VB$~d&;ywut*rc5&Yhk`veK8wJEx9GmlQWDxBUY8Yb82Xfn6kKgh%FikVnwR zAqnpH`lA3E7j-2~JLL05^(&I&(YsUadj>tOIlIu z(~!$?gfJF;<03xBR(MYs`Se>Kfc(W&Nz>#=>iXFJJhYOR9M~bIjv`}hw!rfpyx z_-^Q-__-W~2Hli53cY9N+ZVz*KdJoIhl61MGpntY;vre(Hkh(;>1`q*zgZ}kHf%l3 zMATNLKcH8n#m1tu5?BJmo;=^5Hbas?=&K!IzI^vR3wACe^r{kQ(sIsRZEO1s;IYJx3arW9-Y56A&FRQ6B8X{ zml-+Lrj11pcB)rs(3u#6s$qz;ea8bJ*hf;ai9#eOs0@Xx3G?0kK-k}KB*)%T5-nYR zcu#N``uS~;asS)lk)a=NpMP!*{h4d|jaJm-9RbF(yL7q3XA^bHYp=l(&Q;CKJ7~}A zX^k`in5_bdeaad~sOhl0a2a2*7>@S0Ad!jo5NFk2qTH16zi6i1KORW}A96TCqtf$; zvEL-(ea$J4esxa!LQ+SMSegc%+FlCoV!JuzJV1BJ%m9GYmzu1;eNF(%u-(dE&w^bX z=>|dFqmPq9BujqFD5qI_+?2eOPDOUV|OtamtoTtq+#>iC~I{D(&%AtBHotN*$FQ}q9}Vz+mAHFm<# zfIu)~o2#LOR#XEG7m*+OP%%K_v}LS1WMwtk8bvqt+^DS7TY>`$9o7C^RT`2URQH%9 z$<2~AW+czTQQm?*PK8tZ1$9>}4F{Fu4vqCDgdRtxce{Uo@^{?O1Td%8QGoWdSBO4& zB@2&>D2dAtPK*h~j9ic6gxQd}wJfZ&EeI#NtPR)<_-aL~_IoDIn*?{L5j|e0=;P{Q zM&}?rWx)&WY=fqKF_o7;B!M>{Pme4db!SbJQ~=^h6A(7NS2!Ahc&ek5`s{sbL^6n|>=yZ@dzgdYqkMAUUEoU;8CGJkU4( zoHD|P^_Y`9r)?;#c-2`<0-i$1gBPV2+C|BcAjys^aJD^Vtz6je`g21MFWt_Ml>=wF z(wv#X0vY?iNG5ulZ!fz*yQjfJ?&CiKYvOApz+kmkGCiw`$!T3}A@Z7@M-H-(E~msa zW5YDK)X*+9T;`>R6T)5_lrGPXgMs?p73jPDO|%AM+%SoDYqx`;J(mu|WNq6uh}iJ= zAZsDPVH_mCaFfoaP|oxX!rng3zvt*vvgxX#a98geO~zgP4*6r$ICdTCASl!ze)oM2 zWqTPl@v)Px;43^SwbjCO26jS>Lt-*457x?SeX)+4wz8b_Rh%J950K?=5Vi=0UJuiu zAX#_m#}BXE;c%un=Q-w8>tgW8pwMaSgqCNd986i`9ne|Q7k@OC);)-6P+BG{B#+(m z^ixTVvw%;CgltyT^`;RPOGlyEN*httOM;-N|B!%cJcOokZr{gb0}MVNaf@5h#}`#M zD~5)iF?TRa5jk_86DK7WDAUG4MEk{B>r3_xJT#J)>oX%%LJsU+8H6)4$4 zzl>GFq5moh4V9^op;Z|3&c$Se+3o^0HW)kUaf;TQY1o|!*hPbLLhHr$)gWh>2#Bq)<-Ia}^$(dw` zlWlso9R?1E{175sli;~Vg0FoXB$>Y(Xu&WosSL&BBzu?|(g!uvl2dmLGYQaj2QV<` zScFTNDhV=G+&dkKuLLKNOgywSck1cf8pin)bkmDQ3jRL(wtN=&%SHK_X>YL-h?-a#4n(_@g^GMy)TAhjlDyrohkb@=&fI}BdzP5fl>$PzCsS=mNQg?=0xh)%fZsFgeLkbcc<9yMy2niHo`87Ya0{uvnlHQypJ zd#g_Q{Tqx8=M2||;sWdv;t13KBU8S{ev^>y_-xIgd~^>6y`_xK7lv@Q9et8#Uc`SU zjE+bY&dkXW7RGw|2|qw#?5)bzB0gWoLLLXF^G{ ztAZ0<-^~48kwA9wJEhi3fusSCXJpyWfN@&Cn29I*OT>7TL1(P-^jL7d7Ym!o(NavM zGMPRv{abzzXT%tk+BGfgXL*>xCOA`%m+?5XEc8WIRxZq0<`|7%B-08;aDQaXi(m_r z<*LTTW(ra|Liz)HHUrT|_gqYKIPAA!^l)t9(rfOZp%Ca~J@Ez_WoAeCVJ4)G(gYm@ za=nNOOU9lgk}|B1Hfl123_PcgkqT_5>FV|>uw$_8wgx)tUsQDlH$65~H_o(Y&mtOo z9v3dgdT(BPeU+VUY|{Uhb+xc9gqR7{k~4zO{U0?C2~I#{|DpgUo^tP1!VYN->TGqyJ_`C3b_Fy&wgU6C-IHpq!Vdpk-t8Ceeoyr3nveBHTpWAd;y zr*zWo)5A?&BK})&Z-|mWjm5gfb>^(|h8&?q|RUnC>TI z_!7Rhu?>e@dhLcn@zf>ZkxV;bLP)rA8n(J=%-UKS9%p6oz^og~#541Q;FZ@#WERG=ea* znT!8{`$4IEn6jM=6Vtw9v5!q2uKw2O&B1-V+sbnI6h>Th>r*aVqGz!=@BVYD|*eTHTBJ@}9u#jky+!a{?F+>eH0MD>-G zX<~95qYlq)TY(55RRs7>d(AMV{bCXMXnLG0?vKo5)94(j-Udy{Lm)cO}1;K0dAJyAd zPyIjgL%(72nuD!;c;xQ%PRF=rX!KR5>^DtK_l+&__s(Pj3E2fT_wO}bhv3(n-7T6$ z3>OnLXXtehWf1M)NbkY07u*o_5t>eHU#*VwZ!x)tXF8PED+dbZT%BD|DDTV`qC_dJ zGR3o3_=*Pg?(6Y)ZlJ&RYE*1zICn`>V6ZDnoi)1_1!#IHlk9=blTv))0Rvm1m+`vO zfbc$6^MJf2-0&d|bwPcy%_oK!K5{gedy~|`v(@Qlap~lF${ffIN?(fHk{eWjlj5n=g_dlHjLl`Z>MM$6d93R};63aXp1Q>P05w3t?EuBmuip z3(S5z7c(IQi!t4u@|{w5)7Z^JwOclGNWkFHIoTMPh2z&*-DzQCw{Mff?o7ZC{9UH6 z4-!(yvT9t1^zNZhbIY&3uKT^Jxw`3GeDBYm&?Y$F8xh_onWAAjFOd-KsF=MhjmYVQd#B(Q7;w~8#u2eS!c>R%( zc8v3sZLj4H%^0NabDLU@v+kh}Htxv&bCM`po1@%uMW-XZ9;evX`<;P8 zR|-}YsehH$%>fCykY>K^rE>S;?9E8|c|)NRP0~zyUA2!&VDuCoP15Pc!7zMbS#{nE zKHvTYpwOf4xAf^TsV+J8#YkzpKPyH)4+aMjV)FzoDU}B~ zJQAIP4FuwVJr{Uj#fK!5yz#ghD|NhGvuCe(;UK4G7-g=hs^+d0igJe_rp&aKI5gA- zm=F@8kT7kO4y+ro;US0x$%XsGOCg7xI3W(NdEg|E&Xz?F@4xtk_+KP<7LNbz~% z(cUA6(6^%~eSZqPvs6c!b7t1e3_k57ggtcE9~{YlHk?G(r$S3^C$#Zn9VU3WT9KDV z-XGDMC0 zpb~M$pkr}RdTUP1*&0m;4t6`cW)@pxB-sx)-3SViW@scih)1i14?i5*pXW?V{Z%8d zG4ER>^y3ispGjm*mh@neT}&IDd3dkSpAfHdR`;a;YwSBvu+d;yUZ4sC2N6rWDP21= z6#5RuNx*w7PA{udpEYH`lx)GK{3;}pESbRviM ztJKWu%{i`4RVX>Zy$>JBxIal92gwq?s+03Q)Mvvc@iT{t*IUW}ohBjnFZ!&cALxNK?Z3B`s=@ZSxF^pKXQhGr|IX~=N-$aRefRBm zNlWaA!92cd_}P9joyCCRQFlcs(eTjQZinOvI^>mn;reJi?v_F#E*IteSFby2o1HV# z5K;b{CK~Z3P03g?l4B63Jmw9ZR#rSc?zz$dZQkt_kJJsGfgLok@!an?b~A&|h}n;K zK{&5E3QgJR!w^7vZ+~Og-jJv-Kd4qT0--_bKbL}$*c3y3BpO* z%c>!&pfZ({W%$Np1Y=ab{oemq@M|5w-b8e*xxbH&4gnOv{KRa)$Xx%}+@4lC`Bpf8 zNAOWSq+n7zO4)k0nfN{-zcK z339wb@1o?yK4AkJa?|vdgUp`rlYQ-W4|3Kq>NJ;)dd<^|$g3>Gj*6E8zMjYW^5L5l zHDv&lAjsqmXn0jx@jU3R?RfpO0X(*k5L{0y$xC+b&|8BQRc!GSNGuTxRg;B$rKQsq zJ{_lD_jo3hftWr+H`#=M(!|nzvlVdZHzI=?g;Q}mKCnkcj}gIRzed$^!6eoyi8Klo z4E!jTlwv{(Uqw;`AihL)#!Laz_FJFr3o5Kgwz^~{Qe4}o804>C(0rsPeFcS@@F*(! z!sSj;D!%5wL5_-&F|O7BW<>A~i#0RW`;JYR1BUt(H%-}5GP+*&Fj#|!!J{Fnk|ksSfw1LIVPHg}c9Jhhbl1<*$CgjfgmfJD#q*kx{~l@_%P`%a31wf5sa0 z+R(v|6-UjEK7fO^&wj|5;x&4YHwDP?d&57tMeTLu?|zZ&<{-uRS~9;`nP0wNRgpDW z*=I^yHo9E+rxduJin79z5qp_?U?Vbjgp7(Z5E^R@!h(piC2S9?1rTh${s_t%R;0=Z z{@5I(m5-uA)YkY}|GiW*W;TsRJDt7s8PZFdxRYn1rhpEGKF3TjPKW$4L|N?D7e~aX zp-Q6=;VGo-bh&1k5TBDBh(J%Udw+ZJXQtkm*C|t^Q7V>oaxjUEXhax=u=6CTu(!XZ zjA8Hio^Ju<^Uja=Izy=gdn)&fr6;I!k}NjSsSQGxeh^1Wtm1mO1~Qzvv(U3Dawq09 zT5mx(2@#hWOWW9l^|Uk;sPl1&-$t;1;y2&Z#Rt(AguzO}vzOeJL%NN1^zus6ddtjt z6XQO{Ml9n$s&fE6lfV?T1&)&kxKDplBUAKaeZ>AH_7rfYjkdkhqr$nW@e^E*e2QoE zitM?Q=DASIEp@lhuRx#1iJddgI(>dA@O9P-sO8X&!TZxwY>zAdP0Dw~+R}=>HT0oQ z+Mt-Fs#galO}Zsm&@02OZR(=2)!ePHn)L=fm)EF2-9ZwNr}A9k}8IU@+}!) z97u%&u9&G#RD{sXF$vnH?+NjCQ>Rpq730p4#ebr<)*}BcKE*{Ee~N@eyz+QPz`uue z|HU)$pX0s%`-;{*)0tDkEVP!pq28&50pI2->hq$Mi@O}NyXAR1gD_w{Ey^0?Dbprt z8Ff3A+zz(Yv><$KtmJl;?m}DQ9`2XncLYX{PC&P>{d#N->^E0Fa9>%tZ}ZxQtHrq! zIx|o;JAw#<7TcWj55^e9-!5VuD7RpEA?^&`t{t*43C1q%khK*Y#px zFfQx_V;*tR|KNQ;jEj)MsJ@CbJ3q#kgF*L=d>>9u?L#bl*AjFlWMvQ5F7BOH$WkvO zl`2<=THH;U{Ekkatq=xb0Z@T1SBxjVQK607PJDx%p!d!zkaY5{Y9Zpz=SVZ_@@m6R zXv4krDsDl$K-xR;p-?-mBsTo(Sfi?k{>9zjEhl!a2b7@TvD=_KI@6&JtjARoJ(Z8J z9&0f(Ri%9mswn@~M>=`dPp7mpVcq{a|9c#&3hnE3tGKTkX^_BTyS(plzpB1o{q!Td zZy8t?c@*lkd~?y%iAfXVmyxt+4Doep|Pl@63g-agFfl!^_)9 z3w{d#BGNu%(gXOUS_b5f#Vds50e(|$x4j<_-?Mo zQzvU&=P$_ocKtRnTLM`Cu>M|Le->+Nm-jQBM~MIC@cYNH_n+N+|36mPN0x8ZNBptY zCTZz==Os*6R#rA2-SPfK!*g>@mk&UI{4*)AT#+U*4h8;rIsd!U{eSev|L-aSo;~J| z))|?#5rpwAOYDz7X%4;FkR?XzBlGtf55c9LSDyl|@dt(lUIJbUye!tf4|(@%qGn7O zja=+x?$^()wD#UQyD*b)rTsR#P@a&B#7O44I6JUurc0V}tmk#tv=ahV&adj0Ly}v| ztZZkIscTnrIWOL-!5L<9M5XyNX{S)r!u$uY{WcY0FJ(ChwKD=eps7^&@59 zs$E^73kQ>#d~<;-2PrfUn|R`tmULrEzg4!1KHWz8p03(#9bTb5IY^=NB<1t`ZP8FC z5L%JZ4%6}3Y4*aSk~5PHYnWwZl__t)JiD;n50Q?*fb;kz6snG7#uuliHWgJfBy|xT zjIGV}I({zQoeLu3GIh`{G)^>$u{q$OsI=M5EfBA|jw+cnISE|CL@|RHQ;x8w%q^#> z!d9fthqG&$-M#6B)cOX$^UX2_H#KR^F09v!o@B2R(!|WojZ8G8%1$o7;&9lGoxZjw zGb2xA>c=3y*_8P45MRyx4l_)_tmU^DcqC)k-gkl=g|B)QG#5)m-pc6)Bz#|cXYKLI zYdyhCHktbf$P&LGVe0Z)1;6X#!%fuG(5H)mSJSiEo*H&jZkJ0t_=nyeu7^#y^*I}Q z&J_13Ks8g?%QMq6*csiSzeT1C!DM|lXB{LF?Sw)0{)^DkyEQ2a~FB)+6j#g z@*ERw)+aioDLO27l$90SOuNRK!Ca$!6$u%mB~=H1-tS)>1*Xn!B;=*w-0YHX^!x1R zom7c84+JD9)iWE}2wnG(5-AvHj!CUIx*$4AnQn_Fg)bh=5?*PuW_N7jL_@mG-22 zdNZ+H4$jXbOA4#{fzRh9I-oH-`(nX9Mz;hZ<@}expuWf zD+R5ls@g{&hB|Xd$95nJ)?J7~w!S^+ww1Cie4}1f=j-qQ!Qb+BsCNxIc)ziuTdeE1 z$DVYvnQa$_G&9xL*LSQwZl6+Ey!xvKi!Nbpc|Sl-kXzt%01PRqJd$;Ur|5$-#b2FHW5;GislG^Xk-C;M3 zH-k^bgT7@2VMdyh$CmI($;Rdri7IPvmcX)+P0qXkTfE;XqP3^2Moi4~{L~?IENLyT z#bb{NFR{En#2iAZZ6<(mQ#W1l9J+IdZ|v(mJ2KYJlOnP~#h1hf?b)^#qIcC!;TCZB z9Y#bXr3i@gx^Cm<$fYE0x-w0{cB~WThg_B1$b3Eu9^KdSsJ-WMz^oWBOat#~n|rE-I9ap1jm*;Z?|WJ*d>(s}GqDpwWfLsN%aFzUA_Au)i$dr%##r zFrm`DHrZfgTBi=$xK9-v7sK5M-l^}Io;s1}mi1XS%#$A95lCoZE^Vyt3{em`b|E#6 z$w?95Vt>0f<62c+y>IC>O||-ya%51%s#=8$=Bc@zm^wM>Kb~h5sJ+q~Sz+7A**Z3j z(2$eXW#Ad3G%E8OyCN@r8BsbT;ySTE-yBhg7zx;*CfU7Qm%R*%ubiwrO>Y+TllCb; zM_oIXDvr%7qokhqT)b{!w=TXzX~_JUMq^c0lmmB}q%!u1;~O({D$veUGIHEQXQKD2 z^SrAX*=_A#Ao#1g0+OYe)U`d@tdgfZ4(o#!x?T*BU|5wQAjXNtl(d8WVR}?}8M zg8PjHTnQ&a*GRyse7&4gh_%vzx)fPHtD1rDCsK45r$V&#B&s?BF3WvmftC|$a&sDm zZX7M_e5|QVvJlz?r)P<@l~W3t@?R_mn0(%Nn@ zb`OKa(W@6}A<*37xO9tpZ48j10KLwg$j#nx)*)}IU_j?Pk4uN2? zCW1buSE;dnbi1aCtcHX;mW92e!Sn{kE7%54=^EiUuR z&bT)_?6|1%666$wK&?5`qcxIe^e4(}+7uk*G+MZsxyQ!ahL0H&=^FTfF3j*k&0PZn zv=N>d!|Rh%7d=KW zE?yAo64z~391rO%VfV%dJJe}f7c(!+&$KLX3h~+- z@(-#AA*Mf+IJ)jgmw{JlrSW@&F{-N)kh{gCtD6R^clGhKN|fA~!^b0g3>G9N#%?QD zcy-8+FRd3+Q+gY6dBrNWHgQvKzT?o5WC}VMOi$P6#M!Kzm!9)jfH!8Pau&|c zR#h|$;bjHqOS~wt6RdzIg6#vO9X zi+!W2^-9us+f(QoXHWUwwUX5Ms^Sl9k0atK*edwX28c>j^qfiV7V5_}r5x&Jyr#Q@ zWPe58h0a$ed}{GsdD)P%w{@^_?&dZ6sb>DxDze)^XXoTc+iDMjEh{2o951cL$8@oX zYrd4L&g(i5&(&<>^uv1iM9=i7M{Z01+V_-s3H(ZD5xTxE@ z7CqoE=fe}R6R7GuJ2(>?!C;1zk2-YtnLqy;GvVkz>qb*^QnQ;VJ)P$>uENo%^ARYL zo!Mo)xLQ>}VzzB#`lx_}xr@bW_nHu1TZ<^fU)4J;qdNNis4*UZWbVkjW>7KJ880 zyK`EXhpRU$j3{w=QxuNXl~b}k>qGO|YbfpWm!E2WH!*}`WM^`jPgl4dAlDb4^Dft4 zM5bJt$MZEdhIVD8xpgBf&rZ*@q(VQ{CKROLyo~ftL77^09h3+lZyzfdXl|(~=|qgn zhHYEtS(OzR)z^VXV6a;yOOYqji;h~;U%R(8eUpi7t(FK`WXdZ9?wS~hI2cGmF}f{J zy2nb%sF>o=R?a5QsASwX24p|+c`T=(YlIXsrr9lVd0A?mP7>;k?gD(_q&2l|F`O%PNghd8R9Z>*kixc%>xMwa%Zc-hPBq&&YTTw?xveJem|F=lHKF8&pbnQgb@h`fI-Gk3_XB)mun2bo)C@w8Y8r>^Lqk_HOF)<0nzi1s? z{NCB0r=JdKt3BMW?~RDRjCAsJUTmx@@v}S8yunBvpNV{4G;{0B`D6OYP2mR7d3y?L z?Tk~{K2;LO!nhE1LyA&OQRkl1LIe2#3DUUo#pMF&swMd?pH?0cWz?_1KM zzeL}niW(auC$)4<+^%EGSwrl1|4mYuQOw-Un;-XzN>0jXSHU6DX0E$#Ttl0H+eq-d z=RPj9Pc8z(4pLG)6{EN8yv~H)=vKVxvAg+`0}dSL__Ha7yr&~i$#SRNCpp}_nVrvm zH-r4sz1G~IvlSJhe_#DOe+m!FzGFiVdx-YjUGTIv#&l+{nLyF(?(9tK59{&Q^<`2< zQiCK&wlTQWvh*tU73*d6reE zCBKQD{$nI43JQ*oHboBjaqAkU6y0c=4kX=RRK;ceHMQ=Dy>+s`zfY1WmrV9O3hi2Z zVkvk-khf%DT7aQgU}9yWkXO;ZJnK!|uBxLu|1%YrN~hg6C5iRZ#vH9zS~?Z@SxZB2 z8l3v94?L{pDvDEiefAw6?nzenXII9F@YXRZi;g3Q{?!O!L>87@$N1W?8<_T!O%&L| zD1zlRx8Bz#*}sujch}VtCZ077Ip5Xh-fcVWNo<;C7pR=HtD5WOL3{y)Yz0@}{FL1Wc3GC`=^i7QYbvTtWtr9vM4;{P zj6RwWciObl^jq!OM?pTzX&-g^A1$hW@8(qtgI*`kpVqiH7c-$1;a?fTZjO8RO#c>l zJ0oMOz()yQ&7+Fc06%^Qp(8<9mtpHE1_lI$(C8 zlF0BaXMu#WA}*o$>=POi@#L!>IjI4V{SNOq$KTH@2ls* zIGJm4bEuQ|=9W{}71Mr~R?}Qv4)5zI`dV7op3m7{wCS>Kn08U2G3>2{ys$hl%jrTM z=MYP3{8n8oqLT&Rxv|d@bkNQ%nd&?vp5kJv4h=>vPd$yB=lnZaGize*%Il; z_o_Bj*;3gjXSmYm@+q+EA&Dke=V${C~}22Sf!G4ak!4S6m$M7 zE&q=NaKZIJM8AZ8#=7Hx71e|=!RrODIyYE@RU3Ng`^#)nP6AfyyM4wG9?6_3JzLF3 zG%^kY&UM7#4o~%Z2zb?4hZB_456S96F{|JWHHm?uR@Bdlx?qaH0j~|5*tOd2z|J*1 zLc0Z4bc!u1v&7NRw`BoRoB*hH zVd!ZboyHw*IC4|{Z(!v$D6)(|V#v)#v8`B2_~uTm)S9ArtJ;p0Yi%NchJv{PV8;R3c~vb;JSB>gx~kZ`Q(SB(ZJG~k z3Y<{bV=AT9n7} zQ@vXyz=3xrdGu)G5rS;|oJ#cAb*LlH91AyMepKK7o^Gmt zt{xt~mZcNhLT=r=HyCFJ7E~ag<;ueKhF!W6#`)F7f!FIZUI1TO7e|o|+o-#f5~Qud zQP8;22i0$Q>XyVtbm_rWPE0fqUizyAh4>fo?O8Q z=K@Xcf9R#`9(mdXLjSI_${Abj8L$2Pc#)R9Hs*1@-}Lq+MlNH41!IfIRMM>4m_glC z)#Z#BA7A}1{BBceN8S_@pL`(EUoJugHkk5e5O((SlM|SJVs2)t2oi7*fvYh^T9(Dl z$IHzg4^JqAbZ1XD%zSmUS!%xHYPKsVXg_G;Go^GaPr2czW0;%L;`KUt@??X0?j~P= z*_K0Qdw0ufrs1Nk6>-t6gF&lwGA)H&yk0zCyu{(@a@~bFG`(-*P)~?wF1PVrno{|Ee9!h*L)=)6Da-4>H0y$B zi!S8VcFn{O=Gzd+KI(3~+8cx%T>FSB#+v>LWBP3>GqnX@UXIg!ZjGYUX5XD{w=m=! zC8v!%A1m!?i4>xik9KSSCV7Y=yDJpA3qnm?DD%qkWUkIi{4&ODuXbZ*O9t<&4GjLP z@>1;x;WTu?oje*H& zq<1NwJ|(I0{Je(UcZMELMod_(8KNz4>AJ16u1h$prt7gb&c!MSfZ~QF-6<8+tj`J& z3ON;QH=0m$3;H@fF>~+=atYYLK&nwXV=^4Q-(K4(Y0|Yy+h` literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/img/help_to_fill_form.png b/addons/web_linkedin/static/src/img/help_to_fill_form.png new file mode 100644 index 0000000000000000000000000000000000000000..fe30fe4acbe89709a73936e47ba5442beeb48121 GIT binary patch literal 146822 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

rvd! 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

ESw39&m0jAYa60Cy`-ik$l(hNiA9Q>Dv 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 literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index e48b7fa7a9a..6c8fc6c5147 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -107,17 +107,16 @@ openerp.web_linkedin = function(instance) { } }, APIKeyWarning: function(e) { - e.message= "Linkedin API Key is not registerd/correct.\n Go to Settings, 'General Settings' menu and follow steps to register the LinkedIn API Key."; - instance.web.dialog($(QWeb.render("CrashManager.warning", _t(e))), { - title: _t("Linkedin API Key Warning"), - modal: true, - height: 200, - width: 500, - buttons: [ - { - text: _t("Ok"), + e.message=""; + instance.web.dialog($(QWeb.render("Register.Linkedin", _t(e))), { + title: _t("Configure your Linkedin Key API"), + modal: true, + width : 825, + buttons:[{ + text: _t("Close"), click: function() { $(this).dialog("close"); } - }] + } + ] }); }, setTemplate: function( URL, AccountName ) { diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 9321e54787d..4244fc38b98 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -31,6 +31,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + +
1)Go Tohttps://www.linkedin.com/secure/developer +
+ 2) Log you in Linkedin if you did not yet +
+ 3) Add a new Application +
+ 4) Fill in the form +
+ +
+ 5) Copy the API Key +
+ +
+
From 277e800c162811cdc12c545e41919d59e6200056 Mon Sep 17 00:00:00 2001 From: "Anand Patel (OpenERP)" Date: Thu, 14 Jun 2012 16:49:10 +0530 Subject: [PATCH 003/328] [IMP] Improved code. bzr revid: pan@tinyerp.com-20120614111910-jyqwdkf8ec35km2i --- addons/web_linkedin/static/src/js/linkedin.js | 31 +++++++++++-------- .../web_linkedin/static/src/xml/linkedin.xml | 17 +++++----- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 6c8fc6c5147..f13bbf6d761 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -77,15 +77,15 @@ openerp.web_linkedin = function(instance) { } if (this.view.datarecord['linkedin_id']) { if (this.view.datarecord['profile_id'] && !this.view.datarecord['twitter_id']) { - if (this.$element.find('#twitterid')) { - this.$element.find('#twitterid').remove(); - } - } - else if (!this.view.datarecord['profile_id'] && this.view.datarecord['twitter_id']) { - if (this.$element.find('#profileid')) { - this.$element.find('#profileid').remove(); - } - } + if (this.$element.find('#twitterid')) { + this.$element.find('#twitterid').remove(); + } + } + else if (!this.view.datarecord['profile_id'] && this.view.datarecord['twitter_id']) { + if (this.$element.find('#profileid')) { + this.$element.find('#profileid').remove(); + } + } }else{ this.removeTemplate(); } @@ -111,12 +111,17 @@ openerp.web_linkedin = function(instance) { instance.web.dialog($(QWeb.render("Register.Linkedin", _t(e))), { title: _t("Configure your Linkedin Key API"), modal: true, - width : 825, - buttons:[{ + width : 800, + height:500, + buttons:[ + { text: _t("Close"), - click: function() { $(this).dialog("close"); } + click: function() + { + $(this).dialog("close"); + } } - ] + ] }); }, setTemplate: function( URL, AccountName ) { diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 4244fc38b98..80a7b6e2908 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -32,10 +32,12 @@ - - +
+
+ - @@ -55,20 +57,21 @@ -
1)Go Tohttps://www.linkedin.com/secure/developer + + 1)Go to...https://www.linkedin.com/secure/developer
- +
- 5) Copy the API Key + + 5) Copy the API Key
- +
+
From 79a911301cea4ca1b9b21bd054c28479bda710af Mon Sep 17 00:00:00 2001 From: "Anand Patel (OpenERP)" Date: Thu, 14 Jun 2012 19:01:04 +0530 Subject: [PATCH 004/328] [IMP] Improved code. bzr revid: pan@tinyerp.com-20120614133104-102rzo97d0dq5jhq --- addons/web_linkedin/static/src/js/linkedin.js | 8 ++++++ .../web_linkedin/static/src/xml/linkedin.xml | 28 ++++++------------- 2 files changed, 17 insertions(+), 19 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index f13bbf6d761..9bfd1697aaf 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -122,7 +122,15 @@ openerp.web_linkedin = function(instance) { } } ] + }); + $("#register").click(function() + { + var linkkey = $("#apikey").val(); + console.log("the key is ",linkkey); + }); + + }, setTemplate: function( URL, AccountName ) { if(AccountName){ diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 80a7b6e2908..e7f8b8335bb 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -34,26 +34,15 @@

- - - - - - - - - - +
    +
  1. Go to...https://www.linkedin.com/secure/developer
  2. +
  3. Log you in Linkedin if you did not yet
  4. +
  5. Add a new Application
  6. +
  7. Fill in the form
  8. +
+ @@ -70,6 +59,7 @@ +
- 1)Go to...https://www.linkedin.com/secure/developer -
- 2) Log you in Linkedin if you did not yet -
- 3) Add a new Application -
- 4) Fill in the form -
@@ -62,7 +51,7 @@
- 5) Copy the API Key +
  • Copy the API Key
  • From 0fb2419d257a33ac140a0c63f58f0bcf7d7aab81 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Fri, 15 Jun 2012 18:11:08 +0200 Subject: [PATCH 005/328] [ADD] reset_password module bzr revid: chs@openerp.com-20120615161108-3nvxx4o8b3ozjxvw --- addons/reset_password/__init__.py | 2 + addons/reset_password/__openerp__.py | 23 ++++ addons/reset_password/controllers.py | 17 +++ addons/reset_password/email_templates.xml | 55 ++++++++ addons/reset_password/res_users.py | 118 ++++++++++++++++++ addons/reset_password/res_users.xml | 45 +++++++ .../static/src/css/reset_password.css | 12 ++ .../static/src/js/reset_password.js | 75 +++++++++++ .../static/src/xml/reset_password.xml | 26 ++++ 9 files changed, 373 insertions(+) create mode 100644 addons/reset_password/__init__.py create mode 100644 addons/reset_password/__openerp__.py create mode 100644 addons/reset_password/controllers.py create mode 100644 addons/reset_password/email_templates.xml create mode 100644 addons/reset_password/res_users.py create mode 100644 addons/reset_password/res_users.xml create mode 100644 addons/reset_password/static/src/css/reset_password.css create mode 100644 addons/reset_password/static/src/js/reset_password.js create mode 100644 addons/reset_password/static/src/xml/reset_password.xml diff --git a/addons/reset_password/__init__.py b/addons/reset_password/__init__.py new file mode 100644 index 00000000000..7055f8145e5 --- /dev/null +++ b/addons/reset_password/__init__.py @@ -0,0 +1,2 @@ +import res_users +import controllers diff --git a/addons/reset_password/__openerp__.py b/addons/reset_password/__openerp__.py new file mode 100644 index 00000000000..6e1d8fc1f50 --- /dev/null +++ b/addons/reset_password/__openerp__.py @@ -0,0 +1,23 @@ +{ + 'name': 'Reset Password', + 'description': 'Allow users to reset their password from the login page', + 'author': 'OpenERP SA', + 'version': '1.0', + 'category': 'Tools', + 'website': 'http://www.openerp.com', + 'installable': True, + 'depends': ['anonymous', 'email_template'], + 'data': [ + 'email_templates.xml', + 'res_users.xml', + ], + 'js': [ + 'static/src/js/reset_password.js', + ], + 'css': [ + 'static/src/css/reset_password.css', + ], + 'qweb': [ + 'static/src/xml/reset_password.xml', + ], +} diff --git a/addons/reset_password/controllers.py b/addons/reset_password/controllers.py new file mode 100644 index 00000000000..0b5d3b5b2b3 --- /dev/null +++ b/addons/reset_password/controllers.py @@ -0,0 +1,17 @@ +import simplejson +import urllib2 +import werkzeug + +from openerp.addons.web.common import http as oeweb + +class ResetPassword(oeweb.Controller): + _cp_path = '/reset_password' + + @oeweb.httprequest + def index(self, req, db, token): + req.session.authenticate(db, 'anonymous', 'anonymous', {}) + url = '/web/webclient/home#client_action=reset_password&token=%s' % (token,) + redirect = werkzeug.utils.redirect(url) + cookie_val = urllib2.quote(simplejson.dumps(req.session_id)) + redirect.set_cookie('instance0|session_id', cookie_val) + return redirect diff --git a/addons/reset_password/email_templates.xml b/addons/reset_password/email_templates.xml new file mode 100644 index 00000000000..fd1ca888779 --- /dev/null +++ b/addons/reset_password/email_templates.xml @@ -0,0 +1,55 @@ + + + + + + Reset Password No User + + ]]> + (set by reset_password module) + Password reset attempt + + + + + Reset Password + + ]]> + (set by reset_password module) + Password reset + + + + Password Changed + + ]]> + (set by reset_password module) + Password chaned + + + + + diff --git a/addons/reset_password/res_users.py b/addons/reset_password/res_users.py new file mode 100644 index 00000000000..0b93a9a37ea --- /dev/null +++ b/addons/reset_password/res_users.py @@ -0,0 +1,118 @@ +import urlparse +import itsdangerous +from openerp.tools import config +from openerp.osv import osv, fields + +TWENTY_FOUR_HOURS = 24 * 60 * 60 + +def serializer(dbname): + key = '%s.%s' % (dbname, config['admin_passwd']) + return itsdangerous.URLSafeTimedSerializer(key) + +def generate_token(dbname, user): + s = serializer(dbname) + return s.dumps((user.id, user.user_email)) + +def valid_token(dbname, token, max_age=TWENTY_FOUR_HOURS): + try: + unsign_token(dbname, token, max_age) + return True + except itsdangerous.BadSignature: + return False + +def unsign_token(dbname, token, max_age=TWENTY_FOUR_HOURS): + # TODO avoid replay by comparing timestamp with last connection date of user ? (need a query) + s = serializer(dbname) + return s.loads(token, max_age) + +class res_users(osv.osv): + _inherit = 'res.users' + + _sql_constraints = [ + ('email_uniq', 'UNIQUE (user_email)', 'You can not have two users with the same email!') + ] + + def _rp_send_email(self, cr, uid, email, tpl_name, res_id, context=None): + model, tpl_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'reset_password', tpl_name) + assert model == 'email.template' + + host = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', '') + ctx = dict(context or {}, url=host) + + msg_id = self.pool.get(model).send_mail(cr, uid, tpl_id, res_id, force_send=False, context=ctx) + MailMessage = self.pool.get('mail.message') + MailMessage.write(cr, uid, [msg_id], {'email_to': email}, context=context) + MailMessage.send(cr, uid, [msg_id], context=context) + + def _rp_get_link(self, cr, uid, ids, context=None): + assert len(ids) == 1 + user = self.browse(cr, uid, ids[0], context=context) + host = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url', '') + token = generate_token(cr.dbname, user) + link = urlparse.urljoin(host, '/reset_password?db=%s&token=%s' % (cr.dbname, token)) + return link + + def send_reset_password_request(self, cr, uid, email, context=None): + uid = 1 + ids = self.search(cr, uid, [('user_email', '=', email)], context=context) + assert len(ids) <= 1 + if not ids: + _m, company_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'main_company') + self._rp_send_email(cr, uid, email, 'email_no_user', company_id, context=context) + else: + self._rp_send_email(cr, uid, email, 'email_reset_link', ids[0], context=context) + return True + +res_users() + + +class reset_pw_wizard(osv.TransientModel): + _name = 'reset_password.wizard' + _rec_name = 'pw' + _columns = { + 'pw': fields.char('Password', size=64), + 'cpw': fields.char('Confirm Password', size=64), + 'token': fields.char('Token', size=128), + 'state': fields.selection([(x, x) for x in 'draft done missmatch error'.split()], required=True), + } + _defaults = { + 'state': 'draft', + } + + def create(self, cr, uid, values, context=None): + # NOTE here, invalid values raises exceptions to avoid storing + # sensitive data into the database (which then are available to anyone) + + token = values.get('token') + pw = values.get('pw') + cpw = values.get('cpw') + + if pw != cpw: + raise osv.except_osv('Error', 'Passwords missmatch') + + Users = self.pool.get('res.users') + + try: + user_id, user_email = unsign_token(cr.dbname, token) + except Exception: + raise osv.except_osv('Error', 'Invalid token') + + Users.write(cr, 1, user_id, {'password': pw}, context=context) + Users._rp_send_email(cr, 1, user_email, 'email_password_changed', user_id, context=context) + + values = {'state': 'done'} + + return super(reset_pw_wizard, self).create(cr, uid, values, context) + + def change(self, cr, uid, ids, context=None): + return True + + def onchange_token(self, cr, uid, ids, token, context=None): + if not valid_token(cr.dbname, token): + return {'value': {'state': 'error'}} + return {} + + def onchange_pw(self, cr, uid, ids, pw, cpw, context=None): + if pw != cpw: + return {'value': {'state': 'missmatch'}} + return {'value': {'state': 'draft'}} diff --git a/addons/reset_password/res_users.xml b/addons/reset_password/res_users.xml new file mode 100644 index 00000000000..a60198750ce --- /dev/null +++ b/addons/reset_password/res_users.xml @@ -0,0 +1,45 @@ + + + + + + reset_password.wizard.form + reset_password.wizard + form + +
    + + + + + + +
    Passwords missmatch
    +
    + + +
  • < Back
  • + + + + From 7c0772d4ed9751cea77c4ff4e39140096ce519f6 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Mon, 18 Jun 2012 10:19:29 +0200 Subject: [PATCH 006/328] [FIX] reset_password: typo bzr revid: chs@openerp.com-20120618081929-zwuldfdaa7is1yai --- addons/reset_password/email_templates.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/reset_password/email_templates.xml b/addons/reset_password/email_templates.xml index fd1ca888779..37cd529deab 100644 --- a/addons/reset_password/email_templates.xml +++ b/addons/reset_password/email_templates.xml @@ -43,7 +43,7 @@ Kind Regards. ]]> (set by reset_password module) - Password chaned + Password changed Date: Mon, 18 Jun 2012 15:43:56 +0530 Subject: [PATCH 007/328] [REV] Remove last changes of commit revision 6895. bzr revid: jra@tinyerp.com-20120618101356-z0epjp7s1sqduwag --- addons/web_linkedin/static/src/img/apikey.png | Bin 32154 -> 0 bytes .../static/src/img/help_to_fill_form.png | Bin 146822 -> 0 bytes addons/web_linkedin/static/src/js/linkedin.js | 19 +++++---- .../web_linkedin/static/src/xml/linkedin.xml | 39 ------------------ 4 files changed, 10 insertions(+), 48 deletions(-) delete mode 100644 addons/web_linkedin/static/src/img/apikey.png delete mode 100644 addons/web_linkedin/static/src/img/help_to_fill_form.png diff --git a/addons/web_linkedin/static/src/img/apikey.png b/addons/web_linkedin/static/src/img/apikey.png deleted file mode 100644 index cd17d071af2bdf57254bd8158bc1abda28f840bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32154 zcmb@tby!=?7B9SUmm-6nA%bDDH5> zd(L_8{r>;<6SA4fWHM{kTC;vj_D|K1vN)LJm;eCa$jiM40RR#&03i6HBf@)52Y_Yx z4Z#s4D+QDeQSQPU7`C}(8|gyt7?D4B>@0hK>qzZ4Y#?2MRzZa$wi63$3oj2 zm5gNQk>$Mr>ObGe-&y;8GFFqMworTHKNobaO>CuaXRVf=zIIkbR5WQ(@_sHatmI2^ zR)z+`rX@0#Jw_m+g8x7G1O7@p@@Dn(Lfcn8sq(L}ikyD=EOU}LY!A5(HD57!ISlFl zfD*K9?jx?Cy#L?Dm?0v!ZjYKJD= zYc?hk8m-vN{Gi;GhBnojynBVp+vKB9%#<|1z{miea}FESPVw9tE=$N!l>$C)G^0O% zGcP_mO$~jQdSZcb_v!Fr(tvPSzQos`t~gt+M~Wk-W5?4uozw7XsY>2>cvzydf(k+M zV{UO_c|-T#V3Oq|F4676volH#qQGA4=jooBOtw&S(|+w*C<;4(%A8f2=6>$G*?PR7 z3xGOw-qDz&^2*{-*{#?i1I&zIH+tl7k=Hw5Ijun7j%lf3+dI2QfuRj4W^5+D7gFeS z=fjF-RN0@y*Xu@uxTm=LV$-T1_|UO%FP8&uUii=X<4du?plNaN2J-fTO{^Xl_)~Bx z>F3`zL7+F3z35SZREIrUYc#!GZtCh)H~BmU9q2I`JHh6&%cL0R6k^+EM62CZ4!+Bk zZ|JF}^_DFLQd>vzR$MsF8tyxEI;S;Z*+2+B@b_}w*4)f2P%0Av36)Pkz}0h-Z!kJK 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 diff --git a/addons/web_linkedin/static/src/img/help_to_fill_form.png b/addons/web_linkedin/static/src/img/help_to_fill_form.png deleted file mode 100644 index fe30fe4acbe89709a73936e47ba5442beeb48121..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 146822 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

    rvd! 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

    ESw39&m0jAYa60Cy`-ik$l(hNiA9Q>Dv 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 diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 6c8fc6c5147..e48b7fa7a9a 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -107,16 +107,17 @@ openerp.web_linkedin = function(instance) { } }, APIKeyWarning: function(e) { - e.message=""; - instance.web.dialog($(QWeb.render("Register.Linkedin", _t(e))), { - title: _t("Configure your Linkedin Key API"), - modal: true, - width : 825, - buttons:[{ - text: _t("Close"), + e.message= "Linkedin API Key is not registerd/correct.\n Go to Settings, 'General Settings' menu and follow steps to register the LinkedIn API Key."; + instance.web.dialog($(QWeb.render("CrashManager.warning", _t(e))), { + title: _t("Linkedin API Key Warning"), + modal: true, + height: 200, + width: 500, + buttons: [ + { + text: _t("Ok"), click: function() { $(this).dialog("close"); } - } - ] + }] }); }, setTemplate: function( URL, AccountName ) { diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 4244fc38b98..9321e54787d 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -31,45 +31,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - -
    1)Go Tohttps://www.linkedin.com/secure/developer -
    - 2) Log you in Linkedin if you did not yet -
    - 3) Add a new Application -
    - 4) Fill in the form -
    - -
    - 5) Copy the API Key -
    - -
    -
    From cc659ea35537c1289d7b1f1adb61d7197a2739b9 Mon Sep 17 00:00:00 2001 From: "Anand Patel (OpenERP)" Date: Tue, 19 Jun 2012 15:46:30 +0530 Subject: [PATCH 008/328] [IMP] Improved code. bzr revid: pan@tinyerp.com-20120619101630-w1sufff8c38egvjl --- addons/web_linkedin/res_config.py | 5 +++++ addons/web_linkedin/static/src/js/linkedin.js | 17 +++++++++++++---- addons/web_linkedin/static/src/xml/linkedin.xml | 3 ++- addons/web_linkedin/web_linkedin.py | 8 ++++++++ 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/addons/web_linkedin/res_config.py b/addons/web_linkedin/res_config.py index e3e70237086..e4758e1c62c 100644 --- a/addons/web_linkedin/res_config.py +++ b/addons/web_linkedin/res_config.py @@ -48,5 +48,10 @@ class base_config_settings(osv.osv_memory): company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) company_obj.write(cr, uid, [company_id], {'default_linkedin_api_key': data.default_linkedin_api_key}, context=context) + + + base_config_settings() + + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 9bfd1697aaf..285770adfdd 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -107,11 +107,12 @@ openerp.web_linkedin = function(instance) { } }, APIKeyWarning: function(e) { + var self = this; e.message=""; instance.web.dialog($(QWeb.render("Register.Linkedin", _t(e))), { title: _t("Configure your Linkedin Key API"), modal: true, - width : 800, + width : 840, height:500, buttons:[ { @@ -124,10 +125,18 @@ openerp.web_linkedin = function(instance) { ] }); - $("#register").click(function() - { + $("#register").click(function() { + var linkkey = $("#apikey").val(); - console.log("the key is ",linkkey); + + var key = JSON.stringify(linkkey); + + + self.rpc('/web_linkedin/database/api_key',{'key': key},function(data){ + + }); + + }); diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index e7f8b8335bb..44664ca7d69 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -51,7 +51,8 @@ -

  • Copy the API Key
  • + Copy the API Key + diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py index 77327b92bde..4ef1c414734 100644 --- a/addons/web_linkedin/web_linkedin.py +++ b/addons/web_linkedin/web_linkedin.py @@ -23,6 +23,7 @@ import urllib2 import xmlrpclib import zlib + from web import common openerpweb = common.http @@ -69,4 +70,11 @@ class Binary(openerpweb.Controller): bfile = urllib2.urlopen(url) return base64.b64encode(bfile.read()) +class Database(openerpweb.Controller): + _cp_path = "/web_linkedin/database" + + @openerpweb.jsonrequest + def api_key(self, req, key): + + return True # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 48fe78fc281e572d5f1769524b0ecf758dfc9ae5 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Tue, 19 Jun 2012 17:15:14 +0530 Subject: [PATCH 009/328] [IMP] Improved api key pop up warning. bzr revid: jra@tinyerp.com-20120619114514-2r72ppz7pwwym70h --- addons/web_linkedin/static/src/img/apikey.png | Bin 0 -> 32154 bytes .../static/src/img/help_to_fill_form.png | Bin 0 -> 63353 bytes addons/web_linkedin/static/src/js/linkedin.js | 5 +- .../web_linkedin/static/src/xml/linkedin.xml | 46 ++++++++---------- addons/web_linkedin/web_linkedin.py | 10 ++-- 5 files changed, 26 insertions(+), 35 deletions(-) create mode 100644 addons/web_linkedin/static/src/img/apikey.png create mode 100644 addons/web_linkedin/static/src/img/help_to_fill_form.png diff --git a/addons/web_linkedin/static/src/img/apikey.png b/addons/web_linkedin/static/src/img/apikey.png new file mode 100644 index 0000000000000000000000000000000000000000..cd17d071af2bdf57254bd8158bc1abda28f840bb GIT binary patch literal 32154 zcmb@tby!=?7B9SUmm-6nA%bDDH5> zd(L_8{r>;<6SA4fWHM{kTC;vj_D|K1vN)LJm;eCa$jiM40RR#&03i6HBf@)52Y_Yx z4Z#s4D+QDeQSQPU7`C}(8|gyt7?D4B>@0hK>qzZ4Y#?2MRzZa$wi63$3oj2 zm5gNQk>$Mr>ObGe-&y;8GFFqMworTHKNobaO>CuaXRVf=zIIkbR5WQ(@_sHatmI2^ zR)z+`rX@0#Jw_m+g8x7G1O7@p@@Dn(Lfcn8sq(L}ikyD=EOU}LY!A5(HD57!ISlFl zfD*K9?jx?Cy#L?Dm?0v!ZjYKJD= zYc?hk8m-vN{Gi;GhBnojynBVp+vKB9%#<|1z{miea}FESPVw9tE=$N!l>$C)G^0O% zGcP_mO$~jQdSZcb_v!Fr(tvPSzQos`t~gt+M~Wk-W5?4uozw7XsY>2>cvzydf(k+M zV{UO_c|-T#V3Oq|F4676volH#qQGA4=jooBOtw&S(|+w*C<;4(%A8f2=6>$G*?PR7 z3xGOw-qDz&^2*{-*{#?i1I&zIH+tl7k=Hw5Ijun7j%lf3+dI2QfuRj4W^5+D7gFeS z=fjF-RN0@y*Xu@uxTm=LV$-T1_|UO%FP8&uUii=X<4du?plNaN2J-fTO{^Xl_)~Bx z>F3`zL7+F3z35SZREIrUYc#!GZtCh)H~BmU9q2I`JHh6&%cL0R6k^+EM62CZ4!+Bk zZ|JF}^_DFLQd>vzR$MsF8tyxEI;S;Z*+2+B@b_}w*4)f2P%0Av36)Pkz}0h-Z!kJK z+ScbRxvQ%y-RE}Kem&fX)Ny+V2lYD=8t(n^)1xh5N4Xs$aI4*Vt7&GomGSPo*+9ao zAV0t*rIg&m&SZ3&up7EdqvJHR!g}iHq%fx}0v77IW->af+x%?<#^}wbkW?uZvj(R- zg7L=92J3f^Oeu=2lnzW~wQn~ZO;!~u>=z%I6Z{E$@U%i6h-;Sv@n6k{*;B*RlU6wTg@uKBw#}Mq(8Kv!JR0%) zCC_8A?gTOboh3OrdHuvql-kzXdSA!KO1OI)7i4vMaJGBv#^~P88t-mLI^W0RN5{nQI_->n zN5eyueAG3Eq2(IDg7~|2dTzyr)f71$s`962YbG#{yo&Cq=UoT_Ep?}&_~(+!?;9`y z<-92E|^Is7BUXs2Acck1*53`Xk zo^)#;r8z$3A_3nh(mmd2RGMv8CR4PeqAJ5F0L{8SJlZ=B(yJ7g z^^rQ?bWggv+C;}?>nP)LKB#M+?6BPIjn0E>b+49&`6zUOqAN-^P~kJdQs54geo@XB%j~;vq>6{rxqm_<9o& zXq(%fGPrCFLO>iA=Q1~tplVzAYj$zUPNPj7oCIW8m`9M-S@c2H{C(0i^!j|x7Vws= zQT~=*@4~v{4i#$zkb_btuYEapX7`%kHU?AAE+I$8@>cxQ8-OB?;(JaD!57Xnarqj) z9!mb!YU58-Qm#A;PUnxFb+85|>i4j)FdCn0Bfggu5QlRRf&i5NM15` ze%{ewH+vi(=p@+ApQDgSJpAZ&m%G?pqoCasVvf_a4?`+Zrs14*n3`kx?x8>UgNDVR z<+1)X7Er;1L@hEp;dI@eH?8gCuo_q->j^ki@;#`&a{h;AoS2`PUX@S7vy%UXrRZl8 zS4=O=nV&e-z3L;c&?qizgzI%N{dCplaRFT+p#a?mqgqb)``8|}{(@Vx5$=?oX1WDy zI%_K{R2*_>V&d+J+apNrWTG#2_TP)d(CefxmbE98?Cj9i_f7<^B@xsQe>?GFChjeG z0G*dGr^C7GX?@qlvAd&2>)zKS*mTSL%x-QuFU~x8;gBKg%vSa8t_!e$J zY;0^cQ<8J*-A>jNIa;nGeDBvAocGh*w-S%Nk3ChyE;NQS#XGmS$HBZxv42FE(r=0q z&C3!rx!f)AA$5*pe~6b^+&0F3Jv{9BR|egmcy70NIj<(&Y%l)}Tg8kj!QeHTQf(qIMayc`zwmaQ@9~%Zrc0yYnB|) z5W72z)hrOO>U|38oW*M`w;$Y_oJW5niT9@Dp#x9HrY;M zaf((S+@|65b0(DA{XhjM4BXA7t;@8P1+5J|#=}gt4c_vej%bE4Vi_dyBLhnd70ph* zA^=C2q=W)6;u_mBA-(YfI(5Isc8BwCa=Qzp?T9*N+d5 ztfk2#V#+oA#1fBNL&($3v!=BwEPWkhHqUU1KJne22G<8Q;SSXv(e?K4Xe1n;XYAR{ z`N*5khD2E3yx~(OEHH_Sih6+?bX>np?V517S5#(D^L6%Uv9YY_w6D9nySTVm9U*p^pl5V2^K1EL$Tbj;=5aSK{W5_eHn-C_mx}l6 z_{;A+-t@P(!v`dP3$2Qb%-t_kX`Xf-$yyU0FPKB;V)ilFJ{--wF+8aRK04V&&@{fC-crk5GBpU_RZ*iPL1WtGs?|3bbX6j)Pl& z{SgBb7uC9|#8sAZVwwVeX)lsmGnmPa`8C^nYmHWZQyjlZdn-(Y8E|{?HCeV-ho_bn zt4)d0;1rZP+V7`Zx3P#0>@0m#9HLkWzy6pGva9I;iYwTaWknEgvIDmOfZ+{pH$n#Z z=^GLtBrP*UK@6W=mwY3*eJ`nDv^{2?Uia zdX>-1VpE)jjqPS*IefpVZ{e`{`2J8eQT9Wob}vr zktta88;DGL_4z@Po@>p~!sEwTXyzGDV-q!o>>dFnFz|bIwtqV3z&E}CEW_aKC! zgK9f2Pt|v?=V!XFrUJv{+xxDP09rn)orBD&?;?8pR(Sk#(tF|swkRX9#k0~)Q8nK^ z=LG>1Q!^41S6usmK-}JM5y=2K1s;+Y`vX1ZFxAMuDb{8Ye=-IxkjahG<(A1Tg`PQ{ zFc2;lCxfnAZKY{oKn)zsRqw0#-o`*HU@+La60h>OfyXZF_SQpTcO+A~zrUZChbJj1 z$;#S#5po6h6AXPHE~FI7dXNC<7?QK|u;`f*A33p#0UhDPpGtMAOS;Mpu`ce`W4F!k&RfK7 zbz3U>=D*|TM>n`Zlr~kFVN=Mop3O!b2&7lgm5b zbv?~u@v+mnWR?Q=HK3#R&V{+343$QJe@eUNlQUco@dv0hB4M5F?|*yeXy11=E0?sb3C1D+Csy9y%5EuOP0?Kn6%t9CjHmPuQV!(!7V zU%jQJ1u0z|RkgIVz~It#L6E|byP1|&Z7d5ydFo{yvC0g01UpFE@DslPwxZptkCU>X z$6vX|p6nwVs}McWc{CuhTu9(RrvtU$-ZB1e2eDhn#-;@7aK1CTm`3BVc2`@oMl4Wi z0(p(yKSGz3iS!-;5h<_K$7nVqJH;u-JTytj^2=l{(kRk=5&2%p+j%y?@0(+8xI$@^ zy_9o9|DPcM4%Dg^74Y!QW)xs~N9{Z|AByO;8te~E<};{TzqR{hMzbJsEY6Ia_XhR5 zqKA$6vk|bp)s~k3Lj3cMyo@u&bnL-y{nBT{k480@pX;1$ z4p-%}H*s?|3rBX&P!T>M&>H2c6q36v$T8Ls-t+g7iCf(e9Y-%8ef9qxt$D0u2y)^X zl!3e9noh-M1NT0y9SMbn!C5;EL!=^~IE+Gd<6xHLbPOUQjr70jukug;I>_)gR)7?^ z>WxA93S2#WS|x6-lCp@1i3bz7jc?C)_T~mR-^z)K5`o{I2Y#~+xI3j6juwU#+H^(;uv^EV@%lRvT_nHA?&I*FNve8W!PV<+1L8}#C7Yg}PIsQtMcGcF zhkdREr<&^8HJOu692d^j*v!LUZ}?kI`(Xn57vJyjbY21`Dha;p6ZSxcIfNsf91-X* ze3&HMk4ON%fc3nuszNw~uNE9_-xTdJ$BMa3K@I@mt6_b`8!Lpi-~D-JPPm1s7OADu z_L(=lJqUp0^-mb9b$9~U>;9%};W|Og{PFiu@7D*yVXX)P9mWp`Qt;ajHD6d(*lnKUP-QZ?Yp*tY?ok|S z6!s6X3`_yn$s(PAswx*VI*>s`v;nkz6GKY^oEQbY^QRv&x(F9pu?ZCW;E@(8Ab;Ml zat9`T^kX)QMOww|J9IW)S#-G{_|h3NKTX{pmmJ7d%1?S7F~NdugJwctf7-6^=u z8ZXhS4X2SBqU> z6uT(wk*(2-#Z#9_%w7$#to89W)pbe8_woL|a>(O6O7^JvYDtl!{{6J`=%$uc0cL^3 zfzL@)vf;twUinG9#QjJ_Wwps({gjsHd$&jr}g7~&KfI+saq}F7LC&x#tf0aET?*} zx>`?_SywDAJx;Y9+U^42fnKucs~wbw#oFzS^WkrEulEk}Kwfp`=+)ko}-{?cgSLncS3mb{$zyY17|_Zii@F?ho_y+OO#o!SQW zs~xKbv(0(EOCI_T?pj-I>4y9p^F?^iQdEe?A&R4t@f^;KaNN^I@M$;MdUReB49D-_ zQwH+Oj(KhfB6?uZl9Cdzusvl@1zS{-4U{F<(uIvk>i0j~SN)eY{6jY-wM(~aA)GA_ zm-E2i?=<&c#=FA=7M;ckRYco`4B-|@tCG&QSTj}6B8L<}Bo zr&}LuTOV+Me@2;|(h51h;YUW}XYnL8fuW#Cki2&R4<-mvPU=T4m(-6w^z5TXTK2uD zl#~=WvI)Q<+1lCy&)1arK0QJ~S7Bli%4IzYSSAtV0!C9QD7#lvXn=~@V@1W}zP9); zkMSC$)qE6uQbDV|6qM=V^r^$qq;<2wK91$XAzs`RK5HjmJRz7c6;c8Kq_qn?SY703 zr|I7uB!!y;p{c5TPq+JdVf&kprG%xQT<)qaT0hrsNzNd$-*qHnfmlI^#?e$-Hl`O&T*m2Fh9uZ=!`v%bL{Tfue&j!WLupqfmGK{icmCR1 zKlspe-8J_bO>*=!=o+04*!z9v@Wq@J?o}LwpzeX&#dRMr9jlVyp@>si9IBaFzk$u# zfy5S@tFb{ECsCx8`_arUUZxz05MCQcxmvU@PI^A0Ir3Qi0-}p1lV0WPkExxCT*>gz zL41%1r|W^aT3Ywc)QxnSRcLc#5Z(x>Yl366%HEDCU4W^;+nKmxZ)Tq*XosD!WO-6CgGQEHSmnOWd)rJaL; zPb+qE|F*05Z7a&^RuF-{jN_y-Tkla zcqPo$T1Ge!FWd1;ywmob<86$1xtJmABvSobreUzdD{6xdMg*#;s{c6aEZXZN2v}h5 z*Qjcf0(`aavwkttG0;c880donah)(|a3M1=7$s+|r#IwBnJ&9c#YBiumFyy^9#>Lw zUq-T|9)w$Ng9fxYv^9&Wn`Us8Q?4Kaerh8`06^F75G|sn?nls`Q`quWO*Kc3SeBid2O89*oq zBl=ui`ZWgKIrC`A{LK|p!VJ-l$3JoSS?j1|yWd7_(zBRr4((Xb@pHLYV4l*Lv>D97 z&^A~V<$QBSG=2vuVM^l#84St|lz;7!_eO?6xVy@!=-$h~k!*SfGQQMr>=^E?w3cov zFjiDlVk|MXFs>_Mbg%oV+K!|!KV6~~3ygYFp97vz0_n?_qVl*)<0#~7JJu@7?Jkia zquU$8pmVs>Vre3_tyBQA->O~rjP_|f$|*6~>-Wzd@1R6Dz9jmeB^AEB_YHXKAN9|7 z%y?9pci(<Jr;(5p`Zp)@eWV zACLo`h`A=CT%=?)4sEZia}x?Woz$PIn!X|5pPtiN^5~gRI}Sepp@Y<(^5~^DQD6NX z7h@JzA1qP|(a-aa?`jW0hRkn63Q^h~LcUrM=f zqGW&+`~)p!$3Kee5^E$)6`q4+k4a@&o#*a!PSJVH@)RtgC+l&ySyV`Oq?g?P+17{3 zJ5oPrMx*YyvKusb!X!s((KFW{8V!mjFC_>a4d)$LXw1z`b(9hAE+a*dDLC*57ym`c z(SSS1$QvgY*gg?2B`0v`k3U9*jU=_;q5#O`19S+2B$$qkNim@k(RK3$Tv@7S!V6-? zAI%4pQUkWsi2Dy+K^~fBj#tSDqL}N53kF4M3h32!>ql6zJe{iq4D|0aH8d?82Nufj zGI|3BQ5fIL?W!g0+6nONVOG`y00(S{nFN&MQq-}7;$Gib$@@?4x>`cJkQ|1jC}!pL z$)_&nZze?=3S_X{^}0+Q<5XA^Ca+2c5%5b$LW@PJDU@uXgrT|cAA7oR?cj#H66=Bq zI{c$|2h5BNZj*$pFs{xm0tRJHloic{&BvFo+her)vbi|gAL_?-`^1p*Cb++jR!=Nf zMihkVGHDhn_Rxm%jN3B+^!mc6|Jzn0nmg?yW8illOSs+gN4`FY($btpW~iSN1ONgE z6bd>S5!Q0q5{0>caL>IcWj^Ggnd3&4yG1`ud-`ErOrJ1D$|H0PU~M*O?tira zWaPY*Mp!J2$WB{!mJSF6O>dA80}thBg|ji~?L)9wG-bpvLtqLwd~tSlhv+iB8Ej>P zFm?!ZWtvDW;Esq=EqU1o{d85g!Jd>hWz`dttF|byGG5&%_U3;B>8${semrIIU z8-R@Qs8N)I+}ekX(CH#cpr08U4H*o8l4mz`tikP?2J=NBn~}(8M1;TA!HI8(M-sbW zlWLf4cEXBXHnIvMM1_?@Ao18P5ry4gBS)qZ=wN^xDkCAaV4cdbYqDFBnN`* z#2CfKh}2+ZAN4i18v+gNY>XWvF64PxOUVM0D(JC^jSR(qQd2;2>i$p&?PHF@NXEiw z=+KZ^kE74gV7ahjGZX&o!j2LdC5)U3`^xdnO;ZM)w1%F+jVNx3`?1tJl%^T#$p_O@ zfK!0UXx~@~Z^gi#kDxpA^Iv{LU;m>zsa`be1?4;A8vQRsV;5N%!|k>)7In68|EMWo zkPtA?5ostacvHnwC;P#sj^i&N zeummYB!Qjp{I#{wB^MkPmbEox{&`ITvckMzhSQ12kPVkX`|(vUOIVju&)S&Sn{YkM zwmcSiP>2#?MU&K+!N>stq@GYZlCX=;@-_hF+=NBphoQDovfgKWAiY%Za}qxq{4VDQ z*^~p|xl(x_B#SqbWFg7nK!NJoWCK)TW?{9%CN|YTL8{}(Kta18x4drDlcjU5MlP;` z(o#4DAI@z#)(;r+I^mHStQzXN3wCwTLaC<0H830F%Jig35&DVsfCFR`9r(K+9Eo2` zC0G5%%zn2f_}4_sE9wtFb@hEwVX+Poxhm=~B8+533~~KTfO{MP(1%$SLJRS23pFZ? zb;9YRsXD9bH(jumH`fHI)@jCj5cNe+x5wBw$BE=YRMJMFQPN_t5AXbUiBYIYL1wprDlt zbEe`|929IczahMW2yz5S6>R?9n2mzW`ZwZevV`fuLx10PFxRDYaM6IWT%FIqmC=Bv zPYzd!xJ-bqLA8(>1_mbMyY!dxI!6#=npSFFo6ap{xsklN&oatEa*4Z>ev*0}(SVQg zsOB6&C4!{7MWC$ZF7xK}EBpS{Xo8*f>Fi$6NKcs_ZbVWFeEc|&!ERK)T$&Wk24m%0 zQA;w86LF$Ew`8{uVN$d_420)@X_&Rww7|Pou#Tvay*%xXW<8PGcg095SPpVow^z~_!M<8>bc^`&xX<{A-d-LH zTY;N$wBAjHF>hisixdi>D(X$-*5SG%*%~zIQ*q@sLm1!0#Z?w+a6*tGGgO=*Uj-5KB_2vg1Mj zLk!QHp0V6DF2R`JiY7q6=eEH`_7@*?fF$2mHoXC=$ik6#r-}44qw3h-?O~qnTUjq`fOr)A#hc%Pg{0tn z*qoMc+ISHCJt1)k#5$6c-;XPlXIJN{$rSb7aS{!v_9Zgc8&~^Z$(^ zE9?Wo>+N3Y5i=cr73x8Fj))%(<6XL$BU$BF7P|3lkisWIe!1OoVtpexjR<_*Jfc<% zUM|R+-iEFL` zpV1>T3PS7RgQGV#40sZ&d$3)9hhiCFq&4}e`yZmqGsvluR@ZMx;nOxKtn=4W;(|~` z3ysbog9vS9ETF!vIuy7{!;n9%<$4aK%Bm+BqsC|O&h_L483)ocWap$Wk4JMY`iau6 z{QTsyutq>TpXW$7hpi_^cD@%H9S7NcY*?R;wVS{vaFY2>1w-E@k&Al;JgCEfjC7S+ zh=r@-jgx|$Vh0ovv0-fzx|OhM@Dl%gPc|zsGCDW@)riE(&!kkC65Sk*9-Lp!3K@*x zZ%T2Pc?zcP7j_eNOih&!9*PT9bs5OFC{2ffn@2@HK8sH88!Z+6THv|Y_iJ&Hk*jKA zm{>j77-QLQbg2*J3N<8Jsl$_TUG+9?-m+zTvdm8JN4;-oMKJNu(9c{=V3EAlVC>8e zFh(T-nO2pl*oIRa*#ZxUOK{{o%enIQEA?9&44(Pz7a$peUeKpPO>xcMzxmHAUWvo( z!MTbre?+jg?%<)srM*LI`dJ0~96SX%^w};7ecOYLFjn>kA;N_r37>#Z=I;8LhWD~8 zON72=qR1y8872z~j`F%`H%7okTvO(@_-=St#{D{npC<6(fuxqbRPE3Kt^Rs$lc3jtG<9 z;KPgFyJ$ZtORklDB{Q7WmjNJvONdDl9f1R4iE;ItPZ^fW&K9ID<<&s&mMut8N^;tH z{ufTaJ>=Xfc;%H<{V#n@mIqNYITr7vwdsl5sf1*jyW4ZSg^Kzw5EHcXOGv7nAi@sG z2##V^@=IWMeOeMO3K#%cLm|_ZxSM9&u9`#yxs*ceuW(8dPSL9AQoYwm%?yh-4V#V^fL}MgRjdqZm@CWuzp|+`P zRxWg9R3}bbYz*wcqM>ky8Vy^>o;9oc{xrgwK@o1D68lQ>)7oo4Jq00xw?JEV#ehZ; z-~UHQ&M&!Jnf7qA{Ralmbw5{8#6d@T@^~?A0;O3@b_zRmIx1KIY=FZzjOch7oA}#rBVbrPy$JKb_qV7w$Ast zo)z+F->am+@=mn_9bc+JmYWWRQIIX@d45ht7Smz3v$Es?201Bogzm3hpstqO)Li3k z9BWB47lR=|GS_^jYVz>(=f&;x2jX|I)4@czXWmM&V5)t5VuI%ek>w;&YpJ}7PO}fC zWpS^oGCu-xEazsN9#p{^ILWr?H88PLXmVf5IEd9m84yvG;E{i3bEMapa$dL-+ z`_5qg=)OEo)Eb#W5Ew-EygWlpsXz2IwRnH}MdvUFokv?T+kS9qRWx>r(d=}mUC?B#vS?XQp^Ussb$QVy!i zE7I$Kxp*s*5h}-GEURRv^Ce@CU>@>s@u8{THA{LE!rb=G=a266J=F}ac1z5mdxbCG zt^paWX+Nbo#OU{}vu~AYLtE}^r@{AA|47-04m``uEyzwbrULbLZ%^VMkjSap#QMpB zL>;H6n@mqp9*NkEz(_5gmd)Z#_s%=|q*sHh7S@VY%|df?lr}cuH39SVHb31QJvYuQ z#@&&Ehp3#QWGAUOhH2hzRmQ0-E!0v24Cm2YwW3bL#k~?s4z#Gi7a5=C47a6}Alz!b zr(*iiD&xtfUhSvcQ@b9TkAK5FmuEDbY2yr5ixy$VWe*2wx-r`vpDK3GkG9pP?ES)f z=T0j{IMZG59^nE>hYW!Fir=;9h`xpZeg~@E%g2=;g%hijN{SwD?-m{(&DQPI*D_Xr z#`qe^+)|SM~yfx^lcSdayVMaIvY+HLP5(o7HGOzP6oeC`4i&n$^HG}@B)`S z;K{swM$+UWIGDNZv1Hix@lTpVzos-#mG5o)A2Q#r;CNrLrxXMxc!J?^wlbn*sp0r6 z#(TY$wdkR8P;Wob(4%v`KkqT5DsTN+)ufny;E#Qxxw^ZDf&ldC>L)D5%HeQ6s$eg+ zM0c*w%anIbrPcgKelG|bmOJ*tq-6?%PH*aSC_GQo^1uzpe9!{ z2e%Yiioh$P8)7FbWZ89`mR3uw1vIqE3{JG4gm_!7O4)jSx`xAJJ|O+da~_!8wKT34L|LONcdbnbOKtNG`$B!YO^eR3f*Hue1EM8ge>5BTdH_?)Y(o=x|ZbE(AFH) z&Me`@l?ig5Sy0KZ6xA~|X{pW3KD+hUtPwM6zMfOE=Wn8DiSM-XaS@6XBO0l$fq z7t&`P=~b>xw<;gaG%w~6y^Be0?Ja&oM_*BPw~2VX~wo_Qrj5I9>e zcAw(W@MI3Ey~?$)t_^Q8Y^4h4$xM`3FSJcHlJLH(sHK=J0^dZ41Ii+4zB?z=L57Y! zwuU}VeQkfnuf*zEy+UsWubIM-d@4?lPU?NG_Gj|${`s`SWXh_2@6gRuR^qej?V39f zZfP!YdD>^4hg=JNG}9JzISHGiPtGHTiz8OK@4;{>583wVv|3QVvHXoWZ8J+q=5xX*eV$#z z`%t&-b-oQ|7rjK-a}Lq6U2<)wx)QtmL+m0==}Qe~&MV{`s8S{x1>QLhN`k`o@7~TA zG~8hdEWNEA)rmCJrC&wIgulv}NjvVBw|sBmJ|GBTy8Ph6_n`wJf{7r^P~vE=U6;PT zT*7kcA}F>0QLA-4+wIk>DNbHD+S~Tkt)Bob?7&n(o#t<|9>=W1T?3tZX+ks!vY!gS z?-$GO9I0xNF(t~057qI<^IFcd4kx4Y{60sa_U_+BS~Tu1Ym=>gz2{Q_7wm&L3(8x6 z)V;b8EW`%ih1%1D!Fh2ZdqaOSdF@Ps6>CJ#3vo(Xn|HgH z;q~f%-suYX~Kv=GuH)(}mVHS6R1=Ny@EJ0l&#NNfM0$sM-x zQm0bzxP*nvST9>rIc2+q*n$%?W$VsB$Wh8UI_#_dq54&`i)^z-i+#6%S$MO8T+gb* z?tX2PWBwSQjUWF|d%3du42^(SoRV4d2_E(Z!cL5U;0?)*+M~EOLK`wr&emwmh@+vb zKCWHlb%9C|dCP4C3BTGghiGtH6d?e)u#!~7R_IU`;a1Pa;Fo@p{71IkV zoxit24pgR=_~3mQW}~nG%{0jY5qa_ZbMoBM9N~H;#jNs;mFvvx#c3M@%TyY zUB&*n+inAQ^Fec3@{}V6kUy8i>IIT$+JJ*i)mI7+kj>JhVBypr!;Q8eF(Z93W7 zLUMj=l3x$HiLgg+pt=IHd#x{Z^@vL@PL+9m)tgSsSdCzSo8n-+1XJw4zsXbIzj{Y| z2vTBUl+@CSW7+i;tO3kO&+GOga7Z$}ZvCLC(^9?hkl%25IK*PUp2Mc`t1nkP^DWT2j62BAz! z`r@pKES1>^|83v8ig12YYcrdHpyM(*XY&FmT1=I$Dw+a|5IuhFpYtx9@;z@`8GY%( zyXG%iz9-On@^1W_>(TWP9@yuLp6!JuP6mvQ;B7=DanF*S?@_{wZ-1r+(E<%41x#iV z5L9b#4u^x%(@A!0vM+6Q?>2&6Wrq`*uOGWeHg1#1g;gT=Za`(8W!t$_j=gDypM8gI z4N4Am?@8Ga{0JrNjLko<+4@{<)=H#vxjL*Q1g$WmG0%1w(`2OW;|VgE=v|cA%uYM4 zd>^!B(wlKuNsVS?)Vo}@G>1b#8Sf5VbiXd~7AjDqZK=X5ow9HH5$Cg_O zi9}^;p_pC(e}w3E?mo7HPK}s1@9ib#Oppwh(021bC+IlTXKl5oGFDFN&60@ zps|R1TM77$5Z*4NoMpF&nAf+jX4?# zNMn}icn#)I!TL*^_l&HSMpeLx6O}%iY~~Azx*`hkV&{2##y5Qu+h}L4XE8|!{`)>o2C}IL#-|O<6Z=d1^_H@F6-7?7 z)!K```L;_i5{SpkhR@cLs6ff0BJ3GmL5c)5>yd|IVQ0Z{N}nJsqWB z1vWoiSLnqRAI6Y4_3RY?ZDH42F2T^dCd7oNnI&G~rX4u)TH{SVn9ovfMc~WZ&}sB( z8C=dm?-d1IN!2JVS(V%mN}gP=imq^QJlMblQj&nG9RrqW>O*A#UaHV}sP9w^kmOR_ zu$il!cYiv%kBLU$5LzrOSSs}u-4te$LtyIT&gSX@(5;t+E`Ez_F zR)py?xVO+BeGMCT%V=7=68=$$0lAdl#E`g%jSmk~S`tc0Do7y!M7xK_!}qrV7^>FdiRVg^49l`!Rg zm!Lg5Javm%d%;bc3ABsSb0H&Y8@J(4)nQmQXIC+)9L8^NTxMoW8=I(QiKoDM&U$6g zH#CfAIGHfu;XLL#h~MUoa45U{hM(?!YDvIZ6P?9N>7jgeUF?De2|!ULjRla=86{aP zZPbRSJ(lp845s&S%>MQHMp$0+%8-$G$!RS`FfA7chvK{~^B~S-k;=nVXOg# z0H6J1fzGV$l(&~1DVEb8Z|H2VR5_Pi|3$%u?7mlL1H$Mm%$W`Ai^NOz`Rq+bD()AV zR2ZFcw3WO_%Yy42zmQ&slR23AJaOZ4pR~are3C+snO){iMDWA+2VvrJX<7=*%?;+` zOTlwWajS#p1wI^9cIk#3Co*Ku9!-ad3uPb44VOXzG@2Qr*pqkXZ#Q*Eq)17n14)l=_6A*khP;ZH6V|33kJVrUq_@VB6#F_4>_f6?hfK>o?OJL4B}*4}oLYbIW++l3OkHT8M^-S;WqUd1ze({bO3u0Kv=7$B80)UkJ6}) zB)0k74S5ZOR(kn%y@98&uuVlQR1e3q5CzuDf0&-5H6xaaW-`XkyQu3|G&O&qt)ibM z?5X^WNW)}KBfvAla~)v+`giovpRht3nw?+x?VWaoC|q(Zs@A(6FYWD}`WI(+7kvTa zk1bLEeD7bM$0KOUrxkCL&zho5G=Q^}(p=uay~cyBt8b9fvh}mJRuHBgQ| zePLU*w+7|Uk*>_~*nvU;=mbhgZjirauW_21?w$eKmxQ;boA5_jMs@TJMs)<6SKyq) zARg+sDYgrO7WT&zy(B&kBb8xT!w7^+KhPaGW`3@p^S@ev=;o5B9|$Wa0BKYyl1^rp zdwm%3Cb1_1El68U>jldj4$;}LvZ5tbQEwN0i={Dll+3KPg$5k(J9!0yF=N*_NvsS2_}|>1xQ)L4_e3%0VP!4&!=0j|Kmtsq@ zA&=+f98!yWK)W7Opjo_zllNV8bx5#(eY@&v);%Nai0n&`IcbEx@IrIC?&J9f)vBtj zEWV9zUo1S_Z`Phi!nHrYd`w+XOk#Q+!`aK}*k*otuEcA#sq4lWmidK?6#FInr^dRf z9N@U%+w-0iO6NfH?zg&|O+N%M!klAw1Ha-=g*m*03IE?Scw&+yY4Ewy4F3Gw zi~ojH{~NRYUmW(oG28zg;{T1={_ha~Z_M_owfPPQyxw$%{3PuMD8DZk`G)9E$!*0+ zR#*@>s{5{I+MEh*VDcp%;kFk6&ZQDXB(_{`f-qC-nRQ zYDgNEm!5a$o(A^008Egg$pHBEpLg0s1o;2|d2geN8Q^22IK>L>`sbI9&Jc;p_Q>e- zP`${3|I^xAN5!>#38UPb1QH-<0t8JO3+`?qG}gGgySr;bfF@Yb4%)%p-3i{og1fuB z+dJgWd^5k9Z`ND0-s?Zk=~Y!{pQ^p9w$|B&&VY~eWGfl_YOTPo<<8W9#P7UPh%s-| z3aIvCS^G)cAjEvS?Ny+s1ZTX z+RB!*|Ai(!uz!dXZ{DOs-{0s>Xy8jqihv&GQS;y3>hySM2nR=h81VB$~d&;ywut*rc5&Yhk`veK8wJEx9GmlQWDxBUY8Yb82Xfn6kKgh%FikVnwR zAqnpH`lA3E7j-2~JLL05^(&I&(YsUadj>tOIlIu z(~!$?gfJF;<03xBR(MYs`Se>Kfc(W&Nz>#=>iXFJJhYOR9M~bIjv`}hw!rfpyx z_-^Q-__-W~2Hli53cY9N+ZVz*KdJoIhl61MGpntY;vre(Hkh(;>1`q*zgZ}kHf%l3 zMATNLKcH8n#m1tu5?BJmo;=^5Hbas?=&K!IzI^vR3wACe^r{kQ(sIsRZEO1s;IYJx3arW9-Y56A&FRQ6B8X{ zml-+Lrj11pcB)rs(3u#6s$qz;ea8bJ*hf;ai9#eOs0@Xx3G?0kK-k}KB*)%T5-nYR zcu#N``uS~;asS)lk)a=NpMP!*{h4d|jaJm-9RbF(yL7q3XA^bHYp=l(&Q;CKJ7~}A zX^k`in5_bdeaad~sOhl0a2a2*7>@S0Ad!jo5NFk2qTH16zi6i1KORW}A96TCqtf$; zvEL-(ea$J4esxa!LQ+SMSegc%+FlCoV!JuzJV1BJ%m9GYmzu1;eNF(%u-(dE&w^bX z=>|dFqmPq9BujqFD5qI_+?2eOPDOUV|OtamtoTtq+#>iC~I{D(&%AtBHotN*$FQ}q9}Vz+mAHFm<# zfIu)~o2#LOR#XEG7m*+OP%%K_v}LS1WMwtk8bvqt+^DS7TY>`$9o7C^RT`2URQH%9 z$<2~AW+czTQQm?*PK8tZ1$9>}4F{Fu4vqCDgdRtxce{Uo@^{?O1Td%8QGoWdSBO4& zB@2&>D2dAtPK*h~j9ic6gxQd}wJfZ&EeI#NtPR)<_-aL~_IoDIn*?{L5j|e0=;P{Q zM&}?rWx)&WY=fqKF_o7;B!M>{Pme4db!SbJQ~=^h6A(7NS2!Ahc&ek5`s{sbL^6n|>=yZ@dzgdYqkMAUUEoU;8CGJkU4( zoHD|P^_Y`9r)?;#c-2`<0-i$1gBPV2+C|BcAjys^aJD^Vtz6je`g21MFWt_Ml>=wF z(wv#X0vY?iNG5ulZ!fz*yQjfJ?&CiKYvOApz+kmkGCiw`$!T3}A@Z7@M-H-(E~msa zW5YDK)X*+9T;`>R6T)5_lrGPXgMs?p73jPDO|%AM+%SoDYqx`;J(mu|WNq6uh}iJ= zAZsDPVH_mCaFfoaP|oxX!rng3zvt*vvgxX#a98geO~zgP4*6r$ICdTCASl!ze)oM2 zWqTPl@v)Px;43^SwbjCO26jS>Lt-*457x?SeX)+4wz8b_Rh%J950K?=5Vi=0UJuiu zAX#_m#}BXE;c%un=Q-w8>tgW8pwMaSgqCNd986i`9ne|Q7k@OC);)-6P+BG{B#+(m z^ixTVvw%;CgltyT^`;RPOGlyEN*httOM;-N|B!%cJcOokZr{gb0}MVNaf@5h#}`#M zD~5)iF?TRa5jk_86DK7WDAUG4MEk{B>r3_xJT#J)>oX%%LJsU+8H6)4$4 zzl>GFq5moh4V9^op;Z|3&c$Se+3o^0HW)kUaf;TQY1o|!*hPbLLhHr$)gWh>2#Bq)<-Ia}^$(dw` zlWlso9R?1E{175sli;~Vg0FoXB$>Y(Xu&WosSL&BBzu?|(g!uvl2dmLGYQaj2QV<` zScFTNDhV=G+&dkKuLLKNOgywSck1cf8pin)bkmDQ3jRL(wtN=&%SHK_X>YL-h?-a#4n(_@g^GMy)TAhjlDyrohkb@=&fI}BdzP5fl>$PzCsS=mNQg?=0xh)%fZsFgeLkbcc<9yMy2niHo`87Ya0{uvnlHQypJ zd#g_Q{Tqx8=M2||;sWdv;t13KBU8S{ev^>y_-xIgd~^>6y`_xK7lv@Q9et8#Uc`SU zjE+bY&dkXW7RGw|2|qw#?5)bzB0gWoLLLXF^G{ ztAZ0<-^~48kwA9wJEhi3fusSCXJpyWfN@&Cn29I*OT>7TL1(P-^jL7d7Ym!o(NavM zGMPRv{abzzXT%tk+BGfgXL*>xCOA`%m+?5XEc8WIRxZq0<`|7%B-08;aDQaXi(m_r z<*LTTW(ra|Liz)HHUrT|_gqYKIPAA!^l)t9(rfOZp%Ca~J@Ez_WoAeCVJ4)G(gYm@ za=nNOOU9lgk}|B1Hfl123_PcgkqT_5>FV|>uw$_8wgx)tUsQDlH$65~H_o(Y&mtOo z9v3dgdT(BPeU+VUY|{Uhb+xc9gqR7{k~4zO{U0?C2~I#{|DpgUo^tP1!VYN->TGqyJ_`C3b_Fy&wgU6C-IHpq!Vdpk-t8Ceeoyr3nveBHTpWAd;y zr*zWo)5A?&BK})&Z-|mWjm5gfb>^(|h8&?q|RUnC>TI z_!7Rhu?>e@dhLcn@zf>ZkxV;bLP)rA8n(J=%-UKS9%p6oz^og~#541Q;FZ@#WERG=ea* znT!8{`$4IEn6jM=6Vtw9v5!q2uKw2O&B1-V+sbnI6h>Th>r*aVqGz!=@BVYD|*eTHTBJ@}9u#jky+!a{?F+>eH0MD>-G zX<~95qYlq)TY(55RRs7>d(AMV{bCXMXnLG0?vKo5)94(j-Udy{Lm)cO}1;K0dAJyAd zPyIjgL%(72nuD!;c;xQ%PRF=rX!KR5>^DtK_l+&__s(Pj3E2fT_wO}bhv3(n-7T6$ z3>OnLXXtehWf1M)NbkY07u*o_5t>eHU#*VwZ!x)tXF8PED+dbZT%BD|DDTV`qC_dJ zGR3o3_=*Pg?(6Y)ZlJ&RYE*1zICn`>V6ZDnoi)1_1!#IHlk9=blTv))0Rvm1m+`vO zfbc$6^MJf2-0&d|bwPcy%_oK!K5{gedy~|`v(@Qlap~lF${ffIN?(fHk{eWjlj5n=g_dlHjLl`Z>MM$6d93R};63aXp1Q>P05w3t?EuBmuip z3(S5z7c(IQi!t4u@|{w5)7Z^JwOclGNWkFHIoTMPh2z&*-DzQCw{Mff?o7ZC{9UH6 z4-!(yvT9t1^zNZhbIY&3uKT^Jxw`3GeDBYm&?Y$F8xh_onWAAjFOd-KsF=MhjmYVQd#B(Q7;w~8#u2eS!c>R%( zc8v3sZLj4H%^0NabDLU@v+kh}Htxv&bCM`po1@%uMW-XZ9;evX`<;P8 zR|-}YsehH$%>fCykY>K^rE>S;?9E8|c|)NRP0~zyUA2!&VDuCoP15Pc!7zMbS#{nE zKHvTYpwOf4xAf^TsV+J8#YkzpKPyH)4+aMjV)FzoDU}B~ zJQAIP4FuwVJr{Uj#fK!5yz#ghD|NhGvuCe(;UK4G7-g=hs^+d0igJe_rp&aKI5gA- zm=F@8kT7kO4y+ro;US0x$%XsGOCg7xI3W(NdEg|E&Xz?F@4xtk_+KP<7LNbz~% z(cUA6(6^%~eSZqPvs6c!b7t1e3_k57ggtcE9~{YlHk?G(r$S3^C$#Zn9VU3WT9KDV z-XGDMC0 zpb~M$pkr}RdTUP1*&0m;4t6`cW)@pxB-sx)-3SViW@scih)1i14?i5*pXW?V{Z%8d zG4ER>^y3ispGjm*mh@neT}&IDd3dkSpAfHdR`;a;YwSBvu+d;yUZ4sC2N6rWDP21= z6#5RuNx*w7PA{udpEYH`lx)GK{3;}pESbRviM ztJKWu%{i`4RVX>Zy$>JBxIal92gwq?s+03Q)Mvvc@iT{t*IUW}ohBjnFZ!&cALxNK?Z3B`s=@ZSxF^pKXQhGr|IX~=N-$aRefRBm zNlWaA!92cd_}P9joyCCRQFlcs(eTjQZinOvI^>mn;reJi?v_F#E*IteSFby2o1HV# z5K;b{CK~Z3P03g?l4B63Jmw9ZR#rSc?zz$dZQkt_kJJsGfgLok@!an?b~A&|h}n;K zK{&5E3QgJR!w^7vZ+~Og-jJv-Kd4qT0--_bKbL}$*c3y3BpO* z%c>!&pfZ({W%$Np1Y=ab{oemq@M|5w-b8e*xxbH&4gnOv{KRa)$Xx%}+@4lC`Bpf8 zNAOWSq+n7zO4)k0nfN{-zcK z339wb@1o?yK4AkJa?|vdgUp`rlYQ-W4|3Kq>NJ;)dd<^|$g3>Gj*6E8zMjYW^5L5l zHDv&lAjsqmXn0jx@jU3R?RfpO0X(*k5L{0y$xC+b&|8BQRc!GSNGuTxRg;B$rKQsq zJ{_lD_jo3hftWr+H`#=M(!|nzvlVdZHzI=?g;Q}mKCnkcj}gIRzed$^!6eoyi8Klo z4E!jTlwv{(Uqw;`AihL)#!Laz_FJFr3o5Kgwz^~{Qe4}o804>C(0rsPeFcS@@F*(! z!sSj;D!%5wL5_-&F|O7BW<>A~i#0RW`;JYR1BUt(H%-}5GP+*&Fj#|!!J{Fnk|ksSfw1LIVPHg}c9Jhhbl1<*$CgjfgmfJD#q*kx{~l@_%P`%a31wf5sa0 z+R(v|6-UjEK7fO^&wj|5;x&4YHwDP?d&57tMeTLu?|zZ&<{-uRS~9;`nP0wNRgpDW z*=I^yHo9E+rxduJin79z5qp_?U?Vbjgp7(Z5E^R@!h(piC2S9?1rTh${s_t%R;0=Z z{@5I(m5-uA)YkY}|GiW*W;TsRJDt7s8PZFdxRYn1rhpEGKF3TjPKW$4L|N?D7e~aX zp-Q6=;VGo-bh&1k5TBDBh(J%Udw+ZJXQtkm*C|t^Q7V>oaxjUEXhax=u=6CTu(!XZ zjA8Hio^Ju<^Uja=Izy=gdn)&fr6;I!k}NjSsSQGxeh^1Wtm1mO1~Qzvv(U3Dawq09 zT5mx(2@#hWOWW9l^|Uk;sPl1&-$t;1;y2&Z#Rt(AguzO}vzOeJL%NN1^zus6ddtjt z6XQO{Ml9n$s&fE6lfV?T1&)&kxKDplBUAKaeZ>AH_7rfYjkdkhqr$nW@e^E*e2QoE zitM?Q=DASIEp@lhuRx#1iJddgI(>dA@O9P-sO8X&!TZxwY>zAdP0Dw~+R}=>HT0oQ z+Mt-Fs#galO}Zsm&@02OZR(=2)!ePHn)L=fm)EF2-9ZwNr}A9k}8IU@+}!) z97u%&u9&G#RD{sXF$vnH?+NjCQ>Rpq730p4#ebr<)*}BcKE*{Ee~N@eyz+QPz`uue z|HU)$pX0s%`-;{*)0tDkEVP!pq28&50pI2->hq$Mi@O}NyXAR1gD_w{Ey^0?Dbprt z8Ff3A+zz(Yv><$KtmJl;?m}DQ9`2XncLYX{PC&P>{d#N->^E0Fa9>%tZ}ZxQtHrq! zIx|o;JAw#<7TcWj55^e9-!5VuD7RpEA?^&`t{t*43C1q%khK*Y#px zFfQx_V;*tR|KNQ;jEj)MsJ@CbJ3q#kgF*L=d>>9u?L#bl*AjFlWMvQ5F7BOH$WkvO zl`2<=THH;U{Ekkatq=xb0Z@T1SBxjVQK607PJDx%p!d!zkaY5{Y9Zpz=SVZ_@@m6R zXv4krDsDl$K-xR;p-?-mBsTo(Sfi?k{>9zjEhl!a2b7@TvD=_KI@6&JtjARoJ(Z8J z9&0f(Ri%9mswn@~M>=`dPp7mpVcq{a|9c#&3hnE3tGKTkX^_BTyS(plzpB1o{q!Td zZy8t?c@*lkd~?y%iAfXVmyxt+4Doep|Pl@63g-agFfl!^_)9 z3w{d#BGNu%(gXOUS_b5f#Vds50e(|$x4j<_-?Mo zQzvU&=P$_ocKtRnTLM`Cu>M|Le->+Nm-jQBM~MIC@cYNH_n+N+|36mPN0x8ZNBptY zCTZz==Os*6R#rA2-SPfK!*g>@mk&UI{4*)AT#+U*4h8;rIsd!U{eSev|L-aSo;~J| z))|?#5rpwAOYDz7X%4;FkR?XzBlGtf55c9LSDyl|@dt(lUIJbUye!tf4|(@%qGn7O zja=+x?$^()wD#UQyD*b)rTsR#P@a&B#7O44I6JUurc0V}tmk#tv=ahV&adj0Ly}v| ztZZkIscTnrIWOL-!5L<9M5XyNX{S)r!u$uY{WcY0FJ(ChwKD=eps7^&@59 zs$E^73kQ>#d~<;-2PrfUn|R`tmULrEzg4!1KHWz8p03(#9bTb5IY^=NB<1t`ZP8FC z5L%JZ4%6}3Y4*aSk~5PHYnWwZl__t)JiD;n50Q?*fb;kz6snG7#uuliHWgJfBy|xT zjIGV}I({zQoeLu3GIh`{G)^>$u{q$OsI=M5EfBA|jw+cnISE|CL@|RHQ;x8w%q^#> z!d9fthqG&$-M#6B)cOX$^UX2_H#KR^F09v!o@B2R(!|WojZ8G8%1$o7;&9lGoxZjw zGb2xA>c=3y*_8P45MRyx4l_)_tmU^DcqC)k-gkl=g|B)QG#5)m-pc6)Bz#|cXYKLI zYdyhCHktbf$P&LGVe0Z)1;6X#!%fuG(5H)mSJSiEo*H&jZkJ0t_=nyeu7^#y^*I}Q z&J_13Ks8g?%QMq6*csiSzeT1C!DM|lXB{LF?Sw)0{)^DkyEQ2a~FB)+6j#g z@*ERw)+aioDLO27l$90SOuNRK!Ca$!6$u%mB~=H1-tS)>1*Xn!B;=*w-0YHX^!x1R zom7c84+JD9)iWE}2wnG(5-AvHj!CUIx*$4AnQn_Fg)bh=5?*PuW_N7jL_@mG-22 zdNZ+H4$jXbOA4#{fzRh9I-oH-`(nX9Mz;hZ<@}expuWf zD+R5ls@g{&hB|Xd$95nJ)?J7~w!S^+ww1Cie4}1f=j-qQ!Qb+BsCNxIc)ziuTdeE1 z$DVYvnQa$_G&9xL*LSQwZl6+Ey!xvKi!Nbpc|Sl-kXzt%01PRqJd$;Ur|5$-#b2FHW5;GislG^Xk-C;M3 zH-k^bgT7@2VMdyh$CmI($;Rdri7IPvmcX)+P0qXkTfE;XqP3^2Moi4~{L~?IENLyT z#bb{NFR{En#2iAZZ6<(mQ#W1l9J+IdZ|v(mJ2KYJlOnP~#h1hf?b)^#qIcC!;TCZB z9Y#bXr3i@gx^Cm<$fYE0x-w0{cB~WThg_B1$b3Eu9^KdSsJ-WMz^oWBOat#~n|rE-I9ap1jm*;Z?|WJ*d>(s}GqDpwWfLsN%aFzUA_Au)i$dr%##r zFrm`DHrZfgTBi=$xK9-v7sK5M-l^}Io;s1}mi1XS%#$A95lCoZE^Vyt3{em`b|E#6 z$w?95Vt>0f<62c+y>IC>O||-ya%51%s#=8$=Bc@zm^wM>Kb~h5sJ+q~Sz+7A**Z3j z(2$eXW#Ad3G%E8OyCN@r8BsbT;ySTE-yBhg7zx;*CfU7Qm%R*%ubiwrO>Y+TllCb; zM_oIXDvr%7qokhqT)b{!w=TXzX~_JUMq^c0lmmB}q%!u1;~O({D$veUGIHEQXQKD2 z^SrAX*=_A#Ao#1g0+OYe)U`d@tdgfZ4(o#!x?T*BU|5wQAjXNtl(d8WVR}?}8M zg8PjHTnQ&a*GRyse7&4gh_%vzx)fPHtD1rDCsK45r$V&#B&s?BF3WvmftC|$a&sDm zZX7M_e5|QVvJlz?r)P<@l~W3t@?R_mn0(%Nn@ zb`OKa(W@6}A<*37xO9tpZ48j10KLwg$j#nx)*)}IU_j?Pk4uN2? zCW1buSE;dnbi1aCtcHX;mW92e!Sn{kE7%54=^EiUuR z&bT)_?6|1%666$wK&?5`qcxIe^e4(}+7uk*G+MZsxyQ!ahL0H&=^FTfF3j*k&0PZn zv=N>d!|Rh%7d=KW zE?yAo64z~391rO%VfV%dJJe}f7c(!+&$KLX3h~+- z@(-#AA*Mf+IJ)jgmw{JlrSW@&F{-N)kh{gCtD6R^clGhKN|fA~!^b0g3>G9N#%?QD zcy-8+FRd3+Q+gY6dBrNWHgQvKzT?o5WC}VMOi$P6#M!Kzm!9)jfH!8Pau&|c zR#h|$;bjHqOS~wt6RdzIg6#vO9X zi+!W2^-9us+f(QoXHWUwwUX5Ms^Sl9k0atK*edwX28c>j^qfiV7V5_}r5x&Jyr#Q@ zWPe58h0a$ed}{GsdD)P%w{@^_?&dZ6sb>DxDze)^XXoTc+iDMjEh{2o951cL$8@oX zYrd4L&g(i5&(&<>^uv1iM9=i7M{Z01+V_-s3H(ZD5xTxE@ z7CqoE=fe}R6R7GuJ2(>?!C;1zk2-YtnLqy;GvVkz>qb*^QnQ;VJ)P$>uENo%^ARYL zo!Mo)xLQ>}VzzB#`lx_}xr@bW_nHu1TZ<^fU)4J;qdNNis4*UZWbVkjW>7KJ880 zyK`EXhpRU$j3{w=QxuNXl~b}k>qGO|YbfpWm!E2WH!*}`WM^`jPgl4dAlDb4^Dft4 zM5bJt$MZEdhIVD8xpgBf&rZ*@q(VQ{CKROLyo~ftL77^09h3+lZyzfdXl|(~=|qgn zhHYEtS(OzR)z^VXV6a;yOOYqji;h~;U%R(8eUpi7t(FK`WXdZ9?wS~hI2cGmF}f{J zy2nb%sF>o=R?a5QsASwX24p|+c`T=(YlIXsrr9lVd0A?mP7>;k?gD(_q&2l|F`O%PNghd8R9Z>*kixc%>xMwa%Zc-hPBq&&YTTw?xveJem|F=lHKF8&pbnQgb@h`fI-Gk3_XB)mun2bo)C@w8Y8r>^Lqk_HOF)<0nzi1s? z{NCB0r=JdKt3BMW?~RDRjCAsJUTmx@@v}S8yunBvpNV{4G;{0B`D6OYP2mR7d3y?L z?Tk~{K2;LO!nhE1LyA&OQRkl1LIe2#3DUUo#pMF&swMd?pH?0cWz?_1KM zzeL}niW(auC$)4<+^%EGSwrl1|4mYuQOw-Un;-XzN>0jXSHU6DX0E$#Ttl0H+eq-d z=RPj9Pc8z(4pLG)6{EN8yv~H)=vKVxvAg+`0}dSL__Ha7yr&~i$#SRNCpp}_nVrvm zH-r4sz1G~IvlSJhe_#DOe+m!FzGFiVdx-YjUGTIv#&l+{nLyF(?(9tK59{&Q^<`2< zQiCK&wlTQWvh*tU73*d6reE zCBKQD{$nI43JQ*oHboBjaqAkU6y0c=4kX=RRK;ceHMQ=Dy>+s`zfY1WmrV9O3hi2Z zVkvk-khf%DT7aQgU}9yWkXO;ZJnK!|uBxLu|1%YrN~hg6C5iRZ#vH9zS~?Z@SxZB2 z8l3v94?L{pDvDEiefAw6?nzenXII9F@YXRZi;g3Q{?!O!L>87@$N1W?8<_T!O%&L| zD1zlRx8Bz#*}sujch}VtCZ077Ip5Xh-fcVWNo<;C7pR=HtD5WOL3{y)Yz0@}{FL1Wc3GC`=^i7QYbvTtWtr9vM4;{P zj6RwWciObl^jq!OM?pTzX&-g^A1$hW@8(qtgI*`kpVqiH7c-$1;a?fTZjO8RO#c>l zJ0oMOz()yQ&7+Fc06%^Qp(8<9mtpHE1_lI$(C8 zlF0BaXMu#WA}*o$>=POi@#L!>IjI4V{SNOq$KTH@2ls* zIGJm4bEuQ|=9W{}71Mr~R?}Qv4)5zI`dV7op3m7{wCS>Kn08U2G3>2{ys$hl%jrTM z=MYP3{8n8oqLT&Rxv|d@bkNQ%nd&?vp5kJv4h=>vPd$yB=lnZaGize*%Il; z_o_Bj*;3gjXSmYm@+q+EA&Dke=V${C~}22Sf!G4ak!4S6m$M7 zE&q=NaKZIJM8AZ8#=7Hx71e|=!RrODIyYE@RU3Ng`^#)nP6AfyyM4wG9?6_3JzLF3 zG%^kY&UM7#4o~%Z2zb?4hZB_456S96F{|JWHHm?uR@Bdlx?qaH0j~|5*tOd2z|J*1 zLc0Z4bc!u1v&7NRw`BoRoB*hH zVd!ZboyHw*IC4|{Z(!v$D6)(|V#v)#v8`B2_~uTm)S9ArtJ;p0Yi%NchJv{PV8;R3c~vb;JSB>gx~kZ`Q(SB(ZJG~k z3Y<{bV=AT9n7} zQ@vXyz=3xrdGu)G5rS;|oJ#cAb*LlH91AyMepKK7o^Gmt zt{xt~mZcNhLT=r=HyCFJ7E~ag<;ueKhF!W6#`)F7f!FIZUI1TO7e|o|+o-#f5~Qud zQP8;22i0$Q>XyVtbm_rWPE0fqUizyAh4>fo?O8Q z=K@Xcf9R#`9(mdXLjSI_${Abj8L$2Pc#)R9Hs*1@-}Lq+MlNH41!IfIRMM>4m_glC z)#Z#BA7A}1{BBceN8S_@pL`(EUoJugHkk5e5O((SlM|SJVs2)t2oi7*fvYh^T9(Dl z$IHzg4^JqAbZ1XD%zSmUS!%xHYPKsVXg_G;Go^GaPr2czW0;%L;`KUt@??X0?j~P= z*_K0Qdw0ufrs1Nk6>-t6gF&lwGA)H&yk0zCyu{(@a@~bFG`(-*P)~?wF1PVrno{|Ee9!h*L)=)6Da-4>H0y$B zi!S8VcFn{O=Gzd+KI(3~+8cx%T>FSB#+v>LWBP3>GqnX@UXIg!ZjGYUX5XD{w=m=! zC8v!%A1m!?i4>xik9KSSCV7Y=yDJpA3qnm?DD%qkWUkIi{4&ODuXbZ*O9t<&4GjLP z@>1;x;WTu?oje*H& zq<1NwJ|(I0{Je(UcZMELMod_(8KNz4>AJ16u1h$prt7gb&c!MSfZ~QF-6<8+tj`J& z3ON;QH=0m$3;H@fF>~+=atYYLK&nwXV=^4Q-(K4(Y0|Yy+h` literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/img/help_to_fill_form.png b/addons/web_linkedin/static/src/img/help_to_fill_form.png new file mode 100644 index 0000000000000000000000000000000000000000..4962d272c3af8df7930e75f6beb5dbda3bae815c GIT binary patch literal 63353 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 g?fb%7 literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index ede7cfa444b..697c3a79d29 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -128,9 +128,8 @@ openerp.web_linkedin = function(instance) { }] }); $("#register").click(function() { - var linkkey = $("#apikey").val(); - var key = JSON.stringify(linkkey); - self.rpc('/web_linkedin/database/api_key',{'key': key},function(data){ + var key = JSON.stringify($("#apikey").val()); + self.rpc('/web_linkedin/webclient/api_key',{'key': key},function(data){ }); }); }, diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 73c49f52279..b6aa3dc69d3 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -34,35 +34,27 @@
    - - - - - - - - - - - - - - -
    -
      -
    1. Go to...https://www.linkedin.com/secure/developer
    2. -
    3. Log you in Linkedin if you did not yet
    4. -
    5. Add a new Application
    6. -
    7. Fill in the form
    8. -
    -
    +
    +

    Go to... + + https://www.linkedin.com/secure/developer + +

    +

    Log you in Linkedin if you did not yet

    +

    Add a new Application

    +

    Fill in the form

    +
    +
    -
    - Copy the API Key - -
    + +
    +

    Copy the API Key: + +

    +
    +
    -
    +
    diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py index 4ef1c414734..eb74dd95da7 100644 --- a/addons/web_linkedin/web_linkedin.py +++ b/addons/web_linkedin/web_linkedin.py @@ -70,11 +70,11 @@ class Binary(openerpweb.Controller): bfile = urllib2.urlopen(url) return base64.b64encode(bfile.read()) -class Database(openerpweb.Controller): - _cp_path = "/web_linkedin/database" +class WebClient(openerpweb.Controller): + _cp_path = "/web_linkedin/webclient" @openerpweb.jsonrequest - def api_key(self, req, key): - - return True + def api_key(self, req, key): + + return False # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From f257cb34524e0f230e41b7229bbcd71ad50974d5 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Tue, 19 Jun 2012 18:45:18 +0530 Subject: [PATCH 010/328] [IMP] Improved code for api key warning pop up. bzr revid: jra@tinyerp.com-20120619131518-k4bx0yavmsshihre --- addons/web_linkedin/static/src/js/linkedin.js | 6 +++--- addons/web_linkedin/web_linkedin.py | 20 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 697c3a79d29..f67619951bd 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -128,9 +128,9 @@ openerp.web_linkedin = function(instance) { }] }); $("#register").click(function() { - var key = JSON.stringify($("#apikey").val()); - self.rpc('/web_linkedin/webclient/api_key',{'key': key},function(data){ - }); + var key = $("#apikey").val(); + var user = new instance.web.DataSet(self, "res.users"); + user.call("set_linkedin_api_key", [key]); }); }, setTemplate: function( URL, AccountName ) { diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py index eb74dd95da7..ce0fc30eaec 100644 --- a/addons/web_linkedin/web_linkedin.py +++ b/addons/web_linkedin/web_linkedin.py @@ -37,6 +37,19 @@ class company(osv.osv): company() +class users(osv.osv): + _inherit = 'res.users' + + def set_linkedin_api_key(self, cr, uid, key, context=None): + company_obj = self.pool.get('res.company') + company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) + company_obj.write(cr, uid, [company_id], {'default_linkedin_api_key': key }) + ir_values = self.pool.get('ir.values') + ir_values.set_default(cr, uid, 'res.company', 'linkedin_api_key', key) + + return True +users() + class res_partner(osv.osv): _inherit = 'res.partner' @@ -70,11 +83,4 @@ class Binary(openerpweb.Controller): bfile = urllib2.urlopen(url) return base64.b64encode(bfile.read()) -class WebClient(openerpweb.Controller): - _cp_path = "/web_linkedin/webclient" - - @openerpweb.jsonrequest - def api_key(self, req, key): - - return False # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 7fac66d682582346251638aa5cda290395595391 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Thu, 21 Jun 2012 17:17:04 +0530 Subject: [PATCH 011/328] [IMP] Minor changes for IN.User.authorization. bzr revid: jra@tinyerp.com-20120621114704-bwgcwcijsx7qel60 --- addons/web_linkedin/static/src/js/linkedin.js | 108 +++++++++--------- 1 file changed, 51 insertions(+), 57 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index f67619951bd..fdfe0e47dd1 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -106,14 +106,58 @@ openerp.web_linkedin = function(instance) { } } }, + /* Load Linkedin Data On search */ + do_load_linkedin: function( e ) { + var self = this; + this.msg_Counter=0; /* used to display notification, when record not found on Linkedin search */ + this.removeTemplate( 1 ); + if(!this.apikey){ + this.APIKeyWarning(this.APIWarning); + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + return false; + } + if (IN.ENV.auth.oauth_token) { + if (self.$element.find("input").val()) { + self.$element.find('#loader').show(); + $('.linkedin_icon').css('display', 'none'); + /* People Search */ + IN.API.Raw("/people-search:(people:(id,first-name,last-name,picture-url,public-profile-url,formatted-name,location,phone-numbers,im-accounts,main-address,headline))") + .params({ + "first-name": self.$element.find("input").val(), + "count" : 4 + }) + .result( self.do_fetch_detail ); + /* Company Search */ + IN.API.Raw("/company-search:(companies:(id,name,description,industry,logo-url,website-url,locations,twitter-id))") + .params({ + "keywords": self.$element.find("input").val(), + "count" : 4 + }) + .result( self.do_fetch_detail ); + }else{ + this.notification.warn(_t("Linkedin Search"), _t("Please Enter Required Field.")); + } + } + else { + //self.do_authorize(); + IN.User.authorize(); + } + e.preventDefault(); + e.stopPropagation(); + e.stopImmediatePropagation(); + }, + do_authorize: function(resultCallback){ + this.check_authorized(); + if (this.isAuthorized == false){ + IN.User.authorize(resultCallback); + } + }, + check_authorized: function(){ + this.isAuthorized = IN.User.isAuthorized(); + }, APIKeyWarning: function(e) { -// e.message= "Linkedin API Key is not registerd/correct.\n Go to Settings, 'General Settings' menu and follow steps to register the LinkedIn API Key."; -// instance.web.dialog($(QWeb.render("CrashManager.warning", _t(e))), { -// title: _t("Linkedin API Key Warning"), -// modal: true, -// height: 200, -// width: 500, -// buttons: [ var self = this; e.message=""; instance.web.dialog($(QWeb.render("Register.Linkedin", _t(e))), { @@ -154,56 +198,6 @@ openerp.web_linkedin = function(instance) { } } }, - /* Load Linkedin Data On search */ - do_load_linkedin: function( e ) { - var self = this; - this.msg_Counter=0; /* used to display notification, when record not found on Linkedin search */ - this.removeTemplate( 1 ); - if(!this.apikey){ - this.APIKeyWarning(this.APIWarning); - e.preventDefault(); - e.stopPropagation(); - e.stopImmediatePropagation(); - return false; - } - if (IN.ENV.auth.oauth_token) { - if (self.$element.find("input").val()) { - self.$element.find('#loader').show(); - $('.linkedin_icon').css('display', 'none'); - /* People Search */ - IN.API.Raw("/people-search:(people:(id,first-name,last-name,picture-url,public-profile-url,formatted-name,location,phone-numbers,im-accounts,main-address,headline))") - .params({ - "first-name": self.$element.find("input").val(), - "count" : 4 - }) - .result( self.do_fetch_detail ); - /* Company Search */ - IN.API.Raw("/company-search:(companies:(id,name,description,industry,logo-url,website-url,locations,twitter-id))") - .params({ - "keywords": self.$element.find("input").val(), - "count" : 4 - }) - .result( self.do_fetch_detail ); - }else{ - this.notification.warn(_t("Linkedin Search"), _t("Please Enter Required Field.")); - } - } - else { - self.do_authorize(); - } - e.preventDefault(); - e.stopPropagation(); - e.stopImmediatePropagation(); - }, - do_authorize: function(resultCallback){ - this.check_authorized(); - if (this.isAuthorized == false){ - IN.User.authorize(resultCallback); - } - }, - check_authorized: function(){ - this.isAuthorized = IN.User.isAuthorized(); - }, /* Fetch Result from Linkedin and set in searchbox */ do_fetch_detail: function(result, metadata) { var self = this; From dd0a2cc66fb6cbc42279970b8226e7396e1170ad Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Thu, 21 Jun 2012 18:58:42 +0530 Subject: [PATCH 012/328] [IMP] Minor change. bzr revid: jra@tinyerp.com-20120621132842-s1f5melcrsi408jl --- addons/web_linkedin/static/src/js/linkedin.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index fdfe0e47dd1..d6c50ca8b99 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -159,8 +159,7 @@ openerp.web_linkedin = function(instance) { }, APIKeyWarning: function(e) { var self = this; - e.message=""; - instance.web.dialog($(QWeb.render("Register.Linkedin", _t(e))), { + instance.web.dialog($(QWeb.render("Register.Linkedin")), { title: _t("Configure your Linkedin Key API"), modal: true, width : 840, From b0826bf5556b008046eb77880c82dc6e427c1ddf Mon Sep 17 00:00:00 2001 From: Vishmita Date: Thu, 21 Jun 2012 19:14:58 +0530 Subject: [PATCH 013/328] [IMP] Improved API key warning. bzr revid: vja@tinyerp.com-20120621134458-2vq2xsalq5hn7w8q --- .../web_linkedin/static/src/css/linkedin.css | 4 +++- addons/web_linkedin/static/src/js/linkedin.js | 18 +++++++++++++++--- .../web_linkedin/static/src/xml/linkedin.xml | 2 +- 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/addons/web_linkedin/static/src/css/linkedin.css b/addons/web_linkedin/static/src/css/linkedin.css index 0ca3dc90ac9..4f61b4e89d0 100644 --- a/addons/web_linkedin/static/src/css/linkedin.css +++ b/addons/web_linkedin/static/src/css/linkedin.css @@ -6,7 +6,9 @@ background-color: rgb(255, 255, 255); border: 1px solid rgb(153, 153, 153); } - +#apikey{ + background-color: #D2D2FF +} .li-ldn-dropdown { margin: 0px; display: block; diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index d6c50ca8b99..d282226def0 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -159,7 +159,7 @@ openerp.web_linkedin = function(instance) { }, APIKeyWarning: function(e) { var self = this; - instance.web.dialog($(QWeb.render("Register.Linkedin")), { + this.dialog = instance.web.dialog($(QWeb.render("Register.Linkedin")), { title: _t("Configure your Linkedin Key API"), modal: true, width : 840, @@ -168,13 +168,25 @@ openerp.web_linkedin = function(instance) { { text: _t("Ok"), click: function() { $(this).dialog("close"); } - }] + }], }); + this.dialog.parent().find('.ui-dialog-titlebar').append('').click(function(){ + self.dialog.remove(); + }) + $('.close').css({ 'margin': '10px 0 0 19px'}) $("#register").click(function() { var key = $("#apikey").val(); var user = new instance.web.DataSet(self, "res.users"); user.call("set_linkedin_api_key", [key]); - }); + if(key.length){ + self.dialog.remove(), + user.__parentedParent.view.reload(); + } + else { + $("#apikey").css({'background-color':'#F66 '}) + } + + }) }, setTemplate: function( URL, AccountName ) { if(AccountName){ diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index b6aa3dc69d3..f0ee60e331f 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -49,7 +49,7 @@

    Copy the API Key: - +

    From 2251aa0b7882ae7368e6667914e9a7d468e3bfee Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Fri, 22 Jun 2012 12:16:01 +0530 Subject: [PATCH 014/328] [IMP] Improved apikey wizard. bzr revid: jra@tinyerp.com-20120622064601-oatb5npqwhh7r9j5 --- addons/web_linkedin/static/src/js/linkedin.js | 7 ++++--- addons/web_linkedin/static/src/xml/linkedin.xml | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index d282226def0..a3d36ae284b 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -168,7 +168,7 @@ openerp.web_linkedin = function(instance) { { text: _t("Ok"), click: function() { $(this).dialog("close"); } - }], + }] }); this.dialog.parent().find('.ui-dialog-titlebar').append('').click(function(){ self.dialog.remove(); @@ -176,14 +176,15 @@ openerp.web_linkedin = function(instance) { $('.close').css({ 'margin': '10px 0 0 19px'}) $("#register").click(function() { var key = $("#apikey").val(); - var user = new instance.web.DataSet(self, "res.users"); - user.call("set_linkedin_api_key", [key]); if(key.length){ + var user = new instance.web.DataSet(self, "res.users"); + user.call("set_linkedin_api_key", [key]); self.dialog.remove(), user.__parentedParent.view.reload(); } else { $("#apikey").css({'background-color':'#F66 '}) + self.notification.warn(_t("Linkedin Search"), _t("Please Enter Required Key.")); } }) diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index f0ee60e331f..6ced2c7dff5 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -12,8 +12,8 @@
    - Search on LinkedIn - Search on LinkedIn + Search on LinkedIn + Search on LinkedIn From e1ddabaff0fefb622511c8513f1b25416b031d74 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Fri, 22 Jun 2012 17:07:36 +0530 Subject: [PATCH 015/328] [IMP] Improved code. bzr revid: jra@tinyerp.com-20120622113736-ic23elcxqtf4md96 --- .../web_linkedin/static/src/css/linkedin.css | 19 ++++++++++++--- addons/web_linkedin/static/src/img/apikey.png | Bin 32154 -> 26023 bytes .../web_linkedin/static/src/xml/linkedin.xml | 22 +++++++++--------- 3 files changed, 27 insertions(+), 14 deletions(-) diff --git a/addons/web_linkedin/static/src/css/linkedin.css b/addons/web_linkedin/static/src/css/linkedin.css index 4f61b4e89d0..949726a6246 100644 --- a/addons/web_linkedin/static/src/css/linkedin.css +++ b/addons/web_linkedin/static/src/css/linkedin.css @@ -6,9 +6,6 @@ background-color: rgb(255, 255, 255); border: 1px solid rgb(153, 153, 153); } -#apikey{ - background-color: #D2D2FF -} .li-ldn-dropdown { margin: 0px; display: block; @@ -39,3 +36,19 @@ box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; max-height: 450px; } +#apikey{ + background-color: #D2D2FF; +} +#register{ + margin-left: 10px; +} + +.lbl-ldnbox{ + font-size:12px; +} +#searchresults{ + -webkit-margin-start: -70px; + -moz-margin-start: -70px; + z-index: 2000; + position: absolute; +} \ No newline at end of file diff --git a/addons/web_linkedin/static/src/img/apikey.png b/addons/web_linkedin/static/src/img/apikey.png index cd17d071af2bdf57254bd8158bc1abda28f840bb..423b732b5027f43bdedd2691ec2f344fd6aacd3a 100644 GIT binary patch literal 26023 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 z zey-TPT<}^dhb`g)$!3AqpPw+3eCe{UY!wcAxRZIj9!}6^>dH?xy}4S84F~6(oSY!t zgf0~7#s1yhd%%4)$znQ&`Q^?vpfyGESO?<9Iwv7HsX=oNAPKy6>16G^UB5*91*=n! z*{HThc@c_OU!OI0f6)bG!Ej5KJwkY#Rq&;3|6Ajtb2m?0RbdBgw7NgKnJ=l38st`n#jJ-NEot93 zlL$L_H(S59zuNa{)4IWk0Y|aqDJ?M2_0<3|S%B$%{4N|#b|Hruu<@i4O_9oG{O0&> zAcT!=F2#1Q%dnqVs3xvrfp^OwdbCn_JYf?ge5;r;9zW%8`7h=fqRq zR6R1=+Qjh=%D3LdqoG2uT(Iy}29{lvdT zolJjF42lJXKNk$FYAf#iuJB{7kVmTRXWg$wHNV^mtQcJp zD`&|B;7usTOb(|Fwm(v7btWzK4hhg?dA(%ik_f{|o_J|g9w^7=7PLJVzo^CxF!54@ zi%|i(2OK=o#D=2yMhGMxqeE1W@eeh1Hj#cLUKRG0gN~cK3@OIaOIiLV?&K9zbNeO$ z*g81e)fM#Q?gGoALr4#a4ur&Yh7+~l4@o2w(CQl*(GZ5`Cm_x6cCVJMWAe{rSf{xN z4l=U$4-R_JDnk0ih6nn0s`yxehH(+hA{H1_< zFuQE_V}j5y58cS1EVGnFSJan#ga|_v{k)c`kwy7}6AEyaC1v&UePk3;670+pXpFeP zDESM=YP+y+W@vQ$Y^AJ@@})wB?r!x@xjuQe5C9(ozzDX>W_KOO`(6glIWpDZh@XW% zKpId}6Aqo15p$0!6q3;H$x27_%T>5in(3t?8#IR26t4Ta1&FQH*4uQd?Uuy6+(FuS zG-XC9ICGc=-4-=CBy}^D!Ri*SKkD)*+LrGh{}U$#2!42sQQTp|Wvd0vM^Ig#`sQA!3^$ zWBP)#IY0<;)t+~UJHCMVtYo4@8X-j(tL1xB;}w^;5(@Kw!NjWO>#*P--=BI_O)Zr`*TLLYALnFkO%MqVaXRb{#0R^2r@x_aZ z&q^)LQ|xv7NC3i)_0#=X_nb@#7B(ThZd`uwPNwi5JRtw@by6r7@LH6E2Kbm7aDv1m zfy?{hT5n(rB1OJq=$Ye{F7? z5=cjb1Y`%()fR`hht0Lg9*g{~ti>Lm{z|;ip)vNHvEpgJd%x5cfRf$RbdAKTc%fi4 zEJAl!2A@UGzj_ALEa3bf6W0@=!bo{p52i6Z9ECeclSV6K`D{=@il=r77^H5d)R74w zZEXm#Qna_*t;Pat+$3oGfe6S`O&1cWcdkL`nOC-67^Qrceufo;|hzSW!N|vPC{$+X_ z7eZbdty@3bhNUhGR!=51XL4;~5QMj- zUhB~dp=4WMBHC}t(Opuj9H0t$5sxfE^2n^D7) zz!gn%2cW6R%ZLqRlal@ge*S93+C_0^6?Lqdk{bDebHI%8rMr8bOpOrGWhgSfS~UlN zBkqj(Hm`Hh1cPKX(Io`%W(`kblCIm!6yEBWU$-cde>5uiOzrEFVtbSJF6b zlGs*#yEMrL7>aBid5mPsrFu^6(rU20i*&Sy|mM&Hj#&KiA2! zYObt_bQ~M!f-L`|heSM^gXzgZlLoPpcSp!Nl3yQd@)n$XRxLFtBJQSYGc?>eFlTL+ z$$}?n>sOYweP6<12hCw?mH!G2R<57$-MiT^GrKtdXGq8pHOI{`VaTgS!@m|kLc{9! zGXgc3oHF2gn#r#Fz%HZVTLKC2+}P{zt|UEc)|IzqGqkiYKUuH&Z-XBXL*{~cFOvmY z?2_yGnw?6G;&5ir3N~n6IXMTRk}Tb~Fk=&IB3gGd8vAtn1q=P~vL+f&1C9`2n$ir93n5l~CBCFCGwhmdoI{ zShrn}?&N!S+$*-ZJB3Ue0t0qePKG4i`dO1Dkq~r!ef{=gUqG$aV_&5GdN2s74ghha zLXM+D8#-7P0{+}@djise$U#`o^{hzq(Bndg)yzYP6Q3w7v;wmylJVcZ=@=L^Ayb<9 z`FW(lUhdB&YwsLPU-!8C<=%B?3+ z^2j=176KgI+$L~-H@Q2RLo7+@&N!q31~W5m?QR$GeKs2fJr3tG7M8~u!x5%MC0+n2 zS5RCmF>1EDC=ZsW5K8dDU|Ui90p?!fgpGg9YXfH#*@w@+?&omhn)Z@r#v2X|YS!;3 z4IYLWs0;-yjBose$JGlLiaksNN4vh9!v09>IqS8xpFWt#CtJJ?LsmDX=jod)+TWe% zt~)x0uVe`HEczX`B8vm+TBN6amUI~ z*O#XZfq%blX88q9lq6OAY= ztT2?q#J!V1q)t#ImRe}%OJXUi^l+u=yzAxZp{>nd!?4tqQ_hrx#0M*l6w_@sE(5k>5USxS zy@9J=*tnbilJvSRdap&#)bcR!x)8gcwhdK&A8d!;w3`;81|t{(oQ}Ij{-;F0g^-(X zzZqZbT`)LtT*y3W_@*?a6h4$Z{LNDd6q>+U9;wsdtjteG2&8q0bN(U21PG$P+Hyj$ z`>-w1Yx!A&*IhvQKR9q@;lh%$;Sz8`^P-29?$QZca{Si_5nbj zu#w231fLW$3C$P)cyZHE0Y(;m^%LB8xSC)pvXu=gn{&VI3xmP1#FYt)>Z|_57Y>N; zUgs0?!;~3Sdl!eRcN~8AAM6kOTxEa(-@h{wY$3?a2S#M-XoiX-i$a-C!mk|M1|BYPi=4)gkR}pyS3s=^%Zc@4opRK#lmJgkuarR4??h z;V?z<{c57g(t;pEBf>M|4--3U6ew&Tn~A@srp6b8HJJFBbxIVU*KcaCMy{6%)~{dl zZi&vT#i|Z{I~2tl^TqA+PtxAeT381|K&%sqf2|q6x!GufThshZ!4NMJV#Y2L6;M50 zg`cF?VxRkzHlPQ>ZBPmTHgLw6Li%}F?oidT+ z<%uCH4Z~d9M~QAKAUL>gFHsv6NFu}b#$o!XqAVM1%jXF6QRarc-)hjgE@cxsq)}oT zKR`vIqqBN>AcQo^NVT25IG&w1yeqmIxHXSe*_ zprY6$6693WquT6yQNr7=BxqMYhetTkxoGG zV`n|OmdC*vp@w|S3-KgeUo7~B{fcVEi5=*H<4^1_cr6lDzhk` zDi_i<>K2{Rq&s{*$ya8f-&+-9PA6fqOUXo<=bm+^!m8yom50t40S+Zj&`hO;uQwR7 zKFzUwo~){pm++I_+-}?CB(+cYI8!rcwsjtt~!Bz&X7(+lftfZfn z>bswSLsS<{Lp8IPk1Q|qVlqXyMS1gqCwh9+@V0RHl}Rj zGRZvOn=a*sDpq+hW6Xfr$Jdh&OEyboS9PPS9gZw2`NqX}Web~iTF%-esLZz*&dp~T z*H0B+5*R^ACG^12{EF~b3Dg$avWCUMcuXkl`BCniiRpXAQRj>asEj@(?~(j_nNx?* zq%WrJHz5Jc@Hx_IG#uUuKo!jzjYzlF5!4B?52ebZI|+YnHn(TfiDXgS$H|F zcF3-#u1%D!>E)ywr>(u?X+^?>Zc*o@(Hu#_UkjQthyl2OJQSMZo_VN|De(M8(4}QQ5ul6hz#o!>0IOOl-LX&(1stRp zwENkG=z7({g(k`SOL=Rta)8f+*VW)Bt5yTcPAuDcWRZBTEt-E?o%ZGPoj$lYzqMy) z`c-PrAKLM%OT8kL_qgza+|R&^+K0EsijcyvS+$EndKHovB&m zN%o1iU$yru5LH)7`9F%EIk@FqA|!vc6CYK%RiSE89#C6=sh@h5jAr8}LZfZ4L3qQ`M4p9Mfsg&|OvFJA+Ye@egQ-|?((yn-3Lc@|T;VFknmc+19iENosLNBN0%RQ70+A}ELZrbf zb)gY+F$viqT^q+7e~w64*ce&ohPokpI^I`u2xL`{-I0OATFi<6AgTXJJPFB2;!FMn z{H>DiS2eoSPqnED4~ZerqJI7P_jw7p`SdVdFhBTiAq00TDpHp{QR~@LVG0uW(Bh~b zE=8qc?VSnz0ry4+23$sF54>6Mj4|qQNfa@!gQC(AJ7?=#{~V7fFNXfs^f3a~FBO`h z@r?`Q$bWsB|3n)=<-wUPK=VKL!)Ds+&7pHzC9IWY%>I_Gr)0l7U5y^U~I2v6b0TK>L4aFC*r7+0mI^ zGIhD<4I)_#B}0899z&YV5kgE3bKuS^(X8xv+h?!npBB$cr-%f?W>C)b^cY6;J9vK+ zFD)TS3mgm}ceo!4e(;kBG{tG_6e*hXjXzVKuaN;u*w8 z_7O^WuW*$0W8$)3=;|2EyEG=0fLlsdzjLxKPfb`BV;|cOy#F_!quq!&Vi=uLB8Ro> zc2Y$3pZaI?uf7=UKLQZE^+mO;0tkpiIGMyB4n}!ffCj)J6T0krOpCfjmfcmfiYza} z?A#FLlxh9lt{gq>1u+=2Q2e2Mn*Ksid>%&_a;?V}VI4@*#Qz`pJ(7EHN+mG=q~qPx zA_M(eF$R#9L4vLX`GDf#Cd9;=tD67kNz7dFmKK>vlUw*@lLnAiAQ4BcV$Y>=&fna5 z^F;zRMkPn{otUH;Z9K1$3oL;n-!;+=#6oOhZj6ms0hT97BO@EPfncbLsl@mSIwPV~ zxQmlXE{A1n{22~n-)3)p%A&w=Is?GD(M?AbZ4-k8TB(U`)%8h!R)XLV8Vg~-7I*N7 zJ-R&S&XC1P%vc+>_0Ct23fK4A1F@p@?I}ngfEo~FRd@6Z~m#m}ubP_YR z>_{aIxrV+m3AV2u_p3k4B$oEeB#$SFc(d9vtXP3B@GN<5W2 zd0?xpl6c(pani~j>bKK z(fG8ejL$m%pkS6#AT;D6N6ERJUSR)a$y-t5h7>}j)a?oO4+RYoqp#Ti7cul`4zls=B|kSO^mD(ac%54($5vVFq#Bl zg7g&xg@h%zV;(e|r>HihDM#}9y)+^CGqd-JIr_5&*GQ+H0)A>CIwn@8u2Lkp6*X=w z*DUB%GXj)id-8(GJFA(8;ta;q}1hNT)869N|QQ589TPH@0 zeItl?;?$P4u7{F6qV`Bf1J^WONbM8qzlJQQWk}F{+ zcG~?(lbTV&tcLQSuPLmu90}Gw69pmbF3O;@6CXo-#CvpN7ENu^KJ9!sc_gJe}~;YN0;;bikAt!Od3e#7gd z#POXA=cnr|r!-yInBT`5J}W_2sx?;u-P`53_n^|(^Eu%%ktzJcj{h{_pWRpMX!ojy z3qX8t&l}gLW8xS;Nt=8W*EZZ$|Z3)KrDbs|~UAtU@5 z3gD#mf4+UguI#ys0@!__ax$W#=pZ>jV?<{`5_Sr#s zu*NhkaF_Nh-{G?nuso#;$>wu{f7+8w8zUBIM9&;Gm6oCvpk<Q>6S7^J>doZ`n!RcL}-tOM4a>oOLo)|5i(rh=E_~= zGr35DMq!BHb5#&y_6t)ryU$c$h>5veWuV|YY>=HVJ8A&h_o5l{e$pS^Rjj|Wp@rzw zYvjKzi(EK#lb}S31h8)sbCn`JYLR%5Y>l6DZ}kuAch;uV6zftN(6{y{f@N8paB!&T zCvvM?2I3f{O5)c?V+z3M$Ga9;n%x+Xa*DInP!UDnRr zPzy{7ZL2z%hVy3{r-LQ7Wk>a}_yAPX&JC^cB*xkRdL}EDulV`-kae9z{8(S)gmIjT zT;^SZ?ssU8gjqQ|SAZJlpXo|?-TAhV>4VtTetr1?V#fOtk|SHiTpT7ji@IbpY zKvvFKyfi$UXlhhh9b4zDz`AaiAc?*Uzj+2{k%U`;RQzr$ z7IV}%&a4tm>X=ldej^>0j6EMqaK%Wr1|EzhXmopRie{~$PmFb>_wY+T*y`3J98qA& z9{mI<6qGzOo%^&CgMl~__r&v)qO4bHFcr9ltn=rYBpQz8FVyPup4hUUvM}1wjH=)` z&dMHkyQsAI-@ygGLY{)waC!0?$sH{b(%hNARzB+{86~8OCslwk0;n;N*7f0caD}g) zr{FsX4t=zh&qOZQ^JH*-ofjh&63q>U&211N*}C#MNtYcpkIxCUF()Bc3k{IuK&U1{ z{?}RjmwBo?(w+MKa6;qwJ+GS8{VLL28K>1>Ja@!FGyxn|!4bvEnU2cab4NeOJFo7D z?Jd~pIq&)wC6*(!uF;*R9_=M=Z{~u$RT*l45Q}rYF+>*Yu$kNqf7apu zyS7yq{67t^BX%g`{Qqvw8AmO!`gb$95aWLd;r%~^64sow?CGy4643s8y0oxex@?oi z!v4Re+5a~hp=+^RyG%IR5FAG276p=ioDLc7f6u-+JT0(7p8rUq5KKJANAy%%^CQ9g ze<)-RGcE~XCo=>(kg@A+#_-}n4(l$R=9sfgF*|Ajm?=<0O$Aeg}if8K%>RcQDD}e*LVOZbTRwDzT)nvbLU0x zFy3}2fyQaO=*-LihRw)JP^cZWctiO-ubx*Kh>J^1v;#kj+ZPK}WXY^;CxmCf2KF;m zS<0Z&^G60hX7K`vKK%OighMZYo{QG;D(^VA(Vb)rKR&}}^Ilfx4*VW64dN94CyEgY zMP$Q7Zc?C6>Vo5lCfzW$*nq2^hvxKG#*mlThZvOI}5b0$UL_9oZ_wzi)azORr() z^4yU|I#DOqyh;`8uX zD@!==uIGUOV9be}f4}?bavh=wDU-e z-Qe(a6Wi{u57mXZPNEsOyBHHqy$fv?=Xc4 z}cZ4a1hN&%~JD_t>NL?TAfT(8$g zy9zO54=a2snHIedes-J=r}SW8Wgkwo9WSLj3uXMqd-P}ebbj!@ChGXn=3z_Laxh|y z{pSbAVaMx{@BRqAPyBT{t}$6EL(?x_x12TmY@Y4*^}I$D4okwV=N^XD-FquJO4rA^ z=1Rg%eLF1>1^zQuD7HbL{+T!Zvk<|Fu6t>jd{Ureg3D~=gSsf!?V0WU%5TN^)bI`= zg6iRt^b!)x$D-}5EFqCV^3u7bs&I(o-p?=N!x=nZ@?F4BBc z;m2@y{HN4Lox|{9&lC@CI$aXD=_Yf%sFCG!h#jnVk-T(&^+Qa6ZLsOOVTl3TD0A%* zzV$tm;F#<3ey^>4Pi?9C)Brh}l$Z8sCG;*Z$8Ut^)#zkF6= zjSQ#0gON&>IORZeR`a%HH0Ozq0!{P{wFLtgL+5tVkUx$S=@4n} zkq~ReFDXBoy2Woy2MMb&n<+4R3LF-10Ov~Bt zzYkvv5B%PGT~RKi9mnq8+&fGxSh(FETu!syS{QEGbeF!qv%cxAtnhh|f_)l@v9po6 z87r}8!-7@Z-5a(-qIoxW_32$FJ4fP1XFm2W2`je0ql9{pb2(MQ-wTpIlfZgo2>tcI6#COPjF zeaIy8y(-@{oh5I|@tzRiSr94kD&sE)ZBdrS1iUlhoVl4lDZG4G7KxQP9pmxc57_t8 zXkQZZ-eeV#47}7-qZ8XrB8z=gycDU(jNJ4`l*}1jD0ksPofl}Re2-Z_ojD;=1DD*S z?~KAp=x;GSd=%^(_S%kvF)^=y?gMIpI5m7larokWXj<6G9C9 z(GZZv^>ocs`jf|BUu)pGYVw#?lfr@o+fvI$^4!(lZ-Xpt0$6B|yq}F;om*7Ur3hu< z-L8c#1TEH|WeGJ)MzB458^HewEBBDWE(HLz`?-Dj&jV!|*W=4!l?;N{5q&;#z?C=R zHc5DSY#T#tX7;balJ|Do{yG*jg_l`FwOc`KAIlOiZ zkp(w5_SOU6QeQ31;qmH?1F?H+)u+z6MOaU=RS52Ta)~ z+qf3{jTmea?8vy>iJ`&vV!LKZ)E)m~woUhVN~$TV~L)ji%W(6Eo|Zt7uaPcc<~TAV0#1qo+0V({+{E0CFYUqd!M zW-mQx_?gV}c{>CZ#@FfE0l>RqzuenQfdJLRF~>^XXfc~9b8POk?_N>wClAY5>2<3_l7DU5fT||BTESSO+&gs!_@L$ zV=L{9)s32`>WCjWh$na7n9svIk0Xa#wuZhC>GV%RrF@o3z5Xbz8`=2V_iUAhxYKec zw|FAv!V#+Dn6?|V_;Z4x_gedf%LP^@$CpIss9T95yw@;qk)YI4;0-FEpR@q~idj-n zyq%sXb<;I@`N!|OnRM9-g9ycajt(V_EC#_(@dI!$A)YEiJn$~zK!=3j4|norl(bQF z#nK4`JxrBa!XV)Me1Fa~_DWIhFgYi2VeUA)^`xN8Te@!l+^c`dcXPDabk1{d;qo!> zXY{zwghwvC(Kl10{FDUHtVg+&eB5=Naoil=Zlojf8Ww6hQ!-g>jG1DwSk50mO=^GW zN%}PL(DKD1{K^RGVNh~*yOJbuU>h&h}M_ zSjq1Q3EGg*XuVIoJ4h$Ph3$Fn8}Vb?X9weq);-u{^xbYVzq1Ayyi`=?TYOeY6hN%~ zr-w4t`)iI#eR@5l3R2Ye4$4I>Q&deefK+CH;}*u!NLd=xtk@Pm2yV4-`;O81E-ssT zt5nW^(@*alYia3ZvAV};E{T9T*ebbljvl4TaK1vm*?-}pb43GIF<1F6K=Fde6IS)f zoZ{~Xz1sEj%UzIcRpPEMLNA-!#KnXp4I_1_KeOc&to z56ibki;$$Mer($ogdoVB6vbSPd6!UfiKz7pXR%e>8h=Js9_yS;HRb9K`z0{rG7gTP+8S z8^Z{-H#88~NCjjmeVZraXAav!h${E^+y-)}!e`t=2SwYDZ()doz! zgnRGJ$khvS69L!F{`@J^^EjcBBO93N9&Nj1lEB75S>}sm>8q&-i~rb8XNtK@Bk(R8 z>C@+l8Du9LtMB2G#YF!1IR}|WZI`(|OScAAp1(X~#43f<+qHb?UjN5)LoXH2N@L%B zy-S9JOs{Q>oS|P5Ja%3pe*SBy^0?f;5!z@z<3r9cgH3G@({$4gi>2(LIUgssOgAfW^KnU%*n6tME?^tQm1ot)tzu zT*B97430uFMUKNlH_g?N+1!@>dWaE%a%5j`?(uXOdO2(!!}-m@H0@__3azwd zpE=#199}xlHcxIo0V^pO3{>~xQwAadw(8uX?)lq+hz|*}^A!Fce~c6;Tz8&2H{Qq3 zvFwX}<@_(-fllD$Td_&Xg#ib6wldf1UvXAME?aX-!AdI@J6QD$`{mcz0DEvp5jvwR zI|@WuC-?ou@@b&t3Y^>K>#P6LPZtt9s@y0%Y4#U~h2NZBzv}7fhqgqFkml%w7OIu> zuxmn8)6@8FYm`p|A2L}@HASndZ%O{86h$g*^Ix`CKMM3qM+)BE-#^~(Dr&Ttd5AL0 zmr&=R1Hmd)ByaT3GHMmfQUuOt`(!q_=y$q7n8@`rot>X_$8g!R=4FTM#CUmmZ?0?{ z^|Z2*g?l~6H~Kg*gzvu_g{OF#&iig8^*TUNtZR?|--dh02z0KUoeK?MLeD3qeN!^_ zRuGn=#T0_vl;Z46-`2S|7GG{lxkIED{!iA8IO`_7)=&f`YLkSzY+t!&X*ge^zT~EZ zy^026*#9S2j~Px(lAG|5gC_|3YX5eXJ%vbPWfG`$f6*m(D-?FNTQ76BME*iP-A= zy5aE=pTE*?vh*)=;QJ~;ctwH^ek4xxMos!|aR&^Y{^KU`yNU6-fzP_6&QZobR)Kvd z(OGQgzX!97UYi(Fo@M-$RyeO=MR4pqV{7umq95j}3`A~{@oP0WQ6+FunKinYd2Q>? z<}|zG_Ww(Hn9urR;i3A@MMAAgN>B+?KBch?q3HQP^h z9AiX6IA#yqkXLE&F+VlsG)1aBbDGn0`c-3vhu2FH^8OP>Ejg6oMd;bz*etyk*R`wP z@a}FhpsLc{$~@4CmvUfm(5$Yet}~~Z)5zB+J_>I2Dzxd>n|~L0jD57DBmeQ_hI+@` z@HMoirOZW3EAXN2$8k@;2U%Y?J#U)lK7xy*v}hVuDF}0zS&gr$pztIqHihce`8&C$ znp5tQhm#MR=s)3$f{%sbC2JTNyrWc@frsvrbIt108EChh?3FRSKyV}tb8R)=_KzvC zXqz>Fv$I_+Vw;*T*%_G^*Yl)M<9ZYn0A=nrf3sIp-+9 zyySo+Cvt%dO)jMqycl}Mhq69!5cJrg&ZJYfom@tUYExWbD6yI2Pn>}u&TNW-p&+r}R)b$xXNOK;oh|P9vZ58c=h6%{P5#sMLZ<>8#A z;EPh~dWyfkiHQ;w{UZ6$KH?=l5R3KmbDc9Bmuv`mFBfP53;4P-wmPO{K6>?3>Ut+4 z`qj9#UN~|NM#LPP{pE{Wn1atH5D^g(FLuU=7CdIeK_;exjw}7xfGn>}JHRmd&wFYT z(aCVVFf~mx6BH5QYRBH7P)C%zVLkZOC~Qn6l7@hraypb&R;}Fd;6~GOyn>~T-lIJ~ zjzi))x~)_ouVaXOajm(&lXDIZ4-O9Va3Z)2@9yu`Ypu&~ANLo6j^;fBHjgjgew#oi zdBM_Dsfw0F!w7*yif-wzh)45h+6m(u3uB3Bu?svoiz)Kjf0@erbp2trJv9CC-Dzt1chD!t>XF8Ub~aq zZiq5mSX(RF--vWWjj2J81G#~%%#LJ8OPly7qmJyEdf{I=E0cNg? zXqAsYCbEezbkdSvZ1b1iljfl}`Z3AUjrQFN$S+W2Q1O@{zgl67{+0^)q5*Tp)GJlw z*#X=MwpX;@QfwyvkD)V2^Q96$xciUP_kGKoM64I;A$ z1Og<;Br*?%c`6HKkV(JE z{(6U-Pc^)9aKOBxIF;^t1l(Sz=bKwD?k#E5{H^@PM(Jn^l&QhpJNIp|F?dP{H0*Ts zrZnX~y6$%I%KS6wmGK(!3dTgnfs5tJB?AUGW>RFD3>=cK<{CPfE?;7OR5x!~GakUF z!cDn%lO1$%ttk3OJlu47Z|*@WT&k{-58gqkZ)q~yg3_@apn zB!s0A(&%_5D5Q`7CAS!Kq;oYtMp1$6(dLKtb(?Rz8BX%dkIY?akCLu0ou%@|XY*|* zR}p0}*yIf>Mrn{Qu0eeN#_6c{ zkdT7kPfRgjCSbn~9V{(#C5V z>#j{1Rv#SA;2e@U33E<`uP0m!4!izDIt7XSDAKkw zfA3+986M?s$?qyAg6A9M_qwPb&nYPkO$zcfG^-K7pnPz(Z;%%r5m{+{ky8X?NSEJ3o_hVEfUzb{a2^))oYAJeqgdzQ0sHzr~ zxTHixR5lHtYFB99b4kbSKJIG5MCd5m?DAQeyrk>K6+8V*{lr+2p%euj)pI#)IwoLYiksal zSzhl}K>9s2TGLBnT}ATC@%V>8Nsg#Vfs;k+?Ng-cdCN>Ph^ z0!GBpRbHlJ()$nXIK{0J;5i7MUI9GUP|){doYA?jk39A42MzUS2zTbljQ3GXVDHwh zx*Fx-iVe@pyfq2v6W@SgURDoqs09sz1DMFb`4=}Tcig8|<)3=VKX9xkqV;CB5yK(E zNP5V)>g<_*i}kg6+h-}SeesJjV5>gDLJroCQ4B@0cq^jV7scGHd8VC`P;{!P)^ z<2?rpzxFW%NjDs!uE!oNrVG7UQfhJcu$9ghCcb%FQia3eW`e$n#NTkLESn8MCR{lI zD`gabx(1yL`)zx;d%W400hMM5gSF_y8)!-FHZ16nTlmRRmkZb@$w}-y_A^CXP!Xm^DkTZ$V_p0D zU`&0+K#2Ks2k>fYVNHncZLioY!-S8vL-k7LPiv+$xXmtVP3qOyL$eUqR)aBK&89I3 zaf&Tl_3!HZFzy(B2KgE8D#j&051x|rRc>kM_55DOCs?q2Ovfg4`C==;f)9)x>Tr+4dVqR^5ZPYAs9v(~&NehxHuQn+>}@;m81 z`~Ly}|6pnV7iRbzq2P2i9hA%)uXw~XyHOMe9338E$=e8aXONm%N+f5$XIoR!VXtR+ z2Le0C1ol)?WD%=>)NWc807&OdwXGs0JG{8b!^N^dY+5&&Be+lWplaCB5QBy)safs1 zqjwZ^UQE}YIZ?b22)f;f*Q__g1Z4%Z%It6MOH1r&dT(A9WO=YF>BaCzogB$I{Ab)`0(bWT(;~#QhPt&Qk4rPm$nUb z>*?3Mi)0crhCc|Vm*)h1^8Age>yVPk8>mO6x*bvZSQxP#E~oM=ig=B+jDJ=vkI+TW z+=oDd>z;l4psi`k5ZV))r5B!`E4)5oa-_6qJ6F-97+SY{)=hW+T5i&c)zNUlHxkf* z13%km+iRvz5d1==XlSC6nsmi#6EeG*8-g|uYwLe?DOY@nb3Etlm0a)qSh_~_+>7fI z!?gX@wiA!t+P1zwRpIkT{53{9M z=O(d#B3`VK5GnDB6GgZfikgq4v+9+|=QPIW2+eGC)xCQJxV$Auvu<6grcL+==Y=FG2os-B4FvOiVCFSi0XwXI)UqA{*m%m(PfrHw~&QpRgzVe%<@< znz3vUYSJriZhsrXtJ%%SBF+q^-p5@wKO03v6V^CzUHuH%yioohvx1O|0+L#;nQXRk zZi1)70pLT6Ac?{0_DzW}(c7h#;FUHXx^;0!)F>$+eW2l>sEiOt^(+o@EPd3Eb}o&k zq3jkWg&000hd`uCUT)ch{cnJ%QT@=CZCs|(#`PA8N(geWHPn4Kl3!4Rf3=|id>)EE z(9c8sBASVT>t@SD_3M)NP1Gm7-n^ySYuCCHL#%RR6eY;@-p=B?k>qB-QBJ~VF@`v~ zHR;xXW>XNkee1j%TVzkolfs&yW0kZNUdO34|MAGp+1~l=JM?6T^?k<{hvyvDZ5mcC zmTD@3;*vc5r+;jTj9*;&jW#PIGG4e$?8~pUl)wGxZNJGvv4z|WOP#JS*ybPUSQ#%a zboqv+BGB9+Zh-QBxvwLTgUfrn?(XD{@b`IUvbB9C9%2kFkqxOgkKKw|MR)D`1bJ<} z1q?s_8DF^*hd%B9zX(USV2akZCqj{z=^;ohvy1l|?IMI%jtv^RHan~x^nakJdEA=d zG7{gU{UKrm#|@S1u3SJ!g0>_zPGX;{eMOrpoS7lia3QnPG0;>hH-@=}b!=$BW%ML4 zUEQqUwzjrQ+JZy_)tbQp0YUllDUp&7zWpGUe)6q~Q&ea$kez!x&4EBl91CAQ&KFK7 z%Yq1-S8}7q(|ty3itS9ET0p2^Dw>^C)sqmq* zBV;at@O8U!tG?=;P*h~Z98Hw`|!M-)xB)_Pd! ziiz6V#zHL`6;!9J&J(c?`8@eA5dUcx1l0Oc% z-yGL8OTd;72A3dVidsqQ<9H~D1HZF}px9&0)mc^7x8{%99(k_jYfbYO72SNw%+uaF zDN%6M!b4O4dB#D}4=rPAy++NkB}d`nZsUOy(eB(4?E`<<-&S;s{2IRQP#^^?m9O45 zG@}SRDG8OlfI}c5nO8nPJG7fd$+OLz!W^`UaClVX)f$?c{&N}3Miaz-ox~$j9rOHvcKscUu=*!jJsR)-U?qW8 zz(~_W!U+c3lPQl}?NORek>p3B!jUx+vV~QR&C_7b);U!7xHmAPw5uV)L{hHDldYK; zutrg=p>2pPXzuCfKPgno-hYot6--!f(cnJK>z$05@9u|o?NU~pzOHmC8{G1pNGchbzi=U}fK-ZaQ(q`^&TRaOW~$NTCZ9poNaXerHj zxv9#hi|9T##60ow&O0(aczhN#`1sc$c`Vzw-EyR%PR=5wY_?@=`)jtP{_0BUvgy`c z-crB%J=_|~QyXi5U2CqtvJQ%r+)BbHd*D*DqbW)*b$`4Ej2widFGM{#Z`;QQqW|*xXl9CRW3oe z9da-uCFpvR=t?@kJ?OWCfChJRsrygJwWa2?b;;P0#@zmWb!iYK;`Ui>;JleGZiN7;KQY zY+Q}k8sGkE-3E$yEq$EkF`Ie$rAFYtM#k1&cl{fP zxED>_owtWMLEl%(>9^b_9g3t~6I(8Qc?LQ$23D!L`Z|DWH-NG~6VgE#q6v2?HK?Rh zW#n@$eu1LN8~xOu;y=zTep%;rmpHbd;%>WW8_>l>$7jL?PEoYx$8P3{uQy++{tDvr z@ATrK$#1M%t>4(GT!Dp|t@!FQ?jC|P;6(4(EkeIplR|;pXrjoLtJDPMl2+^`2D6Su z`~=Dg?0WHuSXAjDer)FwW#8HfZ*Z*h-k;#`_lx@Pv z%m*29@3nLeMa9hpM+N}La0&;p53|7Ey8waYG_f1f_}MvzFlO}g=ova& z$Zd5v$`GdMd`g6M+Op$h0MV&t>qudQhT_Q^Wuj-udy)3aBD4GQ~+C6mg@isTQ*yYp%>V zGusRf%u8qAOAGE1y>Rx7a&E--p3DGBj;5mYZZH|gxzd#K4H1fTd+AaJ)ogA(GpRcf z88LS@BGmW??+#;9JF+MWq0e_&9oFD?QwIDgIV9P#?yj&N47IzWLs@$5arESI#`gKu z;lbc#H@>Um+`3-`{ltanv=@G$U2zpmB2;<3LuLxgju8OsWEra-9I32}0XZ3{Q$$a; z8}+{LgLQxLh%3FPT>T#?)MBZT!R)f@{h&yNQ$+O(zt)9w7sjyA4XFzoLJ@1D6eAE2 ztFBo4uV!>8YHg8w!fGB^vQF|MbE0n;Yz1#UJ)p8>(+h?g<@CT*^L|o$_|@3|G4Y-a>TYb!^g#d83SAg%HIG%A z28ylVjH#`fKM1n6ADXx7Q?(+10C4qCY%&NZyLLj`F7==Os)61N3}7_u1q>P_h}Xa) z#DA=WPV+7PR8b}W1@_;?CwX|Q|HTXmw8?7h6#9>L`1#zhg8j4-)X4RxPlmjAmtKOw z{)WQL4_cLy0xTSL3{cP2Qkt;LrHctS zW#4QxY!%IZ8w>khe~~rH@ub+<40iH#zu%pyKzw=x37!eg^!ZwD2dW^h*F4W3zm#0* zgB7Q4NPywd7SBdRu{&!n){LHpGss8G5sqPMznhiEyjMkjH$ zq}sy9I*docqGQPmZ7l)$J^^jq`RU^J4y6Wmd0X)qeqACC-@eU6X7neI&3~;a^OnaL_@^j_HQlc>myX>2<(2$wbG)kWxZnLM#)4o4-25$v}G~RqJxuPhX(6VUQ8!+L3GF9;b7N@l3m`F;x?D6*R2UZ= z!QZqGrDxvL3(CS6PF=7#nvv7=CxLY5oURZQ!+UWJI!m5~c}eA?@lR`cqnuTuNwv1q zf6ohwS9ex-pz_T)#xcu=$NN$4FkSW>F>Y>MHZUpp1N|L^3>be#D z`5+ol1@St7CV4lP_QW0+@ChfDN(i(Czf%%>n*AKH9>??iLxp5YdP&m`SU&`uEN$in z@>)r|Se0P+f>cw{`Z1=qghQTep8v7D>k5Z+FOlyzT!+DCy7662+IT~ljoyK_8oy)Z zvuO&p|4l{C5fi*MR%!Wxr3udq-Xy5uGAlV&L3_j zxXpNiWXc{SQ^`r3geTT(MRe+-L2YUBil?_31{MD8D5X(MY3%&^q z7gXRAN^fo}%H4ln29j6K%}cUbz4b`KfUF;KK_#%k1qYi^qj)O>zO#0OJ*|-sQ0+~D zsPkRm4!`?= zppbTtH~ocypB{D@(d_tN%pcOA?q=Ix}j@&>#&h)L0`o~Yk3Sv z3Ag-k5IJZpJx9!=>|v70-cz&%GxNqaQty|I;j+$P$uQy_X%Wl&R^;Kr->BJDxCN`K zuxL}dg`cQsSFn_|_=o+M?M%EN6w?5?IK>77uLvn?XOO7$aWinZqj!;*3>_>-x~&X6 zA3=4T-@ndI{$bdpP~-gZgnD{kwJN&rSTq;7jPdb<6d2u{qV7l2W~!xkxo}=@&Z*mb zbltGm;e;1>Jol7 zo_A59*-R_MHT7Uuvu)6T-VNJK`7TX7XOFE|h7@(sqVaAL4l{u6nq7+zf0(v0ud1() z8BEqa#g!rR?mD(M;^aRx5pXYJ_ko2_^4w%qdPDK-&#VwmgK zQxke;F}Aj#Toio5h<98hOV8u@l~Pn5T4`dD=Hvf~y{USLj9;WRDSEcvsq`>7Y-#H7 zH=RHVM|k&hklzH_bkg|N#h3NcHaImEjV=c@;)%u55*CHKhAy-%TrN3na^5*B$$2LR zzVy1KC~?;cHDy4q_ZtmrLzMYKAF4M=$w|WR@KRrW7uiOK$$dLPy$07(tz1+&0kSEU z*J*sPz9=4M}RDJ|KX)K(VT8{qgJj`o%h@<&d=sBu< zgsvxU6qD9lEvtE&;5xV$V92Y*l7x+Wm-(-B>?q|I5j-VuqG|}JyGfFTA-loAeEI{( z>EF7oc4Xg91|r}7iaY=lZBw7yq6?{m4V6>P{@X1bL$RD`A&3geX1k(;+CuGU7aIjP z3YS78dNVSUH(30(;tds6q}60jEN3=8jxD)ayZv2jU2Moz4qR6&&IQ?FW@&bEH~2UO zfv$Ys@O&FU1cjBC=p4)VxpgRdP{N}$T4|jOT^oAoOqwIc@wc?19sOQR;V7u^xz?yH zmtx;rabGU;w!3Wu9;Qi<1WR!nr2$e-DSg1+suYbinW@}#3lR(1U>m>zR!TShxYsFp z>wV7eSo#G4+}qA8E5buz9rY)JTLlZ$)0Qf?b`EJ6b&z;_xCty9R>vk)(3{WVey3CfzagWC5{;s7&}BS8v5 z^Si_a(%QP2T9WW=VWV`5W`Bmequpj7Rs!~v__^CrIif2wC!^}kj&_TR@<9hMj=3@1 z)kH6-AyPdYYg^YoF?mws+FF@CnLRLBFkBycCc9y>hb|1MT~N!FER>Ak^NP2^+Fpc$ z{9E}qA3lzM%E*~*DVwt0zLe8Ew#*%IV}-j=mz`r1L)dRi`Q@f6ZK0(jx4(9ONH$A1 z*Vy#@^V|}ZiMG*1HE^;!>e))Q1n_$uom{exE;|mA?ZXuG*BUv(+zp5;a?XG~p|lnE z7Ol=)EZi3G;t-Qxzjkc%Je@D_)04a1gV7F3`8!rJ0-y^k7Yl0>93OUXZ%A)@O7j3| z*d_je(E%!wcPx-|h_kbeg$rZtD_znX8!GxlW*azfj|q9vvXg*Te6eMNKWTMWM7r%$ z5MX?i-N6I*d}Tjro#+=!Z?*cPryA8(SE(&dA**Y1;QWoHn{kxwY}VS#j@3(R@x_vP zvrV4dSv%yGXYtI~hCfkS-6nA%bDDH5> zd(L_8{r>;<6SA4fWHM{kTC;vj_D|K1vN)LJm;eCa$jiM40RR#&03i6HBf@)52Y_Yx z4Z#s4D+QDeQSQPU7`C}(8|gyt7?D4B>@0hK>qzZ4Y#?2MRzZa$wi63$3oj2 zm5gNQk>$Mr>ObGe-&y;8GFFqMworTHKNobaO>CuaXRVf=zIIkbR5WQ(@_sHatmI2^ zR)z+`rX@0#Jw_m+g8x7G1O7@p@@Dn(Lfcn8sq(L}ikyD=EOU}LY!A5(HD57!ISlFl zfD*K9?jx?Cy#L?Dm?0v!ZjYKJD= zYc?hk8m-vN{Gi;GhBnojynBVp+vKB9%#<|1z{miea}FESPVw9tE=$N!l>$C)G^0O% zGcP_mO$~jQdSZcb_v!Fr(tvPSzQos`t~gt+M~Wk-W5?4uozw7XsY>2>cvzydf(k+M zV{UO_c|-T#V3Oq|F4676volH#qQGA4=jooBOtw&S(|+w*C<;4(%A8f2=6>$G*?PR7 z3xGOw-qDz&^2*{-*{#?i1I&zIH+tl7k=Hw5Ijun7j%lf3+dI2QfuRj4W^5+D7gFeS z=fjF-RN0@y*Xu@uxTm=LV$-T1_|UO%FP8&uUii=X<4du?plNaN2J-fTO{^Xl_)~Bx z>F3`zL7+F3z35SZREIrUYc#!GZtCh)H~BmU9q2I`JHh6&%cL0R6k^+EM62CZ4!+Bk zZ|JF}^_DFLQd>vzR$MsF8tyxEI;S;Z*+2+B@b_}w*4)f2P%0Av36)Pkz}0h-Z!kJK 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 diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 6ced2c7dff5..28c77ec82bc 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -35,25 +35,25 @@
    -

    Go to... +

    1) Go to : https://www.linkedin.com/secure/developer

    -

    Log you in Linkedin if you did not yet

    -

    Add a new Application

    -

    Fill in the form

    +

    2) Log you in Linkedin if you did not yet

    +

    3) Add a New Application

    +

    4) Fill in the Form

    - +
    -

    Copy the API Key: - +

    5) Copy the API Key: +

    - +
    @@ -69,14 +69,14 @@
    Record Not Found.
    -
    +
    - - - -
    -
    -
    @@ -630,9 +622,9 @@ - + or Import - +
    @@ -652,7 +644,6 @@ - @@ -664,26 +655,23 @@ - - + + t-att-class="'oe_list_field_cell' + (align ? ' oe_number' : '') + + (column.tag === 'button' ? ' oe_button' : '')" + t-att-data-field="column.id"> + + - - - - - - discard - + + + - or - - Cancel + + @@ -1494,7 +1479,7 @@ - or Cancel + - + From 4ec356892ca623182a830cfc7e7040037ba2af81 Mon Sep 17 00:00:00 2001 From: "Sanjay Gohel (Open ERP)" Date: Thu, 19 Jul 2012 15:21:39 +0530 Subject: [PATCH 066/328] [IMP]code improvement bzr revid: sgo@tinyerp.com-20120719095139-6zwcjzs0d12m4wgm --- addons/web/static/src/js/view_form.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b615c9af6cd..f6db12edd0b 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -4499,8 +4499,8 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ var self = this; var content = instance.web.qweb.render("FieldStatus.content", {widget: this, _:_}); this.$element.html(content); - clickable = this.node.attrs.clickable; - if(clickable == 'true') + clickable = this.node.attrs.clickable.toLowerCase(); + if(clickable == 'true' || clickable == '1') { var elemts = this.$element.find('.oe_form_steps_item') _.each(elemts, function(element){ From c5bbcb470528685e05b3d5f02fd57682c3b6fe13 Mon Sep 17 00:00:00 2001 From: "Sanjay Gohel (Open ERP)" Date: Thu, 19 Jul 2012 15:25:05 +0530 Subject: [PATCH 067/328] [IMP]crm:make stages clickable for statusbar with stage bzr revid: sgo@tinyerp.com-20120719095505-m9tgj782pln74j4r --- addons/crm/crm_lead.py | 14 +++++++++++++- addons/crm/crm_lead_view.xml | 10 +--------- addons/hr_recruitment/hr_recruitment_view.xml | 12 +----------- 3 files changed, 15 insertions(+), 21 deletions(-) diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index adf15e93a89..7680f8c49e5 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -289,9 +289,21 @@ class crm_lead(base_stage, osv.osv): if not stage_id: return {'value':{}} stage = self.pool.get('crm.case.stage').browse(cr, uid, stage_id, context) + if stage.state == "draft": + return {'value':{'probability': 0.0}} + if stage.state == "open": + cases = self.browse(cr, uid, ids, context=context) + data = {'active': True} + for case in cases: + if case.stage_id and case.stage_id.state == 'draft': + data['date_open'] = fields.datetime.now() + if not case.user_id: + data['user_id'] = uid + return {'value':data} if not stage.on_change: return {'value':{}} - return {'value':{'probability': stage.probability}} + else: + return {'value':{'probability': stage.probability}} def _check(self, cr, uid, ids=False, context=None): """ Override of the base.stage method. diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index 73c687e4ad0..dc17facc6be 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -432,26 +432,18 @@
    -
    diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 7881d6f1e37..218a699a0e3 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -107,19 +107,9 @@
    From 4571448bd0d0f9237151cfe92106a52363da6a66 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Thu, 19 Jul 2012 15:52:04 +0530 Subject: [PATCH 068/328] [IMP] Start to improve DB management looks same as other views of apps. bzr revid: jra@tinyerp.com-20120719102204-3eg2fmjdweouyjxl --- addons/web/static/src/xml/base.xml | 363 +++++++++++++++++------------ 1 file changed, 216 insertions(+), 147 deletions(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 70b0cd85cc5..50cec55014f 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -115,153 +115,222 @@ -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    CREATE DATABASE
    - -
    - -
    - - - - - - - - - - - - - - - -
    DROP DATABASE
    - - -
    -
    -
    - - - - - - - - - - - - - - - - -
    BACKUP DATABASE
    - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - -
    RESTORE DATABASE
    -
    -
    - - - - - - - - - - - - - - - - - - - -
    CHANGE MASTER PASSWORD
    -
    -
    -
    + + + + + + + + + +
    + + Back to Login + +
    + + d.url = '/' + (window.location.search || ''); + + +
    +
    +
    Database Management
    + +
    +
    + +
    +
    + + + + + + + + + + + +
    +

    + + Database Management + +

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    CREATE DATABASE
    + +
    +
    +
    + + + + + + + + + + + + + + + +
    DROP DATABASE
    + + +
    +
    +
    + + + + + + + + + + + + + + + + +
    BACKUP DATABASE
    + + +
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    RESTORE DATABASE
    +
    +
    + + + + + + + + + + + + + + + + + + + +
    CHANGE MASTER PASSWORD
    +
    +
    +
    + +
    +
    +
    +
    +
    +
    +
    +
    +
    + +
    From da96b5c89acc27c927d501e933de7f943a81f6ba Mon Sep 17 00:00:00 2001 From: "Sanjay Gohel (Open ERP)" Date: Thu, 19 Jul 2012 17:23:56 +0530 Subject: [PATCH 069/328] [IMP]make stages clickable for hr_recruitment bzr revid: sgo@tinyerp.com-20120719115356-5wob5o6on83m19nz --- addons/hr_recruitment/hr_recruitment.py | 29 +++++++++++++++++-- addons/hr_recruitment/hr_recruitment_view.xml | 4 +-- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index 1caceeac137..b36518b15d1 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -242,6 +242,28 @@ class hr_applicant(base_stage, osv.Model): _group_by_full = { 'stage_id': _read_group_stage_ids } + + def onchange_stage_id(self, cr, uid, ids, stage_id, context={}): + if context is None: + context = {} + if not stage_id: + return {'value':{}} + stage = self.pool.get('hr.recruitment.stage').browse(cr, uid, stage_id, context) + if stage.state == 'done': + context['onchange'] = True + self.case_close_with_emp(cr, uid, ids, context) + if stage.state == "draft": + return {'value':{'active': True,'date_open': False, 'date_closed': False}} + if stage.state == "open": + cases = self.browse(cr, uid, ids, context=context) + data = {'active': True} + for case in cases: + if case.stage_id and case.stage_id.state == 'draft': + data['date_open'] = fields.datetime.now() + if not case.user_id: + data['user_id'] = uid + return {'value':data} + return {'value':{}} def onchange_job(self,cr, uid, ids, job, context=None): result = {} @@ -409,8 +431,11 @@ class hr_applicant(base_stage, osv.Model): 'address_home_id': address_id, 'department_id': applicant.department_id.id }) - self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context) - self.case_close(cr, uid, [applicant.id], context) + if context.get('onchange') == True: + return {'value':{'emp_id': emp_id,'active': True, 'date_closed': fields.datetime.now()}} + else: + self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context) + self.case_close(cr, uid, [applicant.id], context) else: raise osv.except_osv(_('Warning!'),_('You must define Applied Job for this applicant.')) diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 218a699a0e3..ef99e687185 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -105,11 +105,11 @@
    -
    From ae9a9def1bf35c9d3aae6f514dc05b393fd88822 Mon Sep 17 00:00:00 2001 From: "Sanjay Gohel (Open ERP)" Date: Thu, 19 Jul 2012 18:44:04 +0530 Subject: [PATCH 070/328] [IMP]hr,project:make stage clickable bzr revid: sgo@tinyerp.com-20120719131404-hzzrfh0xwg3l0ukm --- addons/hr_recruitment/hr_recruitment_view.xml | 2 +- addons/project/project_view.xml | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index ef99e687185..8c2931a8bb9 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -109,7 +109,7 @@ states="open,pending" class="oe_highlight"/> -

    -
    - - - - - - Follow - - - - -
    Record Not Found.
    -
    - -
    - -
    -
    - - - - - - - -
    - - -
      -
    • - - - - - -
      - - - - - - - -
      - -
      -
    • -
    - - -
    -
    \ No newline at end of file From 6bad3e84fb1093b3e9c1a3c99bea3cc19fd95e2e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 12:39:08 +0200 Subject: [PATCH 135/328] [TEST] m2o import link by xid bzr revid: xmo@openerp.com-20120731103908-p1apmrx3ifnodz0f --- openerp/tests/test_import.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 2305928a12e..0b0d8fe4d0d 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -392,7 +392,7 @@ class test_selection_function(ImporterCase): ['3', '1'], values(self.read())) -class test_o2m(ImporterCase): +class test_m2o(ImporterCase): model_name = 'export.many2one' def test_by_name(self): @@ -422,7 +422,21 @@ class test_o2m(ImporterCase): (integer_id2, name2),], values(self.read())) - # TODO: test import by xid + def test_by_xid(self): + integer_id = self.registry('export.integer').create( + self.cr, openerp.SUPERUSER_ID, {'value': 42}) + self.registry('ir.model.data').create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export-integer-value', + 'model': 'export.integer', + 'res_id': integer_id, + 'module': 'test-export' + }) + + self.assertEqual( + self.import_(['value/id'], [['test-export.export-integer-value']]), + ok(1)) + b = self.browse() + self.assertEqual(42, b[0].value.value) def test_by_id(self): integer_id = self.registry('export.integer').create( @@ -491,7 +505,9 @@ class test_o2m(ImporterCase): self.assertRaises( Exception, # FIXME: Why can't you be a ValueError like everybody else? self.import_, ['value/.id'], [[66]]) + # TODO: M2M + # TODO: O2M # function, related, reference: written to db as-is... From c5427f3faa4b04df168cc0cce7ea0356a6ca7fc8 Mon Sep 17 00:00:00 2001 From: help <> Date: Tue, 31 Jul 2012 18:12:10 +0530 Subject: [PATCH 136/328] [IMP]improved exception warnings as per suggestion bzr revid: help-20120731124210-7vjw7puesjm3884p --- addons/hr_timesheet_sheet/hr_timesheet_sheet.py | 2 +- addons/hr_timesheet_sheet/i18n/hr_timesheet_sheet.pot | 2 +- addons/import_google/i18n/import_google.pot | 4 ++-- addons/import_google/wizard/import_google_data.py | 2 +- addons/mrp_operations/i18n/mrp_operations.pot | 2 +- addons/mrp_operations/mrp_operations.py | 2 +- addons/purchase/i18n/purchase.pot | 2 +- addons/purchase/purchase.py | 2 +- addons/sale/i18n/sale.pot | 4 ++-- addons/sale/sale.py | 6 +++--- addons/stock/i18n/stock.pot | 2 +- addons/stock/wizard/stock_partial_picking.py | 2 +- 12 files changed, 16 insertions(+), 16 deletions(-) diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py index 6a0c24b553e..73a4368caaf 100644 --- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py +++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py @@ -315,7 +315,7 @@ class hr_timesheet_sheet(osv.osv): def check_sign(self, cr, uid, ids, typ, context=None): sheet = self.browse(cr, uid, ids, context=context)[0] if not sheet.date_current == time.strftime('%Y-%m-%d'): - raise osv.except_osv(_('Error !'), _('You cannot sign in/sign out from an other date than today.')) + raise osv.except_osv(_('Error !'), _('You cannot sign in/sign out from other date than today.')) return True def sign(self, cr, uid, ids, typ, context=None): diff --git a/addons/hr_timesheet_sheet/i18n/hr_timesheet_sheet.pot b/addons/hr_timesheet_sheet/i18n/hr_timesheet_sheet.pot index 8149ce4ec92..2bf91768bad 100644 --- a/addons/hr_timesheet_sheet/i18n/hr_timesheet_sheet.pot +++ b/addons/hr_timesheet_sheet/i18n/hr_timesheet_sheet.pot @@ -971,7 +971,7 @@ msgstr "" #. module: hr_timesheet_sheet #: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:318 #, python-format -msgid "You cannot sign in/sign out from an other date than today." +msgid "You cannot sign in/sign out from other date than today." msgstr "" #. module: hr_timesheet_sheet diff --git a/addons/import_google/i18n/import_google.pot b/addons/import_google/i18n/import_google.pot index de5a0a257ec..175b8c1b75d 100644 --- a/addons/import_google/i18n/import_google.pot +++ b/addons/import_google/i18n/import_google.pot @@ -33,8 +33,8 @@ msgstr "" #. module: import_google #: code:addons/import_google/wizard/import_google_data.py:71 #, python-format -msgid "No Google username or password is defined for user.\n" -"Please define in user view." +msgid "No Google Username or password is defined for user.\n" +"Please define on user's form." msgstr "" #. module: import_google diff --git a/addons/import_google/wizard/import_google_data.py b/addons/import_google/wizard/import_google_data.py index 32ef6f82534..324f11293f5 100644 --- a/addons/import_google/wizard/import_google_data.py +++ b/addons/import_google/wizard/import_google_data.py @@ -73,7 +73,7 @@ class synchronize_google(osv.osv_memory): user_obj = self.pool.get('res.users').browse(cr, uid, uid,context=context) google=self.pool.get('google.login') if not user_obj.gmail_user or not user_obj.gmail_password: - raise osv.except_osv(_('Warning !'), _("No Google username or password is defined for user.\nPlease define in user view.")) + raise osv.except_osv(_('Warning !'), _("No Google Username or password is defined for user.\nPlease define on user's form.")) gd_client = google.google_login(user_obj.gmail_user,user_obj.gmail_password,type='group') if not gd_client: return [('failed', 'Connection to google fail')] diff --git a/addons/mrp_operations/i18n/mrp_operations.pot b/addons/mrp_operations/i18n/mrp_operations.pot index 0cd82aaca0c..4642c7cc917 100644 --- a/addons/mrp_operations/i18n/mrp_operations.pot +++ b/addons/mrp_operations/i18n/mrp_operations.pot @@ -164,7 +164,7 @@ msgstr "" #. module: mrp_operations #: code:addons/mrp_operations/mrp_operations.py:486 #, python-format -msgid "There is no Operation to be cancelled!" +msgid "No operation to cancel." msgstr "" #. module: mrp_operations diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py index 2700ed2654d..8692dab5c87 100644 --- a/addons/mrp_operations/mrp_operations.py +++ b/addons/mrp_operations/mrp_operations.py @@ -533,7 +533,7 @@ class mrp_operations_operation(osv.osv): return False if code.start_stop=='cancel': if not 'start' in code_lst : - raise osv.except_osv(_('Error!'),_('There is no Operation to be cancelled!')) + raise osv.except_osv(_('Error!'),_('No operation to cancel.')) return False if 'done' in code_lst: raise osv.except_osv(_('Error!'),_('Operation is already finished!')) diff --git a/addons/purchase/i18n/purchase.pot b/addons/purchase/i18n/purchase.pot index b270870c33f..d0b77b2ea66 100644 --- a/addons/purchase/i18n/purchase.pot +++ b/addons/purchase/i18n/purchase.pot @@ -443,7 +443,7 @@ msgstr "" #. module: purchase #: code:addons/purchase/purchase.py:499 #, python-format -msgid "First cancel all receptions related to this purchase order." +msgid "You must first cancel all receptions related to this purchase order." msgstr "" #. module: purchase diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 17e2c4151bf..dbf3f89dc56 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -503,7 +503,7 @@ class purchase_order(osv.osv): if inv and inv.state not in ('cancel','draft'): raise osv.except_osv( _('Unable to cancel this purchase order.'), - _('First cancel all receptions related to this purchase order.')) + _('You must first cancel all receptions related to this purchase order.')) if inv: wf_service.trg_validate(uid, 'account.invoice', inv.id, 'invoice_cancel', cr) self.write(cr,uid,ids,{'state':'cancel'}) diff --git a/addons/sale/i18n/sale.pot b/addons/sale/i18n/sale.pot index d6e213c3936..19f86364672 100644 --- a/addons/sale/i18n/sale.pot +++ b/addons/sale/i18n/sale.pot @@ -131,7 +131,7 @@ msgstr "" #: code:addons/sale/sale.py:295 #, python-format msgid "" -"In order to delete a confirmed sales order, you must cancel it before ! To " +"In order to delete a confirmed sales order, you must cancel it! To " "cancel a sale order, you must first cancel related picking for delivery " "orders." msgstr "" @@ -1492,7 +1492,7 @@ msgstr "" #. module: sale #: code:addons/sale/sale.py:604 #, python-format -msgid "First cancel all picking attached to this sales order." +msgid "You must first cancel all delivery order(s) attached to this sales order." msgstr "" #. module: sale diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 8ea9eb151b9..21f5d34ced7 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -295,7 +295,7 @@ class sale_order(osv.osv): if s['state'] in ['draft', 'cancel']: unlink_ids.append(s['id']) else: - raise osv.except_osv(_('Invalid action !'), _('In order to delete a confirmed sales order, you must cancel it before ! To cancel a sale order, you must first cancel related picking for delivery orders.')) + raise osv.except_osv(_('Invalid action !'), _('In order to delete a confirmed sales order, you must cancel it! To cancel a sale order, you must first cancel related picking for delivery orders.')) return osv.osv.unlink(self, cr, uid, unlink_ids, context=context) @@ -703,7 +703,7 @@ class sale_order(osv.osv): if pick.state not in ('draft', 'cancel'): raise osv.except_osv( _('Cannot cancel sales order!'), - _('First cancel all picking attached to this sales order.')) + _('You must first cancel all delivery order(s) attached to this sales order.')) if pick.state == 'cancel': for mov in pick.move_lines: proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)]) @@ -1210,7 +1210,7 @@ class sale_order_line(osv.osv): account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, account_id) if not account_id: raise osv.except_osv(_('Error !'), - _('Please define Fiscal Position or income category account for Product Categories default Properties.')) + _('There is no Fiscal Position defined or Income category account defined for default properties of Product categories.')) return { 'name': line.name, 'origin': line.order_id.name, diff --git a/addons/stock/i18n/stock.pot b/addons/stock/i18n/stock.pot index 6e75333fc92..9b46cdde703 100644 --- a/addons/stock/i18n/stock.pot +++ b/addons/stock/i18n/stock.pot @@ -2842,7 +2842,7 @@ msgstr "" #: code:addons/stock/stock.py:2379 code:addons/stock/stock.py:2440 #: code:addons/stock/wizard/stock_partial_picking.py:141 #, python-format -msgid "Please provide proper quantity." +msgid "Please provide proper Quantity." msgstr "" #. module: stock diff --git a/addons/stock/wizard/stock_partial_picking.py b/addons/stock/wizard/stock_partial_picking.py index 728e3d0047e..d8520002b52 100644 --- a/addons/stock/wizard/stock_partial_picking.py +++ b/addons/stock/wizard/stock_partial_picking.py @@ -167,7 +167,7 @@ class stock_partial_picking(osv.osv_memory): #Quantiny must be Positive if wizard_line.quantity < 0: - raise osv.except_osv(_('Warning!'), _('Please provide proper quantity.')) + raise osv.except_osv(_('Warning!'), _('Please provide proper Quantity.')) #Compute the quantity for respective wizard_line in the line uom (this jsut do the rounding if necessary) qty_in_line_uom = uom_obj._compute_qty(cr, uid, line_uom.id, wizard_line.quantity, line_uom.id) From 41d1135812915fd1ca4f97becceca730e284392b Mon Sep 17 00:00:00 2001 From: help <> Date: Tue, 31 Jul 2012 19:04:25 +0530 Subject: [PATCH 137/328] [IMP]improved exception warnings in remaining modules as per suggestion bzr revid: help-20120731133425-2zlm5sakpowuc6rk --- addons/account_analytic_plans/account_analytic_plans.py | 2 +- addons/account_analytic_plans/i18n/account_analytic_plans.pot | 2 +- addons/document/document.py | 2 +- addons/event/event.py | 2 +- addons/google_base_account/i18n/google_base_account.pot | 2 +- addons/google_base_account/wizard/google_login.py | 2 +- addons/hr_attendance/hr_attendance.py | 2 +- addons/hr_contract/hr_contract.py | 2 +- addons/hr_contract/i18n/hr_contract.pot | 2 +- addons/hr_evaluation/hr_evaluation.py | 2 +- addons/hr_evaluation/i18n/hr_evaluation.pot | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/addons/account_analytic_plans/account_analytic_plans.py b/addons/account_analytic_plans/account_analytic_plans.py index f701b737d7b..505aaf232ed 100644 --- a/addons/account_analytic_plans/account_analytic_plans.py +++ b/addons/account_analytic_plans/account_analytic_plans.py @@ -218,7 +218,7 @@ class account_analytic_plan_instance(osv.osv): pids = ana_plan_instance_obj.search(cr, uid, [('name','=',vals['name']), ('code','=',vals['code']), ('plan_id','<>',False)], context=context) if pids: - raise osv.except_osv(_('Error!'), _('A model having same name and code.')) + raise osv.except_osv(_('Error!'), _('A model having this name and code already exists !')) res = acct_anal_plan_line_obj.search(cr, uid, [('plan_id','=',journal.plan_id.id)], context=context) for i in res: diff --git a/addons/account_analytic_plans/i18n/account_analytic_plans.pot b/addons/account_analytic_plans/i18n/account_analytic_plans.pot index b36f4db2087..75b4654850e 100644 --- a/addons/account_analytic_plans/i18n/account_analytic_plans.pot +++ b/addons/account_analytic_plans/i18n/account_analytic_plans.pot @@ -183,7 +183,7 @@ msgstr "" #. module: account_analytic_plans #: code:addons/account_analytic_plans/account_analytic_plans.py:221 #, python-format -msgid "A model having same name and code." +msgid "A model having this name and code already exists !" msgstr "" #. module: account_analytic_plans diff --git a/addons/document/document.py b/addons/document/document.py index a8994992717..27abb92c80c 100644 --- a/addons/document/document.py +++ b/addons/document/document.py @@ -61,7 +61,7 @@ class document_file(osv.osv): return False if ids is not None: - raise NotImplementedError("Ids is just there by convention,please donot use it yet.") + raise NotImplementedError("Ids is just there by convention,please do not use it.") cr.execute("UPDATE ir_attachment " \ "SET parent_id = %s, db_datas = decode(encode(db_datas,'escape'), 'base64') " \ diff --git a/addons/event/event.py b/addons/event/event.py index e8c6eb31e3e..114432493a5 100644 --- a/addons/event/event.py +++ b/addons/event/event.py @@ -365,7 +365,7 @@ class event_registration(osv.osv): self.write(cr, uid, ids, values) self.message_append(cr, uid, ids, _('State set to Done'), body_text=_('Done')) else: - raise osv.except_osv(_('Error!'),_("You must wait the event starting day to do this action.") ) + raise osv.except_osv(_('Error!'),_("You must wait for the starting day of the event to do this action.") ) return True def button_reg_cancel(self, cr, uid, ids, context=None, *args): diff --git a/addons/google_base_account/i18n/google_base_account.pot b/addons/google_base_account/i18n/google_base_account.pot index 5a56073a7e7..41693f54adf 100644 --- a/addons/google_base_account/i18n/google_base_account.pot +++ b/addons/google_base_account/i18n/google_base_account.pot @@ -106,7 +106,7 @@ msgstr "" #. module: google_base_account #: code:addons/google_base_account/wizard/google_login.py:75 #, python-format -msgid "Authentication fail check the user and password !" +msgid "Authentication failed check the user and password !" msgstr "" #. module: google_base_account diff --git a/addons/google_base_account/wizard/google_login.py b/addons/google_base_account/wizard/google_login.py index b6cb4f185b9..756657f001f 100644 --- a/addons/google_base_account/wizard/google_login.py +++ b/addons/google_base_account/wizard/google_login.py @@ -74,7 +74,7 @@ class google_login(osv.osv_memory): } self.pool.get('res.users').write(cr, uid, uid, res, context=context) else: - raise osv.except_osv(_('Error'), _("Authentication fail check the user and password !")) + raise osv.except_osv(_('Error'), _("Authentication failed check the user and password !")) return self._get_next_action(cr, uid, context=context) diff --git a/addons/hr_attendance/hr_attendance.py b/addons/hr_attendance/hr_attendance.py index ab370f63397..16f3530c1e9 100644 --- a/addons/hr_attendance/hr_attendance.py +++ b/addons/hr_attendance/hr_attendance.py @@ -137,7 +137,7 @@ class hr_employee(osv.osv): warning_sign = "Sign Out" for emp in self.read(cr, uid, ids, ['id'], context=context): if not self._action_check(cr, uid, emp['id'], dt, context): - raise osv.except_osv(_('Warning !'), _('You try to %s with a date before to another event !\nTry to contact the administrator to correct attendances.')%(warning_sign,)) + raise osv.except_osv(_('Warning !'), _('You tried to %s with a date anterior to another event !\nTry to contact the administrator to correct attendances.')%(warning_sign,)) res = {'action': type, 'employee_id': emp['id']} if dt: diff --git a/addons/hr_contract/hr_contract.py b/addons/hr_contract/hr_contract.py index 07742ed5fe4..90f42d8487a 100644 --- a/addons/hr_contract/hr_contract.py +++ b/addons/hr_contract/hr_contract.py @@ -97,7 +97,7 @@ class hr_contract(osv.osv): return True _constraints = [ - (_check_dates, 'Error! Contract start-date must be lower then contract end-date.', ['date_start', 'date_end']) + (_check_dates, 'Error! Contract start-date must be less than contract end-date.', ['date_start', 'date_end']) ] hr_contract() diff --git a/addons/hr_contract/i18n/hr_contract.pot b/addons/hr_contract/i18n/hr_contract.pot index 016fef341ae..f444a602208 100644 --- a/addons/hr_contract/i18n/hr_contract.pot +++ b/addons/hr_contract/i18n/hr_contract.pot @@ -234,7 +234,7 @@ msgstr "" #. module: hr_contract #: constraint:hr.contract:0 -msgid "Error! Contract start-date must be lower then contract end-date." +msgid "Error! Contract start-date must be less than contract end-date." msgstr "" #. module: hr_contract diff --git a/addons/hr_evaluation/hr_evaluation.py b/addons/hr_evaluation/hr_evaluation.py index d3e410bab1c..decdf56eb47 100644 --- a/addons/hr_evaluation/hr_evaluation.py +++ b/addons/hr_evaluation/hr_evaluation.py @@ -240,7 +240,7 @@ class hr_evaluation(osv.osv): self.write(cr, uid, ids, {'state':'progress'}, context=context) for id in self.browse(cr, uid, ids, context=context): if len(id.survey_request_ids) != len(request_obj.search(cr, uid, [('evaluation_id', '=', id.id),('state', 'in', ['done','cancel'])], context=context)): - raise osv.except_osv(_('Warning !'),_("You cannot change state, because some appraisal in waiting answer or draft state.")) + raise osv.except_osv(_('Warning !'),_("You cannot change state, because some appraisal(s) are in waiting answer or draft state.")) return True def button_done(self,cr, uid, ids, context=None): diff --git a/addons/hr_evaluation/i18n/hr_evaluation.pot b/addons/hr_evaluation/i18n/hr_evaluation.pot index c6c8e63dd72..0b52d0ced50 100644 --- a/addons/hr_evaluation/i18n/hr_evaluation.pot +++ b/addons/hr_evaluation/i18n/hr_evaluation.pot @@ -812,7 +812,7 @@ msgstr "" #: code:addons/hr_evaluation/hr_evaluation.py:244 #, python-format msgid "" -"You cannot change state, because some appraisal in waiting answer or draft." +"You cannot change state, because some appraisal(s) are in waiting answer or draft state." "state" msgstr "" From ac647909bf97d6caf2ddc74b4daad6cea7752645 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 15:54:49 +0200 Subject: [PATCH 138/328] [TEST] m2m import bzr revid: xmo@openerp.com-20120731135449-i07ex1zswepen3wt --- openerp/tests/export_models.py | 6 ++ openerp/tests/test_export.py | 2 +- openerp/tests/test_import.py | 135 ++++++++++++++++++++++++++++++--- 3 files changed, 132 insertions(+), 11 deletions(-) diff --git a/openerp/tests/export_models.py b/openerp/tests/export_models.py index 277814808b4..3bb5cf0c6d2 100644 --- a/openerp/tests/export_models.py +++ b/openerp/tests/export_models.py @@ -117,3 +117,9 @@ class Many2ManyChild(orm.Model): def name_get(self, cr, uid, ids, context=None): return [(record.id, "%s:%s" % (self._name, record.value)) for record in self.browse(cr, uid, ids, context=context)] + def name_search(self, cr, user, name='', args=None, operator='ilike', context=None, limit=100): + return (self.name_get(cr, user, + self.search(cr, user, [['value', operator, int(name.split(':')[1])]]) + , context=context) + if isinstance(name, basestring) and name.split(':')[0] == self._name + else []) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index 01d0fbc7726..d693de01993 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -537,7 +537,7 @@ class test_m2m(CreatorCase): def test_multiple_records_name(self): self.assertEqual( self.export(self.commands, fields=['const', 'value']), - [[ + [[ # FIXME: hardcoded comma, import uses config.csv_internal_sep u'4', u','.join(self.names) ]]) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 0b0d8fe4d0d..b275db520c8 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -56,6 +56,30 @@ class ImporterCase(common.TransactionCase): self.model.search(self.cr, openerp.SUPERUSER_ID, domain, context=context), context=context) + def xid(self, record): + ModelData = self.registry('ir.model.data') + + ids = ModelData.search( + self.cr, openerp.SUPERUSER_ID, + [('model', '=', record._table_name), ('res_id', '=', record.id)]) + if ids: + d = ModelData.read( + self.cr, openerp.SUPERUSER_ID, ids, ['name', 'module'])[0] + if d['module']: + return '%s.%s' % (d['module'], d['name']) + return d['name'] + + name = dict(record.name_get())[record.id] + # fix dotted name_get results, otherwise xid lookups blow up + name = name.replace('.', '-') + ModelData.create(self.cr, openerp.SUPERUSER_ID, { + 'name': name, + 'model': record._table_name, + 'res_id': record.id, + 'module': '__test__' + }) + return '__test__.' + name + class test_ids_stuff(ImporterCase): model_name = 'export.integer' @@ -67,7 +91,9 @@ class test_ids_stuff(ImporterCase): self.assertEqual( self.import_(['id', 'value'], [['somexmlid', '42']]), ok(1)) - # TODO: get xid back, check that it is correct? + self.assertEqual( + 'somexmlid', + self.xid(self.browse()[0])) def test_update_with_id(self): id = self.model.create(self.cr, openerp.SUPERUSER_ID, {'value': 36}) @@ -423,17 +449,14 @@ class test_m2o(ImporterCase): values(self.read())) def test_by_xid(self): - integer_id = self.registry('export.integer').create( + ExportInteger = self.registry('export.integer') + integer_id = ExportInteger.create( self.cr, openerp.SUPERUSER_ID, {'value': 42}) - self.registry('ir.model.data').create(self.cr, openerp.SUPERUSER_ID, { - 'name': 'export-integer-value', - 'model': 'export.integer', - 'res_id': integer_id, - 'module': 'test-export' - }) + xid = self.xid(ExportInteger.browse( + self.cr, openerp.SUPERUSER_ID, [integer_id])[0]) self.assertEqual( - self.import_(['value/id'], [['test-export.export-integer-value']]), + self.import_(['value/id'], [[xid]]), ok(1)) b = self.browse() self.assertEqual(42, b[0].value.value) @@ -506,7 +529,99 @@ class test_m2o(ImporterCase): Exception, # FIXME: Why can't you be a ValueError like everybody else? self.import_, ['value/.id'], [[66]]) -# TODO: M2M +class test_m2m(ImporterCase): + model_name = 'export.many2many' + + # apparently, one and only thing which works is a + # csv_internal_sep-separated list of ids, xids, or names (depending if + # m2m/.id, m2m/id or m2m[/anythingelse] + def test_ids(self): + id1 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + id5 = self.registry('export.many2many.other').create( + self.cr, openerp.SUPERUSER_ID, {'value': 99, 'str': 'record4'}) + + self.assertEqual( + self.import_(['value/.id'], [ + ['%d,%d' % (id1, id2)], + ['%d,%d,%d' % (id1, id3, id4)], + ['%d,%d,%d' % (id1, id2, id3)], + ['%d' % id5] + ]), + ok(4)) + ids = lambda records: [record.id for record in records] + + b = self.browse() + self.assertEqual(ids(b[0].value), [id1, id2]) + self.assertEqual(values(b[0].value), [3, 44]) + + self.assertEqual(ids(b[2].value), [id1, id2, id3]) + self.assertEqual(values(b[2].value), [3, 44, 84]) + + def test_noids(self): + try: + self.import_(['value/.id'], [['42']]) + self.fail("Should have raised an exception") + except Exception, e: + self.assertIs(type(e), Exception, + "test should be fixed on exception subclass") + + def test_xids(self): + M2O_o = self.registry('export.many2many.other') + id1 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + records = M2O_o.browse(self.cr, openerp.SUPERUSER_ID, [id1, id2, id3, id4]) + + self.assertEqual( + self.import_(['value/id'], [ + ['%s,%s' % (self.xid(records[0]), self.xid(records[1]))], + ['%s' % self.xid(records[3])], + ['%s,%s' % (self.xid(records[2]), self.xid(records[1]))], + ]), + ok(3)) + + b = self.browse() + self.assertEqual(values(b[0].value), [3, 44]) + self.assertEqual(values(b[2].value), [44, 84]) + def test_noxids(self): + self.assertRaises( + ValueError, + self.import_, ['value/id'], [['noxidforthat']]) + + def test_names(self): + M2O_o = self.registry('export.many2many.other') + id1 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + records = M2O_o.browse(self.cr, openerp.SUPERUSER_ID, [id1, id2, id3, id4]) + + name = lambda record: dict(record.name_get())[record.id] + + self.assertEqual( + self.import_(['value'], [ + ['%s,%s' % (name(records[1]), name(records[2]))], + ['%s,%s,%s' % (name(records[0]), name(records[1]), name(records[2]))], + ['%s,%s' % (name(records[0]), name(records[3]))], + ]), + ok(3)) + + b = self.browse() + self.assertEqual(values(b[1].value), [3, 44, 84]) + self.assertEqual(values(b[2].value), [3, 9]) + + def test_nonames(self): + self.assertRaises( + ValueError, + self.import_, ['value'], [['wherethem2mhavenonames']]) # TODO: O2M From 7818bce5f7be645e617239efb1a507a09d6c6580 Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Tue, 31 Jul 2012 16:23:21 +0200 Subject: [PATCH 139/328] [ADD] Changed s for From 29e6a77fef10ebe06017bb55b492f8b004a0f80e Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 16:46:06 +0200 Subject: [PATCH 140/328] [TEST] localized import/export of selection fields bzr revid: xmo@openerp.com-20120731144606-ceax7lk3rfi7zumk --- openerp/tests/test_export.py | 29 +++++++++++++- openerp/tests/test_import.py | 74 +++++++++++++++++++++++++++++++++++- 2 files changed, 100 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index d693de01993..d60e5a09dcb 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -224,6 +224,11 @@ class test_datetime(CreatorCase): class test_selection(CreatorCase): model_name = 'export.selection' + translations_fr = [ + ("Qux", "toto"), + ("Bar", "titi"), + ("Foo", "tete"), + ] def test_empty(self): self.assertEqual( @@ -237,7 +242,28 @@ class test_selection(CreatorCase): self.export(2), [[u"Bar"]]) - # TODO: localized export! + def test_localized_export(self): + self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { + 'name': u'Français', + 'code': 'fr_FR', + 'translatable': True, + 'date_format': '%d.%m.%Y', + 'decimal_point': ',', + 'thousand_sep': ' ', + }) + Translations = self.registry('ir.translation') + for source, value in self.translations_fr: + Translations.create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export.selection,value', + 'lang': 'fr_FR', + 'type': 'selection', + 'src': source, + 'value': value + }) + # FIXME: can't import an exported selection field label if lang != en_US + self.assertEqual( + self.export(2, context={'lang': 'fr_FR'}), + [[u'Bar']]) class test_selection_function(CreatorCase): model_name = 'export.selection.function' @@ -390,7 +416,6 @@ class test_o2m(CreatorCase): [u'record5', '', u'13'], ]) -# todo: test with multiple o2m fields and exporting all class test_o2m_multiple(CreatorCase): model_name = 'export.one2many.multiple' diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index b275db520c8..7422ffd1a7a 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -372,6 +372,11 @@ class test_text(ImporterCase): class test_selection(ImporterCase): model_name = 'export.selection' + translations_fr = [ + ("Qux", "toto"), + ("Bar", "titi"), + ("Foo", "tete"), + ] def test_imported(self): self.assertEqual( @@ -384,6 +389,38 @@ class test_selection(ImporterCase): ok(4)) self.assertEqual([3, 2, 1, 2], values(self.read())) + def test_imported_translated(self): + self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { + 'name': u'Français', + 'code': 'fr_FR', + 'translatable': True, + 'date_format': '%d.%m.%Y', + 'decimal_point': ',', + 'thousand_sep': ' ', + }) + Translations = self.registry('ir.translation') + for source, value in self.translations_fr: + Translations.create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export.selection,value', + 'lang': 'fr_FR', + 'type': 'selection', + 'src': source, + 'value': value + }) + + self.assertEqual( + self.import_(['value'], [ + ['toto'], + ['tete'], + ['titi'], + ], context={'lang': 'fr_FR'}), + ok(3)) + self.assertEqual([3, 1, 2], values(self.read())) + self.assertEqual( + self.import_(['value'], [['Foo']], context={'lang': 'fr_FR'}), + error(1, "Key/value 'Foo' not found in selection field 'value'", + value=False)) + def test_invalid(self): self.assertEqual( self.import_(['value'], [['Baz']]), @@ -398,6 +435,12 @@ class test_selection(ImporterCase): class test_selection_function(ImporterCase): model_name = 'export.selection.function' + translations_fr = [ + ("Corge", "toto"), + ("Grault", "titi"), + ("Whee", "tete"), + ("Moog", "tutu"), + ] def test_imported(self): """ By what bloody magic does that thing work? @@ -407,7 +450,6 @@ class test_selection_function(ImporterCase): it: import does not actually know that the selection field uses a function """ - # TODO: localized import self.assertEqual( self.import_(['value'], [ [3], @@ -418,6 +460,36 @@ class test_selection_function(ImporterCase): ['3', '1'], values(self.read())) + def test_translated(self): + self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { + 'name': u'Français', + 'code': 'fr_FR', + 'translatable': True, + 'date_format': '%d.%m.%Y', + 'decimal_point': ',', + 'thousand_sep': ' ', + }) + Translations = self.registry('ir.translation') + for source, value in self.translations_fr: + Translations.create(self.cr, openerp.SUPERUSER_ID, { + 'name': 'export.selection,value', + 'lang': 'fr_FR', + 'type': 'selection', + 'src': source, + 'value': value + }) + # FIXME: Fucking hell + self.assertEqual( + self.import_(['value'], [ + ['toto'], + ['tete'], + ], context={'lang': 'fr_FR'}), + error(1, "Key/value 'toto' not found in selection field 'value'", + value=False)) + self.assertEqual( + self.import_(['value'], [['Wheee']], context={'lang': 'fr_FR'}), + ok(1)) + class test_m2o(ImporterCase): model_name = 'export.many2one' From e1c94f32212ed3d74b3aa84cc805fe614562e17a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 17:27:47 +0200 Subject: [PATCH 141/328] [TEST] importing m2m fields to an existing object with m2m values bzr revid: xmo@openerp.com-20120731152747-beg72fx2150upvay --- openerp/tests/test_import.py | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 7422ffd1a7a..c2534caa929 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -695,7 +695,28 @@ class test_m2m(ImporterCase): ValueError, self.import_, ['value'], [['wherethem2mhavenonames']]) -# TODO: O2M + def test_import_to_existing(self): + M2O_o = self.registry('export.many2many.other') + id1 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 3, 'str': 'record0'}) + id2 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 44, 'str': 'record1'}) + id3 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 84, 'str': 'record2'}) + id4 = M2O_o.create(self.cr, openerp.SUPERUSER_ID, {'value': 9, 'str': 'record3'}) + + xid = 'myxid' + self.assertEqual( + self.import_(['id', 'value/.id'], [[xid, '%d,%d' % (id1, id2)]]), + ok(1)) + self.assertEqual( + self.import_(['id', 'value/.id'], [[xid, '%d,%d' % (id3, id4)]]), + ok(1)) + + b = self.browse() + self.assertEqual(len(b), 1) + # TODO: replacement of existing m2m values is correct? + self.assertEqual(values(b[0].value), [84, 9]) + +class test_o2m(ImporterCase): + model_name = 'export.one2many' # function, related, reference: written to db as-is... # => function uses @type for value coercion/conversion From c4a60df691a0822258489105b71018ff6b3d73c6 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 31 Jul 2012 18:36:31 +0200 Subject: [PATCH 142/328] [TEST] o2m db-id export and import bzr revid: xmo@openerp.com-20120731163631-n97nxph9gm2f6kdp --- openerp/tests/test_export.py | 17 +++++- openerp/tests/test_import.py | 113 ++++++++++++++++++++++++++++++++++- 2 files changed, 127 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index d60e5a09dcb..ed47b580365 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -376,6 +376,21 @@ class test_o2m(CreatorCase): u'4', u','.join(self.names) ]]) + def test_multiple_records_id(self): + export = self.export(self.commands, fields=['const', 'value/.id']) + O2M_c = self.registry('export.one2many.child') + ids = O2M_c.browse(self.cr, openerp.SUPERUSER_ID, + O2M_c.search(self.cr, openerp.SUPERUSER_ID, [])) + self.assertEqual( + export, + [ + ['4', str(ids[0].id)], + ['', str(ids[1].id)], + ['', str(ids[2].id)], + ['', str(ids[3].id)], + ['', str(ids[4].id)], + ]) + def test_multiple_records_with_name_before(self): self.assertEqual( self.export(self.commands, fields=['const', 'value', 'value/value']), @@ -383,7 +398,7 @@ class test_o2m(CreatorCase): u'4', u','.join(self.names), u'4' ]]) - def test_multiple_records_with_name_before(self): + def test_multiple_records_with_name_after(self): self.assertEqual( self.export(self.commands, fields=['const', 'value/value', 'value']), [ # completely ignores name_get request diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index c2534caa929..c23d74d080a 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -23,8 +23,8 @@ def error(row, message, record=None, **kwargs): "Line %d : %s" % (row, message), '') -def values(seq): - return [item['value'] for item in seq] +def values(seq, field='value'): + return [item[field] for item in seq] def setupModule(): openerp.tools.config['update'] = {'base': 1} @@ -718,5 +718,114 @@ class test_m2m(ImporterCase): class test_o2m(ImporterCase): model_name = 'export.one2many' + def test_single(self): + self.assertEqual( + self.import_(['const', 'value/value'], [ + ['5', '63'] + ]), + ok(1)) + + (b,) = self.browse() + self.assertEqual(b.const, 5) + self.assertEqual(values(b.value), [63]) + + def test_multicore(self): + self.assertEqual( + self.import_(['const', 'value/value'], [ + ['5', '63'], + ['6', '64'], + ]), + ok(2)) + + b1, b2 = self.browse() + self.assertEqual(b1.const, 5) + self.assertEqual(values(b1.value), [63]) + self.assertEqual(b2.const, 6) + self.assertEqual(values(b2.value), [64]) + + def test_multisub(self): + self.assertEqual( + self.import_(['const', 'value/value'], [ + ['5', '63'], + ['', '64'], + ['', '65'], + ['', '66'], + ]), + ok(4)) + + (b,) = self.browse() + self.assertEqual(values(b.value), [63, 64, 65, 66]) + + def test_multi_subfields(self): + self.assertEqual( + self.import_(['value/str', 'const', 'value/value'], [ + ['this', '5', '63'], + ['is', '', '64'], + ['the', '', '65'], + ['rhythm', '', '66'], + ]), + ok(4)) + + (b,) = self.browse() + self.assertEqual(values(b.value), [63, 64, 65, 66]) + self.assertEqual( + values(b.value, 'str'), + 'this is the rhythm'.split()) + + def test_link(self): + id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Bf', 'value': 109 + }) + id2 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Me', 'value': 262 + }) + + self.assertEqual( + self.import_(['const', 'value/.id'], [ + ['42', str(id1)], + ['', str(id2)], + ]), + ok(2)) + + # No record values alongside id => o2m resolution skipped altogether, + # creates 2 records + b, b1 = self.browse() + self.assertEqual(b.const, 42) + self.assertEqual(values(b.value), []) + self.assertEqual(b1.const, 4) + self.assertEqual(values(b1.value), []) + + def test_link_2(self): + O2M_c = self.registry('export.one2many.child') + id1 = O2M_c.create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Bf', 'value': 109 + }) + id2 = O2M_c.create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Me', 'value': 262 + }) + + self.assertEqual( + self.import_(['const', 'value/.id', 'value/value'], [ + ['42', str(id1), '1'], + ['', str(id2), '2'], + ]), + ok(2)) + + (b,) = self.browse() + # if an id (db or xid) is provided, expectations that objects are + # *already* linked and emits UPDATE (1, id, {}). + # Noid => CREATE (0, ?, {}) + # TODO: xid ignored aside from getting corresponding db id? + self.assertEqual(b.const, 42) + self.assertEqual(values(b.value), []) + + # FIXME: updates somebody else's records? + self.assertEqual( + O2M_c.read(self.cr, openerp.SUPERUSER_ID, id1), + {'id': id1, 'str': 'Bf', 'value': 1, 'parent_id': False}) + self.assertEqual( + O2M_c.read(self.cr, openerp.SUPERUSER_ID, id2), + {'id': id2, 'str': 'Me', 'value': 2, 'parent_id': False}) + # function, related, reference: written to db as-is... # => function uses @type for value coercion/conversion From 3f1ab77e2858659388426b5148b8c91c71c6bc3a Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 1 Aug 2012 09:08:03 +0200 Subject: [PATCH 143/328] [TEST] o2m importing of multiple fields bzr revid: xmo@openerp.com-20120801070803-4sgvemuiifrhe61s --- openerp/tests/test_import.py | 66 +++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index c23d74d080a..08c52dd902c 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -772,6 +772,8 @@ class test_o2m(ImporterCase): values(b.value, 'str'), 'this is the rhythm'.split()) + # TODO: failing inline LINK_TO + def test_link(self): id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { 'str': 'Bf', 'value': 109 @@ -788,7 +790,8 @@ class test_o2m(ImporterCase): ok(2)) # No record values alongside id => o2m resolution skipped altogether, - # creates 2 records + # creates 2 records => remove/don't import columns sideshow columns, + # get completely different semantics b, b1 = self.browse() self.assertEqual(b.const, 42) self.assertEqual(values(b.value), []) @@ -827,5 +830,66 @@ class test_o2m(ImporterCase): O2M_c.read(self.cr, openerp.SUPERUSER_ID, id2), {'id': id2, 'str': 'Me', 'value': 2, 'parent_id': False}) + # TODO: name_get? + +class test_o2m_multiple(ImporterCase): + model_name = 'export.one2many.multiple' + + def test_multi_mixed(self): + self.assertEqual( + self.import_(['const', 'child1/value', 'child2/value'], [ + ['5', '11', '21'], + ['', '12', '22'], + ['', '13', '23'], + ['', '14', ''], + ]), + ok(4)) + # Oh yeah, that's the stuff + (b, b1, b2) = self.browse() + self.assertEqual(values(b.child1), [11]) + self.assertEqual(values(b.child2), [21]) + + self.assertEqual(values(b1.child1), [12]) + self.assertEqual(values(b1.child2), [22]) + + self.assertEqual(values(b2.child1), [13, 14]) + self.assertEqual(values(b2.child2), [23]) + + def test_multi(self): + self.assertEqual( + self.import_(['const', 'child1/value', 'child2/value'], [ + ['5', '11', '21'], + ['', '12', ''], + ['', '13', ''], + ['', '14', ''], + ['', '', '22'], + ['', '', '23'], + ]), + ok(6)) + # What the actual fuck? + (b, b1) = self.browse() + self.assertEqual(values(b.child1), [11, 12, 13, 14]) + self.assertEqual(values(b.child2), [21]) + self.assertEqual(values(b1.child2), [22, 23]) + + def test_multi_fullsplit(self): + self.assertEqual( + self.import_(['const', 'child1/value', 'child2/value'], [ + ['5', '11', ''], + ['', '12', ''], + ['', '13', ''], + ['', '14', ''], + ['', '', '21'], + ['', '', '22'], + ['', '', '23'], + ]), + ok(7)) + # oh wow + (b, b1) = self.browse() + self.assertEqual(b.const, 5) + self.assertEqual(values(b.child1), [11, 12, 13, 14]) + self.assertEqual(b1.const, 36) + self.assertEqual(values(b1.child2), [21, 22, 23]) + # function, related, reference: written to db as-is... # => function uses @type for value coercion/conversion From e3dc73880280fca68d43eb4352c8d56c3e47debc Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 1 Aug 2012 10:21:08 +0200 Subject: [PATCH 144/328] [TEST] failure of o2m relinking via inline id (as exported) bzr revid: xmo@openerp.com-20120801082108-vkind3ocwsqgd0bv --- openerp/tests/test_import.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 08c52dd902c..87e7ae9c350 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -772,7 +772,24 @@ class test_o2m(ImporterCase): values(b.value, 'str'), 'this is the rhythm'.split()) - # TODO: failing inline LINK_TO + def test_link_inline(self): + id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Bf', 'value': 109 + }) + id2 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { + 'str': 'Me', 'value': 262 + }) + + try: + self.import_(['const', 'value/.id'], [ + ['42', '%d,%d' % (id1, id2)] + ]) + except ValueError, e: + # should be Exception(Database ID doesn't exist: export.one2many.child : $id1,$id2) + self.assertIs(type(e), ValueError) + self.assertEqual( + e.args[0], + "invalid literal for int() with base 10: '%d,%d'" % (id1, id2)) def test_link(self): id1 = self.registry('export.one2many.child').create(self.cr, openerp.SUPERUSER_ID, { @@ -830,8 +847,6 @@ class test_o2m(ImporterCase): O2M_c.read(self.cr, openerp.SUPERUSER_ID, id2), {'id': id2, 'str': 'Me', 'value': 2, 'parent_id': False}) - # TODO: name_get? - class test_o2m_multiple(ImporterCase): model_name = 'export.one2many.multiple' From 471ef96edf890014df766a0ee956fe190f4e5480 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Wed, 1 Aug 2012 11:44:34 +0200 Subject: [PATCH 145/328] [FIX] some notes and comments in import/export tests bzr revid: xmo@openerp.com-20120801094434-t23wa2343utnevh6 --- openerp/tests/test_export.py | 5 ++--- openerp/tests/test_import.py | 21 +++++++++++---------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index ed47b580365..e545fe24c61 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -218,6 +218,7 @@ class test_datetime(CreatorCase): .. note:: on the other hand, export uses user lang for name_get """ + # NOTE: ignores user timezone, always exports to UTC self.assertEqual( self.export('2011-11-07 21:05:48', context={'tz': 'Pacific/Norfolk'}), [[u'2011-11-07 21:05:48']]) @@ -260,7 +261,6 @@ class test_selection(CreatorCase): 'src': source, 'value': value }) - # FIXME: can't import an exported selection field label if lang != en_US self.assertEqual( self.export(2, context={'lang': 'fr_FR'}), [[u'Bar']]) @@ -274,8 +274,7 @@ class test_selection_function(CreatorCase): [[False]]) def test_value(self): - """ selection functions export the *value* itself - """ + # FIXME: selection functions export the *value* itself self.assertEqual( self.export(1), [[u'1']]) diff --git a/openerp/tests/test_import.py b/openerp/tests/test_import.py index 87e7ae9c350..de2553427e0 100644 --- a/openerp/tests/test_import.py +++ b/openerp/tests/test_import.py @@ -240,7 +240,7 @@ class test_integer_field(ImporterCase): def test_nonsense(self): - # dafuq? why does that one raise an error? + # FIXME: shit error reporting, exceptions half the time, messages the other half self.assertRaises( ValueError, self.import_, ['value'], [['zorglub']]) @@ -384,7 +384,7 @@ class test_selection(ImporterCase): ['Qux'], ['Bar'], ['Foo'], - [2], + ['2'], ]), ok(4)) self.assertEqual([3, 2, 1, 2], values(self.read())) @@ -408,6 +408,8 @@ class test_selection(ImporterCase): 'value': value }) + # FIXME: can't import an exported selection field label if lang != en_US + # (see test_export.test_selection.test_localized_export) self.assertEqual( self.import_(['value'], [ ['toto'], @@ -443,16 +445,14 @@ class test_selection_function(ImporterCase): ] def test_imported(self): - """ By what bloody magic does that thing work? - - => import uses fields_get, so translates import label (may or may not - be good news) *and* serializes the selection function to reverse - it: import does not actually know that the selection field uses a - function + """ import uses fields_get, so translates import label (may or may not + be good news) *and* serializes the selection function to reverse it: + import does not actually know that the selection field uses a function """ + # NOTE: conflict between a value and a label => ? self.assertEqual( self.import_(['value'], [ - [3], + ['3'], ["Grault"], ]), ok(2)) @@ -461,6 +461,8 @@ class test_selection_function(ImporterCase): values(self.read())) def test_translated(self): + """ Expects output of selection function returns translated labels + """ self.registry('res.lang').create(self.cr, openerp.SUPERUSER_ID, { 'name': u'Français', 'code': 'fr_FR', @@ -478,7 +480,6 @@ class test_selection_function(ImporterCase): 'src': source, 'value': value }) - # FIXME: Fucking hell self.assertEqual( self.import_(['value'], [ ['toto'], From 050b4caa285e1361a6211ae5503882dc1b022c15 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 1 Aug 2012 15:27:33 +0200 Subject: [PATCH 146/328] wip bzr revid: nicolas.vanhoren@openerp.com-20120801132733-p1xjpxf005skr94o --- addons/web_linkedin/__init__.py | 2 +- addons/web_linkedin/__openerp__.py | 3 +- addons/web_linkedin/res_config.py | 53 -------------- addons/web_linkedin/res_config_view.xml | 24 ------- addons/web_linkedin/res_partner_view.xml | 6 -- .../static/src/img/Linkedin_blue.png | Bin 0 -> 5435 bytes addons/web_linkedin/static/src/js/linkedin.js | 68 +++++++++++++++++- .../web_linkedin/static/src/xml/linkedin.xml | 4 +- addons/web_linkedin/web_linkedin.py | 47 ------------ addons/web_linkedin/web_linkedin_view.xml | 21 ++++++ 10 files changed, 93 insertions(+), 135 deletions(-) delete mode 100644 addons/web_linkedin/res_config.py delete mode 100644 addons/web_linkedin/res_config_view.xml delete mode 100644 addons/web_linkedin/res_partner_view.xml create mode 100644 addons/web_linkedin/static/src/img/Linkedin_blue.png create mode 100644 addons/web_linkedin/web_linkedin_view.xml diff --git a/addons/web_linkedin/__init__.py b/addons/web_linkedin/__init__.py index 92b70f98cf8..88f4dc36398 100644 --- a/addons/web_linkedin/__init__.py +++ b/addons/web_linkedin/__init__.py @@ -1,2 +1,2 @@ -import res_config + import web_linkedin \ No newline at end of file diff --git a/addons/web_linkedin/__openerp__.py b/addons/web_linkedin/__openerp__.py index 680bef0c47b..122453d6096 100644 --- a/addons/web_linkedin/__openerp__.py +++ b/addons/web_linkedin/__openerp__.py @@ -9,8 +9,7 @@ This module provides the Integration of the LinkedIn with OpenERP. """, 'update_xml': [ - 'res_partner_view.xml', - 'res_config_view.xml', + 'web_linkedin_view.xml', ], "depends" : ["base"], "js": [ diff --git a/addons/web_linkedin/res_config.py b/addons/web_linkedin/res_config.py deleted file mode 100644 index 4678279f40e..00000000000 --- a/addons/web_linkedin/res_config.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Business Applications -# Copyright (C) 2004-2012 OpenERP S.A. (). -# -# 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 . -# -############################################################################## - -from osv import osv, fields - -class base_config_settings(osv.osv_memory): - _inherit = 'base.config.settings' - _name = 'base.config.settings' - _columns = { - 'default_linkedin_api_key': fields.char('LinkedIn API key', size=128, default_model='res.company', - help="""Give API key of linkedin."""), - 'generate_key': fields.text('Go to URL', readonly=True, - help="""If you have not generate linkedin API Key yet than Go to URL to generate and enter it in above text field."""), - } - _defaults = { - 'generate_key': "To find contact persons from LinkedIn "\ - "\n====================================="\ - "\n* Go to this URL : https://www.linkedin.com/secure/developer "\ - "\n* Add New Application and fill the form,"\ - "\n - JavaScript API Domain is Your domain name (e.g. https://yourcompany.my.openerp.com),"\ - "\n - You can give multiple domain (e.g. yourcompany.my.openerp.com),"\ - "\n - programming tools is Javascript"\ - '\n* Copy the "API Key" and paste it in the field "LinkedIn API Key" here above.' - } - - def execute(self, cr, uid, ids, context=None): - super(base_config_settings,self).execute(cr, uid, ids, context=context) - company_obj = self.pool.get('res.company') - data = self.browse(cr, uid, ids[0], context=context) - company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) - company_obj.write(cr, uid, [company_id], {'linkedin_api_key': data.default_linkedin_api_key}, context=context) - -base_config_settings() - - diff --git a/addons/web_linkedin/res_config_view.xml b/addons/web_linkedin/res_config_view.xml deleted file mode 100644 index 991f637ec08..00000000000 --- a/addons/web_linkedin/res_config_view.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - General Settings - base.config.settings - - form - 20 - - - - - - - - - - - - - - - diff --git a/addons/web_linkedin/res_partner_view.xml b/addons/web_linkedin/res_partner_view.xml deleted file mode 100644 index de5d694c850..00000000000 --- a/addons/web_linkedin/res_partner_view.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/addons/web_linkedin/static/src/img/Linkedin_blue.png b/addons/web_linkedin/static/src/img/Linkedin_blue.png new file mode 100644 index 0000000000000000000000000000000000000000..c37d0218f7d64711a93bf02cd0469faad5dba9a5 GIT binary patch literal 5435 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 literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index d1b163f45ad..d4dc2baf114 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -5,6 +5,72 @@ openerp.web_linkedin = function(instance) { var QWeb = instance.web.qweb; var _t = instance.web._t; - + + instance.web_linkedin.LinkedinTester = instance.web.Class.extend({ + init: function() { + this.api_key = "cxnr0l53n73x"; + this.linkedin_added = false; + this.linkedin_def = $.Deferred(); + }, + test_linkedin: function() { + var self = this; + return this.test_api_key().pipe(function() { + if (self.linkedin_added) + return self.linkedin_def.promise(); + var tag = document.createElement('script'); + tag.type = 'text/javascript'; + tag.src = "http://platform.linkedin.com/in.js"; + tag.innerHTML = 'api_key : ' + self.api_key + '\nauthorize : true'; + document.getElementsByTagName('head')[0].appendChild(tag); + linkedin_added = true; + $(tag).load(function() { + self.linkedin_def.resolve(); + }); + return self.linkedin_def.promise(); + }, function() { + /*return new instance.web.Model("ir.config_parameter").call("set_param", ["web.linkedin.apikey", "cxnr0l53n73x"]).pipe(function() { + return self.test_linkedin(); + });*/ + }); + }, + test_api_key: function() { + if (this.api_key) { + return $.when(); + } + return new instance.web.Model("ir.config_parameter").call("get_param", ["web.linkedin.apikey"]).pipe(function(a) { + if (a !== false) { + self.api_key = a; + return true; + } else { + return $.Deferred().reject(); + } + }); + }, + }); + + instance.web_linkedin.tester = new instance.web_linkedin.LinkedinTester(); + + instance.web_linkedin.Linkedin = instance.web.form.FieldChar.extend({ + init: function() { + this._super.apply(this, arguments); + var self = this; + this.display_dm = new instance.web.DropMisordered(true); + this.on("linkedin_loaded", this, function() { + $("input", self.$element).after(QWeb.render("FieldChar.linkedin")); + }); + }, + initialize_content: function() { + this._super(); + var self = this; + if (! this.get("effective_readonly")) { + this.display_dm.add(instance.web_linkedin.tester.test_linkedin()).then(function() { + self.trigger("linkedin_loaded"); + }); + } else { + this.display_dm.add($.when()); + } + }, + }); + instance.web.form.widgets.add('linkedin', 'instance.web_linkedin.Linkedin'); }; // vim:et fdc=0 fdl=0: diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index ff4d920d031..33ae10752fa 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -2,5 +2,7 @@ - + + Yop + \ No newline at end of file diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py index 0cbb0b66ed0..4bb525db1ff 100644 --- a/addons/web_linkedin/web_linkedin.py +++ b/addons/web_linkedin/web_linkedin.py @@ -18,52 +18,5 @@ # along with this program. If not, see . # ############################################################################## -import base64 -import urllib2 -import xmlrpclib -import zlib -from web import common -openerpweb = common.http - -from osv import fields, osv - -class company(osv.osv): - _inherit = 'res.company' - _columns = { - 'linkedin_api_key': fields.char('LinkedIn API key', size=128), - } - -company() - -class users(osv.osv): - _inherit = 'res.users' - - def set_linkedin_api_key(self, cr, uid, key, context=None): - company_obj = self.pool.get('res.company') - company_id = company_obj._company_default_get(cr, uid, 'res.users', context=context) - company_obj.write(cr, uid, [company_id], {'linkedin_api_key': key }) - ir_values = self.pool.get('ir.values') - ir_values.set_default(cr, uid, 'res.company', 'linkedin_api_key', key) - - return True -users() - -class res_partner(osv.osv): - _inherit = 'res.partner' - - _columns = { - } - -res_partner() - -# don't know yet if I will remove it -class Binary(openerpweb.Controller): - _cp_path = "/web_linkedin/binary" - - @openerpweb.jsonrequest - def url2binary(self, req,url): - bfile = urllib2.urlopen(url) - return base64.b64encode(bfile.read()) - diff --git a/addons/web_linkedin/web_linkedin_view.xml b/addons/web_linkedin/web_linkedin_view.xml new file mode 100644 index 00000000000..b636722e2c7 --- /dev/null +++ b/addons/web_linkedin/web_linkedin_view.xml @@ -0,0 +1,21 @@ + + + + + res.partner.linkedin.inherit + res.partner + form + + + + + + + + + + From 3364a85ba5904ed4bdd8fe9c61574e794c0ce9a7 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Wed, 1 Aug 2012 16:28:05 +0200 Subject: [PATCH 147/328] fixed padding in kanban tags and searchview tags bzr revid: mit@openerp.com-20120801142805-5drbpx6t3ks7p86s --- addons/web/static/src/css/base.css | 1 + addons/web/static/src/css/base.sass | 1 + addons/web_kanban/static/src/css/kanban.css | 5 ++++- addons/web_kanban/static/src/css/kanban.sass | 3 +++ 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 703683d4d96..a15d8ca4b22 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1592,6 +1592,7 @@ line-height: 8px; width: 12px; height: 12px; + padding-top: 1px; text-align: center; font-weight: bold; cursor: pointer; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 2a2d816241f..8723d9d6f2e 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1227,6 +1227,7 @@ $sheet-max-width: 860px line-height: 8px width: 12px height: 12px + padding-top: 1px text-align: center font-weight: bold cursor: pointer diff --git a/addons/web_kanban/static/src/css/kanban.css b/addons/web_kanban/static/src/css/kanban.css index 5830cb33e0f..246475a2b7f 100644 --- a/addons/web_kanban/static/src/css/kanban.css +++ b/addons/web_kanban/static/src/css/kanban.css @@ -1,4 +1,3 @@ -@charset "utf-8"; .openerp .oe_kanban_view { background: url(/web/static/src/img/form_sheetbg.png); height: inherit; @@ -169,6 +168,10 @@ .openerp .oe_kanban_view .oe_kanban_details h4 { margin: 0 0 4px 0; } +.openerp .oe_kanban_view .oe_kanban_details .oe_tag { + display: inline-block; + margin: 0 0 2px 0; +} .openerp .oe_kanban_view .oe_kanban_record { position: relative; display: block; diff --git a/addons/web_kanban/static/src/css/kanban.sass b/addons/web_kanban/static/src/css/kanban.sass index 44b3251c8fb..ae387244024 100644 --- a/addons/web_kanban/static/src/css/kanban.sass +++ b/addons/web_kanban/static/src/css/kanban.sass @@ -176,6 +176,9 @@ color: #4c4c4c h4 margin: 0 0 4px 0 + .oe_tag + display: inline-block + margin: 0 0 2px 0 .oe_kanban_record position: relative display: block From 6f39a63957da18da62a216b50db5f4aa3137dd2d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Thu, 2 Aug 2012 10:47:45 +0200 Subject: [PATCH 148/328] Did better stuff bzr revid: nicolas.vanhoren@openerp.com-20120802084745-02bahalf1q3ht1l4 --- addons/web_linkedin/static/src/js/linkedin.js | 31 ++++++++++--------- .../web_linkedin/static/src/xml/linkedin.xml | 3 +- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index d4dc2baf114..ad8a1fa6a52 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -22,15 +22,11 @@ openerp.web_linkedin = function(instance) { tag.src = "http://platform.linkedin.com/in.js"; tag.innerHTML = 'api_key : ' + self.api_key + '\nauthorize : true'; document.getElementsByTagName('head')[0].appendChild(tag); - linkedin_added = true; + self.linkedin_added = true; $(tag).load(function() { self.linkedin_def.resolve(); }); return self.linkedin_def.promise(); - }, function() { - /*return new instance.web.Model("ir.config_parameter").call("set_param", ["web.linkedin.apikey", "cxnr0l53n73x"]).pipe(function() { - return self.test_linkedin(); - });*/ }); }, test_api_key: function() { @@ -48,6 +44,10 @@ openerp.web_linkedin = function(instance) { }, }); + /*return new instance.web.Model("ir.config_parameter").call("set_param", ["web.linkedin.apikey", "cxnr0l53n73x"]).pipe(function() { + return self.test_linkedin(); + });*/ + instance.web_linkedin.tester = new instance.web_linkedin.LinkedinTester(); instance.web_linkedin.Linkedin = instance.web.form.FieldChar.extend({ @@ -55,20 +55,21 @@ openerp.web_linkedin = function(instance) { this._super.apply(this, arguments); var self = this; this.display_dm = new instance.web.DropMisordered(true); - this.on("linkedin_loaded", this, function() { - $("input", self.$element).after(QWeb.render("FieldChar.linkedin")); - }); }, initialize_content: function() { this._super(); + var $ht = $(QWeb.render("FieldChar.linkedin")); + var $in = this.$("input"); + $in.replaceWith($ht); + this.$(".oe_linkedin_input").append($in); + this.$(".oe_linkedin_img").click(_.bind(this.search_linkedin, this)); + + }, + search_linkedin: function() { var self = this; - if (! this.get("effective_readonly")) { - this.display_dm.add(instance.web_linkedin.tester.test_linkedin()).then(function() { - self.trigger("linkedin_loaded"); - }); - } else { - this.display_dm.add($.when()); - } + this.display_dm.add(instance.web_linkedin.tester.test_linkedin()).then(function() { + debugger; + }); }, }); instance.web.form.widgets.add('linkedin', 'instance.web_linkedin.Linkedin'); diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 33ae10752fa..42f0ad6f851 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -3,6 +3,7 @@ --> - Yop + +
    \ No newline at end of file From 19b50c49029f963442a41c3e02973a16a652577d Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 2 Aug 2012 16:33:49 +0200 Subject: [PATCH 149/328] [FIX] typo bzr revid: al@openerp.com-20120802143349-ezwts1po29r2v9et --- addons/auth_reset_password/__init__.py | 3 +-- addons/auth_reset_password/auth_reset_password.py | 4 ++-- addons/auth_reset_password/static/src/js/reset_password.js | 2 +- addons/auth_signup/__init__.py | 2 +- addons/auth_signup/__openerp__.py | 2 +- .../auth_signup/static/src/js/{signup.js => auth_signup.js} | 2 +- .../static/src/xml/{signup.xml => auth_signup.xml} | 0 7 files changed, 7 insertions(+), 8 deletions(-) rename addons/auth_signup/static/src/js/{signup.js => auth_signup.js} (92%) rename addons/auth_signup/static/src/xml/{signup.xml => auth_signup.xml} (100%) diff --git a/addons/auth_reset_password/__init__.py b/addons/auth_reset_password/__init__.py index 7055f8145e5..28bbdd18161 100644 --- a/addons/auth_reset_password/__init__.py +++ b/addons/auth_reset_password/__init__.py @@ -1,2 +1 @@ -import res_users -import controllers +import auth_reset_password diff --git a/addons/auth_reset_password/auth_reset_password.py b/addons/auth_reset_password/auth_reset_password.py index 6145c9cba4d..dd8e383dcef 100644 --- a/addons/auth_reset_password/auth_reset_password.py +++ b/addons/auth_reset_password/auth_reset_password.py @@ -35,7 +35,7 @@ class res_users(osv.osv): ('email_uniq', 'UNIQUE (user_email)', 'You can not have two users with the same email!') ] - def _auth_reset_password_secret(self, cr, uid, ids, context=None) + def _auth_reset_password_secret(self, cr, uid, ids, context=None): uuid = self.pool.get('ir.config_parameter').get_param(cr, uid, 'database.uuid') res = { 'dbname': cr.dbname, @@ -95,7 +95,7 @@ class auth_reset_password(osv.TransientModel): raise osv.except_osv('Error', 'Passwords missmatch') Users = self.pool.get('res.users') - data = Users._auth_reset_password_check_token(self, cr, uid, values['token']): + data = Users._auth_reset_password_check_token(self, cr, uid, values['token']) if data: Users.write(cr, 1, data['uid'], {'password': pw}, context=context) else: diff --git a/addons/auth_reset_password/static/src/js/reset_password.js b/addons/auth_reset_password/static/src/js/reset_password.js index a4d023e9869..4429ae0e2b4 100644 --- a/addons/auth_reset_password/static/src/js/reset_password.js +++ b/addons/auth_reset_password/static/src/js/reset_password.js @@ -1,4 +1,4 @@ -openerp.reset_password = function(instance) { +openerp.auth_reset_password = function(instance) { var _t = instance.web._t; instance.web.Login.include({ start: function() { diff --git a/addons/auth_signup/__init__.py b/addons/auth_signup/__init__.py index d70c1894925..2e404949550 100644 --- a/addons/auth_signup/__init__.py +++ b/addons/auth_signup/__init__.py @@ -1,2 +1,2 @@ import res_config -import signup +import auth_signup diff --git a/addons/auth_signup/__openerp__.py b/addons/auth_signup/__openerp__.py index c150121cc54..bf34ec27abf 100644 --- a/addons/auth_signup/__openerp__.py +++ b/addons/auth_signup/__openerp__.py @@ -8,8 +8,8 @@ 'installable': True, 'depends': ['anonymous', 'base_setup'], 'data': [ + 'auth_signup.xml', 'res_config.xml', - 'signup.xml', ], 'js': [ 'static/src/js/auth_signup.js', diff --git a/addons/auth_signup/static/src/js/signup.js b/addons/auth_signup/static/src/js/auth_signup.js similarity index 92% rename from addons/auth_signup/static/src/js/signup.js rename to addons/auth_signup/static/src/js/auth_signup.js index 5024cc56f9b..73fe1c20236 100644 --- a/addons/auth_signup/static/src/js/signup.js +++ b/addons/auth_signup/static/src/js/auth_signup.js @@ -9,7 +9,7 @@ openerp.auth_signup = function(instance) { var am = p.action_manager; am.do_action({ type:'ir.actions.act_window', - res_model: 'signup.signup', + res_model: 'auth.signup', views: [[false, 'form']], target: 'new', name: 'Sign Up' diff --git a/addons/auth_signup/static/src/xml/signup.xml b/addons/auth_signup/static/src/xml/auth_signup.xml similarity index 100% rename from addons/auth_signup/static/src/xml/signup.xml rename to addons/auth_signup/static/src/xml/auth_signup.xml From 6b23be4a25db4a869d918360c15aadd9e61c66fa Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 2 Aug 2012 17:14:08 +0200 Subject: [PATCH 150/328] [FIX] anonymous: use callback to reload client when logged in + only auto log if not logged bzr revid: chs@openerp.com-20120802151408-q81m5l90rjfe8azd --- addons/anonymous/static/src/js/anonymous.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/addons/anonymous/static/src/js/anonymous.js b/addons/anonymous/static/src/js/anonymous.js index 15c03a6ce63..5140429d030 100644 --- a/addons/anonymous/static/src/js/anonymous.js +++ b/addons/anonymous/static/src/js/anonymous.js @@ -4,8 +4,8 @@ openerp.anonymous = function(instance) { start: function() { var self = this; return $.when(this._super()).pipe(function() { - var dblist = self._db_list; - if (dblist && dblist.length === 1) { + var dblist = self._db_list || []; + if (!self.session.session_is_valid() && dblist.length === 1) { self.remember_credentials = false; // XXX get login/pass from server (via a rpc call) ? return self.do_login(dblist[0], 'anonymous', 'anonymous') @@ -30,8 +30,16 @@ openerp.anonymous = function(instance) { var p = self.getParent(); var am = p.action_manager; p.$element.find('.oe_leftbar').hide(); - am.do_action({type:'ir.actions.client', tag:'login', target: 'new'}); - am.dialog_widget.on('login', p, p.restart); + am.do_action({ + type:'ir.actions.client', + tag:'login', + target: 'new', + params: { + login_successful: function() { + am.do_action("reload"); + } + } + }); }); } }); From 2f9da3ba1e08db8e680df3d9e0a1056eb31fab22 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 2 Aug 2012 17:47:49 +0200 Subject: [PATCH 151/328] [IMP] rename module "anonymous" to "auth_anonymous" + recategorize auth modules bzr revid: chs@openerp.com-20120802154749-rl2240e8fak1457q --- addons/{anonymous => auth_anonymous}/__init__.py | 0 addons/{anonymous => auth_anonymous}/__openerp__.py | 8 ++++---- .../anonymous.xml => auth_anonymous/auth_anonymous.xml} | 0 .../static/src/js/auth_anonymous.js} | 4 ++-- .../static/src/xml/auth_anonymous.xml} | 2 +- addons/auth_reset_password/__openerp__.py | 4 ++-- addons/auth_signup/__openerp__.py | 4 ++-- addons/auth_signup/static/src/xml/auth_signup.xml | 2 +- addons/portal/__openerp__.py | 4 ++-- addons/portal/portal_data.xml | 2 +- addons/users_ldap/__openerp__.py | 2 +- 11 files changed, 16 insertions(+), 16 deletions(-) rename addons/{anonymous => auth_anonymous}/__init__.py (100%) rename addons/{anonymous => auth_anonymous}/__openerp__.py (64%) rename addons/{anonymous/anonymous.xml => auth_anonymous/auth_anonymous.xml} (100%) rename addons/{anonymous/static/src/js/anonymous.js => auth_anonymous/static/src/js/auth_anonymous.js} (93%) rename addons/{anonymous/static/src/xml/anonymous.xml => auth_anonymous/static/src/xml/auth_anonymous.xml} (90%) diff --git a/addons/anonymous/__init__.py b/addons/auth_anonymous/__init__.py similarity index 100% rename from addons/anonymous/__init__.py rename to addons/auth_anonymous/__init__.py diff --git a/addons/anonymous/__openerp__.py b/addons/auth_anonymous/__openerp__.py similarity index 64% rename from addons/anonymous/__openerp__.py rename to addons/auth_anonymous/__openerp__.py index 3494fca7a9f..95d98e65fea 100644 --- a/addons/anonymous/__openerp__.py +++ b/addons/auth_anonymous/__openerp__.py @@ -3,17 +3,17 @@ 'description': 'Allow anonymous access to OpenERP.', 'author': 'OpenERP SA', 'version': '1.0', - 'category': 'Tools', + 'category': 'Authentication', 'website': 'http://www.openerp.com', 'installable': True, 'depends': ['web'], 'data': [ - 'anonymous.xml', + 'auth_anonymous.xml', ], 'js': [ - 'static/src/js/anonymous.js', + 'static/src/js/auth_anonymous.js', ], 'qweb': [ - 'static/src/xml/anonymous.xml', + 'static/src/xml/auth_anonymous.xml', ], } diff --git a/addons/anonymous/anonymous.xml b/addons/auth_anonymous/auth_anonymous.xml similarity index 100% rename from addons/anonymous/anonymous.xml rename to addons/auth_anonymous/auth_anonymous.xml diff --git a/addons/anonymous/static/src/js/anonymous.js b/addons/auth_anonymous/static/src/js/auth_anonymous.js similarity index 93% rename from addons/anonymous/static/src/js/anonymous.js rename to addons/auth_anonymous/static/src/js/auth_anonymous.js index 5140429d030..fab2be1fd53 100644 --- a/addons/anonymous/static/src/js/anonymous.js +++ b/addons/auth_anonymous/static/src/js/auth_anonymous.js @@ -1,4 +1,4 @@ -openerp.anonymous = function(instance) { +openerp.auth_anonymous = function(instance) { instance.web.Login.include({ start: function() { @@ -19,7 +19,7 @@ openerp.anonymous = function(instance) { init: function(parent) { this._super(parent); if (this.session.username == 'anonymous') { - this.template = 'UserMenu.anonymous'; + this.template = 'UserMenu.auth_anonymous'; this.do_update = function() {}; // avoid change of avatar } }, diff --git a/addons/anonymous/static/src/xml/anonymous.xml b/addons/auth_anonymous/static/src/xml/auth_anonymous.xml similarity index 90% rename from addons/anonymous/static/src/xml/anonymous.xml rename to addons/auth_anonymous/static/src/xml/auth_anonymous.xml index 7429efff458..79d7efcbdc8 100644 --- a/addons/anonymous/static/src/xml/anonymous.xml +++ b/addons/auth_anonymous/static/src/xml/auth_anonymous.xml @@ -3,7 +3,7 @@ --> - +

  • @@ -19,7 +19,7 @@
  • Email
  • -
  • < Back
  • +
  • From 62827193a9c26f48ee2aae53d29ea0ba1d78b839 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Fri, 3 Aug 2012 19:17:59 +0200 Subject: [PATCH 166/328] wip fix part1 bzr revid: al@openerp.com-20120803171759-ihoxndrhdkpg62t9 --- addons/document_page/document_page.py | 151 ++++---------------------- 1 file changed, 23 insertions(+), 128 deletions(-) diff --git a/addons/document_page/document_page.py b/addons/document_page/document_page.py index 5a0a6a261af..3af2417b651 100644 --- a/addons/document_page/document_page.py +++ b/addons/document_page/document_page.py @@ -19,125 +19,44 @@ # ############################################################################## - from osv import fields, osv from tools.translate import _ import difflib import tools class document_page(osv.osv): - """ document.page """ - _name = "document.page" - -document_page() - -class document_page_type(osv.osv): - """ document page type """ - - _name = "document.page.type" - _description = "Document page type" + _inherit = "document.page" + _description = "Document Page" _order = 'name' - _columns = { - 'name':fields.char('Document Page Type', size=256, select=True, required=True), - 'page_ids':fields.one2many('document.page', 'parent_id', 'Pages'), - 'notes':fields.text("Description"), - 'create_date':fields.datetime("Created Date", select=True), - 'content_template': fields.text('Document Page Template'), - 'method':fields.selection([('list', 'List'), ('page', 'Home Page'), \ - ('tree', 'Tree')], 'Display Method', help="Define the default behaviour of the menu created on this group"), - 'home':fields.many2one('document.page', 'Home Page', help="Required to select home page if display method is Home Page"), - 'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True), - } - - _defaults = { - 'method': lambda *a: 'page', - } - - def open_document_page(self, cr, uid, ids, context=None): - - """ Opens document Page of Group - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of open document group’s IDs - @return: dictionay of open Document window on give group id - """ - if type(ids) in (int,long,): - ids = [ids] - group_id = False - if ids: - group_id = ids[0] - if not group_id: - return {} - value = { - 'name': 'Document Page', - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': 'document.page', - 'view_id': False, - 'type': 'ir.actions.act_window', - 'nodestroy': True, - } - group = self.browse(cr, uid, group_id, context=context) - value['domain'] = "[('parent_id','=',%d)]" % (group.id) - if group.method == 'page': - value['res_id'] = group.home.id - elif group.method == 'list': - value['view_type'] = 'form' - value['view_mode'] = 'tree,form' - elif group.method == 'tree': - view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'document.page.tree.children')]) - value['view_id'] = view_id - value['domain'] = [('parent_id', '=', group.id)] - value['view_type'] = 'tree' - value['view_mode'] = 'tree' - - return value -document_page_type() - - -class document_page2(osv.osv): - """ Document Page """ - - _inherit = "document.page" - _description = "Document Page" - _order = 'create_date desc' - _columns = { 'name': fields.char('Title', size=256, select=True, required=True), - 'write_uid': fields.many2one('res.users', "Last Contributor", select=True), + 'type':fields.selection([('normal','Content Page'), ('index','Index Page')], 'Type', help="Define the type of the document"), + + 'parent_id': fields.many2one('document.page', 'Section', select=1 , ondelete='set null'), + 'child_ids': fields.one2many('document.page', 'parent_id', 'Children'), + + 'display_content': fields.text('Displayed Content'), 'content': fields.text("Content"), - 'index': fields.char('Index', size=256), - 'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True), + 'history_ids': fields.one2many('document.page.history', 'document_id', 'History'), + 'menu_id': fields.many2one('ir.ui.menu', "Menu", readonly=True), + 'create_date': fields.datetime("Created on", select=True, readonly=True), - 'content_template': fields.text('Document Template'), 'write_date': fields.datetime("Modification Date", select=True, readonly=True), - 'tags': fields.char('Keywords', size=1024, select=True), - 'history_ids': fields.one2many('document.page.history', 'document_id', 'History Lines'), + 'write_uid': fields.many2one('res.users', "Last Contributor", select=True), + 'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True), + + 'index': fields.char('Index', size=256), 'minor_edit': fields.boolean('Minor edit', select=True), 'edit_summary': fields.char('Summary', size=256), - 'type':fields.selection([('normal','Content Page'), ('index','Index Page')], 'Type', help="Define the type of the document"), - 'review': fields.boolean('Needs Review', select=True, - help="Indicates that this page should be reviewed, raising the attention of other contributors"), - 'parent_id': fields.many2one('document.page.type', 'Parent Page', select=1 , ondelete='set null', help="Allows you to link with the topic"), - 'child_ids': fields.one2many('document.page', 'parent_id', 'Child Pages'), + 'tags': fields.char('Keywords', size=1024, select=True), + } _defaults = { 'type':'normal', - 'review': True, - 'minor_edit': True, - 'index' : 1, } - - def onchange_parent_id(self, cr, uid, ids, parent_id, content, context=None): - - """ @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of document page’s IDs - @return: dictionay of open document page on give page section """ - if (not parent_id) or content: return {} grp = self.pool.get('document.page.type').browse(cr, uid, parent_id, context=context) @@ -153,17 +72,11 @@ class document_page2(osv.osv): } def onchange_content(self, cr, uid, ids, content, context=None): - if content: return {'value':{'summary': content}} return {} - + def copy_data(self, cr, uid, id, default=None, context=None): - - """ @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param id: Give document page's ID """ - return super(document_page2, self).copy_data(cr, uid, id, {'document_id': False}, context) def create_history(self, cr, uid, ids, vals, context=None): @@ -171,7 +84,6 @@ class document_page2(osv.osv): history = self.pool.get('document.page.history') if vals.get('content'): res = { - 'minor_edit': vals.get('minor_edit', True), 'content': vals.get('content', ''), 'write_uid': uid, 'document_id': ids[0], @@ -181,40 +93,28 @@ class document_page2(osv.osv): return history_id def create(self, cr, uid, vals, context=None): - - """ @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, """ - document_id = super(document_page2, self).create(cr, uid, - vals, context) + document_id = super(document_page2, self).create(cr, uid, vals, context) self.create_history(cr, uid, [document_id], vals, context) return document_id def write(self, cr, uid, ids, vals, context=None): - - """ @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, """ result = super(document_page2, self).write(cr, uid, ids, vals, context) self.create_history(cr, uid, ids, vals, context) return result -document_page2() - class document_page_history(osv.osv): - """ Document Page History """ - _name = "document.page.history" _description = "Document Page History" _rec_name = "summary" _order = 'id DESC' _columns = { - 'create_date': fields.datetime("Date", select=True), - 'content': fields.text("Content"), - 'minor_edit': fields.boolean('This is a major edit ?', select=True), - 'summary': fields.char('Summary', size=256, select=True), - 'write_uid': fields.many2one('res.users', "Modify By", select=True), 'document_id': fields.many2one('document.page', 'Document Page', select=True) + 'summary': fields.char('Summary', size=256, select=True), + 'content': fields.text("Content"), + 'create_date': fields.datetime("Date", select=True), + 'write_uid': fields.many2one('res.users', "Modify By", select=True), } _defaults = { @@ -222,10 +122,6 @@ class document_page_history(osv.osv): } def getDiff(self, cr, uid, v1, v2, context=None): - - """ @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, """ - 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'] @@ -239,6 +135,5 @@ class document_page_history(osv.osv): diff = difflib.HtmlDiff() return diff.make_file(line1, line2, "Revision-%s" % (v1), "Revision-%s" % (v2), context=False) -document_page_history() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: From 206252d6067c66fa11693bc2001a68e23f560bd8 Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Fri, 3 Aug 2012 19:26:36 +0200 Subject: [PATCH 167/328] [IMP] fix a first batch of typos and spelling mistakes (listed by UCO on the 2012-08-01) bzr revid: abo@openerp.com-20120803172636-s23g6yturpb5chd6 --- addons/account/account.py | 22 +++++++++---------- addons/delivery/delivery.py | 2 +- .../marketing_campaign/marketing_campaign.py | 2 +- .../wizard/pos_open_statement.py | 10 ++++----- addons/product/product.py | 10 ++++----- addons/project/project.py | 4 ++-- 6 files changed, 25 insertions(+), 25 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index b2a4589b9cb..e018546f897 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -136,7 +136,7 @@ class account_account_type(osv.osv): def _get_current_report_type(self, cr, uid, ids, name, arg, context=None): obj_data = self.pool.get('ir.model.data') - obj_financial_report = self.pool.get('account.financial.report') + obj_financial_report = self.pool.get('account.financial.report') res = {} financial_report_ref = { 'asset': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_assets0')[1], context=context), @@ -154,7 +154,7 @@ class account_account_type(osv.osv): def _save_report_type(self, cr, uid, account_type_id, field_name, field_value, arg, context=None): obj_data = self.pool.get('ir.model.data') - obj_financial_report = self.pool.get('account.financial.report') + obj_financial_report = self.pool.get('account.financial.report') #unlink if it exists somewhere in the financial reports related to BS or PL financial_report_ref = { 'asset': obj_financial_report.browse(cr, uid, obj_data.get_object_reference(cr, uid, 'account','account_financial_report_assets0')[1], context=context), @@ -179,7 +179,7 @@ class account_account_type(osv.osv): 'Balance' will generally be used for cash accounts. 'Detail' will copy each existing journal item of the previous year, even the reconciled ones. 'Unreconciled' will copy only the journal items that were unreconciled on the first day of the new fiscal year."""), - 'report_type': fields.function(_get_current_report_type, fnct_inv=_save_report_type, type='selection', string='P&L / BS Category', + 'report_type': fields.function(_get_current_report_type, fnct_inv=_save_report_type, type='selection', string='P&L / BS Category', selection= [('none','/'), ('income', _('Profit & Loss (Income account)')), ('expense', _('Profit & Loss (Expense account)')), @@ -2742,7 +2742,7 @@ class account_chart_template(osv.osv): _columns={ 'name': fields.char('Name', size=64, required=True), 'parent_id': fields.many2one('account.chart.template', 'Parent Chart Template'), - 'code_digits': fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"), + 'code_digits': fields.integer('# of Digits', required=True, help="No. of Digits to use for account code"), 'visible': fields.boolean('Can be Visible?', help="Set this to False if you don't want this template to be used actively in the wizard that generate Chart of Accounts from templates, this is useful when you want to generate accounts of this template only when loading its child template."), 'complete_tax_set': fields.boolean('Complete Set of Taxes', help='This boolean helps you to choose if you want to propose to the user to encode the sale and purchase rates or choose from list of taxes. This last choice assumes that the set of tax defined on this template is complete'), 'account_root_id': fields.many2one('account.account.template', 'Root Account', domain=[('parent_id','=',False)]), @@ -3026,7 +3026,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): return res def default_get(self, cr, uid, fields, context=None): - res = super(wizard_multi_charts_accounts, self).default_get(cr, uid, fields, context=context) + res = super(wizard_multi_charts_accounts, self).default_get(cr, uid, fields, context=context) tax_templ_obj = self.pool.get('account.tax.template') if 'bank_accounts_id' in fields: @@ -3102,7 +3102,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): # Get the analytic journal data = False if journal_type in ('sale', 'sale_refund'): - data = obj_data.get_object_reference(cr, uid, 'account', 'analytic_journal_sale') + data = obj_data.get_object_reference(cr, uid, 'account', 'analytic_journal_sale') elif journal_type in ('purchase', 'purchase_refund'): pass elif journal_type == 'general': @@ -3128,7 +3128,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): if journal_type in ('general', 'situation'): data = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_view') elif journal_type in ('sale_refund', 'purchase_refund'): - data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_refund_journal_view') + data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_refund_journal_view') else: data = obj_data.get_object_reference(cr, uid, 'account', 'account_sp_journal_view') return data and data[1] or False @@ -3357,7 +3357,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): def _prepare_bank_journal(self, cr, uid, line, current_num, default_account_id, company_id, context=None): ''' - This function prepares the value to use for the creation of a bank journal created through the wizard of + This function prepares the value to use for the creation of a bank journal created through the wizard of generating COA from templates. :param line: dictionary containing the values encoded by the user related to his bank account @@ -3375,9 +3375,9 @@ class wizard_multi_charts_accounts(osv.osv_memory): tmp = obj_data.get_object_reference(cr, uid, 'account', 'account_journal_bank_view') view_id_cash = tmp and tmp[1] or False - # we need to loop again to find next number for journal code + # we need to loop again to find next number for journal code # because we can't rely on the value current_num as, - # its possible that we already have bank journals created (e.g. by the creation of res.partner.bank) + # its possible that we already have bank journals created (e.g. by the creation of res.partner.bank) # and the next number for account code might have been already used before for journal for num in xrange(current_num, 100): # journal_code has a maximal size of 5, hence we can enforce the boundary num < 100 @@ -3464,7 +3464,7 @@ class wizard_multi_charts_accounts(osv.osv_memory): journal_data.append(vals) ref_acc_bank = obj_wizard.chart_template_id.bank_account_view_id if journal_data and not ref_acc_bank.code: - raise osv.except_osv(_('Configuration Error !'), _('The bank account defined on the selected chart of accounts hasnot a code.')) + raise osv.except_osv(_('Configuration Error !'), _('You have to set a code for the bank account defined on the selected chart of accounts.')) current_num = 1 for line in journal_data: diff --git a/addons/delivery/delivery.py b/addons/delivery/delivery.py index b03bb095d5d..d6d584aa62e 100644 --- a/addons/delivery/delivery.py +++ b/addons/delivery/delivery.py @@ -217,7 +217,7 @@ class delivery_grid(osv.osv): ok = True break if not ok: - raise osv.except_osv(_('No price available!'), _('No line matched this product or order in the choosed delivery grid.')) + raise osv.except_osv(_('No price available!'), _('No line matched this product or order in the chosen delivery grid.')) return price diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py index 30fb1ecf358..e268f3db5dd 100644 --- a/addons/marketing_campaign/marketing_campaign.py +++ b/addons/marketing_campaign/marketing_campaign.py @@ -539,7 +539,7 @@ class marketing_campaign_transition(osv.osv): assert len(ids) == 1 transition = self.browse(cr, uid, ids[0], context=context) if transition.trigger != 'time': - raise ValueError('Delta is only relevant for timed transiton.') + raise ValueError('Delta is only relevant for timed transition.') return relativedelta(**{str(transition.interval_type): transition.interval_nbr}) diff --git a/addons/point_of_sale/wizard/pos_open_statement.py b/addons/point_of_sale/wizard/pos_open_statement.py index a5f4ae252d8..572f6470c34 100644 --- a/addons/point_of_sale/wizard/pos_open_statement.py +++ b/addons/point_of_sale/wizard/pos_open_statement.py @@ -46,7 +46,7 @@ class pos_open_statement(osv.osv_memory): st_ids = [] j_ids = journal_obj.search(cr, uid, [('journal_user','=',1)], context=context) if not j_ids: - raise osv.except_osv(_('No Cash Register Defined !'), _('You must define which payment method must be available through the point of sale by reusing existing bank and cash through "Accounting > Configuration > Financial Accounting > Journals". Select a journal and check the field "PoS Payment Method" from the "Point of Sale" tab. You can also create new payment methods directly from menu "PoS Backend > Configuration > Payment Methods".')) + raise osv.except_osv(_('No Cash Register Defined !'), _('You have to define which payment method must be available in the point of sale by reusing existing bank and cash through "Accounting / Configuration / Journals / Journals". Select a journal and check the field "PoS Payment Method" from the "Point of Sale" tab. You can also create new payment methods directly from menu "PoS Backend / Configuration / Payment Methods".')) for journal in journal_obj.browse(cr, uid, j_ids, context=context): ids = statement_obj.search(cr, uid, [('state', '!=', 'confirm'), ('user_id', '=', uid), ('journal_id', '=', journal.id)], context=context) @@ -60,11 +60,11 @@ class pos_open_statement(osv.osv_memory): 'journal_id': journal.id, 'user_id': uid, 'state': 'draft', - 'name': number + 'name': number }) statement_id = statement_obj.create(cr, uid, data, context=context) st_ids.append(int(statement_id)) - + if journal.opening_control: statement_obj.button_open(cr, uid, [statement_id], context) @@ -74,7 +74,7 @@ class pos_open_statement(osv.osv_memory): form_id = form_res and form_res[1] or False search_res = mod_obj.get_object_reference(cr, uid, 'account', 'view_account_bank_statement_filter') search_id = search_res and search_res[1] or False - + return { 'type': 'ir.actions.act_window', 'name': _('List of Cash Registers'), @@ -85,7 +85,7 @@ class pos_open_statement(osv.osv_memory): 'views': [(tree_id, 'tree'), (form_id, 'form')], 'search_view_id': search_id, } - + pos_open_statement() # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/product/product.py b/addons/product/product.py index 09f2f6f877a..7911929f898 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -167,7 +167,7 @@ class product_uom(osv.osv): if value == 'reference': return {'value': {'factor': 1, 'factor_inv': 1}} return {} - + def write(self, cr, uid, ids, vals, context=None): if 'category_id' in vals: for uom in self.browse(cr, uid, ids, context=context): @@ -231,7 +231,7 @@ class product_category(osv.osv): _parent_store = True _parent_order = 'sequence, name' _order = 'parent_left' - + def _check_recursion(self, cr, uid, ids, context=None): level = 100 while len(ids): @@ -330,7 +330,7 @@ class product_template(osv.osv): for product in self.browse(cr, uid, ids, context=context): old_uom = product.uom_po_id if old_uom.category_id.id != new_uom.category_id.id: - raise osv.except_osv(_('Unit of Measure categories Mismatch!'), _("New Unit of Measure '%s' must belong to same Unit of Measure category '%s' as of old Unit of Measure '%s'. If you need to change the unit of measure, you may desactivate this product from the 'Procurement & Locations' tab and create a new one.") % (new_uom.name, old_uom.category_id.name, old_uom.name,)) + raise osv.except_osv(_('Unit of Measure categories Mismatch!'), _("New Unit of Measure '%s' must belong to same Unit of Measure category '%s' as of old Unit of Measure '%s'. If you need to change the unit of measure, you may deactivate this product from the 'Procurement & Locations' tab and create a new one.") % (new_uom.name, old_uom.category_id.name, old_uom.name,)) return super(product_template, self).write(cr, uid, ids, vals, context=context) _defaults = { @@ -461,8 +461,8 @@ class product_product(osv.osv): res[p.id] = (data['code'] and ('['+data['code']+'] ') or '') + \ (data['name'] or '') + (data['variants'] and (' - '+data['variants']) or '') return res - - + + def _get_main_product_supplier(self, cr, uid, product, context=None): """Determines the main (best) product supplier for ``product``, returning the corresponding ``supplierinfo`` record, or False diff --git a/addons/project/project.py b/addons/project/project.py index dda2b86c8bb..7bcfa5c1c92 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -155,7 +155,7 @@ class project(osv.osv): def unlink(self, cr, uid, ids, *args, **kwargs): for proj in self.browse(cr, uid, ids): if proj.tasks: - raise osv.except_osv(_('Operation Not Permitted !'), _('You cannot delete a project containing tasks. I suggest you to desactivate it.')) + raise osv.except_osv(_('Operation Not Permitted !'), _('You cannot delete a project containing tasks. You can either delete all the project\'s tasks and then delete the project or simply deactivate the project.')) return super(project, self).unlink(cr, uid, ids, *args, **kwargs) def _task_count(self, cr, uid, ids, field_name, arg, context=None): @@ -1227,7 +1227,7 @@ class account_analytic_account(osv.osv): 'use_tasks': fields.boolean('Tasks Mgmt.',help="If check,this contract will be available in the project menu and you will be able to manage tasks or track issues"), 'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'), } - + def on_change_template(self, cr, uid, ids, template_id, context=None): res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, context=context) if template_id and 'value' in res: From b55ca0fad10a68916e52f5d4ffaee969018173b6 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Sun, 5 Aug 2012 15:54:20 +0200 Subject: [PATCH 168/328] Did better images bzr revid: nicolas.vanhoren@openerp.com-20120805135420-ra5m523lpen8n2sk --- .../static/src/img/ghost_profile_60x60_v1.png | Bin 0 -> 349 bytes addons/web_linkedin/static/src/js/linkedin.js | 12 ++++++------ addons/web_linkedin/static/src/xml/linkedin.xml | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) create mode 100644 addons/web_linkedin/static/src/img/ghost_profile_60x60_v1.png diff --git a/addons/web_linkedin/static/src/img/ghost_profile_60x60_v1.png b/addons/web_linkedin/static/src/img/ghost_profile_60x60_v1.png new file mode 100644 index 0000000000000000000000000000000000000000..6662a87462b52a17eaf8db3c7685e944fc920f94 GIT binary patch literal 349 zcmV-j0iyniP)r#&@uf3gh;HXav(8~=9S?h6VT;KN(Q!ES;@ebD=XPl zux4pr6|B*dP5N9lYid+F!!*arjoy*j!47?4#z=*g+H`eSftdL9Eh)sNOFY)qs<9F$ zu3rX=0n}q5j$E_~$AW=u)g)_=>HXCF&gih3_hZOS3k(S&f&>qWesY{y^~kZB^xarN v_k`(!Z)~v@d*KnA84qY|M`8Qe5Et?U8bw;r?F+Hf00000NkvXXu0mjfb#R|> literal 0 HcmV?d00001 diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index af78c17992a..b1e91b05810 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -110,10 +110,11 @@ openerp.web_linkedin = function(instance) { var self = this; cdef = $.Deferred(); pdef = $.Deferred(); - IN.API.Raw(_.str.sprintf("company-search?keywords=%s&count=%d", encodeURI(this.text), this.limit)).result(function (result) { + IN.API.Raw(_.str.sprintf("company-search:(companies:(id,name,logo-url))?keywords=%s&count=%d", encodeURI(this.text), this.limit)).result(function (result) { cdef.resolve(result); }); - IN.API.PeopleSearch().params({"keywords": this.text, "count": this.limit}).result(function(result) { + IN.API.PeopleSearch().fields(["id", "first-name", "last-name","picture-url"]). + params({"keywords": this.text, "count": this.limit}).result(function(result) { pdef.resolve(result); }); return $.when(cdef, pdef).then(function(companies, people) { @@ -129,7 +130,7 @@ openerp.web_linkedin = function(instance) { el.__type = "people"; return el; }); - lst = lst.concat(plst); + lst = plst.concat(lst); console.log("Linkedin search found:", lst.length, lst); self.result = lst; self.display_result(); @@ -169,11 +170,10 @@ openerp.web_linkedin = function(instance) { }); if (this.data.__type === "company") { this.$("h3").text(this.data.name); - IN.API.Raw(_.str.sprintf("companies/%d:(logo-url)", this.data.id)).result(function (result) { - self.$("img").attr("src", result.logoUrl); - }); + self.$("img").attr("src", this.data.logoUrl); } else { // people this.$("h3").text(_.str.sprintf("%s %s", this.data.firstName, this.data.lastName)); + self.$("img").attr("src", this.data.pictureUrl); } }, }); diff --git a/addons/web_linkedin/static/src/xml/linkedin.xml b/addons/web_linkedin/static/src/xml/linkedin.xml index 6f42d224c66..eb547029877 100644 --- a/addons/web_linkedin/static/src/xml/linkedin.xml +++ b/addons/web_linkedin/static/src/xml/linkedin.xml @@ -17,7 +17,7 @@
    - +

    From d3e2a13c17ce69dc37f7fe58e1d0fc6854e8ff45 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Sun, 5 Aug 2012 16:03:32 +0200 Subject: [PATCH 169/328] Corrected small bug bzr revid: nicolas.vanhoren@openerp.com-20120805140332-mfldrt9zx38b68ww --- addons/web_linkedin/static/src/js/linkedin.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index b1e91b05810..013ad888cb9 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -118,14 +118,14 @@ openerp.web_linkedin = function(instance) { pdef.resolve(result); }); return $.when(cdef, pdef).then(function(companies, people) { - var lst = companies.companies.values; - var plst = people.people.values; + var lst = companies.companies.values || []; + var plst = people.people.values || []; lst = _.initial(lst, _.min([self.limit / 2, plst.length])); _.map(lst, function(el) { el.__type = "company"; return el; }); - plst = _.first(people.people.values, self.limit - lst.length) + plst = _.first(plst, self.limit - lst.length) _.map(plst, function(el) { el.__type = "people"; return el; From 873b4913596e8e67ad8a0c7c50be09d89bcb2b6b Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 12:07:30 +0200 Subject: [PATCH 170/328] wip bzr revid: nicolas.vanhoren@openerp.com-20120806100730-jnsx4mx6o9ykdz2y --- addons/web_linkedin/static/src/js/linkedin.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 013ad888cb9..cd9a8882497 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -82,19 +82,22 @@ openerp.web_linkedin = function(instance) { }); }, selected_entity: function(entity) { + var to_change = {}; if (entity.__type === "company") { - + to_change.name = entity.name; } else { //people - + to_change.name = _.str.sprintf("%s %s", entity.firstName, entity.lastName); } + this.view.on_processed_onchange({value:to_change}); }, }); + instance.web.form.widgets.add('linkedin', 'instance.web_linkedin.Linkedin'); instance.web_linkedin.LinkedinPopup = instance.web.Dialog.extend({ template: "Linkedin.popup", init: function(parent, text) { - this._super(parent); + this._super(parent, {title:_t("LinkedIn search")}); this.text = text; this.limit = 15; }, @@ -151,6 +154,7 @@ openerp.web_linkedin = function(instance) { pc.$element.css("width", "20%"); pc.on("selected", self, function(data) { self.trigger("selected", data); + self.destroy(); }); i++; }); From 3bbe3ddbd5d8bab3938351ba75aaf06c86c18a02 Mon Sep 17 00:00:00 2001 From: "pso (OpenERP)" Date: Mon, 6 Aug 2012 16:12:04 +0530 Subject: [PATCH 171/328] Improvements bzr revid: pso@tinyerp.com-20120806104204-yd7mqqttglgaer8h --- addons/project/project.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/project/project.py b/addons/project/project.py index 7bcfa5c1c92..13810c2bf87 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -155,7 +155,7 @@ class project(osv.osv): def unlink(self, cr, uid, ids, *args, **kwargs): for proj in self.browse(cr, uid, ids): if proj.tasks: - raise osv.except_osv(_('Operation Not Permitted !'), _('You cannot delete a project containing tasks. You can either delete all the project\'s tasks and then delete the project or simply deactivate the project.')) + raise osv.except_osv(_('Operation Not Permitted !'), _('You cannot delete a project containing tasks. You can either delete all the project\'s tasks and then delete the project or simply deactivate the project.')) return super(project, self).unlink(cr, uid, ids, *args, **kwargs) def _task_count(self, cr, uid, ids, field_name, arg, context=None): From 7c51b1811d075e9a9d423fa924b120c91046ad05 Mon Sep 17 00:00:00 2001 From: "Mayur Maheshwari (OpenERP)" Date: Mon, 6 Aug 2012 16:33:07 +0530 Subject: [PATCH 172/328] [FIX]all :set a no_open widget in this filed(country_id,state_id,title,context_id,timebox_id,user_id) bzr revid: mma@tinyerp.com-20120806110307-nj7qipixr14puhub --- addons/account/account_invoice_view.xml | 4 ++-- addons/account/account_view.xml | 4 ++-- addons/account/partner_view.xml | 4 ++-- .../account_analytic_default_view.xml | 2 +- addons/account_asset/account_asset_view.xml | 2 +- addons/account_coda/account_coda_view.xml | 2 +- addons/account_payment/account_payment_view.xml | 2 +- .../analytic_user_function_view.xml | 4 ++-- addons/audittrail/audittrail_view.xml | 4 ++-- addons/base_calendar/base_calendar_view.xml | 4 ++-- addons/base_calendar/crm_meeting_view.xml | 6 +++--- addons/caldav/caldav_view.xml | 4 ++-- addons/crm/crm_lead_view.xml | 16 ++++++++-------- addons/crm/crm_phonecall_view.xml | 2 +- addons/crm/crm_report_view.xml | 6 +++--- addons/crm/crm_view.xml | 2 +- .../crm/wizard/crm_lead_to_opportunity_view.xml | 2 +- .../crm/wizard/crm_merge_opportunities_view.xml | 2 +- .../wizard/crm_opportunity_to_phonecall_view.xml | 2 +- .../wizard/crm_phonecall_to_phonecall_view.xml | 2 +- addons/crm_claim/crm_claim_view.xml | 2 +- addons/crm_helpdesk/crm_helpdesk_view.xml | 2 +- .../wizard/crm_forward_to_partner_view.xml | 2 +- addons/document/document_view.xml | 6 +++--- addons/event/event_view.xml | 2 +- addons/hr/hr_view.xml | 4 ++-- addons/hr_evaluation/hr_evaluation_view.xml | 4 ++-- addons/hr_recruitment/hr_recruitment_view.xml | 2 +- addons/hr_timesheet/hr_timesheet_view.xml | 2 +- .../report/hr_timesheet_invoice_report_view.xml | 8 ++++---- .../hr_timesheet_sheet_view.xml | 4 ++-- addons/lunch/lunch_view.xml | 4 ++-- addons/mail/mail_message_view.xml | 2 +- addons/mrp/mrp_view.xml | 2 +- addons/point_of_sale/point_of_sale_view.xml | 14 +++++++------- addons/point_of_sale/wizard/pos_box_entries.xml | 2 +- addons/point_of_sale/wizard/pos_box_out.xml | 2 +- .../wizard/pos_payment_report_user_view.xml | 2 +- addons/point_of_sale/wizard/pos_sales_user.xml | 2 +- addons/portal_crm/wizard/contact_view.xml | 4 ++-- addons/project/project_view.xml | 6 +++--- .../wizard/project_task_delegate_view.xml | 2 +- addons/project_gtd/project_gtd_view.xml | 4 ++-- .../project_gtd/wizard/project_gtd_fill_view.xml | 2 +- addons/project_issue/project_issue_view.xml | 2 +- .../project_long_term/project_long_term_view.xml | 4 ++-- .../purchase_requisition_view.xml | 2 +- addons/resource/resource_view.xml | 2 +- addons/sale/sale_view.xml | 2 +- addons/stock/stock_view.xml | 2 +- addons/stock_planning/stock_planning_view.xml | 2 +- addons/subscription/subscription_view.xml | 2 +- addons/survey/survey_view.xml | 6 +++--- 53 files changed, 93 insertions(+), 93 deletions(-) diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 501a50b96c2..035c44ec4ed 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -249,7 +249,7 @@ - + @@ -385,7 +385,7 @@ - + - + @@ -2638,7 +2638,7 @@ action = pool.get('res.config').next(cr, uid, [], context) - + diff --git a/addons/account/partner_view.xml b/addons/account/partner_view.xml index 1e360f6c742..d44c7c460c7 100644 --- a/addons/account/partner_view.xml +++ b/addons/account/partner_view.xml @@ -109,8 +109,8 @@

    - - + +
    diff --git a/addons/account_analytic_default/account_analytic_default_view.xml b/addons/account_analytic_default/account_analytic_default_view.xml index 3e2ba0fe5f3..0bc0cd0c3bb 100644 --- a/addons/account_analytic_default/account_analytic_default_view.xml +++ b/addons/account_analytic_default/account_analytic_default_view.xml @@ -31,7 +31,7 @@ - + diff --git a/addons/account_asset/account_asset_view.xml b/addons/account_asset/account_asset_view.xml index cdc772ad65d..50c0443b02a 100644 --- a/addons/account_asset/account_asset_view.xml +++ b/addons/account_asset/account_asset_view.xml @@ -254,7 +254,7 @@ - + diff --git a/addons/account_coda/account_coda_view.xml b/addons/account_coda/account_coda_view.xml index 07f397c663f..b4b8e7796c2 100644 --- a/addons/account_coda/account_coda_view.xml +++ b/addons/account_coda/account_coda_view.xml @@ -249,7 +249,7 @@ - + diff --git a/addons/account_payment/account_payment_view.xml b/addons/account_payment/account_payment_view.xml index 5395bcafb17..dd9a78b261a 100644 --- a/addons/account_payment/account_payment_view.xml +++ b/addons/account_payment/account_payment_view.xml @@ -120,7 +120,7 @@
    - + diff --git a/addons/analytic_user_function/analytic_user_function_view.xml b/addons/analytic_user_function/analytic_user_function_view.xml index 9c6e89d1bda..036fe7c29ff 100644 --- a/addons/analytic_user_function/analytic_user_function_view.xml +++ b/addons/analytic_user_function/analytic_user_function_view.xml @@ -90,7 +90,7 @@ - + @@ -114,7 +114,7 @@ - + diff --git a/addons/audittrail/audittrail_view.xml b/addons/audittrail/audittrail_view.xml index 65eca09a9a1..55c97760544 100644 --- a/addons/audittrail/audittrail_view.xml +++ b/addons/audittrail/audittrail_view.xml @@ -30,7 +30,7 @@ - + @@ -97,7 +97,7 @@ - + diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml index d48795173ed..151d64f6370 100644 --- a/addons/base_calendar/base_calendar_view.xml +++ b/addons/base_calendar/base_calendar_view.xml @@ -34,7 +34,7 @@ - + @@ -222,7 +222,7 @@ - + diff --git a/addons/base_calendar/crm_meeting_view.xml b/addons/base_calendar/crm_meeting_view.xml index d3371ad602a..96a13c4bcc6 100644 --- a/addons/base_calendar/crm_meeting_view.xml +++ b/addons/base_calendar/crm_meeting_view.xml @@ -99,7 +99,7 @@ - + @@ -232,7 +232,7 @@ - + @@ -277,7 +277,7 @@ - + diff --git a/addons/caldav/caldav_view.xml b/addons/caldav/caldav_view.xml index a45a2231738..eb89469ca19 100644 --- a/addons/caldav/caldav_view.xml +++ b/addons/caldav/caldav_view.xml @@ -10,7 +10,7 @@
    - + @@ -84,7 +84,7 @@ - + diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index dd2ef7bd9e8..cf2466c4f13 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -166,15 +166,15 @@
    - - + +

    - + @@ -496,7 +496,7 @@ - + @@ -526,10 +526,10 @@
    - +
    - +
    @@ -537,7 +537,7 @@
    - + diff --git a/addons/crm/crm_report_view.xml b/addons/crm/crm_report_view.xml index eaed4564424..8d6f37340f5 100644 --- a/addons/crm/crm_report_view.xml +++ b/addons/crm/crm_report_view.xml @@ -120,7 +120,7 @@ - + @@ -204,7 +204,7 @@ - + @@ -289,7 +289,7 @@ - + diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 6857f743e90..47ffffb35bf 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -90,7 +90,7 @@ - + diff --git a/addons/crm/wizard/crm_lead_to_opportunity_view.xml b/addons/crm/wizard/crm_lead_to_opportunity_view.xml index 5ad9ef1c9c9..6098fe0779a 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity_view.xml +++ b/addons/crm/wizard/crm_lead_to_opportunity_view.xml @@ -18,7 +18,7 @@ - + diff --git a/addons/crm/wizard/crm_merge_opportunities_view.xml b/addons/crm/wizard/crm_merge_opportunities_view.xml index 74973193f24..6bc4feff3b6 100644 --- a/addons/crm/wizard/crm_merge_opportunities_view.xml +++ b/addons/crm/wizard/crm_merge_opportunities_view.xml @@ -15,7 +15,7 @@ - + diff --git a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml index ccabcde88fe..92ecfa312e3 100644 --- a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml +++ b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml @@ -23,7 +23,7 @@ domain="[('object_id.model', '=', 'crm.phonecall')]" groups="base.group_no_one"/> - + diff --git a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml index 25f7dd0ba81..4fb54d731d4 100644 --- a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml +++ b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml @@ -15,7 +15,7 @@ - +
    diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml index 930c08408cd..da3d20424a7 100644 --- a/addons/crm_claim/crm_claim_view.xml +++ b/addons/crm_claim/crm_claim_view.xml @@ -131,7 +131,7 @@ - + diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml index 0fb0cbf825f..c23ca566f9f 100644 --- a/addons/crm_helpdesk/crm_helpdesk_view.xml +++ b/addons/crm_helpdesk/crm_helpdesk_view.xml @@ -50,7 +50,7 @@ - + diff --git a/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml b/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml index e70a053305f..8c89297f8ec 100644 --- a/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml +++ b/addons/crm_partner_assign/wizard/crm_forward_to_partner_view.xml @@ -16,7 +16,7 @@ + on_change="on_change_email(user_id)" options='{"no_open": true}'/> diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index 8dab7756b91..3a9963c56c2 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -11,7 +11,7 @@ - + @@ -73,7 +73,7 @@ - + @@ -235,7 +235,7 @@ - + diff --git a/addons/event/event_view.xml b/addons/event/event_view.xml index f3a0c5b321e..02f996c6aac 100644 --- a/addons/event/event_view.xml +++ b/addons/event/event_view.xml @@ -477,7 +477,7 @@ - + diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index a989cd40d27..e1de861d807 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -49,7 +49,7 @@ - + @@ -67,7 +67,7 @@ - + diff --git a/addons/hr_evaluation/hr_evaluation_view.xml b/addons/hr_evaluation/hr_evaluation_view.xml index 6d54e6278b1..70a272009fc 100644 --- a/addons/hr_evaluation/hr_evaluation_view.xml +++ b/addons/hr_evaluation/hr_evaluation_view.xml @@ -180,7 +180,7 @@ - + @@ -289,7 +289,7 @@ - + diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index 4c28e711a79..c3a143d8370 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -154,7 +154,7 @@ - + diff --git a/openerp/addons/base/res/res_company_view.xml b/openerp/addons/base/res/res_company_view.xml index 8637da10f4c..30210c6ba46 100644 --- a/openerp/addons/base/res/res_company_view.xml +++ b/openerp/addons/base/res/res_company_view.xml @@ -51,10 +51,10 @@
    - +
    - +
    diff --git a/openerp/addons/base/res/res_country_view.xml b/openerp/addons/base/res/res_country_view.xml index efb3b9eca06..3891e0782fe 100644 --- a/openerp/addons/base/res/res_country_view.xml +++ b/openerp/addons/base/res/res_country_view.xml @@ -71,7 +71,7 @@ - + diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index 9ea9658403a..4111d4cbc1f 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -133,10 +133,10 @@
    - +
    - +
    @@ -210,7 +210,7 @@ - + From 9d15842745237d20aff5e425a3ca3c8acbf17fb9 Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Mon, 6 Aug 2012 14:21:50 +0200 Subject: [PATCH 174/328] [ADD] Added some imgs to draw the stagesbar accordingly to the new design, very awful (just for testing)). bzr revid: vta@openerp.com-20120806122150-sqq650v7vmvy34i6 --- addons/web/static/src/img/form_steps_blue_red.png | Bin 0 -> 412 bytes addons/web/static/src/img/form_steps_reb_blue.png | Bin 0 -> 424 bytes .../web/static/src/img/form_steps_separator.png | Bin 0 -> 544 bytes .../static/src/img/form_steps_separator_v2.png | Bin 0 -> 652 bytes addons/web/static/src/js/view_form.js | 8 +++++--- addons/web/static/src/xml/base.xml | 7 +++++-- 6 files changed, 10 insertions(+), 5 deletions(-) create mode 100644 addons/web/static/src/img/form_steps_blue_red.png create mode 100644 addons/web/static/src/img/form_steps_reb_blue.png create mode 100644 addons/web/static/src/img/form_steps_separator.png create mode 100644 addons/web/static/src/img/form_steps_separator_v2.png diff --git a/addons/web/static/src/img/form_steps_blue_red.png b/addons/web/static/src/img/form_steps_blue_red.png new file mode 100644 index 0000000000000000000000000000000000000000..52dff9ded8b087976a143e6a8bcc452f1f70b545 GIT binary patch literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^Ahs+A8<3p*@b5ez#aJBV?!>U}oXkrghb_t5-G!lx zp_5_Pao5a?KoQOYkH}&M25w;xW@MN(M*=9wUgGKN%6^A~jhn%!V&k0-peZt*E{-7< zr(36N^kOj-aqa)TYyg5;htYIqPn5jaf$1x(&q^}(H7W<1 zdp51*w?AO{VS@3cUjfV=yCQ|&6f?wh>^iG*-JtsFTibirly8z7 zJfy0#+4pqp`mJ)~aQcCDD{gx>H4DDd0jlP!>DZNdj^hLOA5qOiQ;Znxnr}^>Q^*&i zmTt224fEp#-}J)M?rrbOKQ^U^cMbbiJ1#!1oF`#FcIXJO`f3I{Ok)i?rv0Gc>Ybxq zOtB&+OLLglJHE9jj}e`)@AWPx#24YJ`L;$(~Jpea1I(P;E000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn- z3jiBB14QHi00AgTL_t(I%Y~FNOT;i3K%e(@auM9b$>Dy0B&(yd;ChG-2Tr2XA>okV zP{rw>q6kW-bH7;%qHBAd#UJ484@hz8L6Ii;#`1W4uOV40iXsDEs?ya2W&peaIguGS zYZkzl(lUt|0WN@ZrDYfdoi#te6nKgman|GjO3OG1wsQ(xDJ@$;&{^{h+yhz6h_mJn z*il*zy5AGe?qgsPG`7|ncvV^+gJ26^0{cqKUJ&f8kViph%{%a+w2Wd#fM1|VLWJ0K z2z=H{w;40efa|8=co4810^3#T9%3=Gw%UI(V$)k-qbgnL{o!rENxgLIu_Jt51$aTR z=?IWjK*)Flob~OU^aRx2s~|Sr1&;m)^cgc?(lpGyx3CSMD&0Kx04QHTcm4o-#b8#_ SN+p;80000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn- z3Oqzl3dq9kmp`~V?M!YQ;D(hB|ntAMSb*xW2}vpZ*|nJHf0`yIY}XXZ{sjBt!g z?bis$rIc2#!3DT`WS8c*4xQ9(43T1@3n!;ube6;ZesTj;@Pn6AtUg>O+!lh+Zk> z7T2FD;sB2mSu5AfDB`kX5i_~#gb(o?50Z2#*WCCk*y&Kj2s_h7Obdtg`Lsh3N-3w= ihyD>>b$FX};{E|GB8iwrZuHFn0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn- z3rv2TCAd2jxG zI|UJG0{iuPy+ba7ARx;!vMi(5>+J&jTI(*B2!KyOD@{{u%jiU;=mNe2j{E(7!v?HY ztB1fbaL)w`IuTJeAV3#rPbQO>`4_W5rBnxK1KTbjz++%7Ns>#p z4_PU7A6OHSi!R`wX-h5K5l_eRRNxSP0gjR+*>Y6*88`y21s=O6KYbytBJ@Y?3`>FKVq$Jy-wvDW$optL~r z0QjJk`sS$aDWJ60-%YNxz=#`R7%q7j@fA4Zn&mxDBle6DHsB^u^e|!zC~B?$oApx8 zh;3jU=s2n~I&45=M90&Jt_^q&xE_XK%>g?Pya&#@E~zHa@GznYH1bB|ft%Am##;{~ m&|0@$7ySj`w#P(x>HY!|yl=5cwizb?0000
  • - - + + + + +
  • From 6d6e66cfc1758444c635e3e4abd55ca16e3e9dbe Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Aug 2012 15:02:20 +0200 Subject: [PATCH 175/328] [IMP] fixme comment bzr revid: xmo@openerp.com-20120806130220-6s525hr0jolzenv9 --- openerp/tests/test_export.py | 1 + 1 file changed, 1 insertion(+) diff --git a/openerp/tests/test_export.py b/openerp/tests/test_export.py index e545fe24c61..b8e33b418a6 100644 --- a/openerp/tests/test_export.py +++ b/openerp/tests/test_export.py @@ -577,6 +577,7 @@ class test_m2m(CreatorCase): self.assertEqual( self.export(self.commands, fields=['const', 'value']), [[ # FIXME: hardcoded comma, import uses config.csv_internal_sep + # resolution: remove configurable csv_internal_sep u'4', u','.join(self.names) ]]) From 346397530da50bcbb0bc8d3248212b7756a5ba13 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Mon, 6 Aug 2012 15:27:31 +0200 Subject: [PATCH 176/328] [FIX] weird dict.update calls bzr revid: xmo@openerp.com-20120806132731-ck4usrs99qlh1pq9 --- openerp/osv/orm.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 02a13a41dcb..31d68b64911 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -2434,9 +2434,9 @@ class BaseModel(object): context=context) result_template = dict.fromkeys(aggregated_fields, False) - result_template.update({groupby + '_count':0}) + result_template[groupby + '_count'] = 0 if groupby_list and len(groupby_list) > 1: - result_template.update(__context={'group_by': groupby_list[1:]}) + result_template['__context'] = {'group_by': groupby_list[1:]} # Merge the left_side (current results as dicts) with the right_side (all # possible values as m2o pairs). Both lists are supposed to be using the @@ -2455,10 +2455,8 @@ class BaseModel(object): grouped_value = right_side[0] if not grouped_value in known_values: line = dict(result_template) - line.update({ - groupby: right_side, - '__domain': [(groupby,'=',grouped_value)] + domain, - }) + line[groupby] = right_side + line['__domain'] = [(groupby,'=',grouped_value)] + domain result.append(line) known_values[grouped_value] = line while read_group_result or all_groups: From 00cbc1d84f59d9ea3203df29177c1f95d850c827 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 16:09:25 +0200 Subject: [PATCH 177/328] Added loading of images bzr revid: nicolas.vanhoren@openerp.com-20120806140925-2i8o7wla0tfgfdsj --- addons/web_linkedin/static/src/js/linkedin.js | 18 +++++++++++++++++- addons/web_linkedin/web_linkedin.py | 11 +++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index cd9a8882497..9ddbff78fa6 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -82,13 +82,29 @@ openerp.web_linkedin = function(instance) { }); }, selected_entity: function(entity) { + var self = this; var to_change = {}; + var defs = []; if (entity.__type === "company") { to_change.name = entity.name; + if (entity.logoUrl) { + defs.push(self.rpc('/web_linkedin/binary/url2binary', + {'url': entity.logoUrl}).pipe(function(data){ + to_change.photo = data; + })); + } } else { //people to_change.name = _.str.sprintf("%s %s", entity.firstName, entity.lastName); + if (entity.pictureUrl) { + defs.push(self.rpc('/web_linkedin/binary/url2binary', + {'url': entity.pictureUrl}).pipe(function(data){ + to_change.photo = data; + })); + } } - this.view.on_processed_onchange({value:to_change}); + $.when.apply($, defs).then(function() { + self.view.on_processed_onchange({value:to_change}); + }); }, }); diff --git a/addons/web_linkedin/web_linkedin.py b/addons/web_linkedin/web_linkedin.py index 4bb525db1ff..acce3c45735 100644 --- a/addons/web_linkedin/web_linkedin.py +++ b/addons/web_linkedin/web_linkedin.py @@ -19,4 +19,15 @@ # ############################################################################## +import web.common.http +import base64 +import urllib2 + +class Binary(web.common.http.Controller): + _cp_path = "/web_linkedin/binary" + + @web.common.http.jsonrequest + def url2binary(self, req,url): + bfile = urllib2.urlopen(url) + return base64.b64encode(bfile.read()) From 2662110aaa6f856a147c048833e44a5bda746244 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 16:19:38 +0200 Subject: [PATCH 178/328] Began profile url bzr revid: nicolas.vanhoren@openerp.com-20120806141938-lbbv9e0eqfvlijvz --- addons/web_linkedin/static/src/js/linkedin.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 9ddbff78fa6..77296943177 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -93,7 +93,10 @@ openerp.web_linkedin = function(instance) { to_change.photo = data; })); } - } else { //people + /* + to_change.linkedinUrl = _.str.sprintf("http://www.linkedin.com/company/%d", entity.id); + */ + } else { // people to_change.name = _.str.sprintf("%s %s", entity.firstName, entity.lastName); if (entity.pictureUrl) { defs.push(self.rpc('/web_linkedin/binary/url2binary', @@ -101,6 +104,9 @@ openerp.web_linkedin = function(instance) { to_change.photo = data; })); } + /* + to_change.linkedinUrl = entity.publicProfileUrl; + */ } $.when.apply($, defs).then(function() { self.view.on_processed_onchange({value:to_change}); @@ -132,7 +138,7 @@ openerp.web_linkedin = function(instance) { IN.API.Raw(_.str.sprintf("company-search:(companies:(id,name,logo-url))?keywords=%s&count=%d", encodeURI(this.text), this.limit)).result(function (result) { cdef.resolve(result); }); - IN.API.PeopleSearch().fields(["id", "first-name", "last-name","picture-url"]). + IN.API.PeopleSearch().fields(["id", "first-name", "last-name", "picture-url", "public-profile-url"]). params({"keywords": this.text, "count": this.limit}).result(function(result) { pdef.resolve(result); }); From 33cd3834ef7d00a3713ad569e8b5ceef74b4caa4 Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Mon, 6 Aug 2012 16:23:59 +0200 Subject: [PATCH 179/328] [ADD] Trying to improve the form_steps_separtor.png. bzr revid: vta@openerp.com-20120806142359-m6saukyiwx33mibf --- .../static/src/img/form_steps_separator_v3.png | Bin 0 -> 652 bytes .../static/src/img/form_steps_separator_v4.png | Bin 0 -> 431 bytes addons/web/static/src/js/view_form.js | 4 ++-- addons/web/static/src/xml/base.xml | 6 ++---- 4 files changed, 4 insertions(+), 6 deletions(-) create mode 100644 addons/web/static/src/img/form_steps_separator_v3.png create mode 100644 addons/web/static/src/img/form_steps_separator_v4.png diff --git a/addons/web/static/src/img/form_steps_separator_v3.png b/addons/web/static/src/img/form_steps_separator_v3.png new file mode 100644 index 0000000000000000000000000000000000000000..f5d651647402f45b0031d87ff0baa0c9fe9244df GIT binary patch literal 652 zcmV;70(1R|P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn- z4iX+TRsvH100In2L_t(Y$BmUSXj4%XhQHSYL6CQc3>r#?LX#l{sbt8M>FyTAr7eQR zfRiW=SriACih~p)7Nr;$vn#qN2V&zAFrzjyBa z&*35>brIQ|E8%n~u>yPp8nf99Upk$Lq%`0s;H=eZ)uz)aaapNUJ_2XJBMk`f5O~mT zxAQ)z(}~Es2K)m&0p9q4<#Ku8bQ%!gJwT_^sYX#mT$W0u27rj%)qnu^fT!JVH#?b3 zh)bsvkt-VT9C!uPeN`5V#otb+0RdhDYp18DTRv!^Pv}QVHg?(mIvCvhBnJb35_^%M)-g`Kq`R|yFkiXd${~9y=25b zum$v#>YNTA&>7K7XvB#RxCz`2!|<{Ky9Rs)u4<1|9jFCCpv`t2s4W|@4BP=Q#(YR% m1lHQ7_RyDr`w1o@k?ucUt;SgW02ZeJ0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyn- z4iy3RADLkQ00A#aL_t(Y$E}mC(t|J%Mel|h6rw{NFM#ItnL%NyK~%J&t~GTCcDYq_ zzMqB?nw^PC=H%?&L`V_=B_gu8Z)QP207#O=3w2G?h?!v=N0`~FwNyI*Ff&Zk1T%wk z?xW!_3{2DXt)&Biwr$1CpsHV6zI2Yqqo^v@uE*m+Z_9Iy-EZ_DCFM^=Q^EEL9_f2`p*CW002ovPDHLkV1mJ5wIcuk literal 0 HcmV?d00001 diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 76469461677..75ff1f1a1f0 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -4706,7 +4706,7 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ _.each(elemts, function(element){ $item = $(element); if ($item.attr("data-id") != self.selected_value) { - $item.attr("style", "cursor: pointer; background: #ba3d37;"); + $item.attr("style", "cursor: pointer; background: #ba3d37; position: relative; left: 5px;"); $item.parent().attr("style", "background: #ba3d37;"); $item.click(function(event){ var data_id = parseInt($(this).attr("data-id")) @@ -4715,7 +4715,7 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ }); }); } else { - $item.attr("style", "background: #8a89ba;"); + $item.attr("style", "background: #8a89ba; position: relative; left: 5px;"); $item.parent().attr("style", "background: #8a89ba;"); } }); diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 2bf636c3dce..d597d399467 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1032,10 +1032,8 @@
  • - - - - + +
  • From dfc114f6decd70ea29a9cc1d50b5cbb4f9af9d8d Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 16:33:43 +0200 Subject: [PATCH 180/328] Small correction in image bzr revid: nicolas.vanhoren@openerp.com-20120806143343-oowyy3apn489cl07 --- .../static/src/img/ghost_profile_60x60_v1.png | Bin 349 -> 453 bytes addons/web_linkedin/static/src/js/linkedin.js | 4 ++-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/web_linkedin/static/src/img/ghost_profile_60x60_v1.png b/addons/web_linkedin/static/src/img/ghost_profile_60x60_v1.png index 6662a87462b52a17eaf8db3c7685e944fc920f94..c132fc829b24f522c73fe3d67cea9425a76e7709 100644 GIT binary patch delta 426 zcmV;b0agCp0>uL^iBL{Q4GJ0x0000DNk~Le0000+0000+1Oos70D}Pkw*UYD0drDE zLIAGL9O;oECVv0{VoOIv0Eh)0NB{r;32;bRa{vGf6951U69E94oEQKA00(qQO+^RX z2nG%yHFcV=VgLXECP_p=R7l6|)G==YF$@LZP*Ji1s*aUPz|9?il~(9j5mjO3XwF^X zfb#cCiwkt=IXM4_(iTOM2Y2?##%PXzw#uX;-u;buA>hvoJ z`(GEC$8%+v9`h<{ih&jm^G#PL(5#qtNI%WvyM(2mroQ#*182%)#|Dy`)`xKy*&8+` z;8MNNtY3gnO%`Sufi0;#nA}eGDE>1QaAhv{W(e-6omhh}{j*HRYZfB$8YRG=AG)j? ULo2DV&T$-tH?e=FHkux4pr6|B*dP5N9lYid+F!!*arjoy*j!47?4 z#z=*g+H`eSftdL9Eh)sNOFY)qs<9F$u3rX=0n}q5j$E_~$AW=u)g)_=>HXCF&gih3 z_hZOS3k(S&f&>qWesY{y^~kZB^xarN_k`(!Z)~v@d*KnA84qY|M`8Qe7!Vio1R6zJ U(CrJc(*OVf07*qoM6N<$g5YY3JOBUy diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 77296943177..3b2285215cb 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -93,7 +93,7 @@ openerp.web_linkedin = function(instance) { to_change.photo = data; })); } - /* + /* TODO to_change.linkedinUrl = _.str.sprintf("http://www.linkedin.com/company/%d", entity.id); */ } else { // people @@ -104,7 +104,7 @@ openerp.web_linkedin = function(instance) { to_change.photo = data; })); } - /* + /* TODO to_change.linkedinUrl = entity.publicProfileUrl; */ } From d159b218c71781d5c8ed4ed0d8b202578d4c718c Mon Sep 17 00:00:00 2001 From: "vta vta@openerp.com" <> Date: Mon, 6 Aug 2012 16:47:22 +0200 Subject: [PATCH 181/328] [IMP] Improved visual aspect of the stagesbar. bzr revid: vta@openerp.com-20120806144722-9cich1qg6t8ad3iq --- addons/web/static/src/css/base.css | 2 +- addons/web/static/src/js/view_form.js | 8 ++++---- addons/web/static/src/xml/base.xml | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 8f35c81de2d..a7a749be187 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1952,7 +1952,7 @@ } .openerp ul.oe_form_steps li { border-right: none; - padding: 0; + padding: 0px; margin: 0; float: left; vertical-align: top; diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 75ff1f1a1f0..b8ec1ac9d37 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -4706,8 +4706,8 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ _.each(elemts, function(element){ $item = $(element); if ($item.attr("data-id") != self.selected_value) { - $item.attr("style", "cursor: pointer; background: #ba3d37; position: relative; left: 5px;"); - $item.parent().attr("style", "background: #ba3d37;"); + $item.attr("style", "cursor: pointer; background: #ba3d37; position: relative; left: 5px; top: -3px;"); + $item.parent().attr("style", "background: #ba3d37; height: 24px; margin-top: 3px;"); $item.click(function(event){ var data_id = parseInt($(this).attr("data-id")) self.view.dataset.call('stage_set', [[self.view.datarecord.id],data_id]).then(function() { @@ -4715,8 +4715,8 @@ instance.web.form.FieldStatus = instance.web.form.AbstractField.extend({ }); }); } else { - $item.attr("style", "background: #8a89ba; position: relative; left: 5px;"); - $item.parent().attr("style", "background: #8a89ba;"); + $item.attr("style", "background: #8a89ba; position: relative; left: 5px; top: -3px;"); + $item.parent().attr("style", "background: #8a89ba; height: 24px; margin-top: 3px;"); } }); } diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index d597d399467..112f1321a28 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1033,7 +1033,7 @@
  • - +
  • From 98ab0c6ebb0856a4a5d246304c4b9673743fce2c Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 16:54:35 +0200 Subject: [PATCH 182/328] Added some mappings for people bzr revid: nicolas.vanhoren@openerp.com-20120806145435-isbyu9fefja0w4lv --- addons/web_linkedin/static/src/js/linkedin.js | 26 ++++++++++++++++--- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 3b2285215cb..4743c7654d3 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -86,6 +86,7 @@ openerp.web_linkedin = function(instance) { var to_change = {}; var defs = []; if (entity.__type === "company") { + to_change.is_company = true; to_change.name = entity.name; if (entity.logoUrl) { defs.push(self.rpc('/web_linkedin/binary/url2binary', @@ -97,13 +98,26 @@ openerp.web_linkedin = function(instance) { to_change.linkedinUrl = _.str.sprintf("http://www.linkedin.com/company/%d", entity.id); */ } else { // people - to_change.name = _.str.sprintf("%s %s", entity.firstName, entity.lastName); + to_change.is_company = false; + to_change.name = entity.formattedName; if (entity.pictureUrl) { defs.push(self.rpc('/web_linkedin/binary/url2binary', {'url': entity.pictureUrl}).pipe(function(data){ to_change.photo = data; })); + } else { + to_change.photo = false; } + to_change.mobile = false; + to_change.phone = false; + _.each(entity.phoneNumbers.values || [], function(el) { + if (el.phoneType === "mobile") { + to_change.mobile = el.phoneNumber; + } else { + to_change.phone = el.phoneNumber; + } + }); + to_change.function = entity.headline; /* TODO to_change.linkedinUrl = entity.publicProfileUrl; */ @@ -135,10 +149,14 @@ openerp.web_linkedin = function(instance) { var self = this; cdef = $.Deferred(); pdef = $.Deferred(); - IN.API.Raw(_.str.sprintf("company-search:(companies:(id,name,logo-url))?keywords=%s&count=%d", encodeURI(this.text), this.limit)).result(function (result) { + IN.API.Raw(_.str.sprintf( + "company-search:(companies:(id,name,logo-url))?keywords=%s&count=%d", + encodeURI(this.text), this.limit)).result(function (result) { cdef.resolve(result); }); - IN.API.PeopleSearch().fields(["id", "first-name", "last-name", "picture-url", "public-profile-url"]). + IN.API.PeopleSearch().fields(["id", "picture-url", "public-profile-url", + "formatted-name", "location", "phone-numbers", "im-accounts", + "main-address", "headline"]). params({"keywords": this.text, "count": this.limit}).result(function(result) { pdef.resolve(result); }); @@ -198,7 +216,7 @@ openerp.web_linkedin = function(instance) { this.$("h3").text(this.data.name); self.$("img").attr("src", this.data.logoUrl); } else { // people - this.$("h3").text(_.str.sprintf("%s %s", this.data.firstName, this.data.lastName)); + this.$("h3").text(this.data.formattedName); self.$("img").attr("src", this.data.pictureUrl); } }, From 8978f47ebbb5e1263529c803c8d8ba7909df2da9 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 17:03:04 +0200 Subject: [PATCH 183/328] Mapped some fields for companies bzr revid: nicolas.vanhoren@openerp.com-20120806150304-b4s4vouwzzpokeah --- addons/web_linkedin/static/src/js/linkedin.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 4743c7654d3..2145bbd6dd5 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -88,25 +88,30 @@ openerp.web_linkedin = function(instance) { if (entity.__type === "company") { to_change.is_company = true; to_change.name = entity.name; + to_change.photo = false; if (entity.logoUrl) { defs.push(self.rpc('/web_linkedin/binary/url2binary', {'url': entity.logoUrl}).pipe(function(data){ to_change.photo = data; })); } + to_change.website = entity.websiteUrl; + to_change.phone = false; + _.each(entity.locations.values || [], function(el) { + to_change.phone = el.contactInfo.phone1; + }); /* TODO to_change.linkedinUrl = _.str.sprintf("http://www.linkedin.com/company/%d", entity.id); */ } else { // people to_change.is_company = false; to_change.name = entity.formattedName; + to_change.photo = false; if (entity.pictureUrl) { defs.push(self.rpc('/web_linkedin/binary/url2binary', {'url': entity.pictureUrl}).pipe(function(data){ to_change.photo = data; })); - } else { - to_change.photo = false; } to_change.mobile = false; to_change.phone = false; @@ -150,7 +155,8 @@ openerp.web_linkedin = function(instance) { cdef = $.Deferred(); pdef = $.Deferred(); IN.API.Raw(_.str.sprintf( - "company-search:(companies:(id,name,logo-url))?keywords=%s&count=%d", + "company-search:(companies:" + + "(id,name,logo-url,description,industry,website-url,locations))?keywords=%s&count=%d", encodeURI(this.text), this.limit)).result(function (result) { cdef.resolve(result); }); From 91191932b64bd6b36c925a9f0ef3b2990cf31a10 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Mon, 6 Aug 2012 17:28:09 +0200 Subject: [PATCH 184/328] Added loading of company members bzr revid: nicolas.vanhoren@openerp.com-20120806152809-ciug91i6z1gn8qsn --- addons/web_linkedin/static/src/js/linkedin.js | 36 ++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/addons/web_linkedin/static/src/js/linkedin.js b/addons/web_linkedin/static/src/js/linkedin.js index 2145bbd6dd5..8f691d920df 100644 --- a/addons/web_linkedin/static/src/js/linkedin.js +++ b/addons/web_linkedin/static/src/js/linkedin.js @@ -82,6 +82,12 @@ openerp.web_linkedin = function(instance) { }); }, selected_entity: function(entity) { + var self = this; + this.create_on_change(entity).then(function(to_change) { + self.view.on_processed_onchange({value:to_change}); + }); + }, + create_on_change: function(entity) { var self = this; var to_change = {}; var defs = []; @@ -100,6 +106,24 @@ openerp.web_linkedin = function(instance) { _.each(entity.locations.values || [], function(el) { to_change.phone = el.contactInfo.phone1; }); + var children_def = $.Deferred(); + IN.API.PeopleSearch().fields(commonPeopleFields).params({ + "company-name" : entity.name, + "current-company": true, + "count": 25, + }).result(function(result) { + children_def.resolve(result); + }); + defs.push(children_def.pipe(function(result) { + var defs = _.map(result.people.values || [], function(el) { + el.__type = "people"; + return self.create_on_change(el); + }); + return $.when.apply($, defs).pipe(function() { + var p_to_change = _.toArray(arguments); + to_change.child_ids = p_to_change; + }); + })); /* TODO to_change.linkedinUrl = _.str.sprintf("http://www.linkedin.com/company/%d", entity.id); */ @@ -127,14 +151,18 @@ openerp.web_linkedin = function(instance) { to_change.linkedinUrl = entity.publicProfileUrl; */ } - $.when.apply($, defs).then(function() { - self.view.on_processed_onchange({value:to_change}); + return $.when.apply($, defs).pipe(function() { + return to_change; }); }, }); instance.web.form.widgets.add('linkedin', 'instance.web_linkedin.Linkedin'); + var commonPeopleFields = ["id", "picture-url", "public-profile-url", + "formatted-name", "location", "phone-numbers", "im-accounts", + "main-address", "headline"]; + instance.web_linkedin.LinkedinPopup = instance.web.Dialog.extend({ template: "Linkedin.popup", init: function(parent, text) { @@ -160,9 +188,7 @@ openerp.web_linkedin = function(instance) { encodeURI(this.text), this.limit)).result(function (result) { cdef.resolve(result); }); - IN.API.PeopleSearch().fields(["id", "picture-url", "public-profile-url", - "formatted-name", "location", "phone-numbers", "im-accounts", - "main-address", "headline"]). + IN.API.PeopleSearch().fields(commonPeopleFields). params({"keywords": this.text, "count": this.limit}).result(function(result) { pdef.resolve(result); }); From ccbc0df1ddda89186506f0744981edc5474c66d5 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Mon, 6 Aug 2012 17:38:32 +0200 Subject: [PATCH 185/328] [FIX] auth_signup: move wizard trigger to login page bzr revid: chs@openerp.com-20120806153832-0joy03c20y28bmx4 --- addons/auth_signup/__openerp__.py | 9 ++-- addons/auth_signup/auth_signup.py | 1 - .../static/src/css/auth_signup.css | 9 ++++ .../auth_signup/static/src/js/auth_signup.js | 51 ++++++++++++++----- .../static/src/xml/auth_signup.xml | 14 ++--- 5 files changed, 62 insertions(+), 22 deletions(-) create mode 100644 addons/auth_signup/static/src/css/auth_signup.css diff --git a/addons/auth_signup/__openerp__.py b/addons/auth_signup/__openerp__.py index 8c8a4919550..60d99534bec 100644 --- a/addons/auth_signup/__openerp__.py +++ b/addons/auth_signup/__openerp__.py @@ -8,11 +8,14 @@ 'installable': True, 'depends': ['auth_anonymous', 'base_setup'], 'data': [ - 'auth_signup.xml', - 'res_config.xml', + 'auth_signup.xml', + 'res_config.xml', ], 'js': [ - 'static/src/js/auth_signup.js', + 'static/src/js/auth_signup.js', + ], + 'css': [ + 'static/src/css/auth_signup.css', ], 'qweb': [ 'static/src/xml/auth_signup.xml', diff --git a/addons/auth_signup/auth_signup.py b/addons/auth_signup/auth_signup.py index a7c0b1f4010..64760bed599 100644 --- a/addons/auth_signup/auth_signup.py +++ b/addons/auth_signup/auth_signup.py @@ -54,4 +54,3 @@ class signup_signup(osv.TransientModel): if pw != cpw: return {'value': {'state': 'missmatch'}} return {'value': {'state': 'draft'}} - diff --git a/addons/auth_signup/static/src/css/auth_signup.css b/addons/auth_signup/static/src/css/auth_signup.css new file mode 100644 index 00000000000..1e8d7d9d8d8 --- /dev/null +++ b/addons/auth_signup/static/src/css/auth_signup.css @@ -0,0 +1,9 @@ +.openerp .oe_login .oe_login_pane ul.oe_signup a { + color: #eeeeee; + margin: 0 8px; +} +.openerp .oe_login .oe_login_pane ul.oe_signup a:hover { + text-decoration: underline; +} + + diff --git a/addons/auth_signup/static/src/js/auth_signup.js b/addons/auth_signup/static/src/js/auth_signup.js index 73fe1c20236..fd5c9c93dfa 100644 --- a/addons/auth_signup/static/src/js/auth_signup.js +++ b/addons/auth_signup/static/src/js/auth_signup.js @@ -1,19 +1,46 @@ openerp.auth_signup = function(instance) { + var _t = instance.web._t; - instance.web.UserMenu.include({ + instance.web.Login.include({ start: function() { var self = this; - this._super.apply(this, arguments); - this.$element.find('a.oe_topbar_signup').click(function() { - var p = self.getParent(); - var am = p.action_manager; - am.do_action({ - type:'ir.actions.act_window', - res_model: 'auth.signup', - views: [[false, 'form']], - target: 'new', - name: 'Sign Up' - }); + + this.$('a.oe_signup').click(function() { + var db = self.$("form [name=db]").val(); + if (!db) { + self.do_warn(_t("Login"), _t("No database selected!")); + return false; + } + + var cnx = instance.connection; + if (cnx.session_is_valid()) { + self._signup(); + } else { + cnx.session_authenticate(db, 'anonymous', 'anonymous', true).then(function() { + self._signup(); + }).fail(function(error, event) { + console.log(error); + // cannot log as anonymous or auth_signup not installed + self.do_warn(_t('Sign Up'), _.str.sprintf(_t('Signup functionnality is not available for database %s'), db), true); + }); + } + return true; + }); + return this._super(); + + }, + + _signup: function() { + this.do_action({ + type:'ir.actions.act_window', + res_model: 'auth.signup', + views: [[false, 'form']], + target: 'new', + name: 'Sign Up' + }, function() { + // mmh, no way to have access to dialog befor close... + // TODO autolog user + console.log('onclose', this, arguments); }); } }); diff --git a/addons/auth_signup/static/src/xml/auth_signup.xml b/addons/auth_signup/static/src/xml/auth_signup.xml index 7b3ed6de77b..df24bca3ef1 100644 --- a/addons/auth_signup/static/src/xml/auth_signup.xml +++ b/addons/auth_signup/static/src/xml/auth_signup.xml @@ -3,12 +3,14 @@ --> - - - + + +
  • + +
  • + + +
    From 48e091580429476977c2b29b501b39589528d1e4 Mon Sep 17 00:00:00 2001 From: Antonin Bourguignon Date: Mon, 6 Aug 2012 17:44:10 +0200 Subject: [PATCH 186/328] [IMP] rephrase some error and warning messages in account remove exclamation marks at the end of messages remove first person usage ('I' and 'We') remove unjustified capital letters rephrase the clumsy form 'No is defined' bzr revid: abo@openerp.com-20120806154410-kbf9aai2uzq2b0c4 --- addons/account/account.py | 40 +++--- addons/account/account_analytic_line.py | 4 +- addons/account/account_cash_statement.py | 6 +- addons/account/account_invoice.py | 32 ++--- addons/account/account_move_line.py | 30 ++-- addons/account/report/common_report_header.py | 2 +- .../account/wizard/account_change_currency.py | 8 +- .../wizard/account_fiscalyear_close.py | 8 +- .../account/wizard/account_invoice_refund.py | 4 +- .../account/wizard/account_invoice_state.py | 4 +- addons/account/wizard/account_move_journal.py | 14 +- .../wizard/account_open_closed_fiscalyear.py | 2 +- .../account_report_aged_partner_balance.py | 4 +- .../account/wizard/account_report_common.py | 2 +- .../wizard/account_validate_account_move.py | 4 +- .../account_analytic_plans.py | 2 +- .../wizard/account_crossovered_analytic.py | 2 +- .../wizard/analytic_plan_create_model.py | 4 +- .../account_bank_statement.py | 10 +- addons/account_coda/account_coda.py | 130 +++++++++--------- addons/account_payment/account_move_line.py | 2 +- addons/account_voucher/account_voucher.py | 6 +- 22 files changed, 160 insertions(+), 160 deletions(-) diff --git a/addons/account/account.py b/addons/account/account.py index e018546f897..14eccafbc7b 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -125,7 +125,7 @@ class account_payment_term_line(osv.osv): return True _constraints = [ - (_check_percent, 'Percentages for Payment Term Line must be between 0 and 1, Example: 0.02 for 2% .', ['value_amount']), + (_check_percent, 'Percentages for Payment Term Line must be between 0 and 1, Example: 0.02 for 2%.', ['value_amount']), ] account_payment_term_line() @@ -409,7 +409,7 @@ class account_account(osv.osv): period_obj = self.pool.get('account.period') pids = period_obj.search(cr, uid, [('special','=',True),('company_id','=',account.company_id.id)], context=context) if not pids: - raise osv.except_osv(_('Error!'),_("No opening/closing period is defined, please create one to set the initial balance!")) + raise osv.except_osv(_('Error!'),_("There is no opening/closing period defined, please create one to set the initial balance.")) move_obj = self.pool.get('account.move.line') move_id = move_obj.search(cr, uid, [ @@ -619,9 +619,9 @@ class account_account(osv.osv): if line_obj.search(cr, uid, [('account_id', 'in', account_ids)]): if method == 'write': - raise osv.except_osv(_('Error !'), _('You cannot deactivate an account that contains some journal items.')) + raise osv.except_osv(_('Error !'), _('You cannot deactivate an account that contains journal items.')) elif method == 'unlink': - raise osv.except_osv(_('Error !'), _('You cannot remove an account containing journal items.')) + raise osv.except_osv(_('Error !'), _('You cannot remove an account that contains journal items.')) #Checking whether the account is set as a property to any Partner or not value = 'account.account,' + str(ids[0]) partner_prop_acc = self.pool.get('ir.property').search(cr, uid, [('value_reference','=',value)], context=context) @@ -790,7 +790,7 @@ class account_journal(osv.osv): if 'company_id' in vals and journal.company_id.id != vals['company_id']: move_lines = self.pool.get('account.move.line').search(cr, uid, [('journal_id', 'in', ids)]) if move_lines: - raise osv.except_osv(_('Warning !'), _('You cannot modify the company of this journal as its related record exist in journal items.')) + raise osv.except_osv(_('Warning !'), _('This journal already contains items, therefore you cannot modify its company field.')) return super(account_journal, self).write(cr, uid, ids, vals, context=context) def create_sequence(self, cr, uid, vals, context=None): @@ -915,7 +915,7 @@ class account_fiscalyear(osv.osv): return True _constraints = [ - (_check_duration, 'Error! The start date of the fiscal year must be less than the end date.', ['date_start','date_stop']) + (_check_duration, 'Error! The start date of a fiscal year must precede its end date.', ['date_start','date_stop']) ] def create_period3(self, cr, uid, ids, context=None): @@ -966,7 +966,7 @@ class account_fiscalyear(osv.osv): ids = self.search(cr, uid, args, context=context) if not ids: if exception: - raise osv.except_osv(_('Error !'), _('No fiscal year is defined for this date !\nPlease create one from the configuration of the accounting menu.')) + raise osv.except_osv(_('Error !'), _('There is no fiscal year defined for this date.\nPlease create one from the configuration of the accounting menu.')) else: return [] return ids @@ -1033,7 +1033,7 @@ class account_period(osv.osv): _constraints = [ (_check_duration, 'Error ! The duration of the Period(s) is/are invalid. ', ['date_stop']), - (_check_year_limit, 'Invalid period ! Some periods overlap or the date period which is not in the scope of the fiscal year. ', ['date_stop']) + (_check_year_limit, 'Error ! The period is invalid. Either some periods are overlapping or the period\'s dates are not matching the scope of the fiscal year.', ['date_stop']) ] def next(self, cr, uid, period, step, context=None): @@ -1055,7 +1055,7 @@ class account_period(osv.osv): args.append(('company_id', '=', company_id)) ids = self.search(cr, uid, args, context=context) if not ids: - raise osv.except_osv(_('Error !'), _('No period is defined for this date: %s !\nPlease create one.')%dt) + raise osv.except_osv(_('Error !'), _('There is no period defined for this date: %s.\nPlease create one.')%dt) return ids def action_draft(self, cr, uid, ids, *args): @@ -1080,7 +1080,7 @@ class account_period(osv.osv): if 'company_id' in vals: move_lines = self.pool.get('account.move.line').search(cr, uid, [('period_id', 'in', ids)]) if move_lines: - raise osv.except_osv(_('Warning !'), _('You cannot modify company of this period as some journal items exist.')) + raise osv.except_osv(_('Warning !'), _('This journal already contains items for this period, therefore you cannot modify its company field.')) return super(account_period, self).write(cr, uid, ids, vals, context=context) def build_ctx_periods(self, cr, uid, period_from_id, period_to_id): @@ -1095,7 +1095,7 @@ class account_period(osv.osv): if company1_id != company2_id: raise osv.except_osv(_('Error!'), _('You should choose the periods that belong to the same company.')) if period_date_start > period_date_stop: - raise osv.except_osv(_('Error!'), _('Start period should be smaller than End period.')) + raise osv.except_osv(_('Error!'), _('Start period should precede then end period.')) #for period from = january, we want to exclude the opening period (but it has same date_from, so we have to check if period_from is special or not to include that clause or not in the search). if period_from.special: return self.search(cr, uid, [('date_start', '>=', period_date_start), ('date_stop', '<=', period_date_stop), ('company_id', '=', company1_id)]) @@ -1134,7 +1134,7 @@ class account_journal_period(osv.osv): cr.execute('select * from account_move_line where journal_id=%s and period_id=%s limit 1', (obj.journal_id.id, obj.period_id.id)) res = cr.fetchall() if res: - raise osv.except_osv(_('Error !'), _('You cannot modify/delete a journal with entries for this period !')) + raise osv.except_osv(_('Error !'), _('You cannot modify/delete a journal with entries for this period.')) return True def write(self, cr, uid, ids, vals, context=None): @@ -1303,7 +1303,7 @@ class account_move(osv.osv): _constraints = [ (_check_centralisation, - 'You cannot create more than one move per period on centralized journal.', + 'You cannot create more than one move per period on a centralized journal.', ['journal_id']), ] @@ -1314,7 +1314,7 @@ class account_move(osv.osv): valid_moves = self.validate(cr, uid, ids, context) if not valid_moves: - raise osv.except_osv(_('Integrity Error !'), _('You cannot validate a non-balanced entry !\nMake sure you have configured payment terms properly !\nThe latest payment term line should be of the type "Balance" !')) + raise osv.except_osv(_('Integrity Error !'), _('You cannot validate a non-balanced entry.\nMake sure you have configured payment terms properly.\nThe latest payment term line should be of the "Balance" type.')) obj_sequence = self.pool.get('ir.sequence') for move in self.browse(cr, uid, valid_moves, context=context): if move.name =='/': @@ -1328,7 +1328,7 @@ class account_move(osv.osv): c = {'fiscalyear_id': move.period_id.fiscalyear_id.id} new_name = obj_sequence.next_by_id(cr, uid, journal.sequence_id.id, c) else: - raise osv.except_osv(_('Error'), _('Please define sequence on the journal !')) + raise osv.except_osv(_('Error !'), _('Please define a sequence on the journal.')) if new_name: self.write(cr, uid, [move.id], {'name':new_name}) @@ -1358,7 +1358,7 @@ class account_move(osv.osv): def button_cancel(self, cr, uid, ids, context=None): for line in self.browse(cr, uid, ids, context=context): if not line.journal_id.update_posted: - raise osv.except_osv(_('Error !'), _('You cannot modify a posted entry of this journal !\nYou should set the journal to allow cancelling entries if you want to do that.')) + raise osv.except_osv(_('Error !'), _('You cannot modify a posted entry of this journal.\nFirst you should set the journal to allow cancelling entries.')) if ids: cr.execute('UPDATE account_move '\ 'SET state=%s '\ @@ -1446,7 +1446,7 @@ class account_move(osv.osv): for move in self.browse(cr, uid, ids, context=context): if move['state'] != 'draft': raise osv.except_osv(_('UserError!'), - _('You cannot delete a posted journal entry "%s"!') % \ + _('You cannot delete a posted journal entry "%s".') % \ move['name']) line_ids = map(lambda x: x.id, move.line_id) context['journal_id'] = move.journal_id.id @@ -1475,14 +1475,14 @@ class account_move(osv.osv): mode2 = 'debit' if not account_id: raise osv.except_osv(_('UserError'), - _('No default debit account is defined \n' \ + _('There is no default debit account defined \n' \ 'on journal "%s".') % move.journal_id.name) else: account_id = move.journal_id.default_credit_account_id.id mode2 = 'credit' if not account_id: raise osv.except_osv(_('UserError'), - _('No default credit account is defined \n' \ + _('There is no default credit account defined \n' \ 'on journal "%s".') % move.journal_id.name) # find the first line of this move with the current mode @@ -2623,7 +2623,7 @@ class account_add_tmpl_wizard(osv.osv_memory): ptids = tmpl_obj.read(cr, uid, [tids[0]['parent_id'][0]], ['code']) res = None if not ptids or not ptids[0]['code']: - raise osv.except_osv(_('Error !'), _('I cannot locate a parent code for the template account!')) + raise osv.except_osv(_('Error !'), _('There is no parent code for the template account.')) res = acc_obj.search(cr, uid, [('code','=',ptids[0]['code'])]) return res and res[0] or False diff --git a/addons/account/account_analytic_line.py b/addons/account/account_analytic_line.py index 8dc7fb8abf4..e56629644ea 100644 --- a/addons/account/account_analytic_line.py +++ b/addons/account/account_analytic_line.py @@ -88,7 +88,7 @@ class account_analytic_line(osv.osv): a = prod.categ_id.property_account_expense_categ.id if not a: raise osv.except_osv(_('Error !'), - _('No expense account is defined ' \ + _('There is no expense account defined ' \ 'for this product: "%s" (id:%d).') % \ (prod.name, prod.id,)) else: @@ -97,7 +97,7 @@ class account_analytic_line(osv.osv): a = prod.categ_id.property_account_income_categ.id if not a: raise osv.except_osv(_('Error !'), - _('No income account is defined ' \ + _('There is no income account defined ' \ 'for this product: "%s" (id:%d).') % \ (prod.name, prod_id,)) diff --git a/addons/account/account_cash_statement.py b/addons/account/account_cash_statement.py index a5141cd6b3f..af0a772e239 100644 --- a/addons/account/account_cash_statement.py +++ b/addons/account/account_cash_statement.py @@ -260,7 +260,7 @@ class account_cash_statement(osv.osv): if journal_type == 'bank': return super(account_cash_statement, self).balance_check(cr, uid, cash_id, journal_type, context) if not self._equal_balance(cr, uid, cash_id, context): - raise osv.except_osv(_('Error !'), _('The closing balance should be equal to compute balance on the cash register !')) + raise osv.except_osv(_('Error !'), _('The closing balance should be equal to compute balance on the cash register.')) return True def statement_close(self, cr, uid, ids, journal_type='bank', context=None): @@ -289,8 +289,8 @@ class account_cash_statement(osv.osv): for item_label, item_account in TALBES: if getattr(obj.journal_id, item_account): - raise osv.except_osv(_('Error !'), - _('No %s Account on the Journal %s.') % (item_label, obj.journal_id.name,)) + raise osv.except_osv(_('Error !'), + _('There is no %s Account on the journal %s.') % (item_label, obj.journal_id.name,)) is_profit = obj.difference < 0.0 diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 6a63f129396..79e5bc10c17 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -319,7 +319,7 @@ class account_invoice(osv.osv): res['fields'][field]['selection'] = journal_select doc = etree.XML(res['arch']) - + if context.get('type', False): for node in doc.xpath("//field[@name='partner_bank_id']"): if context['type'] == 'in_refund': @@ -327,7 +327,7 @@ class account_invoice(osv.osv): elif context['type'] == 'out_refund': node.set('domain', "[('partner_id', '=', partner_id)]") res['arch'] = etree.tostring(doc) - + if view_type == 'search': if context.get('type', 'in_invoice') in ('out_invoice', 'out_refund'): for node in doc.xpath("//group[@name='extended filter']"): @@ -364,7 +364,7 @@ class account_invoice(osv.osv): except Exception, e: if '"journal_id" viol' in e.args[0]: raise orm.except_orm(_('Configuration Error!'), - _('No Sale/Purchase Journal(s) is defined!')) + _('There is no Sale/Purchase Journal(s) defined.')) else: raise orm.except_orm(_('Unknown Error!'), str(e)) @@ -425,7 +425,7 @@ class account_invoice(osv.osv): if t['state'] in ('draft', 'cancel') and t['internal_number']== False: unlink_ids.append(t['id']) else: - raise osv.except_osv(_('Invalid action !'), _('You cannot delete an invoice which is open or paid. We suggest you to refund it instead.')) + raise osv.except_osv(_('Invalid action !'), _('You cannot delete an invoice which is open or paid. You should refund it instead.')) osv.osv.unlink(self, cr, uid, unlink_ids, context=context) return True @@ -577,7 +577,7 @@ class account_invoice(osv.osv): obj_l = account_obj.browse(cr, uid, inv_line[2]['account_id']) if obj_l.company_id.id != company_id: raise osv.except_osv(_('Configuration Error !'), - _('Company of invoice line account and the company of invoice does not match.')) + _('Invoice line account\'s company and invoice\'s compnay does not match.')) else: continue if company_id and type: @@ -840,7 +840,7 @@ class account_invoice(osv.osv): raise osv.except_osv(_('No Invoice Lines !'), _('Please create some invoice lines.')) if inv.move_id: continue - + ctx = context.copy() ctx.update({'lang': inv.partner_id.lang}) if not inv.date_invoice: @@ -866,7 +866,7 @@ class account_invoice(osv.osv): total_percent += line.value_amount total_fixed = (total_fixed * 100) / (inv.amount_total or 1.0) if (total_fixed + total_percent) > 100: - raise osv.except_osv(_('Error !'), _("Cannot create the invoice !\nThe related payment term is probably misconfigured as it gives a computed amount greater than the total invoiced amount. The latest line of your payment term must be of type 'balance' to avoid rounding issues.")) + raise osv.except_osv(_('Error !'), _("Cannot create the invoice.\nThe related payment term is probably misconfigured as it gives a computed amount greater than the total invoiced amount. In order to avoid rounding issues, the latest line of your payment term must be of type 'balance'.")) # one move line per tax line iml += ait_obj.move_line_get(cr, uid, inv.id) @@ -979,7 +979,7 @@ class account_invoice(osv.osv): move_obj.post(cr, uid, [move_id], context=ctx) self._log_event(cr, uid, ids) return True - + def invoice_validate(self, cr, uid, ids, context=None): self.write(cr, uid, ids, {'state':'open'}, context=context) return True @@ -1061,7 +1061,7 @@ class account_invoice(osv.osv): pay_ids = account_move_line_obj.browse(cr, uid, i['payment_ids']) for move_line in pay_ids: if move_line.reconcile_partial_id and move_line.reconcile_partial_id.line_partial_ids: - raise osv.except_osv(_('Error !'), _('You cannot cancel an invoice which is partially paid! You need to unreconcile related payment entries first!')) + raise osv.except_osv(_('Error !'), _('You cannot cancel an invoice which is partially paid. You need to unreconcile related payment entries first.')) # First, set the invoices as cancelled and detach the move ids self.write(cr, uid, ids, {'state':'cancel', 'move_id':False}) @@ -1281,11 +1281,11 @@ class account_invoice(osv.osv): # Update the stored value (fields.function), so we write to trigger recompute self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context) return True - + # ----------------------------------------- # OpenChatter notifications and need_action # ----------------------------------------- - + def _get_document_type(self, type): type_dict = { 'out_invoice': 'Customer invoice', @@ -1294,19 +1294,19 @@ class account_invoice(osv.osv): 'in_refund': 'Supplier Refund', } return type_dict.get(type, 'Invoice') - + def create_send_note(self, cr, uid, ids, context=None): for obj in self.browse(cr, uid, ids, context=context): self.message_append_note(cr, uid, [obj.id],body=_("%s created.") % (self._get_document_type(obj.type)), context=context) - + def confirm_paid_send_note(self, cr, uid, ids, context=None): for obj in self.browse(cr, uid, ids, context=context): self.message_append_note(cr, uid, [obj.id], body=_("%s paid.") % (self._get_document_type(obj.type)), context=context) - + def invoice_cancel_send_note(self, cr, uid, ids, context=None): for obj in self.browse(cr, uid, ids, context=context): self.message_append_note(cr, uid, [obj.id], body=_("%s cancelled.") % (self._get_document_type(obj.type)), context=context) - + account_invoice() class account_invoice_line(osv.osv): @@ -1475,7 +1475,7 @@ class account_invoice_line(osv.osv): if prod.uom_id.category_id.id != prod_uom.category_id.id: warning = { 'title': _('Warning!'), - 'message': _('Selected Unit of Measure is not compatible with the Unit of Measure of the product.') + 'message': _('The selected unit of measure is not compatible with the unit of measure of the product.') } return {'value': res['value'], 'warning': warning} return res diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 645dd16c541..6ce15529842 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -95,7 +95,7 @@ class account_move_line(osv.osv): if initial_bal and not context.get('periods', False) and not where_move_lines_by_date: #we didn't pass any filter in the context, and the initial balance can't be computed using only the fiscalyear otherwise entries will be summed twice #so we have to invalidate this query - raise osv.except_osv(_('Warning !'),_("You havenot supplied enough argument to compute the initial balance, please select a period and journal in the context.")) + raise osv.except_osv(_('Warning !'),_("You have not supplied enough arguments to compute the initial balance, please select a period and a journal in the context.")) if context.get('journal_ids', False): @@ -752,7 +752,7 @@ class account_move_line(osv.osv): else: currency_id = line.company_id.currency_id if line.reconcile_id: - raise osv.except_osv(_('Warning !'), _('Already Reconciled!')) + raise osv.except_osv(_('Warning !'), _('Already reconciled.')) if line.reconcile_partial_id: for line2 in line.reconcile_partial_id.line_partial_ids: if not line2.reconcile_id: @@ -823,15 +823,15 @@ class account_move_line(osv.osv): r = cr.fetchall() #TODO: move this check to a constraint in the account_move_reconcile object if not unrec_lines: - raise osv.except_osv(_('Error !'), _('Entry is already reconciled!')) + raise osv.except_osv(_('Error !'), _('Entry is already reconciled.')) account = account_obj.browse(cr, uid, account_id, context=context) if r[0][1] != None: - raise osv.except_osv(_('Error !'), _('Some entries are already reconciled !')) + raise osv.except_osv(_('Error !'), _('Some entries are already reconciled.')) if (not currency_obj.is_zero(cr, uid, account.company_id.currency_id, writeoff)) or \ (account.currency_id and (not currency_obj.is_zero(cr, uid, account.currency_id, currency))): if not writeoff_acc_id: - raise osv.except_osv(_('Warning !'), _('You have to provide an account for the write off/exchange difference entry !')) + raise osv.except_osv(_('Warning !'), _('You have to provide an account for the write off/exchange difference entry.')) if writeoff > 0: debit = writeoff credit = 0.0 @@ -1092,7 +1092,7 @@ class account_move_line(osv.osv): if res[1] != 'draft': raise osv.except_osv(_('UserError!'), _('The account move (%s) for centralisation ' \ - 'has been confirmed!') % res[2]) + 'has been confirmed.') % res[2]) return res def _remove_move_reconcile(self, cr, uid, move_ids=[], context=None): @@ -1139,9 +1139,9 @@ class account_move_line(osv.osv): if isinstance(ids, (int, long)): ids = [ids] if vals.get('account_tax_id', False): - raise osv.except_osv(_('Unable to change tax !'), _('You cannot change the tax, you should remove and recreate lines !')) + raise osv.except_osv(_('Unable to change tax!'), _('You cannot change the tax, you should remove and recreate lines.')) if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']: - raise osv.except_osv(_('Bad account!'), _('You cannot use an inactive account!')) + raise osv.except_osv(_('Bad account!'), _('You cannot use an inactive account.')) if update_check: if ('account_id' in vals) or ('journal_id' in vals) or ('period_id' in vals) or ('move_id' in vals) or ('debit' in vals) or ('credit' in vals) or ('date' in vals): self._update_check(cr, uid, ids, context) @@ -1202,9 +1202,9 @@ class account_move_line(osv.osv): for line in self.browse(cr, uid, ids, context=context): err_msg = _('Move name (id): %s (%s)') % (line.move_id.name, str(line.move_id.id)) if line.move_id.state <> 'draft' and (not line.journal_id.entry_posted): - raise osv.except_osv(_('Error !'), _('You cannot do this modification on a confirmed entry! You can just change some non legal fields or you must unconfirm the journal entry first! \n%s.') % err_msg) + raise osv.except_osv(_('Error !'), _('You cannot do this modification on a confirmed entry. You can just change some non legal fields or you must unconfirm the journal entry first.\n%s.') % err_msg) if line.reconcile_id: - raise osv.except_osv(_('Error !'), _('You cannot do this modification on a reconciled entry! You can just change some non legal fields or you must unreconcile first!\n%s.') % err_msg) + raise osv.except_osv(_('Error !'), _('You cannot do this modification on a reconciled entry. You can just change some non legal fields or you must unreconcile first.\n%s.') % err_msg) t = (line.journal_id.id, line.period_id.id) if t not in done: self._update_journal_check(cr, uid, line.journal_id.id, line.period_id.id, context) @@ -1224,7 +1224,7 @@ class account_move_line(osv.osv): if company_id: vals['company_id'] = company_id[0] if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']: - raise osv.except_osv(_('Bad account!'), _('You cannot use an inactive account!')) + raise osv.except_osv(_('Bad account!'), _('You cannot use an inactive account.')) if 'journal_id' in vals: context['journal_id'] = vals['journal_id'] if 'period_id' in vals: @@ -1237,10 +1237,10 @@ class account_move_line(osv.osv): if 'period_id' not in context or not isinstance(context.get('period_id', ''), (int, long)): period_candidate_ids = self.pool.get('account.period').name_search(cr, uid, name=context.get('period_id','')) if len(period_candidate_ids) != 1: - raise osv.except_osv(_('Encoding error!'), _('No period is found or more than one period found for the given date.')) + raise osv.except_osv(_('Encoding error!'), _('No period found or more than one period found for the given date.')) context['period_id'] = period_candidate_ids[0][0] if not context.get('journal_id', False) and context.get('search_default_journal_id', False): - context['journal_id'] = context.get('search_default_journal_id') + context['journal_id'] = context.get('search_default_journal_id') self._update_journal_check(cr, uid, context['journal_id'], context['period_id'], context) move_id = vals.get('move_id', False) journal = journal_obj.browse(cr, uid, context['journal_id'], context=context) @@ -1263,7 +1263,7 @@ class account_move_line(osv.osv): move_id = move_obj.create(cr, uid, v, context) vals['move_id'] = move_id else: - raise osv.except_osv(_('No piece number !'), _('Cannot create an automatic sequence for this piece!\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.')) + raise osv.except_osv(_('No piece number !'), _('Cannot create an automatic sequence for this piece.\nPut a sequence in the journal definition for automatic numbering or create a sequence manually for this piece.')) ok = not (journal.type_control_ids or journal.account_control_ids) if ('account_id' in vals): account = account_obj.browse(cr, uid, vals['account_id'], context=context) @@ -1288,7 +1288,7 @@ class account_move_line(osv.osv): vals['amount_currency'] = cur_obj.compute(cr, uid, account.company_id.currency_id.id, account.currency_id.id, vals.get('debit', 0.0)-vals.get('credit', 0.0), context=ctx) if not ok: - raise osv.except_osv(_('Bad account !'), _('You cannot use this general account in this journal, check the tab \'Entry Controls\' on the related journal !')) + raise osv.except_osv(_('Bad account !'), _('You cannot use this general account in this journal, check the tab \'Entry Controls\' on the related journal.')) if vals.get('analytic_account_id',False): if journal.analytic_journal_id: diff --git a/addons/account/report/common_report_header.py b/addons/account/report/common_report_header.py index 3711de09b2a..c93c3e02ee3 100644 --- a/addons/account/report/common_report_header.py +++ b/addons/account/report/common_report_header.py @@ -89,7 +89,7 @@ class common_report_header(object): return '' def _get_sortby(self, data): - raise (_('Error!'), _('Not implemented!')) + raise (_('Error!'), _('Not implemented.')) def _get_filter(self, data): if data.get('form', False) and data['form'].get('filter', False): diff --git a/addons/account/wizard/account_change_currency.py b/addons/account/wizard/account_change_currency.py index 4a49f4ded0b..d51df1e4d70 100644 --- a/addons/account/wizard/account_change_currency.py +++ b/addons/account/wizard/account_change_currency.py @@ -35,7 +35,7 @@ class account_change_currency(osv.osv_memory): context = {} if context.get('active_id',False): if obj_inv.browse(cr, uid, context['active_id']).state != 'draft': - raise osv.except_osv(_('Error!'), _('You can only change currency for Draft Invoice !')) + raise osv.except_osv(_('Error!'), _('You can only change currency for Draft Invoice.')) pass def change_currency(self, cr, uid, ids, context=None): @@ -56,18 +56,18 @@ class account_change_currency(osv.osv_memory): if invoice.company_id.currency_id.id == invoice.currency_id.id: new_price = line.price_unit * rate if new_price <= 0: - raise osv.except_osv(_('Error!'), _('New currency is not configured properly !')) + raise osv.except_osv(_('Error!'), _('New currency is not configured properly.')) if invoice.company_id.currency_id.id != invoice.currency_id.id and invoice.company_id.currency_id.id == new_currency: old_rate = invoice.currency_id.rate if old_rate <= 0: - raise osv.except_osv(_('Error!'), _('Current currency is not configured properly !')) + raise osv.except_osv(_('Error!'), _('Current currency is not configured properly.')) new_price = line.price_unit / old_rate if invoice.company_id.currency_id.id != invoice.currency_id.id and invoice.company_id.currency_id.id != new_currency: old_rate = invoice.currency_id.rate if old_rate <= 0: - raise osv.except_osv(_('Error!'), _('Current currency is not configured properly !')) + raise osv.except_osv(_('Error!'), _('Current currency is not configured properly.')) new_price = (line.price_unit / old_rate ) * rate obj_inv_line.write(cr, uid, [line.id], {'price_unit': new_price}) obj_inv.write(cr, uid, [invoice.id], {'currency_id': new_currency}, context=context) diff --git a/addons/account/wizard/account_fiscalyear_close.py b/addons/account/wizard/account_fiscalyear_close.py index 85b36b5e778..a79f9b22770 100644 --- a/addons/account/wizard/account_fiscalyear_close.py +++ b/addons/account/wizard/account_fiscalyear_close.py @@ -51,9 +51,9 @@ class account_fiscalyear_close(osv.osv_memory): """ def _reconcile_fy_closing(cr, uid, ids, context=None): """ - This private function manually do the reconciliation on the account_move_line given as `ids´, and directly + This private function manually do the reconciliation on the account_move_line given as `ids´, and directly through psql. It's necessary to do it this way because the usual `reconcile()´ function on account.move.line - object is really resource greedy (not supposed to work on reconciliation between thousands of records) and + object is really resource greedy (not supposed to work on reconciliation between thousands of records) and it does a lot of different computation that are useless in this particular case. """ #check that the reconcilation concern journal entries from only one company @@ -85,7 +85,7 @@ class account_fiscalyear_close(osv.osv_memory): fy2_period_set = ','.join(map(lambda id: str(id[0]), cr.fetchall())) if not fy_period_set or not fy2_period_set: - raise osv.except_osv(_('UserError!'), _('The periods to generate opening entries were not found.')) + raise osv.except_osv(_('UserError!'), _('The periods to generate opening entries cannot be found.')) period = obj_acc_period.browse(cr, uid, data[0].period_id.id, context=context) new_fyear = obj_acc_fiscalyear.browse(cr, uid, data[0].fy2_id.id, context=context) @@ -100,7 +100,7 @@ class account_fiscalyear_close(osv.osv_memory): _('The journal must have default credit and debit account.')) if (not new_journal.centralisation) or new_journal.entry_posted: raise osv.except_osv(_('UserError!'), - _('The journal must have centralized counterpart without the Skipping draft state option checked!')) + _('The journal must have centralized counterpart without the Skipping draft state option checked.')) #delete existing move and move lines if any move_ids = obj_acc_move.search(cr, uid, [ diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py index 96eb0e6a944..be3c9ccaca6 100644 --- a/addons/account/wizard/account_invoice_refund.py +++ b/addons/account/wizard/account_invoice_refund.py @@ -108,7 +108,7 @@ class account_invoice_refund(osv.osv_memory): if inv.state in ['draft', 'proforma2', 'cancel']: raise osv.except_osv(_('Error !'), _('Cannot %s draft/proforma/cancel invoice.') % (mode)) if inv.reconciled and mode in ('cancel', 'modify'): - raise osv.except_osv(_('Error !'), _('Cannot %s invoice which is already reconciled, invoice should be unreconciled first. You can only Refund this invoice.') % (mode)) + raise osv.except_osv(_('Error !'), _('Cannot %s invoice which is already reconciled, invoice should be unreconciled first. You can only refund this invoice.') % (mode)) if form.period.id: period = form.period.id else: @@ -144,7 +144,7 @@ class account_invoice_refund(osv.osv_memory): if not period: raise osv.except_osv(_('Data Insufficient !'), \ - _('No Period is found on Invoice!')) + _('No period found on the invoice.')) refund_id = inv_obj.refund(cr, uid, [inv.id], date, period, description, journal_id) refund = inv_obj.browse(cr, uid, refund_id[0], context=context) diff --git a/addons/account/wizard/account_invoice_state.py b/addons/account/wizard/account_invoice_state.py index 78ebe5de5fa..55eab584040 100644 --- a/addons/account/wizard/account_invoice_state.py +++ b/addons/account/wizard/account_invoice_state.py @@ -41,7 +41,7 @@ class account_invoice_confirm(osv.osv_memory): for record in data_inv: if record['state'] not in ('draft','proforma','proforma2'): - raise osv.except_osv(_('Warning!'), _("Selected Invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-Forma' state!")) + raise osv.except_osv(_('Warning!'), _("Selected invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-Forma' state.")) wf_service.trg_validate(uid, 'account.invoice', record['id'], 'invoice_open', cr) return {'type': 'ir.actions.act_window_close'} @@ -65,7 +65,7 @@ class account_invoice_cancel(osv.osv_memory): for record in data_inv: if record['state'] in ('cancel','paid'): - raise osv.except_osv(_('Warning!'), _("Selected Invoice(s) cannot be cancelled as they are already in 'Cancelled' or 'Done' state!")) + raise osv.except_osv(_('Warning!'), _("Selected invoice(s) cannot be cancelled as they are already in 'Cancelled' or 'Done' state.")) wf_service.trg_validate(uid, 'account.invoice', record['id'], 'invoice_cancel', cr) return {'type': 'ir.actions.act_window_close'} diff --git a/addons/account/wizard/account_move_journal.py b/addons/account/wizard/account_move_journal.py index d7c692e0619..f14e8c555e6 100644 --- a/addons/account/wizard/account_move_journal.py +++ b/addons/account/wizard/account_move_journal.py @@ -83,25 +83,25 @@ class account_move_journal(osv.osv_memory): if context: if not view_id: return res - + period_pool = self.pool.get('account.period') journal_pool = self.pool.get('account.journal') - + journal_id = self._get_journal(cr, uid, context) period_id = self._get_period(cr, uid, context) - + journal = False if journal_id: journal = journal_pool.read(cr, uid, [journal_id], ['name'])[0]['name'] journal_string = _("Journal: %s") % tools.ustr(journal) else: journal_string = _("Journal: All") - + period = False if period_id: period = period_pool.browse(cr, uid, [period_id], ['name'])[0]['name'] period_string = _("Period: %s") % tools.ustr(period) - + open_string = _("Open") view = """
    @@ -116,7 +116,7 @@ class account_move_journal(osv.osv_memory):
    + +
    + + From 2dfc350825d45ad3007ff3882a664e82897cbc8c Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 8 Aug 2012 08:41:22 +0200 Subject: [PATCH 217/328] [IMP] small improvement in opportunity view bzr revid: fp@tinyerp.com-20120808064122-wjz6ua224nb9mkoi --- addons/crm/crm_lead_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index d2c37c5cea7..db44606b47b 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -467,7 +467,7 @@

    at - %% success rate + %% success rate

    From 1f7d10e6d4ff34dab4a7ab8d873ffded5c47d8e0 Mon Sep 17 00:00:00 2001 From: "Jiten (OpenERP)" Date: Wed, 8 Aug 2012 12:18:11 +0530 Subject: [PATCH 218/328] Improve indentation. bzr revid: jra@tinyerp.com-20120808064811-3g74m9jhqht07p4a --- addons/web/static/src/xml/base.xml | 574 ++++++++++++++--------------- 1 file changed, 287 insertions(+), 287 deletions(-) diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 9c58fda4426..dba786125e8 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -122,297 +122,297 @@
    -
    -
    +
    + -
    -
    Database Management
    - -
    -
    -
    -
    -
    - - - - - - - -
    -

    - Create Database -

    -
    -
    - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - -
    - - - -
    - - - - - -
    - - - -
    - - - -
    - - - -
    -
    - - - - -
    -
    +
    +
    Database Management
    + +
    +
    +
    +
    +
    + + + + + + + +
    +

    + Create Database +

    +
    +
    + +
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + +
    + + + + + +
    + + + +
    + + + +
    + + + +
    +
    + + + + +
    +
    +
    From b9467c69b4bd09cde67344b9e4a9ecee3bcce275 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 8 Aug 2012 08:51:18 +0200 Subject: [PATCH 219/328] [IMP] small CSS improvements bzr revid: fp@tinyerp.com-20120808065118-8sw6l6gmak1e48ld --- addons/web/static/src/css/base.css | 8 ++++---- addons/web/static/src/css/base.sass | 6 +++--- addons/web/static/src/xml/base.xml | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 09081426fca..434ee9377ab 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -78,7 +78,7 @@ background: white; /* http://www.quirksmode.org/dom/inputfile.html * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image - */ + */ */ } .openerp :-moz-placeholder { color: #afafb6 !important; @@ -2150,7 +2150,7 @@ width: 100%; display: inline-block; padding: 2px 2px 2px 0px; - line-height: 18px; + line-height: 1em; } .openerp .oe_form .oe_form_field input { margin: 0px; @@ -2239,10 +2239,10 @@ overflow: hidden; } .openerp .oe_form_editable .oe_form .oe_form_field_integer { - width: 7em !important; + width: 6em !important; } .openerp .oe_form_editable .oe_form .oe_form_field_float { - width: 8em !important; + width: 7em !important; } .openerp .oe_form_editable .oe_form .oe_form_field_date { width: 7.5em !important; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index 0ef8f83f330..fd0f4e6b4aa 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1661,7 +1661,7 @@ $sheet-max-width: 860px width: 100% display: inline-block padding: 2px 2px 2px 0px - line-height: 18px + line-height: 1em input margin: 0px input[type="text"], input[type="password"], input[type="file"], select @@ -1728,9 +1728,9 @@ $sheet-max-width: 860px .oe_form_editable .oe_form .oe_form_field_integer - width: 7em !important + width: 6em !important .oe_form_field_float - width: 8em !important + width: 7em !important .oe_form_field_date width: 7.5em !important .oe_form_field_datetime diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index 601fe165f81..e82659aaa87 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -338,7 +338,7 @@
    - Activate the developer mode + Activate the developer mode

    Version

    From 3fdd2881b9f64fe7c197129294b013e962a28cb1 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 8 Aug 2012 09:24:53 +0200 Subject: [PATCH 220/328] [IMP] clean address format on leads bzr revid: fp@tinyerp.com-20120808072453-tnm2rkvn7djksxtm --- addons/crm/crm_lead_view.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index db44606b47b..2b9834ffe38 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -162,12 +162,12 @@
    -
    - - +
    + + +
    - - +
    @@ -524,7 +524,7 @@
    - +
    From 175c167471962d0c8acb7b509ac00aacd9a69fc8 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 8 Aug 2012 09:38:21 +0200 Subject: [PATCH 221/328] [FIX] fixing bugs in bounce effects + cleaner effect bzr revid: fp@tinyerp.com-20120808073821-gxp4r9u12160lshy --- addons/web/static/src/css/base.sass | 3 --- addons/web/static/src/js/view_form.js | 7 ++++--- addons/web/static/src/xml/base.xml | 4 +++- addons/web_kanban/static/src/js/kanban.js | 14 +++++++------- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index fd0f4e6b4aa..949befdef77 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -435,9 +435,6 @@ $sheet-max-width: 860px text-decoration: none .oe_star_on color: gold - .oe_bounce - -moz-animation: bounce .40s linear - -webkit-animation: bounce .40s linear // }}} // Tags (for many2many tags, among others) {{{ .oe_tag diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index c2dac62366b..c3f941305d5 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -155,15 +155,16 @@ instance.web.FormView = instance.web.View.extend(instance.web.form.FieldManagerM ]); } + this.has_been_loaded.resolve(); + // Add bounce effect on button 'Edit' when click on readonly page view. - this.$element.find(".oe_form_field, .oe_form_group_cell").on('click', function (e) { + this.$element.find(".oe_form_field,label").on('click', function (e) { if(self.get("actual_mode") == "view") { var $button = self.options.$buttons.find(".oe_form_button_edit"); - $button.wrap('
    ').css('margin-right','4px').addClass('oe_left oe_bounce'); + $button.effect('bounce', {distance: 18, times: 7}, 200) } }); - this.has_been_loaded.resolve(); return $.when(); }, extract_qweb_template: function(fvg) { diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index e82659aaa87..4e3ffa0acb4 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -708,7 +708,9 @@
    - +
    + +
    diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index 4477b4dc01f..4856c5d174a 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -421,13 +421,6 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ }); // Add bounce effect on image '+' of kanban header when click on empty space of kanban grouped column. var add_btn = this.$element.find('.oe_kanban_add'); - this.$records.click(function (ev) { - if (ev.target == ev.currentTarget) { - if (!self.state.folded) { - add_btn.wrap('
    ').addClass('oe_bounce'); - } - } - }); this.$records.find('.oe_kanban_show_more').click(this.do_show_more); if (this.state.folded) { this.do_toggle_fold(); @@ -436,6 +429,13 @@ instance.web_kanban.KanbanGroup = instance.web.OldWidget.extend({ this.$records.data('widget', this); this.$has_been_started.resolve(); this.compute_cards_auto_height(); + this.$records.click(function (ev) { + if (ev.target == ev.currentTarget) { + if (!self.state.folded) { + add_btn.effect('bounce', {distance: 18, times: 7}, 200) + } + } + }); return def; }, compute_cards_auto_height: function() { From a2eea7db8549310371982fbf514f5f691df387de Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 8 Aug 2012 09:44:36 +0200 Subject: [PATCH 222/328] [IMP] layout form view wizard CoA bzr revid: fp@tinyerp.com-20120808074436-yg5t0ctdgiwn5ccz --- addons/account/account_installer.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/addons/account/account_installer.xml b/addons/account/account_installer.xml index b720ea16922..d2661674bae 100644 --- a/addons/account/account_installer.xml +++ b/addons/account/account_installer.xml @@ -10,7 +10,9 @@ Accounting Application Configuration
    -
    From a129758a6db9702827e911e2bef7f7e06746ebe4 Mon Sep 17 00:00:00 2001 From: Fabien Pinckaers Date: Wed, 8 Aug 2012 09:54:09 +0200 Subject: [PATCH 223/328] [IMP] layout form SO bzr revid: fp@tinyerp.com-20120808075409-wrz9vv4zfir89gff --- addons/sale/sale_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index adbe29753b5..2db531d34dd 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -304,7 +304,7 @@
    diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 199dd5f712d..41fdbe6a53a 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -549,7 +549,7 @@ 7 7 - +
    From 528c12774d59c9017de157d85373b8c43b29eede Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 14:54:19 +0200 Subject: [PATCH 281/328] [IMP] kanban_image uses json for id and is now tolerant to m2o id's bzr revid: fme@openerp.com-20120809125419-j4l0063qyy6antqu --- addons/web/controllers/main.py | 8 +++----- addons/web_kanban/static/src/js/kanban.js | 1 + 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7e79fd9d2ea..c5a5cfec5b6 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1373,15 +1373,13 @@ class Binary(openerpweb.Controller): retag = hashed_session try: + id = simplejson.loads(id) + if type(id) is list: + id = id[0] # m2o if not id: res = Model.default_get([field], context).get(field) image_data = base64.b64decode(res) else: - try: - id = int(id) - except (ValueError): - # objects might use virtual ids as string - pass res = Model.read([id], [last_update, field], context)[0] retag = hashlib.md5(res.get(last_update)).hexdigest() image_data = base64.b64decode(res.get(field)) diff --git a/addons/web_kanban/static/src/js/kanban.js b/addons/web_kanban/static/src/js/kanban.js index ef273ea9ea1..b4cffcba2d5 100644 --- a/addons/web_kanban/static/src/js/kanban.js +++ b/addons/web_kanban/static/src/js/kanban.js @@ -757,6 +757,7 @@ instance.web_kanban.KanbanRecord = instance.web.OldWidget.extend({ } else if (this.record[field] && ! this.record[field].value) { url = "/web/static/src/img/placeholder.png"; } else { + id = escape(JSON.stringify(id)); url = instance.connection.prefix + '/web/binary/image?session_id=' + this.session.session_id + '&model=' + model + '&field=' + field + '&id=' + id; if (cache !== undefined) { // Set the cache duration in seconds. From b9286a8eebf07b3f8e07de76666a5b092f6052d4 Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 9 Aug 2012 15:11:41 +0200 Subject: [PATCH 282/328] page work in progress model bzr revid: al@openerp.com-20120809131141-m9xqa24u96sbgna7 --- addons/document_page/document_page.py | 107 +++++++++--------- addons/document_page/wizard/__init__.py | 2 - .../wizard/document_page_make_index.py | 83 -------------- .../wizard/document_page_make_index_view.xml | 42 ------- .../wizard/document_page_open.py | 65 ----------- .../wizard/document_page_open_view.xml | 34 ------ 6 files changed, 51 insertions(+), 282 deletions(-) delete mode 100644 addons/document_page/wizard/document_page_make_index.py delete mode 100644 addons/document_page/wizard/document_page_make_index_view.xml delete mode 100644 addons/document_page/wizard/document_page_open.py delete mode 100644 addons/document_page/wizard/document_page_open_view.xml diff --git a/addons/document_page/document_page.py b/addons/document_page/document_page.py index 3af2417b651..dbba0fc00d7 100644 --- a/addons/document_page/document_page.py +++ b/addons/document_page/document_page.py @@ -29,72 +29,72 @@ class document_page(osv.osv): _description = "Document Page" _order = 'name' - _columns = { - 'name': fields.char('Title', size=256, select=True, required=True), - 'type':fields.selection([('normal','Content Page'), ('index','Index Page')], 'Type', help="Define the type of the document"), + def _get_page_index(self, cr, uid, page): + index == [] + for subpage in page.child_ids: + index += ["
  • "+ self._get_page_index(cr, uid, subpage) +"
  • "] + if index: + index = "
      " + "".join(index) + "
    " + else: + index = page.title - 'parent_id': fields.many2one('document.page', 'Section', select=1 , ondelete='set null'), + def _get_display_content(self, cr, uid, ids, name, args, context=None): + res = {} + for page in self.browse(cr, uid, ids, context=context): + if parent.type == "index": + content = self._get_page_index(cr, uid, page) + else: + content = page.content + res[page.id] = { + 'display_content': content + } + return res + + _columns = { + 'name': fields.char('Title', required=True), + 'type':fields.selection([('content','Content Page'), ('index','Index Page')], 'Type', help="Page type"), + + 'parent_id': fields.many2one('document.page', 'Section'), 'child_ids': fields.one2many('document.page', 'parent_id', 'Children'), - 'display_content': fields.text('Displayed Content'), 'content': fields.text("Content"), + 'display_content': fields.function(_get_display_content, string='Displayed Content', type='text'), + 'history_ids': fields.one2many('document.page.history', 'document_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), - 'create_uid': fields.many2one('res.users', 'Author', select=True, readonly=True), - - 'index': fields.char('Index', size=256), - 'minor_edit': fields.boolean('Minor edit', select=True), - 'edit_summary': fields.char('Summary', size=256), - 'tags': fields.char('Keywords', size=1024, select=True), - } _defaults = { - 'type':'normal', + 'type':'content', } def onchange_parent_id(self, cr, uid, ids, parent_id, content, context=None): - if (not parent_id) or content: - return {} - grp = self.pool.get('document.page.type').browse(cr, uid, parent_id, context=context) - template = grp.content_template - try: - s[-1] = str(int(s[-1])+1) - except: - pass - return { - 'value':{ - 'content': template, - } - } - - def onchange_content(self, cr, uid, ids, content, context=None): - if content: - return {'value':{'summary': content}} - return {} - - def copy_data(self, cr, uid, id, default=None, context=None): - return super(document_page2, self).copy_data(cr, uid, id, {'document_id': False}, context) + res = {} + if parent_id and not content: + parent = self.browse(cr, uid, parent_id, context=context) + if parent.type == "content": + res['value'] = { + 'content': parent.content_template, + } + return res def create_history(self, cr, uid, ids, vals, context=None): - history_id = False - history = self.pool.get('document.page.history') - if vals.get('content'): - res = { - 'content': vals.get('content', ''), - 'write_uid': uid, - 'document_id': ids[0], - 'summary':vals.get('edit_summary', '') - } - history_id = history.create(cr, uid, res) - return history_id + 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): - document_id = super(document_page2, self).create(cr, uid, vals, context) - self.create_history(cr, uid, [document_id], vals, context) + page_id = super(document_page2, self).create(cr, uid, vals, context) + self.create_history(cr, uid, [page_id], vals, context) return document_id def write(self, cr, uid, ids, vals, context=None): @@ -102,23 +102,18 @@ class document_page(osv.osv): self.create_history(cr, uid, ids, vals, context) return result - class document_page_history(osv.osv): _name = "document.page.history" _description = "Document Page History" - _rec_name = "summary" _order = 'id DESC' + _rec_name = "create_date" _columns = { - 'document_id': fields.many2one('document.page', 'Document Page', select=True) + 'page_id': fields.many2one('document.page', 'Page'), 'summary': fields.char('Summary', size=256, select=True), 'content': fields.text("Content"), - 'create_date': fields.datetime("Date", select=True), - 'write_uid': fields.many2one('res.users', "Modify By", select=True), - } - - _defaults = { - 'write_uid': lambda obj, cr, uid, context: uid, + 'create_date': fields.datetime("Date"), + 'create_uid': fields.many2one('res.users', "Modified By"), } def getDiff(self, cr, uid, v1, v2, context=None): diff --git a/addons/document_page/wizard/__init__.py b/addons/document_page/wizard/__init__.py index a110b8175af..e24534647f4 100644 --- a/addons/document_page/wizard/__init__.py +++ b/addons/document_page/wizard/__init__.py @@ -19,8 +19,6 @@ # ############################################################################## -import document_page_page_open -import document_page_make_index import document_page_create_menu import document_page_show_diff diff --git a/addons/document_page/wizard/document_page_make_index.py b/addons/document_page/wizard/document_page_make_index.py deleted file mode 100644 index 801ea802b3d..00000000000 --- a/addons/document_page/wizard/document_page_make_index.py +++ /dev/null @@ -1,83 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRl (). -# -# 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 . -# -############################################################################## - -from osv import fields, osv -from tools.translate import _ - -class document_page_make_index(osv.osv_memory): - """ Create Index For Selected Page """ - - _name = "document.page.make.index" - _description = "Create Index" - - def document_page_do_index(self, cr, uid, ids, context=None): - - """ Makes Index according to page hierarchy - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: list of document page index’s IDs - - """ - if context is None: - context = {} - data = context and context.get('active_ids', []) or [] - print 'data',tuple(data) - if not data: - return {'type': 'ir.actions.act_window_close'} - - for index_obj in self.browse(cr, uid, ids, context=context): - document_obj = self.pool.get('document.page') - if not ids: - return {} - cr.execute('select id,index,parent_id from document_page where id in %s '\ - 'and type=%s' ,(tuple(data),'index',)) - lst_all = cr.fetchall() - ls_p = [] - ls_np =[] - s_ids = {} - p_ids = {} - for m in lst_all: - if m[2] == None: - ls_np.append(m) - if m[1]: - s_ids[int(m[1])] = ls_np.index(m)+1 - if s_ids: - document_obj.write(cr, uid, m[0], {'index':s_ids[int(m[1])]}) - if m[2]: - ls_p.append(m) - if m[1]: - dict = {} - for l in ls_p: - if l[2] not in dict: - dict[l[2]] = [] - dict[l[2]].append(l) - else: - dict[l[2]].append(l) - - p_ids[m[1]] = str(m[2]) + "." + str(dict[m[2]].index(m)+1) - if p_ids: - document_obj.write(cr, uid, m[0], {'index':p_ids[m[1]]}) - - return {'type': 'ir.actions.act_window_close'} - -document_page_make_index() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document_page/wizard/document_page_make_index_view.xml b/addons/document_page/wizard/document_page_make_index_view.xml deleted file mode 100644 index 70148850fbf..00000000000 --- a/addons/document_page/wizard/document_page_make_index_view.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - Create Index - document.page.make.index - form - -
    -
    -
    - - - - - Create Index - ir.actions.act_window - document.page.make.index - form - form - new - - - - - - -
    -
    diff --git a/addons/document_page/wizard/document_page_open.py b/addons/document_page/wizard/document_page_open.py deleted file mode 100644 index 6f6b5d3ee8a..00000000000 --- a/addons/document_page/wizard/document_page_open.py +++ /dev/null @@ -1,65 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2004-2010 Tiny SPRL (). -# -# 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 . -# -############################################################################## - -from osv import osv - -class document_page_page_open(osv.osv_memory): - """ wizard Open Page """ - - _name = "document.page.page.open" - _description = "wiz open page" - - def open_document_page(self, cr, uid, ids, context=None): - - """ Opens Wiki Page of Group - @param cr: the current row, from the database cursor, - @param uid: the current user’s ID for security checks, - @param ids: List of open wiki page’s IDs - @return: dictionay of open wiki window on give group id - """ - if context is None: - context = {} - group_ids = context.get('active_ids', []) - for group in self.pool.get('document.page.type').browse(cr, uid, group_ids, context=context): - value = { - 'name': 'Document Page', - 'view_type': 'form', - 'view_mode': 'form,tree', - 'res_model': 'document.page', - 'view_id': False, - 'type': 'ir.actions.act_window', - } - if group.method == 'page': - value['res_id'] = group.home.id - elif group.method == 'list': - value['view_type'] = 'form' - value['view_mode'] = 'tree,form' - elif group.method == 'tree': - view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'document.page.tree.children')]) - value['view_id'] = view_id - value['domain'] = [('parent_id', '=', False)] - value['view_type'] = 'tree' - - return value - -document_page_page_open() - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/document_page/wizard/document_page_open_view.xml b/addons/document_page/wizard/document_page_open_view.xml deleted file mode 100644 index 31df405b921..00000000000 --- a/addons/document_page/wizard/document_page_open_view.xml +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - Open Page - document.page.page.open - form - -
    -
    -
    - - - - - Open Page - ir.actions.act_window - document.page.page.open - form - form - new - -
    -
    From 9a5f47946df8f42badd12bf6169c04ba80ab0e4b Mon Sep 17 00:00:00 2001 From: Antony Lesuisse Date: Thu, 9 Aug 2012 15:29:01 +0200 Subject: [PATCH 283/328] page work in progress view bzr revid: al@openerp.com-20120809132901-0zjj2zeji8bsk962 --- addons/document_page/__openerp__.py | 8 +- addons/document_page/document_page_view.xml | 184 ++++---------------- 2 files changed, 32 insertions(+), 160 deletions(-) diff --git a/addons/document_page/__openerp__.py b/addons/document_page/__openerp__.py index f9cb3c58331..80e236f3c63 100644 --- a/addons/document_page/__openerp__.py +++ b/addons/document_page/__openerp__.py @@ -35,16 +35,10 @@ Keep track of Wiki groups, pages, and history. 'web_depends': ['widget_document_page'], 'init_xml': [], 'update_xml': [ - 'data/document_page_sale_faq_data.xml', - 'wizard/document_page_page_open_view.xml', 'wizard/document_page_create_menu_view.xml', 'wizard/document_page_show_diff_view.xml', - 'wizard/document_page_make_index_view.xml', 'document_page_view.xml', 'document_page_sequence.xml', - 'document_page_sale_faq_view.xml', - 'data/document_page_quickstart.xml', - 'data/document_page_main.xml', 'security/document_page_security.xml', 'security/ir.model.access.csv' ], @@ -55,7 +49,7 @@ Keep track of Wiki groups, pages, and history. 'auto_install': False, 'certificate': '0086363630317', 'web': True, - 'images': ['images/create_index.jpeg','images/page_history.jpeg','images/document_page_groups.jpeg','images/document_page_pages.jpeg','document_page_type_internal_faq.jpeg','page_history.jpeg','sale_document.jpeg','wiki_pages.jpeg','wiki_pages_quality_manual.jpeg'], + 'images': [], 'js': ['static/src/lib/wiky/wiky.js', 'static/src/js/document_page.js'], 'css' : [ "static/src/css/document_page.css"], diff --git a/addons/document_page/document_page_view.xml b/addons/document_page/document_page_view.xml index 74d6f0b8719..023dab44013 100644 --- a/addons/document_page/document_page_view.xml +++ b/addons/document_page/document_page_view.xml @@ -1,95 +1,12 @@ - + + - - - - - - - - document.page.type.tree - document.page.type - tree - - - - - - - - - - document_page_type.form - document.page.type - form - -
    - -
    -
    - - - - - - - - - - - - - - - - - - -
    - -
    -
    -
    - - - - Document Type - document.page.type - form - tree,form - - - - - - Document Type - document.page.type - tree - - - + - document.page.tree.children + document.page.tree document.page tree child_ids @@ -97,30 +14,25 @@ - - - + - document.page.tree + document.page.list document.page tree - - - - + + - document.page.form @@ -129,47 +41,31 @@
    -
    -
    -
    - document.page.search @@ -177,9 +73,7 @@ search - + @@ -196,7 +90,6 @@ - Document Pages @@ -205,23 +98,9 @@ tree,form - 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. - - - - - - - Pages Waiting Review - document.page - form - tree,form - - [('review','=',True)] - + Create web pages + @@ -237,7 +116,6 @@ - document.page.history.form @@ -247,15 +125,15 @@
    From 2043809be494efb256a6a8d0147a49a614b099c8 Mon Sep 17 00:00:00 2001 From: Minh Tran Date: Thu, 9 Aug 2012 15:46:12 +0200 Subject: [PATCH 284/328] Restyling of the dashboard bzr revid: mit@openerp.com-20120809134612-lt4l62nzezlfbkgq --- addons/web/static/src/css/base.css | 2 +- addons/web/static/src/css/base.sass | 2 +- .../static/src/css/dashboard.css | 2810 +++++++++++++++-- .../static/src/css/dashboard.sass | 74 + .../web_dashboard/static/src/js/dashboard.js | 20 +- .../static/src/xml/web_dashboard.xml | 14 +- 6 files changed, 2655 insertions(+), 267 deletions(-) create mode 100644 addons/web_dashboard/static/src/css/dashboard.sass diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index 41ba0ce4cc3..1519478ee89 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -1881,7 +1881,7 @@ width: auto; } .openerp .oe_form_nosheet { - margin: 20px; + margin: 8px; } .openerp .oe_form_nosheet > header { margin-top: -20px; diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index a2b4231b130..ddee25c3105 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -1450,7 +1450,7 @@ $sheet-max-width: 860px .oe_form .oe_form_field_date width: auto .oe_form_nosheet - margin: 20px + margin: 8px .oe_form_nosheet > header margin-top: -20px margin-left: -20px diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css index 74410b3e937..d132489d4b9 100644 --- a/addons/web_dashboard/static/src/css/dashboard.css +++ b/addons/web_dashboard/static/src/css/dashboard.css @@ -1,309 +1,2623 @@ -.openerp table.oe_dashboard { - width: 100%; -} -.openerp .oe_dashboard_links { - text-align: right; - margin: 0 4px 6px 0; -} -.openerp .oe_dashboard_action { - margin: 0 0.5em 0.5em 0; - padding: 0px; - background-color: white; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; +@charset "UTF-8"; +@font-face { + font-family: "mnmliconsRegular"; + src: url("/web/static/src/font/mnmliconsv21-webfont.eot") format("eot"); + src: url("/web/static/src/font/mnmliconsv21-webfont.woff") format("woff"); + src: url("/web/static/src/font/mnmliconsv21-webfont.ttf") format("truetype"); + src: url("/web/static/src/font/mnmliconsv21-webfont.svg") format("svg") active; + font-weight: normal; + font-style: normal; } -.openerp .oe_dashboard_action .oe_dashboard_action_header { - font-size: 85%; - font-weight: bold; - text-transform: uppercase; - text-indent: 10px; - vertical-align: middle; - border-bottom: 1px solid #e5e5e5; - background: white url("/web/static/src/img/box-a-header-a.gif") 0% 0% repeat-x; +@font-face { + font-family: "EntypoRegular"; + src: url("/web/static/src/font/entypo-webfont.eot") format("eot"); + src: url("/web/static/src/font/entypo-webfont.eot?#iefix") format("embedded-opentype"); + src: url("/web/static/src/font/entypo-webfont.woff") format("woff"); + src: url("/web/static/src/font/entypo-webfont.ttf") format("truetype"); + src: url("/web/static/src/font/entypo-webfont.svg") format("svg") active; + font-weight: normal; + font-style: normal; } -.openerp h2.oe_dashboard_action_header { - margin: 0; - padding:4px 4px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -.openerp h2.oe_dashboard_action_header_empty { - padding-top: 0; - padding-bottom: 2px; +@-moz-keyframes bounce { + 0% { + -moz-transform: scale(0); + opacity: 0; + } + + 50% { + -moz-transform: scale(1.3); + opacity: 0.4; + } + + 75% { + -moz-transform: scale(0.9); + opacity: 0.7; + } + + 100% { + -moz-transform: scale(1); + opacity: 1; + } } -.openerp .oe_dashboard_button_create { - margin-left: 4px; - padding: 0 4px 0 4px; - height: 16px !important; +@-webkit-keyframes bounce { + 0% { + -webkit-transform: scale(0); + opacity: 0; + } + + 50% { + -webkit-transform: scale(1.3); + opacity: 0.4; + } + + 75% { + -webkit-transform: scale(0.9); + opacity: 0.7; + } + + 100% { + -webkit-transform: scale(1); + opacity: 1; + } } -.openerp a.oe_dashboard_action_rename { - float: left; - padding-right: 4px; - position: relative; - top: 1px; -} -.openerp .oe_dashboard_action_input { - height: 16px; - position: relative; - top: 2px; +.openerp.openerp_webclient_container { + height: 100%; + position: relative; } -.openerp .oe_dashboard_action .oe_dashboard_action_header:hover { - cursor: move; +.openerp { + padding: 0; + margin: 0; + font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; + color: #4c4c4c; + font-size: 13px; + background: white; + /* http://www.quirksmode.org/dom/inputfile.html + * http://stackoverflow.com/questions/2855589/replace-input-type-file-by-an-image + */ } -.openerp .oe_dashboard_action .ui-icon { - cursor: pointer; +.openerp a { + text-decoration: none; } -.openerp .oe_dashboard_action .ui-icon:hover { - background-color: #ccc; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; +.openerp table { + padding: 0; + border-collapse: collapse; } - -.openerp .oe_dashboard_action .oe_dashboard_action_header .ui-icon { - float: right; +.openerp thead { + font-weight: bold; + background-color: #f0f0f0; } - -.openerp .oe_dashboard .ui-sortable-placeholder { - border: 1px dotted black; - visibility: visible !important; - height: 50px !important; +.openerp thead th { + border-right: 1px dotted #afafb6; } - -.openerp .oe_dashboard .ui-sortable-placeholder * { - visibility: hidden; +.openerp thead th:last-child { + border-right: none; } - -/* Base overwriting */ -.openerp .oe_dashboard .oe_list_content, .openerp .oe_dashboard .ui-widget-header { - border-right:none !important; - padding:0 3px; +.openerp th, .openerp td { + padding: 0; + text-align: left; } - -/* Layouts */ -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_0 { - width: 100%; +.openerp th { + font-weight: bold; + vertical-align: middle; } -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_1, -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_2 { - display: none; +.openerp td { + vertical-align: top; } - -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column { - width: 50%; +.openerp .zebra tbody tr:nth-child(odd) td { + background-color: #f0f0fa; + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); } -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column.index_2 { - display: none; +.openerp .zebra tbody tr:hover td { + background-color: #eeeeee; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dedede)); + background-image: -webkit-linear-gradient(top, #eeeeee, #dedede); + background-image: -moz-linear-gradient(top, #eeeeee, #dedede); + background-image: -ms-linear-gradient(top, #eeeeee, #dedede); + background-image: -o-linear-gradient(top, #eeeeee, #dedede); + background-image: linear-gradient(to bottom, #eeeeee, #dedede); } - -.openerp .oe_dashboard_layout_1-1-1 .oe_dashboard_column { - width: 33%; +.openerp ul, .openerp li, .openerp ol { + margin: 0; + padding: 0; } - -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_0 { - width: 70%; +.openerp li { + list-style-type: none; } -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_1 { - width: 30%; +.openerp input, .openerp textarea, .openerp select { + padding: 2px 4px; + border: 1px solid #cccccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: white; } -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_2 { - display: none; +.openerp img { + vertical-align: middle; } - -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_0 { - width: 30%; +.openerp h4 { + margin: 4px 0; } -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_1 { - width: 70%; +.openerp a.button:link, .openerp a.button:visited, .openerp button, .openerp input[type='submit'], .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { + display: inline-block; + border: 1px solid #ababab; + color: #404040; + margin: 0; + padding: 3px 12px; + font-size: 13px; + text-align: center; + background-color: #efefef; + background-image: -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background-image: -webkit-linear-gradient(top, #efefef, #d8d8d8); + background-image: -moz-linear-gradient(top, #efefef, #d8d8d8); + background-image: -ms-linear-gradient(top, #efefef, #d8d8d8); + background-image: -o-linear-gradient(top, #efefef, #d8d8d8); + background-image: linear-gradient(to bottom, #efefef, #d8d8d8); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + text-shadow: 0 1px 1px rgba(255, 255, 255, 0.5); + -webkit-font-smoothing: antialiased; + outline: none; } -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_2 { - display: none; +.openerp a.button:hover, .openerp button:hover, .openerp input[type='submit']:hover, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-hover { + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + cursor: pointer; + background-position: 0; } - - -.openerp .oe_dashboard_layout_selector { - overflow: auto; - padding: 10px; +.openerp a.button:focus, .openerp button:focus, .openerp input[type='submit']:focus, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-focus { + border: 1px solid #80bfff; + background-position: 0; + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + -moz-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 0 3px #80bfff, 0 1px 1px rgba(255, 255, 255, 0.8) inset; } - -.openerp .oe_dashboard_layout_selector ul { - margin: 0; - padding: 0; +.openerp a.button:active, .openerp a.button.active, .openerp button:active, .openerp button.active, .openerp input[type='submit']:active, .openerp input[type='submit'].active, .openerp .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button.ui-state-active { + background-color: #e3e3e3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)); + background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -moz-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -ms-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -o-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: linear-gradient(to bottom, #e3e3e3, #f6f6f6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; } - -.openerp .oe_dashboard_layout_selector ul li { - position: relative; - float: left; - height: 51px; - list-style-type: none; - margin: 5px; - padding: 0; - width: 82px; - cursor: pointer; - border: 1px solid white; +.openerp a.button.disabled, .openerp button:disabled, .openerp input[type='submit']:disabled { + background: #efefef !important; + border: 1px solid #d1d1d1 !important; + -moz-box-shadow: none !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + color: #aaaaaa !important; + cursor: default; + text-shadow: 0 1px 1px white !important; } -.openerp .oe_dashboard_layout_selector ul li:hover { - border: 1px solid #090; +.openerp .ui-widget { + font-family: "Lucida Grande", Helvetica, Verdana, Arial, sans-serif; + font-size: 13px; } -.openerp .oe_dashboard_layout_selector ul li img.oe_dashboard_selected_layout { - position: absolute; - top: 0px; - right: 0px; +.openerp .ui-widget-content a { + color: #8a89ba; } - -.openerp .oe_dashboard_home_tile { - text-align: center; - margin: 10px; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - -webkit-box-shadow: 3px 3px 5px 3px #DADDDD; - -moz-box-shadow: 3px 3px 5px 3px #DADDDD; - box-shadow: 3px 3px 5px 3px #DADDDD; +.openerp .ui-menu .ui-menu-item { + margin: 0 8px 0 0; + padding: 0 0 0 12px; + width: auto; } -.openerp .oe_dashboard_home_tile span { - display: block; - padding: 0 0 15px; - font-weight: bold; - text-transform: uppercase; - color: #555; - white-space: nowrap; +.openerp .ui-menu .ui-menu-item a.ui-state-active { + background: #f0f0fa; } -.openerp .oe_dashboard_home_tile_icon { - height: 100px; +.openerp.ui-dialog { + display: none; + padding: 6px; + background-color: rgba(60, 60, 60, 0.7); + border: 1px solid; + border-color: #888888 #555555 #444444; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); + box-shadow: 0 1px 12px rgba(0, 0, 0, 0.6); + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; } -.openerp .oe_dashboard_home_tile_icon img { - display: block; - margin: 0 auto; +.openerp.ui-dialog .ui-dialog-content { + padding: 0px; } -.openerp .oe_dashboard_home_tile_icon img.hover { - display: none; +.openerp.ui-dialog .ui-dialog-titlebar, .openerp.ui-dialog .ui-dialog-content, .openerp.ui-dialog .ui-dialog-buttonpane { + padding: 16px; } -.openerp .oe_dashboard_home_tile:hover { - background-color: #fafafa; - -webkit-box-shadow: 3px 3px 5px 3px #979797; - -moz-box-shadow: 3px 3px 5px 3px #979797; - box-shadow: 3px 3px 5px 3px #979797; +.openerp.ui-dialog .ui-dialog-titlebar { + border-bottom: 1px solid #cacaca; + -moz-border-radius: 2px 2px 0 0; + -webkit-border-radius: 2px 2px 0 0; + border-radius: 2px 2px 0 0; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); } -.openerp .oe_dashboard_home_tile:hover img { - display: none; +.openerp.ui-dialog .ui-dialog-titlebar .ui-dialog-title { + margin: 0; + padding: 0; } -.openerp .oe_dashboard_home_tile:hover img.hover { - display: block; +.openerp.ui-dialog .ui-widget-header { + border: none; } -.openerp .oe_dashboard_home_tile:hover span { - color: black; +.openerp.ui-dialog .ui-dialog-content { + background: white; } - -.openerp .oe_dashboard_action .view-manager-main-content { - padding: 2px; +.openerp.ui-dialog .ui-dialog-buttonpane { + border-top: 1px solid #e0e0e0; + background: #f5f7f9; + margin: 0; + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; } - -.openerp .oe_app_tiles h1, .openerp .oe_app_tiles h3 { - margin: 16px 24px; +.openerp.ui-dialog .ui-dialog-buttonpane button { + margin: 0; } - -.openerp .oe_app_tiles { - padding: 0 10px; -} - -.openerp .oe_app_tiles li { +.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: left; +} +.openerp.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset .ui-button { + margin-right: 4px; +} +.openerp.ui-dialog .ui-dialog-titlebar-close { + padding: 0; +} +.openerp.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick { + display: none; +} +.openerp.ui-dialog .ui-dialog-titlebar-close:before { + content: "×"; + font-size: 18px; + font-weight: bold; + line-height: 16px; + color: black; + text-shadow: 0 1px 0 white; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.openerp.ui-dialog .ui-dialog-titlebar-close:before:hover { + color: red; + text-decoration: none; +} +.openerp.ui-dialog .oe_about { + background-color: white; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=); + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.openerp.ui-dialog .oe_about a { + color: #8a89ba; +} +.openerp.ui-dialog .oe_about a:hover { + text-decoration: underline; +} +.openerp.ui-dialog .oe_about a:focus { + outline: none; +} +.openerp.ui-dialog .oe_about .oe_logo { + margin-left: -6px; +} +.openerp.ui-dialog .oe_about .oe_bottom { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + text-shadow: 0 1px 1px #999999; + background-color: #b41616; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606)); + background-image: -webkit-linear-gradient(top, #b41616, #600606); + background-image: -moz-linear-gradient(top, #b41616, #600606); + background-image: -ms-linear-gradient(top, #b41616, #600606); + background-image: -o-linear-gradient(top, #b41616, #600606); + background-image: linear-gradient(to bottom, #b41616, #600606); + color: #eeeeee; + padding: 0 16px; + -moz-border-radius: 0 0 2px 2px; + -webkit-border-radius: 0 0 2px 2px; + border-radius: 0 0 2px 2px; +} +.openerp.ui-dialog .oe_about .oe_bottom a { + color: #eeeeee; +} +.openerp.ui-dialog.oe_act_window .ui-dialog-content { + padding: 0px; +} +.openerp .modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: black; + filter: alpha(opacity=30); + opacity: 0.3; +} +.openerp .oe_i { + font-family: "mnmliconsRegular" !important; + font-size: 21px; + font-weight: 300 !important; +} +.openerp .oe_e { + font-family: "entypoRegular" !important; + font-size: 34px; + font-weight: 300 !important; +} +.openerp .oe_left { + float: left; + margin-right: 8px; +} +.openerp .oe_right { + float: right; + margin-left: 8px; +} +.openerp .oe_text_right { + text-align: right; +} +.openerp .oe_clear { + clear: both; +} +.openerp .oe_wait { + cursor: wait; +} +.openerp .oe_fade { + color: #888888; + font-weight: normal; +} +.openerp .oe_bold { + font-weight: bold; +} +.openerp .oe_inline { + width: auto !important; +} +.openerp .oe_highlight { + color: white; + background: #dc5f59; +} +.openerp button.oe_highlight { + background-color: #dc5f59; + background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630)); + background-image: -webkit-linear-gradient(top, #dc5f59, #b33630); + background-image: -moz-linear-gradient(top, #dc5f59, #b33630); + background-image: -ms-linear-gradient(top, #dc5f59, #b33630); + background-image: -o-linear-gradient(top, #dc5f59, #b33630); + background-image: linear-gradient(to bottom, #dc5f59, #b33630); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp button.oe_highlight:active { + background-color: #b33630; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b33630), to(#dc5f59)); + background-image: -webkit-linear-gradient(top, #b33630, #dc5f59); + background-image: -moz-linear-gradient(top, #b33630, #dc5f59); + background-image: -ms-linear-gradient(top, #b33630, #dc5f59); + background-image: -o-linear-gradient(top, #b33630, #dc5f59); + background-image: linear-gradient(to bottom, #b33630, #dc5f59); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp button.oe_highlight:hover { + background-color: #df6b66; + background-image: -webkit-gradient(linear, left top, left bottom, from(#df6b66), to(#bf3a33)); + background-image: -webkit-linear-gradient(top, #df6b66, #bf3a33); + background-image: -moz-linear-gradient(top, #df6b66, #bf3a33); + background-image: -ms-linear-gradient(top, #df6b66, #bf3a33); + background-image: -o-linear-gradient(top, #df6b66, #bf3a33); + background-image: linear-gradient(to bottom, #df6b66, #bf3a33); + -moz-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 0 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_form_dirty .oe_highlight_on_dirty { + color: white; + background: #dc5f59; + font-weight: bold; +} +.openerp .oe_form_dirty button.oe_highlight_on_dirty { + background-color: #dc5f59; + background-image: -webkit-gradient(linear, left top, left bottom, from(#dc5f59), to(#b33630)); + background-image: -webkit-linear-gradient(top, #dc5f59, #b33630); + background-image: -moz-linear-gradient(top, #dc5f59, #b33630); + background-image: -ms-linear-gradient(top, #dc5f59, #b33630); + background-image: -o-linear-gradient(top, #dc5f59, #b33630); + background-image: linear-gradient(to bottom, #dc5f59, #b33630); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_form_dirty button.oe_highlight_on_dirty:hover { + background: #ed6f6a; +} +.openerp .oe_title { + width: 50%; + float: left; +} +.openerp .oe_title:after { + content: "."; + display: block; + height: 0; + clear: both; + visibility: hidden; +} +.openerp .oe_button_box { + width: 270px; + text-align: right; +} +.openerp .oe_button_box button { + margin: 4px; +} +.openerp .oe_avatar > img { + height: 90px; + max-width: 100px; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); + border: none; +} +.openerp .oe_avatar + div { + margin-left: 5px; +} +.openerp .oe_button.oe_link { + border: none; + padding: 0; + margin: 0; + background: none; + -moz-border-radius: none; + -webkit-border-radius: none; + border-radius: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_button.oe_link img { + display: none; +} +.openerp .oe_button.oe_link span { + border: none; + padding: 0; + margin: 0; + background: none; + -moz-border-radius: none; + -webkit-border-radius: none; + border-radius: none; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + color: #8a89ba; + font-weight: bold; +} +.openerp .oe_button.oe_link span:hover { + text-decoration: underline; +} +.openerp .oe_webclient .oe_star_on, .openerp .oe_webclient .oe_star_off { + color: #cccccc; + text-shadow: 0 0 2px black; + vertical-align: top; + position: relative; + top: -5px; +} +.openerp .oe_webclient .oe_star_on:hover, .openerp .oe_webclient .oe_star_off:hover { + text-decoration: none; +} +.openerp .oe_webclient .oe_star_on { + color: gold; +} +.openerp .oe_bounce { + -moz-animation: bounce 0.4s linear; + -webkit-animation: bounce 0.4s linear; +} +.openerp .oe_tag { + border: 1px solid #afafb6; + font-size: 11px; + padding: 2px 4px; + margin: 0 2px 2px 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: #f0f0fa; + color: #4c4c4c; +} +.openerp .oe_tag_dark { + background: #8786b7; + color: #eeeeee; +} +.openerp .oe_tags .text-wrap { + width: 100% !important; +} +.openerp .oe_tags .text-wrap textarea { + width: 100% !important; +} +.openerp .oe_tags .text-core .text-wrap .text-dropdown .text-list .text-suggestion em { + font-style: italic; + text-decoration: none; +} +.openerp.oe_tooltip { + font-size: 12px; +} +.openerp.oe_tooltip .oe_tooltip_string { + color: #ffdd55; + font-weight: bold; + font-size: 13px; +} +.openerp.oe_tooltip .oe_tooltip_help { + white-space: pre-wrap; +} +.openerp.oe_tooltip .oe_tooltip_technical { + padding: 0 0 4px 0; + margin: 5px 0 0 15px; +} +.openerp.oe_tooltip .oe_tooltip_technical li { + list-style: circle; +} +.openerp.oe_tooltip .oe_tooltip_technical_title { + font-weight: bold; +} +.openerp .oe_notebook { + margin: 8px 0; + padding: 0 16px; + list-style: none; + zoom: 1; +} +.openerp .oe_notebook.ui-corner-all { + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.openerp .oe_notebook:before, .openerp .oe_notebook:after { + display: table; + content: ""; + zoom: 1; +} +.openerp .oe_notebook:after { + clear: both; +} +.openerp .oe_notebook > li { + float: left; +} +.openerp .oe_notebook > li > a { + display: block; + color: #4c4c4c; +} +.openerp .oe_notebook { + border-color: #dddddd; + border-style: solid; + border-width: 0 0 1px; +} +.openerp .oe_notebook > li { + position: relative; +} +.openerp .oe_notebook > li > a { + padding: 0 12px; + margin-right: 2px; + line-height: 30px; + border: 1px solid transparent; + -moz-border-radius: 4px 4px 0 0; + -webkit-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; +} +.openerp .oe_notebook > li > a:hover { + text-decoration: none; + background-color: #eeeeee; + border-color: #eeeeee #eeeeee #dddddd; +} +.openerp .oe_notebook > li.ui-state-active > a, .openerp .oe_notebook > li.ui-state-active > a:hover { + background-color: white; + border: 1px solid #dddddd; + border-bottom-color: transparent; + cursor: default; +} +.openerp .oe_notebook_page { + padding: 0; +} +.openerp div.ui-tabs { + padding: 3px 0px 3px 0px; +} +.openerp .ui-tabs-hide { + display: none; +} +.openerp .oe_dropdown, .openerp .oe_dropdown_hover, .openerp .oe_dropdown_toggle { + position: relative; + cursor: pointer; +} +.openerp .oe_dropdown_toggle { + color: #404040; + font-weight: normal; +} +.openerp .oe_dropdown_hover:hover .oe_dropdown_menu, .openerp .oe_dropdown_menu.oe_opened { + display: block; +} +.openerp .oe_dropdown_menu { + display: none; + position: absolute; + top: 26px; + left: 0; + z-index: 1; + border: 1px solid #afafb6; + background: white; + padding: 4px 0; + min-width: 140px; + text-align: left; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +.openerp .oe_dropdown_menu > li { + list-style-type: none; + float: none; + display: block; + position: relative; + padding: 2px 8px; +} +.openerp .oe_dropdown_menu > li:hover { + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_dropdown_menu > li > a { + white-space: nowrap; + display: block; + color: #4c4c4c; + text-decoration: none; +} +.openerp .oe_dropdown_menu > li > a:hover { + text-decoration: none; +} +.openerp .oe_dropdown_arrow:after { + width: 0; + height: 0; + display: inline-block; + content: "&darr"; + text-indent: -99999px; + vertical-align: top; + margin-top: 8px; + margin-left: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #404040; + filter: alpha(opacity=50); + opacity: 0.5; +} +.openerp .oe_sidebar { + white-space: nowrap; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment { + height: 20px; + cursor: pointer; + padding-left: 6px; + margin-top: 6px; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment span { + font-weight: bold; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment .oe_hidden_input_file { + width: 200px; +} +.openerp .oe_sidebar .oe_dropdown_menu .oe_sidebar_add_attachment:hover { + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_sidebar .oe_dropdown_menu li .oe_sidebar_delete_item { + position: absolute; + top: 4px; + right: 4px; + display: none; + width: 12px; + height: 12px; + padding: 1px; + color: #8786b7; + line-height: 8px; + text-align: center; + font-weight: bold; + text-shadow: 0 1px 1px white; +} +.openerp .oe_sidebar .oe_dropdown_menu li .oe_sidebar_delete_item:hover { + text-decoration: none; + color: white; + background: #8786b7; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.openerp .oe_sidebar .oe_dropdown_menu li:hover .oe_sidebar_delete_item { + display: inline-block; +} +.openerp .oe_loading { + display: none; + z-index: 100; + position: fixed; + top: 0; + right: 50%; + padding: 4px 12px; + background: #a61300; + color: white; + text-align: center; + border: 1px solid #990000; + border-top: none; + -moz-border-radius-bottomright: 8px; + -moz-border-radius-bottomleft: 8px; + border-bottom-right-radius: 8px; + border-bottom-left-radius: 8px; +} +.openerp .oe_notification { + z-index: 1050; +} +.openerp .oe_login { + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAYAAADgzO9IAAAAKUlEQVQIHWO8e/fufwYsgAUkJigoiCIF5DMyoYggcUiXgNnBiGQKmAkARpcEQeriln4AAAAASUVORK5CYII=); + text-align: center; + font-size: 14px; + height: 100%; +} +.openerp .oe_login li { + list-style-type: none; + padding-bottom: 4px; +} +.openerp .oe_login button { + float: right; + display: inline-block; + cursor: pointer; + padding: 6px 16px; + border: 1px solid #222222; + color: white; + margin: 0; + background-color: #b92020; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b92020), to(#600606)); + background-image: -webkit-linear-gradient(top, #b92020, #600606); + background-image: -moz-linear-gradient(top, #b92020, #600606); + background-image: -ms-linear-gradient(top, #b92020, #600606); + background-image: -o-linear-gradient(top, #b92020, #600606); + background-image: linear-gradient(to bottom, #b92020, #600606); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(155, 155, 155, 0.4) inset; +} +.openerp .oe_login input, .openerp .oe_login select { + width: 252px; + font-family: "Lucida Grande", Helvetica, Verdana, Arial; + border: 1px solid #999999; + background: whitesmoke; + -moz-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: inset 0 1px 4px rgba(0, 0, 0, 0.3); + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.openerp .oe_login input { + margin-bottom: 9px; + padding: 5px 6px; +} +.openerp .oe_login select { + padding: 1px; +} +.openerp .oe_login .oe_login_dbpane { + position: fixed; + top: 0; + right: 8px; + padding: 5px 10px; + color: #eeeeee; + border: solid 1px #333333; + background: #1e1e1e; + background: rgba(30, 30, 30, 0.94); + -moz-border-radius: 0 0 8px 8px; + -webkit-border-radius: 0 0 8px 8px; + border-radius: 0 0 8px 8px; +} +.openerp .oe_login .oe_login_dbpane input { + padding: 2px 4px; + margin: 4px 0; +} +.openerp .oe_login .oe_login_bottom { + position: absolute; + top: 50%; + left: 0; + right: 0; + bottom: 0; + text-shadow: 0 1px 1px #999999; + background-color: #b41616; + background-image: -webkit-gradient(linear, left top, left bottom, from(#b41616), to(#600606)); + background-image: -webkit-linear-gradient(top, #b41616, #600606); + background-image: -moz-linear-gradient(top, #b41616, #600606); + background-image: -ms-linear-gradient(top, #b41616, #600606); + background-image: -o-linear-gradient(top, #b41616, #600606); + background-image: linear-gradient(to bottom, #b41616, #600606); +} +.openerp .oe_login .oe_login_pane { + position: absolute; + top: 50%; + left: 50%; + margin: -160px -166px; + border: solid 1px #333333; + background: #1e1e1e; + background: rgba(30, 30, 30, 0.94); + padding: 22px 32px; + color: #eeeeee; + text-align: left; + -moz-border-radius: 8px; + -webkit-border-radius: 8px; + border-radius: 8px; + -moz-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + -webkit-box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); + box-shadow: 0 0 18px rgba(0, 0, 0, 0.9); +} +.openerp .oe_login .oe_login_pane h2 { + margin-top: 0; + font-size: 18px; +} +.openerp .oe_login .oe_login_logo { + position: absolute; + top: -70px; + left: 0; + width: 100%; + margin: 0 auto; + text-align: center; +} +.openerp .oe_login .oe_login_footer { + position: absolute; + bottom: -40px; + left: 0; + width: 100%; + text-align: center; +} +.openerp .oe_login .oe_login_footer a { + color: #eeeeee; + margin: 0 8px; +} +.openerp .oe_login .oe_login_footer a:hover { + text-decoration: underline; +} +.openerp .oe_login .oe_login_footer span { + font-weight: bold; + font-size: 16px; +} +.openerp .oe_login .oe_login_error_message { + display: none; + background-color: #b41616; + color: #eeeeee; + padding: 14px 18px; + margin-top: 15px; + text-align: center; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.8); +} +.openerp .oe_login_invalid .oe_login_error_message { + display: inline-block; +} +.openerp .oe_database_manager { + background: white; + color: black; + text-align: left; +} +.openerp .oe_database_manager .oe_database_manager_menu { + color: black; +} +.openerp .oe_webclient { + width: 100%; + height: 100%; + border-spacing: 0px; +} +.openerp .oe_content_full_screen .oe_application { + top: 0; + left: 0; +} +.openerp .oe_content_full_screen .oe_topbar, .openerp .oe_content_full_screen .oe_leftbar { + display: none; +} +.openerp .oe_topbar { + width: 100%; + height: 31px; + border-top: solid 1px #d3d3d3; + background-color: #646060; + background-image: -webkit-gradient(linear, left top, left bottom, from(#646060), to(#262626)); + background-image: -webkit-linear-gradient(top, #646060, #262626); + background-image: -moz-linear-gradient(top, #646060, #262626); + background-image: -ms-linear-gradient(top, #646060, #262626); + background-image: -o-linear-gradient(top, #646060, #262626); + background-image: linear-gradient(to bottom, #646060, #262626); +} +.openerp .oe_topbar .oe_topbar_item { + display: block; + padding: 5px 10px 7px; + line-height: 20px; + height: 20px; + color: #eeeeee; + vertical-align: top; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_topbar .oe_topbar_item:hover { + background: #303030; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_topbar .oe_topbar_item .oe_active { + background: #303030; + font-weight: bold; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_topbar .oe_topbar_avatar { + width: 24px; + height: 24px; + margin: -2px 2px 0 0; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} +.openerp .oe_topbar .oe_topbar_avatar { + vertical-align: top; +} +.openerp .oe_topbar .oe_dropdown_arrow:after { + border-top: 4px solid white; +} +.openerp .oe_topbar .oe_dropdown_menu { + top: 32px; + background: #333333; + background: rgba(37, 37, 37, 0.9); + border-color: #999999; + border-color: rgba(0, 0, 0, 0.2); + border-style: solid; + border-width: 0 1px 1px; + -moz-border-radius: 0 0 6px 6px; + -webkit-border-radius: 0 0 6px 6px; + border-radius: 0 0 6px 6px; + -webkit-background-clip: padding-box; + -moz-background-clip: padding-box; + background-clip: padding-box; +} +.openerp .oe_topbar .oe_dropdown_menu li { + float: none; + padding: 3px 12px; +} +.openerp .oe_topbar .oe_dropdown_menu li a { + color: #eeeeee; +} +.openerp .oe_topbar .oe_dropdown_menu li:hover { + background-color: #292929; + background-image: -webkit-gradient(linear, left top, left bottom, from(#292929), to(#191919)); + background-image: -webkit-linear-gradient(top, #292929, #191919); + background-image: -moz-linear-gradient(top, #292929, #191919); + background-image: -ms-linear-gradient(top, #292929, #191919); + background-image: -o-linear-gradient(top, #292929, #191919); + background-image: linear-gradient(to bottom, #292929, #191919); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_leftbar { + display: none; + width: 220px; + background: #f0eeee; + border-right: 1px solid #afafb6; + text-shadow: 0 1px 1px white; + padding-bottom: 16px; +} +.openerp a.oe_logo { + width: 220px; + display: block; + text-align: center; + height: 70px; + line-height: 70px; +} +.openerp a.oe_logo img { + height: 40px; + width: 157px; + margin: 14px 0; +} +.openerp .oe_footer { + position: fixed; + bottom: 0; + padding: 4px 0; + background: #f0eeee; + width: 220px; + text-align: center; +} +.openerp .oe_footer a { + font-weight: 800; + font-family: serif; + font-size: 16px; + color: black; +} +.openerp .oe_footer a span { + color: #c81010; + font-style: italic; +} +.openerp .oe_user_menu { + float: right; + padding: 0; + margin: 0; +} +.openerp .oe_user_menu li { + list-style-type: none; + float: left; +} +.openerp .oe_user_menu .oe_dropdown_menu { + right: -1px; +} +.openerp .oe_systray > div { + float: left; + padding: 0 4px 0 4px; +} +.openerp .oe_systray { + float: right; +} +.openerp .oe_menu { + float: left; + padding: 0; + margin: 0; +} +.openerp .oe_menu li { + float: left; +} +.openerp .oe_menu a { + display: block; + padding: 5px 10px 7px; + line-height: 20px; + height: 20px; + color: #eeeeee; + vertical-align: top; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_menu a:hover { + background: #303030; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_menu .oe_active { + background: #303030; + font-weight: bold; + color: white; + -moz-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + -webkit-box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; + box-shadow: 0 1px 2px rgba(255, 255, 255, 0.3) inset; +} +.openerp .oe_secondary_menu_section { + font-weight: bold; + margin-left: 8px; + color: #8a89ba; +} +.openerp .oe_secondary_submenu { + padding: 2px 0 8px 0; + margin: 0; + width: 100%; + display: inline-block; +} +.openerp .oe_secondary_submenu > li { + position: relative; + padding: 1px 0 1px 20px; +} +.openerp .oe_secondary_submenu > li a { + display: block; + color: #4c4c4c; + padding: 2px 4px 2px 0; +} +.openerp .oe_secondary_submenu > li .oe_menu_label { + position: absolute; + top: 1px; + right: 1px; + font-size: 10px; + background: #8a89ba; + color: white; + padding: 2px 4px; + margin: 1px 6px 0 0; + border: 1px solid lightGray; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_menu_counter { + float: right; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + margin: 0px; + padding: 1px 4px; +} +.openerp .oe_secondary_submenu .oe_active { + background: #8a89ba; + border-top: 1px solid lightGray; + border-bottom: 1px solid lightGray; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_active a { + color: white; +} +.openerp .oe_secondary_submenu .oe_active .oe_menu_label { + background: #eeeeee; + color: #8a89ba; + text-shadow: 0 1px 1px white; + -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); + box-shadow: 0 1px 1px rgba(0, 0, 0, 0.2); +} +.openerp .oe_secondary_submenu .oe_active .oe_menu_counter { + background: #eeeeee; + color: #8a89ba; +} +.openerp .oe_secondary_submenu .oe_menu_toggler:before { + width: 0; + height: 0; + display: inline-block; + content: "&darr"; + text-indent: -99999px; + vertical-align: top; + margin-left: -12px; + margin-top: 4px; + margin-right: 4px; + border-top: 4px solid transparent; + border-bottom: 4px solid transparent; + border-left: 4px solid #4c4c4c; + filter: alpha(opacity=50); + opacity: 0.5; +} +.openerp .oe_secondary_submenu .oe_menu_opened:before { + margin-top: 6px; + margin-left: -16px; + margin-right: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid #4c4c4c; +} +.openerp .oe_application { + width: 100%; +} +.openerp .oe_application a { + color: #8a89ba; +} +.openerp .oe_application a:hover { + text-decoration: underline; +} +.openerp .oe_application > div { + height: 100%; +} +.openerp .oe_view_manager .oe_view_manager_body { + height: inherit; +} +.openerp .oe_view_manager .oe_view_manager_view_kanban { + height: inherit; +} +.openerp .oe_view_manager table.oe_view_manager_header { + width: 100%; + table-layout: fixed; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row { + clear: both; + text-shadow: 0 1px 1px white; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_header_row:last-child td { + padding-top: 0; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_view_manager_sidebar { + margin: 0px auto; + text-align: center; +} +.openerp .oe_view_manager table.oe_view_manager_header td { + line-height: 26px; +} +.openerp .oe_view_manager table.oe_view_manager_header h2 { + font-size: 18px; + margin: 0; + float: left; +} +.openerp .oe_view_manager table.oe_view_manager_header h2 a { + color: #8a89ba; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group { + display: inline-block; + border: 1px solid #ababab; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li { + float: left; + border-right: 1px solid #ababab; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group li:last-child { + border: none; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group a { + color: #4c4c4c; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group a:hover { + text-decoration: none; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active { + background: #999999; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_button_group .active a { + color: white; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); +} +.openerp .oe_view_manager table.oe_view_manager_header .oe_view_manager_buttons { + white-space: nowrap; +} +.openerp .oe_view_manager .oe_view_manager_pager { + line-height: 26px; +} +.openerp .oe_view_manager .oe_view_manager_pager .oe_list_pager_single_page .oe_pager_group { + display: none; +} +.openerp .oe_view_manager .oe_pager_value { + float: left; + margin-right: 8px; +} +.openerp .oe_view_manager .oe_pager_group { + float: left; + height: 24px; + line-height: 24px; + display: inline-block; + border: 1px solid #ababab; + cursor: pointer; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} +.openerp .oe_view_manager .oe_pager_group li { + height: 24px; + line-height: 24px; + padding: 0; + float: left; + border-right: 1px solid #ababab; +} +.openerp .oe_view_manager .oe_pager_group li:last-child { + border: none; +} +.openerp .oe_view_manager .oe_pager_group a { + color: #4c4c4c; + padding: 0 8px; +} +.openerp .oe_view_manager .oe_pager_group a:hover { + text-decoration: none; +} +.openerp .oe_view_manager .oe_pager_group .active { + background: #999999; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3) inset; +} +.openerp .oe_view_manager .oe_pager_group .active a { + color: white; + text-shadow: 0 1px 2px rgba(0, 0, 0, 0.4); +} +.openerp .oe_view_manager .oe_view_manager_switch li { + text-align: center; + width: 24px; + height: 24px; + line-height: 16px; +} +.openerp .oe_view_manager .oe_view_manager_switch li a { + position: relative; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_list:after, .openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_tree:after { + padding: 2px; + content: "i"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_form:after { + content: "m"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_graph:after { + font-family: "mnmliconsRegular" !important; + font-size: 21px; + font-weight: 300 !important; + content: "}"; + top: -2px; + position: relative; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_gantt:after { + font-family: "mnmliconsRegular" !important; + font-size: 21px; + font-weight: 300 !important; + content: "y"; + top: -2px; + position: relative; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_calendar:after { + content: "P"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_kanban:after { + content: "k"; +} +.openerp .oe_view_manager .oe_view_manager_switch .oe_vm_switch_diagram:after { + content: "f"; +} +.openerp .oe_view_manager_current { + height: 100%; +} +.openerp .oe_view_manager_current > .oe_view_manager_header { + border-top: 1px solid #cacaca; + border-bottom: 1px solid #cacaca; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); + -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1); + -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1); + box-shadow: 0 1px 0 rgba(255, 255, 255, 0.4), 0 0 9px rgba(0, 0, 0, 0.1); +} +.openerp .oe_view_manager_current > .oe_view_manager_header .oe_header_row td { + padding: 8px; +} +.openerp .oe_view_manager_current > .oe_view_manager_header .oe_header_row:first-child td { + padding-top: 8px; +} +.openerp .oe_view_manager_inline { + height: 100%; +} +.openerp .oe_view_manager_inline > .oe_view_manager_header { + display: none; +} +.openerp .oe_popup_form > .oe_formview > .oe_form_pager { + display: none !important; +} +.openerp .oe_searchview { + cursor: text; + position: relative; + float: right; + padding: 1px 0; + line-height: 18px; + width: 400px; + border: 1px solid #ababab; + background: white; + -moz-border-radius: 13px; + -webkit-border-radius: 13px; + border-radius: 13px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2) inset; +} +.openerp .oe_searchview input, .openerp .oe_searchview textarea { + padding: 3px; + height: 14px; + font-size: 12px; + line-height: 18px; +} +.openerp .oe_searchview.oe_focused { + border-color: #a6a6fe; + -moz-box-shadow: 0 1px 2px #a6a6fe inset; + -webkit-box-shadow: 0 1px 2px #a6a6fe inset; + box-shadow: 0 1px 2px #a6a6fe inset; +} +.openerp .oe_searchview .oe_searchview_clear { + cursor: pointer; + position: absolute; + top: 0; + right: 18px; + width: 15px; + height: 100%; + background: url(../img/search_reset.gif) center center no-repeat; +} +.openerp .oe_searchview .oe_searchview_unfold_drawer { + position: absolute; + top: 0; + right: 0; + height: 100%; + padding: 0 7px 0 4px; + color: #cccccc; + cursor: pointer; +} +.openerp .oe_searchview .oe_searchview_unfold_drawer:hover { + color: #999999; +} +.openerp .oe_searchview .oe_searchview_unfold_drawer:before { + position: absolute; + top: 10px; + right: 7px; + width: 0; + height: 0; + display: inline-block; + content: ""; + vertical-align: top; + border-top: 5px solid #4c4c4c; + border-left: 5px solid transparent; + border-right: 5px solid transparent; + filter: alpha(opacity=50); + opacity: 0.5; +} +.openerp .oe_searchview .oe_searchview_search { + font-size: 1px; + letter-spacing: -1px; + color: transparent; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + position: absolute; + left: 3px; + top: 1px; + padding: 0; + border: none; + background: transparent; +} +.openerp .oe_searchview .oe_searchview_search:before { + font: 21px "mnmliconsRegular"; + content: "r"; + color: #a3a3a3; +} +.openerp .oe_searchview .oe_searchview_facets { + min-height: 22px; + margin-left: 15px; +} +.openerp .oe_searchview .oe_searchview_facets * { + vertical-align: top; + display: inline-block; + line-height: 17px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { + height: 18px; + margin: 1px 0; + font-size: 11px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { + outline: none; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input { + padding: 0 0 0 6px; + font-size: 12px; + height: 16px; + margin-top: 3px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_input:focus { + outline: none; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet { + position: relative; + cursor: pointer; + padding: 0; + -webkit-font-smoothing: auto; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet:focus { + border-color: #a6a6fe; + -moz-box-shadow: 0 0 3px 1px #a6a6fe; + -webkit-box-shadow: 0 0 3px 1px #a6a6fe; + box-shadow: 0 0 3px 1px #a6a6fe; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_values { + background: #f0f0fa; + -moz-border-radius: 0 3px 3px 0; + -webkit-border-radius: 0 3px 3px 0; + border-radius: 0 3px 3px 0; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category, .openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value { + height: 18px; + padding: 0 4px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category { + color: white; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_category.oe_i { + font-size: 16px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value { + border-left: 1px solid #afafb6; + text-shadow: 0 1px 1px white; + color: #4c4c4c; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_value:last-child { + padding-right: 16px; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_remove { + position: absolute; + top: 3px; + right: 3px; + color: #8786b7; + line-height: 8px; + width: 12px; + height: 12px; + padding-top: 1px; + text-align: center; + font-weight: bold; + cursor: pointer; + text-shadow: 0 1px 1px white; +} +.openerp .oe_searchview .oe_searchview_facets .oe_searchview_facet .oe_facet_remove:hover { + color: white; + background: #8786b7; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.openerp .oe_searchview.oe_searchview_open_drawer .oe_searchview_drawer { + display: block; +} +.openerp .oe_searchview .oe_searchview_drawer { + position: absolute; + z-index: 100; + margin-top: 4px; + top: 100%; + right: -1px; + background-color: white; + min-width: 100%; + display: none; + border: 1px solid #afafb6; + text-align: left; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); +} +.openerp .oe_searchview .oe_searchview_drawer > div { + border-top: 1px solid #cccccc; + margin: 0; + padding: 8px; +} +.openerp .oe_searchview .oe_searchview_drawer > div:first-child { + border-top: none; + margin: 0; +} +.openerp .oe_searchview .oe_searchview_drawer h3 { + margin: 8px 4px 4px 12px; + color: #8786b7; + font-size: 13px; +} +.openerp .oe_searchview .oe_searchview_drawer h4, .openerp .oe_searchview .oe_searchview_drawer h4 * { + margin: 0; + cursor: pointer; + font-weight: normal; + display: inline-block; +} +.openerp .oe_searchview .oe_searchview_drawer h4:hover, .openerp .oe_searchview .oe_searchview_drawer h4 *:hover { + background-color: #f0f0fa; +} +.openerp .oe_searchview .oe_searchview_drawer h4:before { + content: "▸ "; + color: #a3a3a3; +} +.openerp .oe_searchview .oe_searchview_drawer button { + margin: 4px 0; +} +.openerp .oe_searchview .oe_searchview_drawer .button { + border: none; + background: transparent; + padding: 0 2px; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section { + display: table; + width: 100%; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section > div { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + display: table-cell; + width: 50%; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section ul { + margin: 0 8px 8px; + padding: 0; list-style: none; } - -.openerp .oe_app_tiles li img { +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li { + list-style: none; + padding: 2px 4px 2px 20px; + line-height: 14px; + color: inherit; + cursor: pointer; + position: relative; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li.oe_selected:before { + content: "W"; + font-family: "entypoRegular" !important; + font-size: 24px; + font-weight: 300 !important; + color: #a3a3a3; + position: absolute; + left: 4px; + top: -2px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_section li:hover { + background-color: #f0f0fa; +} +.openerp .oe_searchview .oe_searchview_drawer form { + margin-left: 12px; +} +.openerp .oe_searchview .oe_searchview_drawer form p { + margin: 4px 0; + line-height: 18px; +} +.openerp .oe_searchview .oe_searchview_drawer form button { + margin: 0 0 8px 0; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom { + padding: 0 8px 8px 8px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom form { + display: none; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li { + cursor: pointer; + position: relative; + line-height: 14px; + padding: 2px 4px 2px 20px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li:hover { + background-color: #f0f0fa; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom li button { + position: absolute; + top: 0; + right: 5px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_dashboard form { + display: none; + margin-top: 2px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced form { + display: none; + margin-top: 8px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced button.oe_add_condition:before { + content: "Z"; + font-family: "entypoRegular" !important; + font-size: 24px; + font-weight: 300 !important; + margin-right: 4px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced ul { + list-style: none; + padding: 0; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_advanced li { + position: relative; + list-style: none; + margin: 0; + white-space: nowrap; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_opened h4:before { + content: "▾ "; + position: relative; + top: -1px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_opened form { display: block; - margin: 0 auto; - height: 100px; - width: 100px; } -.openerp .oe_app_tiles li img.hover { - display: none; -} -.openerp .oe_app_tiles li:hover img { - display: none; -} -.openerp .oe_app_tiles li:hover img.hover { - display: block; -} - -.openerp .oe_app_tiles li a { - display: block; - height: 120px; - width: 194px; - color: #4C4C4C; - border: 1px solid #f4f2f2; - margin: 6px; - padding: 12px; +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete, .openerp .oe_searchview .oe_searchview_drawer .searchview_extended_delete_prop { + display: inline-block; + width: 12px; + height: 12px; + line-height: 12px; + padding: 1px; + color: #8786b7; + line-height: 8px; text-align: center; - text-transform: uppercase; + font-weight: bold; + text-shadow: 0 1px 1px white; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete:hover, .openerp .oe_searchview .oe_searchview_drawer .searchview_extended_delete_prop:hover { text-decoration: none; - font-size: 12px; - font-weight: 800; + color: white; + background: #8786b7; + text-shadow: 0 1px 1px rgba(0, 0, 0, 0.4); + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_delete { + display: none; + position: absolute; + bottom: 1px; + right: 4px; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_private:hover .oe_searchview_custom_delete, .openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_public:hover .oe_searchview_custom_delete { + display: inline-block; +} +.openerp .oe_searchview .oe_searchview_drawer .oe_searchview_custom_public:after { + content: ","; + font-family: "entypoRegular" !important; + font-size: 22px; + font-weight: 300 !important; + margin: 0 0 0 4px; + padding: 0; +} +.openerp .oe_view_nocontent > img { + float: left; + margin: 1.5em; +} +.openerp .oe_view_nocontent > div { + overflow: hidden; + padding: 35px 0px 0px 0px; + max-width: 700px; + font-size: 125%; +} +.openerp .oe_formview { background: white; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - -ms-border-radius: 6px; - border-radius: 6px; - -moz-box-shadow: 0 1px 2px #bbb; - -webkit-box-shadow: 0 1px 2px #bbb; - -o-box-shadow: 0 1px 2px #bbb; - box-shadow: 0 1px 2px #bbb; } -/* changing icon for the change layout button */ - -.openerp .oe_dashboard_link_change_layout, .openerp .oe_dashboard_link_reset { - padding-top: 1px; - height: 22px; +.openerp .oe_form_dropdown_section { + position: relative; + display: inline-block; } -.openerp .oe_dashboard_link_change_layout > *, .openerp .oe_dashboard_link_reset > *{ - vertical-align: middle; +.openerp .oe_form_invalid input, .openerp .oe_form_invalid select, .openerp .oe_form_invalid textarea { + background-color: #ff6666 !important; + border: 1px solid #dd0000 !important; +} +.openerp .oe_view_manager_current .oe_form_editable .oe_highlight { + color: #404040; + background: none; +} +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight { + background-color: #efefef; + background-image: -webkit-gradient(linear, left top, left bottom, from(#efefef), to(#d8d8d8)); + background-image: -webkit-linear-gradient(top, #efefef, #d8d8d8); + background-image: -moz-linear-gradient(top, #efefef, #d8d8d8); + background-image: -ms-linear-gradient(top, #efefef, #d8d8d8); + background-image: -o-linear-gradient(top, #efefef, #d8d8d8); + background-image: linear-gradient(to bottom, #efefef, #d8d8d8); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight:active { + background-color: #e3e3e3; + background-image: -webkit-gradient(linear, left top, left bottom, from(#e3e3e3), to(#f6f6f6)); + background-image: -webkit-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -moz-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -ms-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: -o-linear-gradient(top, #e3e3e3, #f6f6f6); + background-image: linear-gradient(to bottom, #e3e3e3, #f6f6f6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_view_manager_current .oe_form_editable button.oe_highlight:hover { + background-color: #f6f6f6; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f6f6f6), to(#e3e3e3)); + background-image: -webkit-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -moz-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -ms-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: -o-linear-gradient(top, #f6f6f6, #e3e3e3); + background-image: linear-gradient(to bottom, #f6f6f6, #e3e3e3); + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1), 0 1px 1px rgba(255, 255, 255, 0.8) inset; +} +.openerp .oe_form_invisible { + display: none !important; +} +.openerp .oe_form_readonly .oe_edit_only, .openerp .oe_form_readonly .oe_form_field:empty { + display: none !important; +} +.openerp .oe_form_readonly .oe_form .oe_form_field_date { + width: auto; +} +.openerp .oe_form_nosheet { + margin: 8px; +} +.openerp .oe_form_nosheet > header { + margin-top: -20px; + margin-left: -20px; + margin-right: -20px; +} +.openerp .oe_form header { + position: relative; + border-bottom: 1px solid #cacaca; + background-color: #fcfcfc; + background-image: -webkit-gradient(linear, left top, left bottom, from(#fcfcfc), to(#dedede)); + background-image: -webkit-linear-gradient(top, #fcfcfc, #dedede); + background-image: -moz-linear-gradient(top, #fcfcfc, #dedede); + background-image: -ms-linear-gradient(top, #fcfcfc, #dedede); + background-image: -o-linear-gradient(top, #fcfcfc, #dedede); + background-image: linear-gradient(to bottom, #fcfcfc, #dedede); + padding: 0 8px; + line-height: 30px; +} +.openerp .oe_form header ul { + display: inline-block; + float: right; +} +.openerp .oe_form div.oe_chatter { + min-width: 650px; + max-width: 860px; + margin: 0 auto; +} +.openerp ul.oe_form_steps { + height: 30px; + padding: 0; + margin: 0; + text-shadow: 0 1px 1px white; +} +.openerp ul.oe_form_steps img { + vertical-align: top; + margin-left: 8px; +} +.openerp ul.oe_form_steps li { + border-right: none; + padding: 0; + margin: 0; + float: left; + vertical-align: top; + height: 30px; + padding: 0 0 0 12px; +} +.openerp ul.oe_form_steps li:first-child { + border-left: 1px solid #cacaca; +} +.openerp ul.oe_form_steps li:last-child { + margin-right: 12px; + padding-right: 12px; + border-right: 1px solid #cacaca; +} +.openerp ul.oe_form_steps li a { + color: #4c4c4c; +} +.openerp ul.oe_form_steps li a:hover { + color: black; +} +.openerp ul.oe_form_steps .oe_form_steps_active { + font-weight: bold; + color: #b33630; +} +.openerp .oe_form .oe_subtotal_footer { + width: 1% !important; +} +.openerp .oe_form .oe_subtotal_footer td.oe_form_group_cell { + text-align: right; + padding: 0 !important; +} +.openerp .oe_form .oe_subtotal_footer td.oe_form_group_cell_label { + border-right: none; +} +.openerp .oe_form .oe_subtotal_footer .oe_subtotal_footer_separator { + width: 108px; + border-top: 1px solid #cacaca; + font-weight: bold; + font-size: 18px; +} +.openerp .oe_form .oe_subtotal_footer label:after { + content: ":"; +} +.openerp .oe_form .oe_subtotal_footer label.oe_subtotal_footer_separator { + font-weight: bold !important; + padding: 2px 11px 2px 0px !important; +} +.openerp .oe_form .oe_subtotal_footer label.oe_form_label_help { + font-weight: normal; +} +.openerp .oe_application .oe_form_sheetbg { + background: url(/web/static/src/img/form_sheetbg.png); + padding: 8px 0; + border-bottom: 1px solid #dddddd; +} +.openerp .oe_application .oe_form_sheet_width { + min-width: 650px; + max-width: 860px; + margin: 0 auto; +} +.openerp .oe_application .oe_form_sheet { + background: white; + min-height: 330px; + padding: 16px; + border: 1px solid #afafb6; + -moz-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); + box-shadow: 0 0 10px rgba(0, 0, 0, 0.3); +} +.openerp .oe_application .oe_form_sheet .ui-tabs { + margin: 0 -16px; +} +.openerp .oe_application .oe_form_sheet .oe_notebook_page { + padding: 0 16px; +} +.openerp .oe_form .oe_form_button { + margin: 2px; +} +.openerp .oe_form td.oe_form_group_cell_label { + border-right: 1px solid #dddddd; + padding: 2px 0px 2px 0px; +} +.openerp .oe_form td.oe_form_group_cell_label label { + line-height: 18px; + display: block; + min-width: 120px; +} +.openerp .oe_form td.oe_form_group_cell + .oe_form_group_cell { + padding-left: 6px; +} +.openerp .oe_form .oe_form_group { + width: 100%; + margin: 6px 0 6px 0; +} +.openerp .oe_form .oe_form_group .oe_form_group_cell.oe_group_right { + padding-left: 20px; +} +.openerp .oe_form .oe_form_label_help[for], .openerp .oe_form .oe_form_label[for] { + font-weight: bold; + white-space: nowrap; + padding-right: 6px; +} +.openerp .oe_form .oe_form_label_help[for] span, .openerp .oe_form .oe_form_label[for] span { + font-size: 80%; + color: darkGreen; + vertical-align: top; + position: relative; + top: -4px; + padding: 0 2px; +} +.openerp .oe_horizontal_border { + border-bottom: 1px solid black; +} +.openerp .oe_horizontal_separator { + font-weight: bold; + font-size: 20px; + margin: 8px 0px 8px 0px; + color: #aaaabb; +} +.openerp .oe_horizontal_separator:empty { + height: 5px; +} +.openerp .oe_vertical_separator { + border-left: 1px solid #666666; + padding: 0 4px 0 4px; +} +.openerp .oe_form_field_progressbar { + display: inline-block; + min-width: 70px; +} +.openerp .oe_form_field_progressbar.ui-progressbar { + height: 22px; + font-size: 10px; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #999999; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + background: white; + min-width: 50px; +} +.openerp .oe_form_field_progressbar.ui-progressbar span { + position: absolute; + margin-left: 10px; + font-weight: bold; +} +.openerp .oe_form_field_progressbar.ui-progressbar .ui-widget-header { + background: #cccccc url(/web/static/lib/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; +} +.openerp .oe_form .oe_form_field_text { + width: 100%; +} +.openerp .oe_form .oe_form_field_char input, +.openerp .oe_form .oe_form_field_url input, +.openerp .oe_form .oe_form_field_email input, +.openerp .oe_form .oe_form_field_text textarea, +.openerp .oe_form .oe_form_field_selection select { + width: 100%; +} +.openerp .oe_form .oe_form_field_text.oe_inline, .openerp .oe_form .oe_form_field_text.oe_inline > textarea { + width: 500px; +} +.openerp .oe_form h1, .openerp .oe_form h2, .openerp .oe_form h3, .openerp .oe_form h4, .openerp .oe_form h5, .openerp .oe_form h6 { + margin: 0 0 4px 0; +} +.openerp .oe_form h1 input, .openerp .oe_form h2 input, .openerp .oe_form h3 input, .openerp .oe_form h4 input, .openerp .oe_form h5 input, .openerp .oe_form h6 input { + height: inherit !important; + font-size: inherit; +} +.openerp .oe_form .oe_form_field { + width: 100%; + display: inline-block; + padding: 2px 2px 2px 0px; + line-height: 18px; +} +.openerp .oe_form .oe_form_field input { + margin: 0px; +} +.openerp .oe_form input[type="text"], .openerp .oe_form input[type="password"], .openerp .oe_form input[type="file"], .openerp .oe_form select { + height: 22px; + padding-top: 2px; +} +.openerp .oe_form input[type="text"], .openerp .oe_form input[type="password"], .openerp .oe_form input[type="file"], .openerp .oe_form select, .openerp .oe_form textarea { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; + background: white; + min-width: 70px; + color: #1f1f1f; +} +.openerp .oe_form input[readonly], .openerp .oe_form select[readonly], .openerp .oe_form textarea[readonly], .openerp .oe_form input[disabled], .openerp .oe_form select[disabled] { + background: #e5e5e5 !important; + color: #666666; +} +.openerp .oe_form textarea[disabled] { + border: none; + border-left: 8px solid #eeeeee; + padding-left: 8px; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + -moz-border-radius: 0px; + -webkit-border-radius: 0px; + border-radius: 0px; +} +.openerp .oe_form .oe_form_field_url button img { + vertical-align: top; +} +.openerp .oe_form .oe_form_field_date, +.openerp .oe_form .oe_form_field_datetime { + white-space: nowrap; +} +.openerp .oe_form .oe_form_field_boolean { + padding-top: 4px; + width: auto; +} +.openerp .oe_form .oe_datepicker_container { + display: none; +} +.openerp .oe_form .oe_datepicker_root { + display: inline-block; +} +.openerp .oe_form .oe_form_required input, .openerp .oe_form .oe_form_required select, .openerp .oe_form .oe_form_required textarea { + background-color: #d2d2ff !important; +} +.openerp .oe_form .oe_form_invalid input, .openerp .oe_form .oe_form_invalid select, .openerp .oe_form .oe_form_invalid textarea { + background-color: #ff6666 !important; + border: 1px solid #dd0000 !important; +} +.openerp .oe_form .oe_input_icon { + cursor: pointer; + margin: 3px 0 0 -21px; + vertical-align: top; +} +.openerp .oe_form .oe_input_icon_disabled { + position: absolute; + cursor: default; + opacity: 0.5; + filter: alpha(opacity=50); + right: 5px; + top: 3px; +} +.openerp .oe_form .oe_form_field_with_button.oe_no_button > .oe_button { + display: none; +} +.openerp .oe_form .oe_form_field_with_button:not(.oe_no_button) > .oe_button { + float: right; + -moz-border-radius: 0; + -webkit-border-radius: 0; + border-radius: 0; + border-bottom-left-radius: 0px; + height: 22px; +} +.openerp .oe_form .oe_form_field_with_button input { + width: 100%; +} +.openerp .oe_form .oe_form_field_with_button > div { + position: relative; + overflow: hidden; +} +.openerp .oe_form_editable .oe_form .oe_form_field_integer { + width: 7em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_float { + width: 8em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_date { + width: 7.5em !important; +} +.openerp .oe_form_editable .oe_form .oe_form_field_datetime { + width: 11.5em !important; +} +.openerp .oe_hidden_input_file input.oe_form_binary_file { + z-index: 0; + line-height: 0; + font-size: 12px; + position: absolute; + top: 1px; + left: 0; + right: 0; + opacity: 0; + filter: alpha(opacity=0); + -ms-filter: "alpha(opacity=0)"; + margin: 0; + padding: 0; +} +.openerp .oe_form .oe_form_field_image { + padding: 0; + position: relative; + display: inline-block; + width: auto; + vertical-align: top; +} +.openerp .oe_form .oe_form_field_image .oe_form_field_image_controls { + position: absolute; + top: 1px; + padding: 4px; + width: 100%; + display: none; + text-align: center; + color: #eeeeee; + background: rgba(37, 37, 37, 0.9); + -moz-border-radius: 3px 3px 0 0; + -webkit-border-radius: 3px 3px 0 0; + border-radius: 3px 3px 0 0; + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + -ms-box-sizing: border-box; + box-sizing: border-box; +} +.openerp .oe_form .oe_form_field_image:hover .oe_form_field_image_controls { + display: block; +} +.openerp .oe_form_field_many2one td:first-child { + position: relative; +} +.openerp .oe_form_field_many2one span.oe_m2o_drop_down_button { + position: absolute; + top: 2px; + right: 0px; +} +.openerp .oe_form_field_many2one .oe_m2o_cm_button { + line-height: 14px; +} +.openerp .oe_form .oe_form_field_one2many > .oe_view_manager .oe_list_pager_single_page { + display: none; +} +.openerp .oe_form_field_one2many .oe_list_content > thead, .openerp .oe_form_field_many2many .oe_list_content > thead { + border-bottom: 1px; +} +.openerp .oe_form_field_one2many .oe_list_content > tbody tr:nth-child(odd), .openerp .oe_form_field_many2many .oe_list_content > tbody tr:nth-child(odd) { + background: transparent; +} +.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save, .openerp .oe_form_field_many2many .oe_list .oe_list_edit_row_save { + background: url(/web/static/src/img/iconset-b-remove.png) 50% 50% no-repeat; +} +.openerp .oe_form_field_one2many .oe_list .oe_list_edit_row_save:before, .openerp .oe_form_field_many2many .oe_list .oe_list_edit_row_save:before { + visibility: hidden; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_header_row_top, .openerp .oe_form_field_many2many > .oe_view_manager .oe_header_row_top { + display: none; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td { + padding: 0px 8px; + line-height: 16px; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_i, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_i { + font-size: 13px; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group { + height: auto; + line-height: 16px; +} +.openerp .oe_form_field_one2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li, .openerp .oe_form_field_many2many > .oe_view_manager .oe_view_manager_header2 td .oe_pager_group li { + height: auto; + line-height: 16px; +} +.openerp .oe_form_field_one2many .oe_list_buttons.oe_editing .oe_list_save, .openerp .oe_form_field_many2many .oe_list_buttons.oe_editing .oe_list_save { + visibility: hidden; +} +.openerp .oe_form .oe_form_field_many2many > .oe_list .oe_list_pager_single_page { + display: none; +} +.openerp .oe_list_buttons .oe_list_save, .openerp .oe_list_buttons .oe_list_discard { + display: none; +} +.openerp .oe_list_buttons.oe_editing .oe_list_add, .openerp .oe_list_buttons.oe_editing .oe_list_button_import { + display: none; +} +.openerp .oe_list_buttons.oe_editing .oe_list_save { + display: inline-block; +} +.openerp .oe_list_buttons.oe_editing .oe_list_discard { + display: inline; +} +.openerp .oe_list { + position: relative; +} +.openerp .oe_list .oe_form .oe_form_field { + width: auto; + position: absolute; + margin: 0 !important; + padding: 0; +} +.openerp .oe_list_content { + width: 100%; +} +.openerp .oe_list_content td:first-child:after, .openerp .oe_list_content th:first-child:after { + border-width: 0; +} +.openerp .oe_list_content td.oe_number { + text-align: right !important; + max-width: 100px; +} +.openerp .oe_list_content > thead { + border-bottom: 2px solid #cacaca; + background: #eeeeee; + vertical-align: top; +} +.openerp .oe_list_content > thead th { + position: relative; +} +.openerp .oe_list_content td, .openerp .oe_list_content th { + padding: 3px 6px; + line-height: 18px; +} +.openerp .oe_list_content th:after { + position: absolute; + right: 6px; + content: ""; + margin-top: 7px; + border-width: 0 4px 4px; + border-style: solid; + border-color: black transparent; + visibility: hidden; +} +.openerp .oe_list_content th.sortup:after { + visibility: visible; + filter: alpha(opacity=60); + opacity: 0.6; +} +.openerp .oe_list_content th.sortdown:after { + border-bottom: none; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid black; + visibility: visible; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; + filter: alpha(opacity=60); + opacity: 0.6; +} +.openerp .oe_list_content > tbody { + cursor: pointer; +} +.openerp .oe_list_content > tbody > tr { + border-top: 1px solid #dddddd; +} +.openerp .oe_list_content > tbody > tr > td.oe_list_field_cell { + padding: 3px 6px; + white-space: pre-line; +} +.openerp .oe_list_content > tbody > tr > td > button, .openerp .oe_list_content > tbody > tr > th > button { + border: none; + background: transparent; + padding: 0; + -moz-box-shadow: none; + -webkit-box-shadow: none; + box-shadow: none; +} +.openerp .oe_list_content > tbody > tr > td.oe_list_checkbox:first-child, .openerp .oe_list_content > tbody > tr th.oe_list_checkbox:first-child { + width: 17px; +} +.openerp .oe_list_content > tbody > tr > td.oe_list_checkbox:first-child:after, .openerp .oe_list_content > tbody > tr th.oe_list_checkbox:first-child:after { + border-width: 0; +} +.openerp .oe_list_content > tbody > tr:nth-child(odd) { + background-color: #f0f0fa; + background-color: #f0f0fa; + background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background-image: -webkit-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -moz-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -ms-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: -o-linear-gradient(top, #f0f0fa, #eeeef6); + background-image: linear-gradient(to bottom, #f0f0fa, #eeeef6); +} +.openerp .oe_list_content > tfoot { + border-top: 2px solid #cacaca; + border-bottom: 1px solid #cacaca; + background: #eeeeee; + font-weight: bold; +} +.openerp .oe_list_content > tbody tr:hover td, .openerp .oe_list_content tbody tr:hover th { + background-color: #eeeeee; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dedede)); + background-image: -webkit-linear-gradient(top, #eeeeee, #dedede); + background-image: -moz-linear-gradient(top, #eeeeee, #dedede); + background-image: -ms-linear-gradient(top, #eeeeee, #dedede); + background-image: -o-linear-gradient(top, #eeeeee, #dedede); + background-image: linear-gradient(to bottom, #eeeeee, #dedede); +} +.openerp .oe_list_content .numeric { + text-align: right; + width: 82px; +} +.openerp .oe_list_content .numeric input { + text-align: right; +} +.openerp .tree_header { + background-color: #f0f0f0; + border-bottom: 1px solid #cacaca; + color: #4c4c4c; + padding: 5px; + height: 25px; +} +.openerp .tree_header button { + float: right; + height: 27px; + margin-right: 5px; +} +.openerp .oe-treeview-table { + width: 100%; + background-color: white; + border-spacing: 0; +} +.openerp .oe-treeview-table th { + padding: 10px; + color: #4c4c4c; + font-weight: bold; + background-color: #f0f0f0; + border-bottom: 2px solid #cacaca; +} +.openerp .oe-treeview-table .treeview-tr, .openerp .oe-treeview-table .treeview-td { + cursor: pointer; + border-right: 1px dotted #afafb6; + vertical-align: top; + text-align: left; + border-bottom: 1px solid #cfcccc; +} +.openerp .oe-treeview-table tr:hover { + background-color: #e0e0f8; +} +.openerp .oe-treeview-table .oe-number { + text-align: right !important; +} +.openerp .oe-treeview-table span { + font-size: 90%; + font-weight: normal; + white-space: nowrap; + display: block; +} +.openerp .oe-treeview-table .treeview-tr.oe-treeview-first { + background: transparent url(/web/static/src/img/expand.gif) 0 50% no-repeat; +} +.openerp .oe-treeview-table .oe_open .treeview-tr.oe-treeview-first { + background-image: url(/web/static/src/img/collapse.gif); +} +.openerp .oe-treeview-table .treeview-tr.oe-treeview-first span, .openerp .oe-treeview-table .treeview-td.oe-treeview-first span { + margin-left: 16px; +} +.openerp .oe_trad_field.touched { + border: 1px solid green !important; +} +.openerp .oe_view_editor { + width: 100%; + border-collapse: collapse; + margin-left: -12px; + width: 100%; + background-color: white; + border-spacing: 0; +} +.openerp .oe_view_editor td { + text-align: center; + white-space: nowrap; + border: 1px solid #d8d8d8; + cursor: pointer; + font-size: 90%; +} +.openerp .oe_view_editor_field td { + border: 0px !important; +} +.openerp .oe_view_editor tr:hover { + background-color: #ecebf2; +} +.openerp .oe_layout_debugging .oe_form_group { + outline: 2px dashed green; +} +.openerp .oe_layout_debugging .oe_form_group_cell { + outline: 1px solid blue; +} +.openerp .oe_layout_debugging .oe_form_group:hover, .openerp .oe_layout_debugging .oe_form_group_cell:hover { + outline-color: red; +} +.openerp .oe_layout_debugging .oe_form_group_row_incomplete > td:last-child:after { + content: "[Incomplete Row]"; + background: red; + padding: 2px; + font-weight: bold; + color: white; + float: right; +} +.openerp .oe_layout_debugging .oe_form_group_row_incomplete.oe_form_group_row_newline > td:last-child:after { + content: "[newline]"; +} +.openerp .oe_debug_view { + float: left; +} +.openerp .oe_debug_view_log { + font-size: 95%; +} +.openerp .oe_debug_view_log label { + display: block; + width: 49%; + text-align: right; + float: left; + font-weight: bold; + color: #000099; +} +.openerp .oe_debug_view_log span { + display: block; + width: 49%; + float: right; + color: #333333; } -.openerp .oe_welcome_message { - display:none; +.kitten-mode-activated { + background-image: url(http://placekitten.com/g/1365/769); + background-size: cover; + background-attachment: fixed; } -.openerp .oe_initial_welcome_message { - width:30%; - text-align:center; - margin:10px 35% 0 35%; - padding: 5px 10px; - border: 1px solid #ccc; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - background: #eeeded; - box-shadow: 0 1px 0 #fff; - -moz-box-shadow: 0 1px 0 #fff; - -webkit-box-shadow: 0 1px 0 #fff; - color: #8c8c8c; - font-size: 90%; - text-transform: uppercase; - font-weight: bold; - text-shadow: #fff 0 1px 0; +.kitten-mode-activated > * { + opacity: 0.7; } -.openerp .oe_initial_welcome_message ul{ - padding:10px 0 0 0; - margin:0; - list-style-type: none; - padding: 7px 0 5px 5px; - background-position: 0 50%; - background-repeat: no-repeat; - cursor: pointer; +div.ui-widget-overlay { + background: black; + filter: alpha(opacity=30); + opacity: 0.3; } -.openerp .oe_initial_welcome_message ul a, .openerp .initial_welcome_message ul a:hover, .openerp .initial_welcome_message ul a:active, .openerp .initial_welcome_message ul a:focus { - color:#222; - text-decoration:none; + +.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; } diff --git a/addons/web_dashboard/static/src/css/dashboard.sass b/addons/web_dashboard/static/src/css/dashboard.sass new file mode 100644 index 00000000000..4a73d6f6f3b --- /dev/null +++ b/addons/web_dashboard/static/src/css/dashboard.sass @@ -0,0 +1,74 @@ +@import "base.sass" +.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 diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js index fea775d4ee8..d17906d1c4f 100644 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ b/addons/web_dashboard/static/src/js/dashboard.js @@ -20,7 +20,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ this.$element.find('.oe_dashboard_column').sortable({ connectWith: '.oe_dashboard_column', - handle: '.oe_dashboard_action_header', + handle: '.oe_header', scroll: false }).disableSelection().bind('sortstop', self.do_save_dashboard); @@ -28,8 +28,8 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ 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_dashboard_fold', 'click', this.on_fold_action); - this.$element.delegate('.oe_dashboard_column .ui-icon-closethick', 'click', this.on_close_action); + 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) { @@ -80,7 +80,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ var $last_column = $(); $dashboard.find('.oe_dashboard_column').each(function(k, v) { if (k >= nlayout) { - $(v).find('.oe_dashboard_action').appendTo($last_column); + $(v).find('.oe_action').appendTo($last_column); } else { $last_column = $(v); } @@ -93,20 +93,20 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ }, on_fold_action: function(e) { var $e = $(e.currentTarget), - $action = $e.parents('.oe_dashboard_action:first'), + $action = $e.parents('.oe_action:first'), id = parseInt($action.attr('data-id'), 10); - if ($e.is('.ui-icon-minusthick')) { + if ($e.is('.oe_minimize')) { $action.data('action_attrs').fold = '1'; } else { delete($action.data('action_attrs').fold); } - $e.toggleClass('ui-icon-minusthick ui-icon-plusthick'); - $action.find('.oe_dashboard_action_content').toggle(); + $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_dashboard_action:first').remove(); + $(e.currentTarget).parents('.oe_action:first').remove(); this.do_save_dashboard(); } }, @@ -119,7 +119,7 @@ instance.web.form.DashBoard = instance.web.form.FormWidget.extend({ }; this.$element.find('.oe_dashboard_column').each(function() { var actions = []; - $(this).find('.oe_dashboard_action').each(function() { + $(this).find('.oe_action').each(function() { var action_id = $(this).attr('data-id'), new_attrs = _.clone($(this).data('action_attrs')); if (new_attrs.domain) { diff --git a/addons/web_dashboard/static/src/xml/web_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml index 68dda7d7f67..6155ebc7fe5 100644 --- a/addons/web_dashboard/static/src/xml/web_dashboard.xml +++ b/addons/web_dashboard/static/src/xml/web_dashboard.xml @@ -21,16 +21,16 @@
    -
    -

    +
    +

    &nbsp; - - - - + + + +

    -
    +
    From 1a3bd4596143b27cd7679b30711846eac88c5bf9 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 15:48:51 +0200 Subject: [PATCH 285/328] [FIX] Used json with binary/image controller bzr revid: fme@openerp.com-20120809134851-3yl6skfch2q1f7q0 --- addons/web/static/src/js/view_form.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index b8acdfea4cd..4d06cb2d767 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -4616,8 +4616,9 @@ instance.web.form.FieldBinaryImage = instance.web.form.FieldBinary.extend({ if (this.get('value') && ! /^\d+(\.\d*)? \w+$/.test(this.get('value'))) { url = 'data:image/png;base64,' + this.get('value'); } else if (this.get('value')) { + var id = escape(JSON.stringify(this.view.datarecord.id || null)); url = '/web/binary/image?session_id=' + this.session.session_id + '&model=' + - this.view.dataset.model +'&id=' + (this.view.datarecord.id || '') + '&field=' + this.name + '&t=' + (new Date().getTime()); + this.view.dataset.model +'&id=' + id + '&field=' + this.name + '&t=' + (new Date().getTime()); } else { url = "/web/static/src/img/placeholder.png"; } From 594862e93a97b98be7b71e0ab0801d8724d74082 Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 16:23:46 +0200 Subject: [PATCH 286/328] [IMP] binary/image should be backward compatible when id url parameter is empty bzr revid: fme@openerp.com-20120809142346-79xiq48qbgx7743i --- addons/web/controllers/main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c5a5cfec5b6..38553502fc7 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1373,7 +1373,7 @@ class Binary(openerpweb.Controller): retag = hashed_session try: - id = simplejson.loads(id) + id = None if not id else simplejson.loads(id) if type(id) is list: id = id[0] # m2o if not id: From 5afe606fd868695b57d9c985e1e93efc0b2ce54c Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 16:31:53 +0200 Subject: [PATCH 287/328] [FIX] res.users small and medium images has no default value bzr revid: fme@openerp.com-20120809143153-goevnqtq1l6f0y73 --- openerp/addons/base/res/res_users.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index a3ae0bfa9eb..1729e9e7784 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -325,6 +325,8 @@ class users(osv.osv): 'context_lang': lambda self, cr, uid, context: context.get('lang', 'en_US'), 'context_tz': lambda self, cr, uid, context: context.get('tz', False), 'image': _get_default_image, + 'image_small': _get_default_image, + 'image_medium': _get_default_image, 'active' : True, 'menu_id': _get_menu, 'company_id': _get_company, From f51eb19e4cea27d1749782cf09c7d60cd4cc701a Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 9 Aug 2012 17:01:26 +0200 Subject: [PATCH 288/328] [FIX] res.partners small and medium images has no default value bzr revid: fme@openerp.com-20120809150126-9rrikeyqi5uww5pd --- openerp/addons/base/res/res_partner.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index ec6d023a150..d275c0c7b4e 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -232,6 +232,8 @@ class res_partner(osv.osv): 'type': 'default', 'use_parent_address': True, 'image': lambda self, cr, uid, context: self._get_default_image(cr, uid, False, context), + 'image_small': lambda self, cr, uid, context: self._get_default_image(cr, uid, False, context), + 'image_medium': lambda self, cr, uid, context: self._get_default_image(cr, uid, False, context), } def copy(self, cr, uid, id, default=None, context=None): From fb86ddb644bf717f457b3f647f91b186caa64046 Mon Sep 17 00:00:00 2001 From: Christophe Simonis Date: Thu, 9 Aug 2012 17:20:43 +0200 Subject: [PATCH 289/328] [IMP] merge web_dashboard module into board module of addons branch [IMP] extract dashboard part of web into board module bzr revid: chs@openerp.com-20120809152043-0yfm6l2zt44eiqrb --- addons/web/controllers/main.py | 40 --- addons/web/static/src/js/search.js | 90 +---- addons/web/static/src/xml/base.xml | 15 +- addons/web_dashboard/__init__.py | 2 - addons/web_dashboard/__openerp__.py | 15 - addons/web_dashboard/controllers.py | 31 -- addons/web_dashboard/i18n/ar.po | 93 ----- addons/web_dashboard/i18n/bg.po | 95 ----- addons/web_dashboard/i18n/bn.po | 95 ----- addons/web_dashboard/i18n/bs.po | 85 ----- addons/web_dashboard/i18n/ca.po | 63 ---- addons/web_dashboard/i18n/cs.po | 96 ----- addons/web_dashboard/i18n/da.po | 84 ----- addons/web_dashboard/i18n/de.po | 93 ----- addons/web_dashboard/i18n/en_GB.po | 95 ----- addons/web_dashboard/i18n/es.po | 95 ----- addons/web_dashboard/i18n/es_CL.po | 95 ----- addons/web_dashboard/i18n/es_CR.po | 96 ----- addons/web_dashboard/i18n/es_EC.po | 95 ----- addons/web_dashboard/i18n/et.po | 63 ---- addons/web_dashboard/i18n/fi.po | 95 ----- addons/web_dashboard/i18n/fr.po | 96 ----- addons/web_dashboard/i18n/gl.po | 95 ----- addons/web_dashboard/i18n/hr.po | 93 ----- addons/web_dashboard/i18n/id.po | 86 ----- addons/web_dashboard/i18n/it.po | 95 ----- addons/web_dashboard/i18n/ja.po | 93 ----- addons/web_dashboard/i18n/ka.po | 94 ----- addons/web_dashboard/i18n/mk.po | 88 ----- addons/web_dashboard/i18n/mn.po | 94 ----- addons/web_dashboard/i18n/nb.po | 69 ---- addons/web_dashboard/i18n/nl.po | 95 ----- addons/web_dashboard/i18n/nl_BE.po | 94 ----- addons/web_dashboard/i18n/pl.po | 95 ----- addons/web_dashboard/i18n/pt.po | 95 ----- addons/web_dashboard/i18n/pt_BR.po | 95 ----- addons/web_dashboard/i18n/ro.po | 95 ----- addons/web_dashboard/i18n/ru.po | 94 ----- addons/web_dashboard/i18n/sk.po | 63 ---- addons/web_dashboard/i18n/sl.po | 93 ----- addons/web_dashboard/i18n/sq.po | 63 ---- addons/web_dashboard/i18n/sr@latin.po | 88 ----- addons/web_dashboard/i18n/sv.po | 94 ----- addons/web_dashboard/i18n/tr.po | 94 ----- addons/web_dashboard/i18n/uk.po | 63 ---- addons/web_dashboard/i18n/web_dashboard.pot | 64 ---- addons/web_dashboard/i18n/zh_CN.po | 93 ----- .../static/src/css/dashboard.css | 309 ---------------- .../static/src/img/layout_1-1-1.png | Bin 306 -> 0 bytes .../static/src/img/layout_1-1.png | Bin 313 -> 0 bytes .../static/src/img/layout_1-2.png | Bin 313 -> 0 bytes .../web_dashboard/static/src/img/layout_1.png | Bin 292 -> 0 bytes .../static/src/img/layout_2-1.png | Bin 304 -> 0 bytes .../static/src/img/view_todo_arrow.png | Bin 3389 -> 0 bytes .../web_dashboard/static/src/js/dashboard.js | 333 ------------------ .../static/src/xml/web_dashboard.xml | 64 ---- 56 files changed, 12 insertions(+), 4506 deletions(-) delete mode 100644 addons/web_dashboard/__init__.py delete mode 100644 addons/web_dashboard/__openerp__.py delete mode 100644 addons/web_dashboard/controllers.py delete mode 100644 addons/web_dashboard/i18n/ar.po delete mode 100644 addons/web_dashboard/i18n/bg.po delete mode 100644 addons/web_dashboard/i18n/bn.po delete mode 100644 addons/web_dashboard/i18n/bs.po delete mode 100644 addons/web_dashboard/i18n/ca.po delete mode 100644 addons/web_dashboard/i18n/cs.po delete mode 100644 addons/web_dashboard/i18n/da.po delete mode 100644 addons/web_dashboard/i18n/de.po delete mode 100644 addons/web_dashboard/i18n/en_GB.po delete mode 100644 addons/web_dashboard/i18n/es.po delete mode 100644 addons/web_dashboard/i18n/es_CL.po delete mode 100644 addons/web_dashboard/i18n/es_CR.po delete mode 100644 addons/web_dashboard/i18n/es_EC.po delete mode 100644 addons/web_dashboard/i18n/et.po delete mode 100644 addons/web_dashboard/i18n/fi.po delete mode 100644 addons/web_dashboard/i18n/fr.po delete mode 100644 addons/web_dashboard/i18n/gl.po delete mode 100644 addons/web_dashboard/i18n/hr.po delete mode 100644 addons/web_dashboard/i18n/id.po delete mode 100644 addons/web_dashboard/i18n/it.po delete mode 100644 addons/web_dashboard/i18n/ja.po delete mode 100644 addons/web_dashboard/i18n/ka.po delete mode 100644 addons/web_dashboard/i18n/mk.po delete mode 100644 addons/web_dashboard/i18n/mn.po delete mode 100644 addons/web_dashboard/i18n/nb.po delete mode 100644 addons/web_dashboard/i18n/nl.po delete mode 100644 addons/web_dashboard/i18n/nl_BE.po delete mode 100644 addons/web_dashboard/i18n/pl.po delete mode 100644 addons/web_dashboard/i18n/pt.po delete mode 100644 addons/web_dashboard/i18n/pt_BR.po delete mode 100644 addons/web_dashboard/i18n/ro.po delete mode 100644 addons/web_dashboard/i18n/ru.po delete mode 100644 addons/web_dashboard/i18n/sk.po delete mode 100644 addons/web_dashboard/i18n/sl.po delete mode 100644 addons/web_dashboard/i18n/sq.po delete mode 100644 addons/web_dashboard/i18n/sr@latin.po delete mode 100644 addons/web_dashboard/i18n/sv.po delete mode 100644 addons/web_dashboard/i18n/tr.po delete mode 100644 addons/web_dashboard/i18n/uk.po delete mode 100644 addons/web_dashboard/i18n/web_dashboard.pot delete mode 100644 addons/web_dashboard/i18n/zh_CN.po delete mode 100644 addons/web_dashboard/static/src/css/dashboard.css delete mode 100644 addons/web_dashboard/static/src/img/layout_1-1-1.png delete mode 100644 addons/web_dashboard/static/src/img/layout_1-1.png delete mode 100644 addons/web_dashboard/static/src/img/layout_1-2.png delete mode 100644 addons/web_dashboard/static/src/img/layout_1.png delete mode 100644 addons/web_dashboard/static/src/img/layout_2-1.png delete mode 100644 addons/web_dashboard/static/src/img/view_todo_arrow.png delete mode 100644 addons/web_dashboard/static/src/js/dashboard.js delete mode 100644 addons/web_dashboard/static/src/xml/web_dashboard.xml diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 7e79fd9d2ea..acc24c36f38 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -1311,46 +1311,6 @@ class SearchView(View): del filter['domain'] return filters - - @openerpweb.jsonrequest - def add_to_dashboard(self, req, menu_id, action_id, context_to_save, domain, view_mode, name=''): - to_eval = common.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 - domain = common.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 class Binary(openerpweb.Controller): _cp_path = "/web/binary" diff --git a/addons/web/static/src/js/search.js b/addons/web/static/src/js/search.js index 53daa40ae31..d8611b924cf 100644 --- a/addons/web/static/src/js/search.js +++ b/addons/web/static/src/js/search.js @@ -635,6 +635,16 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea return null; } }, + + add_common_inputs: function() { + // add Filters to this.inputs, need view.controls filled + (new instance.web.search.Filters(this)); + // add custom filters to this.inputs + (new instance.web.search.CustomFilters(this)); + // add Advanced to this.inputs + (new instance.web.search.Advanced(this)); + }, + on_loaded: function(data) { var self = this; this.fields_view = data.fields_view; @@ -649,20 +659,13 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea data.fields_view['arch'].children, data.fields_view.fields); - // add Filters to this.inputs, need view.controls filled - (new instance.web.search.Filters(this)); - // add custom filters to this.inputs - (new instance.web.search.CustomFilters(this)); - // add Advanced to this.inputs - (new instance.web.search.Advanced(this)); + this.add_common_inputs(); // build drawer var drawer_started = $.when.apply( null, _(this.select_for_drawer()).invoke( 'appendTo', this.$element.find('.oe_searchview_drawer'))); - new instance.web.search.AddToReporting(this).appendTo($('.oe_searchview_drawer', this.$element)); - // load defaults var defaults_fetched = $.when.apply(null, _(this.inputs).invoke( 'facet_for_defaults', this.defaults)).then(function () { @@ -683,9 +686,6 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea case 'advanced_filter': this.extended_search.on_activate(); break; - case 'add_to_dashboard': - this.on_add_to_dashboard(); - break; case '': this.do_clear(); } @@ -1678,74 +1678,6 @@ instance.web.search.Filters = instance.web.search.Input.extend({ })); } }); -instance.web.search.AddToReporting = instance.web.Widget.extend({ - template: 'SearchView.addtoreporting', - _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(){ - 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.addtoreporting.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()) - return this.do_warn("Can't find dashboard action"); - 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('/web/searchview/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.search.Advanced = instance.web.search.Input.extend({ template: 'SearchView.advanced', diff --git a/addons/web/static/src/xml/base.xml b/addons/web/static/src/xml/base.xml index d16c34a6c5f..e6566c7974d 100644 --- a/addons/web/static/src/xml/base.xml +++ b/addons/web/static/src/xml/base.xml @@ -1453,20 +1453,7 @@

    -
    -

    Add to Dashboard

    -
    -

    - -
    -
    - - - +

    Advanced Search

    diff --git a/addons/web_dashboard/__init__.py b/addons/web_dashboard/__init__.py deleted file mode 100644 index 80b891a3d7a..00000000000 --- a/addons/web_dashboard/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env python -import controllers diff --git a/addons/web_dashboard/__openerp__.py b/addons/web_dashboard/__openerp__.py deleted file mode 100644 index 54f9ae294ac..00000000000 --- a/addons/web_dashboard/__openerp__.py +++ /dev/null @@ -1,15 +0,0 @@ -{ - "name": "Web Dashboard", - "category": "Hidden", - "description":"""OpenERP Web Dashboard view.""", - "version": "2.0", - "depends": ['web'], - "js": [ - 'static/src/js/dashboard.js' - ], - "css": ['static/src/css/dashboard.css'], - 'qweb' : [ - "static/src/xml/*.xml", - ], - 'auto_install': True -} diff --git a/addons/web_dashboard/controllers.py b/addons/web_dashboard/controllers.py deleted file mode 100644 index f7af6180e41..00000000000 --- a/addons/web_dashboard/controllers.py +++ /dev/null @@ -1,31 +0,0 @@ -# -*- coding: utf-8 -*- -try: - import openerp.addons.web.common.http as openerpweb -except ImportError: - import web.common.http as openerpweb - -WIDGET_CONTENT_PATTERN = """ - - [[Widget %(id)d]] - - %(content)s - - - -""" -class Widgets(openerpweb.Controller): - _cp_path = '/web_dashboard/widgets' - - @openerpweb.httprequest - def content(self, request, widget_id): - return WIDGET_CONTENT_PATTERN % request.session.model('res.widget').read( - [int(widget_id)], ['content'], request.session.eval_context(request.context) - )[0] diff --git a/addons/web_dashboard/i18n/ar.po b/addons/web_dashboard/i18n/ar.po deleted file mode 100644 index 83cefe801f0..00000000000 --- a/addons/web_dashboard/i18n/ar.po +++ /dev/null @@ -1,93 +0,0 @@ -# Arabic translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-08 00:47+0000\n" -"Last-Translator: kifcaliph \n" -"Language-Team: Arabic \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "تعديل التنسيق" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "هل متأكد من إزالة هذا البند" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "إعادة هيئة النسق..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "إستعادة" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "تغيير النسق..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "تغيير النسق" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "إنشاء" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "اختر مخطط للعرض" - -#~ msgid "progress:" -#~ msgstr "التقدم:" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "أهلاً و مرحباً بكم في Openerp عربي" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "اضغط علي الوظائف الموجودة بالأسفل للبدء في إعداد نظامك" - -#~ msgid "Your login:" -#~ msgstr "اسم الدخول لك:" - -#~ msgid "Remember to bookmark" -#~ msgstr "تذكر كمفضلة" - -#~ msgid "This url" -#~ msgstr "هذا الرابط" - -#~ msgid "Uncategorized" -#~ msgstr "غير مصنف" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "تنفيذ المهمة \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "علم هذه المهمة كمنجزة" diff --git a/addons/web_dashboard/i18n/bg.po b/addons/web_dashboard/i18n/bg.po deleted file mode 100644 index 6c15d390f8e..00000000000 --- a/addons/web_dashboard/i18n/bg.po +++ /dev/null @@ -1,95 +0,0 @@ -# Bulgarian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-09 13:18+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bulgarian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Редакция План" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Сигурни ли сте, че искате да изтриете този елемент ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Връщане в начално състояние Подредба.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Връщане в начално състояние" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Смяна Подредба.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Промяна Подредба" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Създаване" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Избери подредба на табло" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Изпълни задача \"%s\"" - -#~ msgid "Uncategorized" -#~ msgstr "Без категория" - -#~ msgid "Remember to bookmark" -#~ msgstr "Запомни като отметка" - -#~ msgid "This url" -#~ msgstr "Този url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Кликнете върху фунциите изброени по-долу за да ги изпълните и конфигурирате " -#~ "системата" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Добре дошли в OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Вашето потребителско име:" - -#~ msgid "progress:" -#~ msgstr "обработка:" - -#~ msgid "Mark this task as done" -#~ msgstr "Маркирай задачата като приключена" diff --git a/addons/web_dashboard/i18n/bn.po b/addons/web_dashboard/i18n/bn.po deleted file mode 100644 index a5e1a61127d..00000000000 --- a/addons/web_dashboard/i18n/bn.po +++ /dev/null @@ -1,95 +0,0 @@ -# Bengali translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-11-24 12:53+0000\n" -"Last-Translator: nasir khan saikat \n" -"Language-Team: Bengali \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "স্থাপনকৌশল সম্পাদনা করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "আপনি কি নিশ্চিত যে আপনি এই জিনিসটি মুছে ফেলতে চাইছেন?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "স্থাপনকৌশল পুনঃনির্ধারণ করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "পুনঃনির্ধারণ করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "স্থাপনকৌশল পরিবর্তন করুন.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "স্থাপনকৌশল পরিবর্তন করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "তৈরি করুন" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "ড্যাশবোর্ড বিন্যাস নির্বাচন করুন" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "\"%s\" কাজ চালু করুন" - -#~ msgid "Mark this task as done" -#~ msgstr "কাজটি সম্পন্ন হিসাবে চিহ্নিত করন" - -#~ msgid "Uncategorized" -#~ msgstr "অশ্রেণীভুক্ত" - -#~ msgid "Your login:" -#~ msgstr "আপনার প্রবেশ দ্বার" - -#~ msgid "Remember to bookmark" -#~ msgstr "চিহ্নিত করতে মনে রাখুন" - -#~ msgid "This url" -#~ msgstr "এই ইউ-আর-এল" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "আপনার পদ্ধতিটি চালু এবং আকৃতিদান করার জন্য নিম্ন তালিকাভুক্ত " -#~ "কার্যকারিতাগুলিতে চাপুন" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "ওপেন-ই-আর-পি তে স্বাগতম" - -#~ msgid "progress:" -#~ msgstr "অগ্রগতি:" diff --git a/addons/web_dashboard/i18n/bs.po b/addons/web_dashboard/i18n/bs.po deleted file mode 100644 index d90ada2c822..00000000000 --- a/addons/web_dashboard/i18n/bs.po +++ /dev/null @@ -1,85 +0,0 @@ -# Bosnian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-04-15 00:11+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Bosnian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jeste li sigurni da želite ukloniti predmet?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Resetuj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Izmijeni izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Napravi" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" - -#~ msgid "Mark this task as done" -#~ msgstr "Označi zadatak kao izvršen" - -#~ msgid "Uncategorized" -#~ msgstr "Nekategorisano" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Izvrši zadatak \"%s\"" - -#~ msgid "This url" -#~ msgstr "Ovaj url" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobro došli na OpenERP" - -#~ msgid "progress:" -#~ msgstr "Napredak:" - -#~ msgid "Your login:" -#~ msgstr "Vaš login:" diff --git a/addons/web_dashboard/i18n/ca.po b/addons/web_dashboard/i18n/ca.po deleted file mode 100644 index 1942107d284..00000000000 --- a/addons/web_dashboard/i18n/ca.po +++ /dev/null @@ -1,63 +0,0 @@ -# Catalan translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-06-16 17:52+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Catalan \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/cs.po b/addons/web_dashboard/i18n/cs.po deleted file mode 100644 index a0432719477..00000000000 --- a/addons/web_dashboard/i18n/cs.po +++ /dev/null @@ -1,96 +0,0 @@ -# Czech translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-22 11:16+0000\n" -"Last-Translator: Jiří Hajda \n" -"Language-Team: openerp-i18n-czech \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" -"X-Poedit-Language: Czech\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Upravit rozvržení" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jste si jistit, že chcete odstranit tuto položku?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Vynulovat rozvržení..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Vynulovat" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Změnit rozvržení..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Změnit rozvržení" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Vytvořit" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Vybrat rozvržení nástěnky" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Vítejte v OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Bez kategorie" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Vykonat úlohu \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Označit úlohu jako dokončenou" - -#~ msgid "progress:" -#~ msgstr "průběh:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klikněte na seznam funkčností vypsaných níže k jejich spuštění a nastavení " -#~ "systému" - -#~ msgid "Remember to bookmark" -#~ msgstr "Pamatovat do záložek" - -#~ msgid "This url" -#~ msgstr "Toto url" - -#~ msgid "Your login:" -#~ msgstr "Vaše přihlášení:" diff --git a/addons/web_dashboard/i18n/da.po b/addons/web_dashboard/i18n/da.po deleted file mode 100644 index 2e0a147b870..00000000000 --- a/addons/web_dashboard/i18n/da.po +++ /dev/null @@ -1,84 +0,0 @@ -# Danish translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-01 09:05+0000\n" -"Last-Translator: Aputsiaq Niels Janussen \n" -"Language-Team: Danish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Redigér layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Er du sikker på at du vil fjerne dette element?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Nulstil" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Skift layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Opret" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Vælg layout for kontrolpanel" - -#~ msgid "progress:" -#~ msgstr "fremskridt:" - -#~ msgid "Uncategorized" -#~ msgstr "Uden kategori" - -#~ msgid "Mark this task as done" -#~ msgstr "Markér denne opgave som løst" - -#~ msgid "Your login:" -#~ msgstr "Dit logind:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Husk at sætte bogmærke" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Velkommen til OpenERP" - -#~ msgid "This url" -#~ msgstr "Denne url" diff --git a/addons/web_dashboard/i18n/de.po b/addons/web_dashboard/i18n/de.po deleted file mode 100644 index 0501cf2b260..00000000000 --- a/addons/web_dashboard/i18n/de.po +++ /dev/null @@ -1,93 +0,0 @@ -# German translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-07 19:10+0000\n" -"Last-Translator: Ferdinand @ Camptocamp \n" -"Language-Team: German \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Layout bearbeiten" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Wollen Sie dieses Element wirklich löschen?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Layout zurücksetzen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Zurücksetzen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Layout ändern" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Layout ändern" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Anlegen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Wählen Sie das Dashboard Layout" - -#~ msgid "progress:" -#~ msgstr "Fortschritt:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Wähle untenstehende Funktionen um diese zu konfigurieren" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Willkommen bei OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Ihr Login:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Lesezeichen nicht vergessen!" - -#~ msgid "This url" -#~ msgstr "Diese URL" - -#~ msgid "Uncategorized" -#~ msgstr "Nicht kategorisiert" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Aufgabe \"%s\" ausführen" - -#~ msgid "Mark this task as done" -#~ msgstr "Als erledigt markieren" diff --git a/addons/web_dashboard/i18n/en_GB.po b/addons/web_dashboard/i18n/en_GB.po deleted file mode 100644 index 2d1071c68fc..00000000000 --- a/addons/web_dashboard/i18n/en_GB.po +++ /dev/null @@ -1,95 +0,0 @@ -# English (United Kingdom) translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-09 11:37+0000\n" -"Last-Translator: John Bradshaw \n" -"Language-Team: English (United Kingdom) \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Edit Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Are you sure you want to remove this item ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reset Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reset" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Change Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Change Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Create" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Choose dashboard layout" - -#~ msgid "Uncategorized" -#~ msgstr "Uncategorised" - -#~ msgid "Your login:" -#~ msgstr "Your login:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Remember to bookmark" - -#~ msgid "This url" -#~ msgstr "This url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Click on the functionalities listed below to launch them and configure your " -#~ "system" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Welcome to OpenERP" - -#~ msgid "progress:" -#~ msgstr "progress:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Execute task \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Mark this task as done" diff --git a/addons/web_dashboard/i18n/es.po b/addons/web_dashboard/i18n/es.po deleted file mode 100644 index e82b441ae25..00000000000 --- a/addons/web_dashboard/i18n/es.po +++ /dev/null @@ -1,95 +0,0 @@ -# Spanish translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-22 10:34+0000\n" -"Last-Translator: Jorge L Tupac-Yupanqui \n" -"Language-Team: Spanish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Esta seguro que quiere eliminar este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Elegir disposición del tablero" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga click en las funcionalidades listadas debajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "Your login:" -#~ msgstr "Su inicio de sesión:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar en marcadores" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" diff --git a/addons/web_dashboard/i18n/es_CL.po b/addons/web_dashboard/i18n/es_CL.po deleted file mode 100644 index 5a4a7b62396..00000000000 --- a/addons/web_dashboard/i18n/es_CL.po +++ /dev/null @@ -1,95 +0,0 @@ -# Spanish (Chile) translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-04-14 15:21+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Spanish (Chile) \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Modificar diseño" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Esta seguro que quiere eliminar este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Elegir disposición del tablero" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar en marcadores" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga click en las funcionalidades listadas debajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Su inicio de sesión:" - -#~ msgid "progress:" -#~ msgstr "progreso:" diff --git a/addons/web_dashboard/i18n/es_CR.po b/addons/web_dashboard/i18n/es_CR.po deleted file mode 100644 index 8d9fc9696c5..00000000000 --- a/addons/web_dashboard/i18n/es_CR.po +++ /dev/null @@ -1,96 +0,0 @@ -# Spanish translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 22:16+0000\n" -"Last-Translator: Freddy Gonzalez \n" -"Language-Team: Spanish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" -"Language: es\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar formato" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Está seguro/a que desea eliminar este elemento?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Re-establecer formato..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar formato..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar formato" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Escoger disposición del tablero" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga clic en las funcionalidades enumeradas abajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recuerde marcar como favorito" - -#~ msgid "This url" -#~ msgstr "Esta dirección" - -#~ msgid "Your login:" -#~ msgstr "Su usuario:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" diff --git a/addons/web_dashboard/i18n/es_EC.po b/addons/web_dashboard/i18n/es_EC.po deleted file mode 100644 index c44fa6dce54..00000000000 --- a/addons/web_dashboard/i18n/es_EC.po +++ /dev/null @@ -1,95 +0,0 @@ -# Spanish (Ecuador) translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-10-07 15:56+0000\n" -"Last-Translator: Cristian Salamea (Gnuthink) \n" -"Language-Team: Spanish (Ecuador) \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Esta seguro que quiere eliminar este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reset" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Elegir el diseño del panel de control" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Ejecutar tarea \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarea como terminada" - -#~ msgid "Uncategorized" -#~ msgstr "Sin categoría" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "Your login:" -#~ msgstr "Su inicio de sesión:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar en favoritos" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Haga click en las funcionalidades listadas debajo para lanzarlas y " -#~ "configurar su sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenido a OpenERP" diff --git a/addons/web_dashboard/i18n/et.po b/addons/web_dashboard/i18n/et.po deleted file mode 100644 index c7f5dd63220..00000000000 --- a/addons/web_dashboard/i18n/et.po +++ /dev/null @@ -1,63 +0,0 @@ -# Estonian translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-10-10 19:29+0000\n" -"Last-Translator: Aare Vesi \n" -"Language-Team: Estonian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Lähtesta" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/fi.po b/addons/web_dashboard/i18n/fi.po deleted file mode 100644 index e11b22a20c6..00000000000 --- a/addons/web_dashboard/i18n/fi.po +++ /dev/null @@ -1,95 +0,0 @@ -# Finnish translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-19 12:00+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Finnish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Muokkaa näkymää" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Oletko varma että haluat poistaa tämän osan ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Palauta asettelu.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Palauta" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Muuta asettelu.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Muuta asettelu" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Luo" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Valitse työpöydän asetttelu" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Suorita tehtävä \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Merkitse tämä tehtävä valmiiksi" - -#~ msgid "Uncategorized" -#~ msgstr "Luokittelemattomat" - -#~ msgid "Your login:" -#~ msgstr "Käyttäjätunnuksesi:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Muista luoda kirjainmerkki" - -#~ msgid "This url" -#~ msgstr "Tämä osoite" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klikkaa allalistattuja toimintoja käynnistääksesi ne ja määritelläksesi " -#~ "järjestelmäsi" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Tervetuloa OpenERP järjestelmään" - -#~ msgid "progress:" -#~ msgstr "edistyminen:" diff --git a/addons/web_dashboard/i18n/fr.po b/addons/web_dashboard/i18n/fr.po deleted file mode 100644 index 987722dbd7a..00000000000 --- a/addons/web_dashboard/i18n/fr.po +++ /dev/null @@ -1,96 +0,0 @@ -# French translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-15 09:15+0000\n" -"Last-Translator: Olivier Dony (OpenERP) \n" -"Language-Team: French \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Modifier l'agencement" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Voulez-vous réellement supprimer cet élément?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Réinitialiser l'agencement" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Réinitialiser" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Modifier l'agencement..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Modifier l'agencement" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Créer" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Choisissez la mise en page du tableau de bord" - -#~ msgid "Your login:" -#~ msgstr "Votre identifiant:" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bienvenue dans OpenERP" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Démarrer la tâche \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marquer cette tâche comme accomplie" - -#~ msgid "Uncategorized" -#~ msgstr "Sans catégorie" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Les raccourcis ci-dessous permettent de démarrer les étapes principales de " -#~ "configuration de votre système" - -#~ msgid "Remember to bookmark" -#~ msgstr "" -#~ "Pensez à ajouter cette page à vos signets/marque pages en cliquant sur" - -#~ msgid "This url" -#~ msgstr "ce lien" - -#~ msgid "progress:" -#~ msgstr "Progression :" diff --git a/addons/web_dashboard/i18n/gl.po b/addons/web_dashboard/i18n/gl.po deleted file mode 100644 index fffdba5cd71..00000000000 --- a/addons/web_dashboard/i18n/gl.po +++ /dev/null @@ -1,95 +0,0 @@ -# Galician translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 09:13+0000\n" -"Last-Translator: Vicente \n" -"Language-Team: Galician \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "¿Está seguro de querer eliminar este elemento?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reiniciar Dosposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reiniciar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambiar Disposición.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambiar Disposición" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crear" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Cambiar disposición do taboleiro" - -#~ msgid "progress:" -#~ msgstr "progreso:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Pinchar nas funcionalidades listadas a continuación para lanzar e configurar " -#~ "o seu sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Benvido a OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Sen categorizar" - -#~ msgid "Your login:" -#~ msgstr "Seu inicio de sesión:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Recordar o marcador" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Executar Tarefa \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarefa como feita" diff --git a/addons/web_dashboard/i18n/hr.po b/addons/web_dashboard/i18n/hr.po deleted file mode 100644 index 85303a24bb8..00000000000 --- a/addons/web_dashboard/i18n/hr.po +++ /dev/null @@ -1,93 +0,0 @@ -# Croatian translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-22 10:13+0000\n" -"Last-Translator: Goran Kliska \n" -"Language-Team: Croatian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Uredi raspored" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Želite li doista ukloniti ovu stavku ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Resetiraj razmještaj..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Vrati izvorno" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Promjeni razmještaj..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Promjeni raspored" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Kreiraj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Odaberi raspored" - -#~ msgid "progress:" -#~ msgstr "napredak:" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobrodošli u svijet OpenERP-a" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Odaberite funkcionalnost koju želite postaviti" - -#~ msgid "This url" -#~ msgstr "Ovaj url" - -#~ msgid "Your login:" -#~ msgstr "Vaša prijava:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Zabilježi u knjižne oznake" - -#~ msgid "Uncategorized" -#~ msgstr "Nekategorizirano" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Izvrši zadatak \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Označi ovaj zadatak kao obavljen" diff --git a/addons/web_dashboard/i18n/id.po b/addons/web_dashboard/i18n/id.po deleted file mode 100644 index 6bf1fa7a126..00000000000 --- a/addons/web_dashboard/i18n/id.po +++ /dev/null @@ -1,86 +0,0 @@ -# Indonesian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-08 15:13+0000\n" -"Last-Translator: Budi Iskandar \n" -"Language-Team: Indonesian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Ubah Tampilan" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Apakah Anda yakin untuk menghapus item ini ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Atur Ulang Tampilan" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Atur Ulang" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Ubah Tampilan.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Ubah Tampilan" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Buat" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Pilih Tampilan Dasbor" - -#~ msgid "Uncategorized" -#~ msgstr "Tanpa kategori" - -#~ msgid "Your login:" -#~ msgstr "Akun Anda :" - -#~ msgid "Remember to bookmark" -#~ msgstr "Ingatkan untuk menandai" - -#~ msgid "This url" -#~ msgstr "URL ini" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Pilih Fungsi dibawah ini yang akan dikonfigurasikan ke sistem Anda" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Selamat Datang di OpenERP" - -#~ msgid "progress:" -#~ msgstr "Sedang diproses.." diff --git a/addons/web_dashboard/i18n/it.po b/addons/web_dashboard/i18n/it.po deleted file mode 100644 index dbe169dd27f..00000000000 --- a/addons/web_dashboard/i18n/it.po +++ /dev/null @@ -1,95 +0,0 @@ -# Italian translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 21:54+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" -"Language-Team: Italian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Modifica Layour" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Sicuro di voler cancellare questo elemento?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reimposta Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Ripristina" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Cambia Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Cambia Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Crea" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Scegli layout dashboard" - -#~ msgid "progress:" -#~ msgstr "avanzamento:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Esegui task \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marca questa attività come completata" - -#~ msgid "Uncategorized" -#~ msgstr "Non categorizzato" - -#~ msgid "Remember to bookmark" -#~ msgstr "Salva nei bookmark" - -#~ msgid "Your login:" -#~ msgstr "Il tuo login:" - -#~ msgid "This url" -#~ msgstr "Questo url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Clicca sulla lista di funzionalità seguenti per eseguirle e configurare il " -#~ "sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Benvenuto su OpenERP" diff --git a/addons/web_dashboard/i18n/ja.po b/addons/web_dashboard/i18n/ja.po deleted file mode 100644 index 63544ec22f9..00000000000 --- a/addons/web_dashboard/i18n/ja.po +++ /dev/null @@ -1,93 +0,0 @@ -# Japanese translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-19 01:29+0000\n" -"Last-Translator: Akira Hiyama \n" -"Language-Team: Japanese \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "レイアウトの編集" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "この項目を削除しますか?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "レイアウトのリセット" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "リセット" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "レイアウトの変更…" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "レイアウトの変更" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "作成" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "ダッシュボードレイアウトの選択" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "タスク \"%s\" を実行" - -#~ msgid "Mark this task as done" -#~ msgstr "このタスクを完了" - -#~ msgid "Uncategorized" -#~ msgstr "未分類" - -#~ msgid "Your login:" -#~ msgstr "あなたのログイン:" - -#~ msgid "Remember to bookmark" -#~ msgstr "ブックマークをお忘れなく" - -#~ msgid "This url" -#~ msgstr "このURL" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "あなたのシステムを設定するために下記に示した機能をクリックしてください。" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "OpenERPへようこそ" - -#~ msgid "progress:" -#~ msgstr "プロセス" diff --git a/addons/web_dashboard/i18n/ka.po b/addons/web_dashboard/i18n/ka.po deleted file mode 100644 index 5e816e13dab..00000000000 --- a/addons/web_dashboard/i18n/ka.po +++ /dev/null @@ -1,94 +0,0 @@ -# Georgian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-15 18:30+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Georgian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "განლაგების შეცვლა" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "დარწმუნებული ხართ რომ გსურთ ამ კომპონენტის წაშლა?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "საწყისი განლაგება" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "ხელახალი კონფიგურაცია" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "განლაგების შეცვლა.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "განლაგების შეცვლა" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "შექმნა" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "აირჩიეთ საინფორმაციო დაფის განლაგება" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "შეასრულე ამოცანა \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "მონიშნე ეს ამოცანა როგორც დასრულებული" - -#~ msgid "Uncategorized" -#~ msgstr "კატეგორიის გარეშე" - -#~ msgid "Your login:" -#~ msgstr "თქვენი მოხმარებელი:" - -#~ msgid "Remember to bookmark" -#~ msgstr "ჩაინიშნე ფავორიტებში" - -#~ msgid "This url" -#~ msgstr "ეს URL" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "დააწკაპუნეთ ქვემოთ ჩამოთვლილ ფუნქციონალზე რათა გაააქტიუროთ და დააკონფიგურიროთ" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "მოგესალმებით!" - -#~ msgid "progress:" -#~ msgstr "პროგრესი:" diff --git a/addons/web_dashboard/i18n/mk.po b/addons/web_dashboard/i18n/mk.po deleted file mode 100644 index cc7015f9e6d..00000000000 --- a/addons/web_dashboard/i18n/mk.po +++ /dev/null @@ -1,88 +0,0 @@ -# Macedonian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-08 11:07+0000\n" -"Last-Translator: Nikola Stojanoski \n" -"Language-Team: Macedonian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Измени изглед" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Дали сте стигурни дека сакате да го отстраните ојој предмет?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Ресетирај Изглед.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Ресетирај" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Измени изглед.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Измени изглед" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Креирај" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Одбери изглед на таблата" - -#~ msgid "Uncategorized" -#~ msgstr "Некатегоризирано" - -#~ msgid "Your login:" -#~ msgstr "Ваше корисничко име:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Не заборавајте да го обележите" - -#~ msgid "This url" -#~ msgstr "Овој линк" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Кликнете на функционалностите листани подоле за да ги стартувате и да го " -#~ "конфигуриате вашиот систем" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Добредојдовте во OpenERP" - -#~ msgid "progress:" -#~ msgstr "прогрес:" diff --git a/addons/web_dashboard/i18n/mn.po b/addons/web_dashboard/i18n/mn.po deleted file mode 100644 index 093966f7e72..00000000000 --- a/addons/web_dashboard/i18n/mn.po +++ /dev/null @@ -1,94 +0,0 @@ -# Mongolian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-06-13 17:34+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Mongolian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Бүрэлдэхүүнийг засах" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Энэ зүйлийг хасахдаа итгэлтэй байна уу?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Бүрэлдэхүүнийг сэргээх" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Сэргээх" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Бүрэлдэхүүнийг солих" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Бүрэлдэхүүнийг солих" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Үүсгэх" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Хянах самбарын зохиомжийг сонгох" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "\"%s\" Даалгаврыг хэрэгжүүлэх" - -#~ msgid "Mark this task as done" -#~ msgstr "Энэ даалгаврыг хийснээр тэмдэглэх" - -#~ msgid "Uncategorized" -#~ msgstr "Ангилагдаагүй" - -#~ msgid "Your login:" -#~ msgstr "Таны нэвтрэх нэр:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Доорх функционалийн жагсаалт дээр дарж ажилллуулж өөрийн системийн тохируулна" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "OpenERP-д тавтай морил" - -#~ msgid "progress:" -#~ msgstr "явц:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Тэмдэглэж авахаа мартаваа" - -#~ msgid "This url" -#~ msgstr "Энэ url нь" diff --git a/addons/web_dashboard/i18n/nb.po b/addons/web_dashboard/i18n/nb.po deleted file mode 100644 index b0e0847e04f..00000000000 --- a/addons/web_dashboard/i18n/nb.po +++ /dev/null @@ -1,69 +0,0 @@ -# Norwegian Bokmal translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-28 13:07+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Norwegian Bokmal \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Rediger layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Tilbakestill" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Endre layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Endre layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" - -#~ msgid "Mark this task as done" -#~ msgstr "Merk denne oppgaven som ferdig" - -#~ msgid "Uncategorized" -#~ msgstr "Ikke kategorisert" diff --git a/addons/web_dashboard/i18n/nl.po b/addons/web_dashboard/i18n/nl.po deleted file mode 100644 index 1d3f241f6c8..00000000000 --- a/addons/web_dashboard/i18n/nl.po +++ /dev/null @@ -1,95 +0,0 @@ -# Dutch translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-19 08:25+0000\n" -"Last-Translator: Erwin \n" -"Language-Team: Dutch \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Bewerk Opmaak" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Weet u zeker dat u dit item wilt verwijderen?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reset Opmaak" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reset" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Verander Opmaak..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Opmaak wijzigen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Nieuw" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Kies dashboard layout" - -#~ msgid "progress:" -#~ msgstr "voortgang:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klink op de onderstaande functionaliteiten om ze de starten en uw systeem te " -#~ "configureren" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Welkom bij OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Geen categorie" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Voer taak \"%s\" uit" - -#~ msgid "Mark this task as done" -#~ msgstr "Markeer deze taak als voltooid" - -#~ msgid "Your login:" -#~ msgstr "Uw login:" - -#~ msgid "This url" -#~ msgstr "Deze pagina" - -#~ msgid "Remember to bookmark" -#~ msgstr "Vergeet niet een bladwijzer aan te maken van" diff --git a/addons/web_dashboard/i18n/nl_BE.po b/addons/web_dashboard/i18n/nl_BE.po deleted file mode 100644 index be9dd4e2610..00000000000 --- a/addons/web_dashboard/i18n/nl_BE.po +++ /dev/null @@ -1,94 +0,0 @@ -# Dutch (Belgium) translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-05-15 14:13+0000\n" -"Last-Translator: Els Van Vossel (Agaplan) \n" -"Language-Team: Dutch (Belgium) \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Lay-out bewerken" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Wilt u dit onderdeel verwijderen?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Lay-out herstellen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Beginwaarden herstellen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Lay-out wijzigen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Lay-out wijzigen" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Maken" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Dashboardlay-out kiezen" - -#~ msgid "Your login:" -#~ msgstr "Uw gegevens:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Vergeet geen bladwijzer te maken" - -#~ msgid "This url" -#~ msgstr "naar deze url" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Welkom bij OpenERP" - -#~ msgid "progress:" -#~ msgstr "voortgang:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klik op een optie in de lijst hieronder om de functionaliteit in te stellen" - -#~ msgid "Uncategorized" -#~ msgstr "Zonder categorie" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Taak \"%s\" uitvoeren" - -#~ msgid "Mark this task as done" -#~ msgstr "Taak als voltooid markeren" diff --git a/addons/web_dashboard/i18n/pl.po b/addons/web_dashboard/i18n/pl.po deleted file mode 100644 index 3a82cc270b1..00000000000 --- a/addons/web_dashboard/i18n/pl.po +++ /dev/null @@ -1,95 +0,0 @@ -# Polish translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-11-04 16:28+0000\n" -"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) \n" -"Language-Team: Polish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Edytuj układ" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jesteś pewien, że chcesz usunąć ten element?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Przywracanie układu..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Przywróć" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Zmiana układu..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Zmień układ" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Utwórz" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Wybierz układ konsoli" - -#~ msgid "progress:" -#~ msgstr "postęp:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Wykonaj zadanie \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Oznacz zadanie jako wykonane" - -#~ msgid "Uncategorized" -#~ msgstr "Bez kategorii" - -#~ msgid "Your login:" -#~ msgstr "Twój login:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Zapisz w zakładkach" - -#~ msgid "This url" -#~ msgstr "Ten url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Kliknij funkcjonalności z listy poniżej, aby je zainstalować i skonfigurować " -#~ "system" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Witamy w OpenERP" diff --git a/addons/web_dashboard/i18n/pt.po b/addons/web_dashboard/i18n/pt.po deleted file mode 100644 index c19046339a1..00000000000 --- a/addons/web_dashboard/i18n/pt.po +++ /dev/null @@ -1,95 +0,0 @@ -# Portuguese translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 02:22+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Portuguese \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Tem a certeza que pretende remover este item?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Repôr Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Repôr" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Modificar Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Modificar Estrutura" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Criar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Escolha a configuração do painel" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Executar tarefa \"%s\"" - -#~ msgid "Uncategorized" -#~ msgstr "Sem categoria" - -#~ msgid "progress:" -#~ msgstr "progresso:" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarefa como concluída" - -#~ msgid "Remember to bookmark" -#~ msgstr "Relembrar para favoritos" - -#~ msgid "This url" -#~ msgstr "Este endereço" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Clique nas funcionalidades listadas abaixo para as lançar e configurar o seu " -#~ "sistema" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bem-vindo ao OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Os seus acesso:" diff --git a/addons/web_dashboard/i18n/pt_BR.po b/addons/web_dashboard/i18n/pt_BR.po deleted file mode 100644 index b87ff340200..00000000000 --- a/addons/web_dashboard/i18n/pt_BR.po +++ /dev/null @@ -1,95 +0,0 @@ -# Brazilian Portuguese translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-16 01:35+0000\n" -"Last-Translator: Rafael Sales - http://www.tompast.com.br \n" -"Language-Team: Brazilian Portuguese \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editar Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Você tem certeza que quer remover este item ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Resetar Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Restaurar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Mudar Layout.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Mudar Layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Criar" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Escolha o Layout do Painel" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bem Vindo ao OpenERP" - -#~ msgid "progress:" -#~ msgstr "progresso:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Clique em alguma funcionalidade listada abaixo para ativa-lá e configurar no " -#~ "seu sistema" - -#~ msgid "Your login:" -#~ msgstr "Seu login:" - -#~ msgid "This url" -#~ msgstr "Esta url" - -#~ msgid "Uncategorized" -#~ msgstr "Não Categorizado" - -#~ msgid "Remember to bookmark" -#~ msgstr "Marcar no bookmark" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Execute a tarefa \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcar esta tarefa como realizada" diff --git a/addons/web_dashboard/i18n/ro.po b/addons/web_dashboard/i18n/ro.po deleted file mode 100644 index db8ef6da163..00000000000 --- a/addons/web_dashboard/i18n/ro.po +++ /dev/null @@ -1,95 +0,0 @@ -# Romanian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-03-10 13:19+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Romanian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Editare format" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Sunteti sigur(a) ca doriti sa stergeti acest element?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Reseteaza formatul" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Reseteaza" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Schimba formatul.." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Modifica formatul" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Creati" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Alegeti formatul tabloului de bord" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Bun venit in OpenERP" - -#~ msgid "progress:" -#~ msgstr "progres:" - -#~ msgid "This url" -#~ msgstr "Acest url" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Executa sarcina \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Marcheaza aceasta sarcina ca efectuata" - -#~ msgid "Uncategorized" -#~ msgstr "Neclasificat" - -#~ msgid "Your login:" -#~ msgstr "Autentificarea dumneavoastra:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Amintiti-va sa marcati" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Faceti clic pe functionalitatile de mai jos pentru a le porni si a va " -#~ "configura sistemul" diff --git a/addons/web_dashboard/i18n/ru.po b/addons/web_dashboard/i18n/ru.po deleted file mode 100644 index 0b4d9cd823f..00000000000 --- a/addons/web_dashboard/i18n/ru.po +++ /dev/null @@ -1,94 +0,0 @@ -# Russian translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-17 07:37+0000\n" -"Last-Translator: Aleksei Motsik \n" -"Language-Team: Russian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Редактировать макет" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Вы действительно хотите удалить этот объект?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Обнулить Макет..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Сбросить" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Изменить Макет..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Изменить Макет" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Создать" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Выбрать внешний вид" - -#~ msgid "progress:" -#~ msgstr "прогресс:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Нажмите на списке функций ниже для их запуска и конфигурации вашей системы" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Добро пожаловать в OpenERP" - -#~ msgid "Uncategorized" -#~ msgstr "Без категории" - -#~ msgid "Your login:" -#~ msgstr "Ваше Имя пользователя:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Добавить в закладки" - -#~ msgid "This url" -#~ msgstr "Эта ссылка" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Выполнить задачу \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Отметить завершенной" diff --git a/addons/web_dashboard/i18n/sk.po b/addons/web_dashboard/i18n/sk.po deleted file mode 100644 index 570f22bdbeb..00000000000 --- a/addons/web_dashboard/i18n/sk.po +++ /dev/null @@ -1,63 +0,0 @@ -# Slovak translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2011-10-23 14:45+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Slovak \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/sl.po b/addons/web_dashboard/i18n/sl.po deleted file mode 100644 index 94f8ff7f35c..00000000000 --- a/addons/web_dashboard/i18n/sl.po +++ /dev/null @@ -1,93 +0,0 @@ -# Slovenian translation for openerp-web -# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2011. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-01-30 17:50+0000\n" -"Last-Translator: ERP Basing \n" -"Language-Team: Slovenian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Uredi izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Res želite odstraniti to postavko ?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Povrni postavitev" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Povrni" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Spremeni postavitev" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Spremeni postavitev" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Ustvari" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Izberite postavitev nadzorne plošče" - -#~ msgid "progress:" -#~ msgstr "napredek:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "Kliknite spodnje nastavitve, da se odprejo in lahko nastavite sistem" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobrodošli v OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Vaša prijava:" - -#~ msgid "This url" -#~ msgstr "Ta naslov (url)" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Izvedi opravilo \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Označi to opravilo kot opravljeno" - -#~ msgid "Uncategorized" -#~ msgstr "Neopredeljeno" - -#~ msgid "Remember to bookmark" -#~ msgstr "Ustvarite zaznamek ( bookmark)" diff --git a/addons/web_dashboard/i18n/sq.po b/addons/web_dashboard/i18n/sq.po deleted file mode 100644 index 8e4494dfbbe..00000000000 --- a/addons/web_dashboard/i18n/sq.po +++ /dev/null @@ -1,63 +0,0 @@ -# Albanian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-01 00:15+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Albanian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/sr@latin.po b/addons/web_dashboard/i18n/sr@latin.po deleted file mode 100644 index 362bd001e38..00000000000 --- a/addons/web_dashboard/i18n/sr@latin.po +++ /dev/null @@ -1,88 +0,0 @@ -# Serbian Latin translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-09 21:03+0000\n" -"Last-Translator: zmmaj \n" -"Language-Team: Serbian Latin \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Uredi Izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Jesi li siguran da želiš ukloniti ovu stavku?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Resetuj Izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Resetuj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Izmeni Izgled..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Izmeni Izgled" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Kreiraj" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Izaberi Izgled kontrolnog panela" - -#~ msgid "Uncategorized" -#~ msgstr "Nekategorisano" - -#~ msgid "Your login:" -#~ msgstr "Vaša prijava:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Sačuvaj u podsetniku" - -#~ msgid "This url" -#~ msgstr "Ovaj url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Klikni na neku od funkcija nabrojanu ispod kako bi je pokrenuo i uredio svoj " -#~ "sistem" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Dobrodošli u OpenERP" - -#~ msgid "progress:" -#~ msgstr "napredak:" diff --git a/addons/web_dashboard/i18n/sv.po b/addons/web_dashboard/i18n/sv.po deleted file mode 100644 index bfc7eca5cca..00000000000 --- a/addons/web_dashboard/i18n/sv.po +++ /dev/null @@ -1,94 +0,0 @@ -# Swedish translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-04-17 09:21+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Swedish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Ändra layout" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Är du säker på att du vill radera?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Återställ layouten" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Nollställ" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Ändra layout..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Ändra layout" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Skapa" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Välj infopanellayout" - -#~ msgid "Mark this task as done" -#~ msgstr "Markera denna uppgift som färdig" - -#~ msgid "Uncategorized" -#~ msgstr "Okategoriserad" - -#~ msgid "Remember to bookmark" -#~ msgstr "Kom ihåg att spara ett bokmärke till" - -#~ msgid "This url" -#~ msgstr "denna url" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Välj bland funktionerna nedan för att starta och konfigurera ditt system" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "Välkommen till OpenERP" - -#~ msgid "Your login:" -#~ msgstr "Din inloggning:" - -#~ msgid "progress:" -#~ msgstr "framsteg:" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Utför åtgärd \"%s\"" diff --git a/addons/web_dashboard/i18n/tr.po b/addons/web_dashboard/i18n/tr.po deleted file mode 100644 index 9c1ad0c54b7..00000000000 --- a/addons/web_dashboard/i18n/tr.po +++ /dev/null @@ -1,94 +0,0 @@ -# Turkish translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-24 11:28+0000\n" -"Last-Translator: Ahmet Altınışık \n" -"Language-Team: Turkish \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "Şablonu değiştir" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "Bu kayıdı silmek istediğinize emin misiniz?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "Düzeni Sıfırla..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "Yeniden başlat" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "Düzeni Değiştir..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "Düzeni Değiştir" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "Oluştur" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "Yönetim Paneli Yerleşmini Seç" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "" -#~ "Aşağıdaki fonksiyon adlarının üzerlerine tıklayarak ayarları yapabilirsiniz." - -#~ msgid "Welcome to OpenERP" -#~ msgstr "OpenERP ye hoşgeldiniz." - -#~ msgid "progress:" -#~ msgstr "İlerleme:" - -#~ msgid "Your login:" -#~ msgstr "Kullanıcı Adınız:" - -#~ msgid "Remember to bookmark" -#~ msgstr "Yer imlerine ekleyin:" - -#~ msgid "This url" -#~ msgstr "Bu Sayfayı" - -#~ msgid "Uncategorized" -#~ msgstr "Sınıflandırılmamış" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "Görevi Çalıştır \"%s\"" - -#~ msgid "Mark this task as done" -#~ msgstr "Bu görevi yapıldı olarak işaretle" diff --git a/addons/web_dashboard/i18n/uk.po b/addons/web_dashboard/i18n/uk.po deleted file mode 100644 index fde0a60224f..00000000000 --- a/addons/web_dashboard/i18n/uk.po +++ /dev/null @@ -1,63 +0,0 @@ -# Ukrainian translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-07-22 09:32+0000\n" -"Last-Translator: FULL NAME \n" -"Language-Team: Ukrainian \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" diff --git a/addons/web_dashboard/i18n/web_dashboard.pot b/addons/web_dashboard/i18n/web_dashboard.pot deleted file mode 100644 index a43640de0b8..00000000000 --- a/addons/web_dashboard/i18n/web_dashboard.pot +++ /dev/null @@ -1,64 +0,0 @@ -# Translations template for PROJECT. -# Copyright (C) 2012 ORGANIZATION -# This file is distributed under the same license as the PROJECT project. -# FIRST AUTHOR , 2012. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PROJECT VERSION\n" -"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \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" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:61 -msgid "Edit Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:107 -msgid "Are you sure you want to remove this item ?" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "" - diff --git a/addons/web_dashboard/i18n/zh_CN.po b/addons/web_dashboard/i18n/zh_CN.po deleted file mode 100644 index 030afd10594..00000000000 --- a/addons/web_dashboard/i18n/zh_CN.po +++ /dev/null @@ -1,93 +0,0 @@ -# Chinese (Simplified) translation for openerp-web -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 -# This file is distributed under the same license as the openerp-web package. -# FIRST AUTHOR , 2012. -# -msgid "" -msgstr "" -"Project-Id-Version: openerp-web\n" -"Report-Msgid-Bugs-To: FULL NAME \n" -"POT-Creation-Date: 2012-07-02 09:06+0200\n" -"PO-Revision-Date: 2012-02-15 13:18+0000\n" -"Last-Translator: Wei \"oldrev\" Li \n" -"Language-Team: Chinese (Simplified) \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-08 04:46+0000\n" -"X-Generator: Launchpad (build 15757)\n" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:60 -msgid "Edit Layout" -msgstr "编辑布局" - -#. openerp-web -#: addons/web_dashboard/static/src/js/dashboard.js:106 -msgid "Are you sure you want to remove this item ?" -msgstr "您确定要移除此条目吗?" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 -msgid "Reset Layout.." -msgstr "重置布局..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 -msgid "Reset" -msgstr "复位" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 -msgid "Change Layout.." -msgstr "更改布局..." - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 -msgid "Change Layout" -msgstr "更改布局" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 -msgid " " -msgstr " " - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 -msgid "Create" -msgstr "创建" - -#. openerp-web -#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 -msgid "Choose dashboard layout" -msgstr "选择仪表盘布局" - -#~ msgid "Welcome to OpenERP" -#~ msgstr "欢迎使用 OpenERP" - -#~ msgid "progress:" -#~ msgstr "进度:" - -#~ msgid "" -#~ "Click on the functionalites listed below to launch them and configure your " -#~ "system" -#~ msgstr "单击以下功能列表打开配置界面" - -#~ msgid "Your login:" -#~ msgstr "您的用户名:" - -#~ msgid "Remember to bookmark" -#~ msgstr "加入书签" - -#~ msgid "This url" -#~ msgstr "此网址" - -#~ msgid "Uncategorized" -#~ msgstr "未分类" - -#, python-format -#~ msgid "Execute task \"%s\"" -#~ msgstr "执行任务“%s”" - -#~ msgid "Mark this task as done" -#~ msgstr "将此任务标记为完成" diff --git a/addons/web_dashboard/static/src/css/dashboard.css b/addons/web_dashboard/static/src/css/dashboard.css deleted file mode 100644 index 74410b3e937..00000000000 --- a/addons/web_dashboard/static/src/css/dashboard.css +++ /dev/null @@ -1,309 +0,0 @@ -.openerp table.oe_dashboard { - width: 100%; -} -.openerp .oe_dashboard_links { - text-align: right; - margin: 0 4px 6px 0; -} -.openerp .oe_dashboard_action { - margin: 0 0.5em 0.5em 0; - padding: 0px; - background-color: white; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; -} - -.openerp .oe_dashboard_action .oe_dashboard_action_header { - font-size: 85%; - font-weight: bold; - text-transform: uppercase; - text-indent: 10px; - vertical-align: middle; - border-bottom: 1px solid #e5e5e5; - background: white url("/web/static/src/img/box-a-header-a.gif") 0% 0% repeat-x; -} - -.openerp h2.oe_dashboard_action_header { - margin: 0; - padding:4px 4px; - -moz-border-radius-topleft: 3px; - -webkit-border-top-left-radius: 3px; - border-top-left-radius: 3px; - -moz-border-radius-topright: 3px; - -webkit-border-top-right-radius: 3px; - border-top-right-radius: 3px; -} -.openerp h2.oe_dashboard_action_header_empty { - padding-top: 0; - padding-bottom: 2px; -} - -.openerp .oe_dashboard_button_create { - margin-left: 4px; - padding: 0 4px 0 4px; - height: 16px !important; -} - -.openerp a.oe_dashboard_action_rename { - float: left; - padding-right: 4px; - position: relative; - top: 1px; -} -.openerp .oe_dashboard_action_input { - height: 16px; - position: relative; - top: 2px; -} - -.openerp .oe_dashboard_action .oe_dashboard_action_header:hover { - cursor: move; -} -.openerp .oe_dashboard_action .ui-icon { - cursor: pointer; -} -.openerp .oe_dashboard_action .ui-icon:hover { - background-color: #ccc; - border-radius: 4px; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; -} - -.openerp .oe_dashboard_action .oe_dashboard_action_header .ui-icon { - float: right; -} - -.openerp .oe_dashboard .ui-sortable-placeholder { - border: 1px dotted black; - visibility: visible !important; - height: 50px !important; -} - -.openerp .oe_dashboard .ui-sortable-placeholder * { - visibility: hidden; -} - -/* Base overwriting */ -.openerp .oe_dashboard .oe_list_content, .openerp .oe_dashboard .ui-widget-header { - border-right:none !important; - padding:0 3px; -} - -/* Layouts */ -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_0 { - width: 100%; -} -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_1, -.openerp .oe_dashboard_layout_1 .oe_dashboard_column.index_2 { - display: none; -} - -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column { - width: 50%; -} -.openerp .oe_dashboard_layout_1-1 .oe_dashboard_column.index_2 { - display: none; -} - -.openerp .oe_dashboard_layout_1-1-1 .oe_dashboard_column { - width: 33%; -} - -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_0 { - width: 70%; -} -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_1 { - width: 30%; -} -.openerp .oe_dashboard_layout_2-1 .oe_dashboard_column.index_2 { - display: none; -} - -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_0 { - width: 30%; -} -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_1 { - width: 70%; -} -.openerp .oe_dashboard_layout_1-2 .oe_dashboard_column.index_2 { - display: none; -} - - -.openerp .oe_dashboard_layout_selector { - overflow: auto; - padding: 10px; -} - -.openerp .oe_dashboard_layout_selector ul { - margin: 0; - padding: 0; -} - -.openerp .oe_dashboard_layout_selector ul li { - position: relative; - float: left; - height: 51px; - list-style-type: none; - margin: 5px; - padding: 0; - width: 82px; - cursor: pointer; - border: 1px solid white; -} -.openerp .oe_dashboard_layout_selector ul li:hover { - border: 1px solid #090; -} -.openerp .oe_dashboard_layout_selector ul li img.oe_dashboard_selected_layout { - position: absolute; - top: 0px; - right: 0px; -} - -.openerp .oe_dashboard_home_tile { - text-align: center; - margin: 10px; - -webkit-border-radius: 10px; - -moz-border-radius: 10px; - border-radius: 10px; - -webkit-box-shadow: 3px 3px 5px 3px #DADDDD; - -moz-box-shadow: 3px 3px 5px 3px #DADDDD; - box-shadow: 3px 3px 5px 3px #DADDDD; -} -.openerp .oe_dashboard_home_tile span { - display: block; - padding: 0 0 15px; - font-weight: bold; - text-transform: uppercase; - color: #555; - white-space: nowrap; -} -.openerp .oe_dashboard_home_tile_icon { - height: 100px; -} -.openerp .oe_dashboard_home_tile_icon img { - display: block; - margin: 0 auto; -} -.openerp .oe_dashboard_home_tile_icon img.hover { - display: none; -} -.openerp .oe_dashboard_home_tile:hover { - background-color: #fafafa; - -webkit-box-shadow: 3px 3px 5px 3px #979797; - -moz-box-shadow: 3px 3px 5px 3px #979797; - box-shadow: 3px 3px 5px 3px #979797; -} -.openerp .oe_dashboard_home_tile:hover img { - display: none; -} -.openerp .oe_dashboard_home_tile:hover img.hover { - display: block; -} -.openerp .oe_dashboard_home_tile:hover span { - color: black; -} - -.openerp .oe_dashboard_action .view-manager-main-content { - padding: 2px; -} - -.openerp .oe_app_tiles h1, .openerp .oe_app_tiles h3 { - margin: 16px 24px; -} - -.openerp .oe_app_tiles { - padding: 0 10px; -} - -.openerp .oe_app_tiles li { - float: left; - list-style: none; -} - -.openerp .oe_app_tiles li img { - display: block; - margin: 0 auto; - height: 100px; - width: 100px; -} -.openerp .oe_app_tiles li img.hover { - display: none; -} -.openerp .oe_app_tiles li:hover img { - display: none; -} -.openerp .oe_app_tiles li:hover img.hover { - display: block; -} - -.openerp .oe_app_tiles li a { - display: block; - height: 120px; - width: 194px; - color: #4C4C4C; - border: 1px solid #f4f2f2; - margin: 6px; - padding: 12px; - text-align: center; - text-transform: uppercase; - text-decoration: none; - font-size: 12px; - font-weight: 800; - background: white; - -moz-border-radius: 6px; - -webkit-border-radius: 6px; - -ms-border-radius: 6px; - border-radius: 6px; - -moz-box-shadow: 0 1px 2px #bbb; - -webkit-box-shadow: 0 1px 2px #bbb; - -o-box-shadow: 0 1px 2px #bbb; - box-shadow: 0 1px 2px #bbb; -} -/* changing icon for the change layout button */ - -.openerp .oe_dashboard_link_change_layout, .openerp .oe_dashboard_link_reset { - padding-top: 1px; - height: 22px; -} -.openerp .oe_dashboard_link_change_layout > *, .openerp .oe_dashboard_link_reset > *{ - vertical-align: middle; -} - -.openerp .oe_welcome_message { - display:none; -} -.openerp .oe_initial_welcome_message { - width:30%; - text-align:center; - margin:10px 35% 0 35%; - padding: 5px 10px; - border: 1px solid #ccc; - border-radius: 5px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - background: #eeeded; - box-shadow: 0 1px 0 #fff; - -moz-box-shadow: 0 1px 0 #fff; - -webkit-box-shadow: 0 1px 0 #fff; - color: #8c8c8c; - font-size: 90%; - text-transform: uppercase; - font-weight: bold; - text-shadow: #fff 0 1px 0; -} - -.openerp .oe_initial_welcome_message ul{ - padding:10px 0 0 0; - margin:0; - list-style-type: none; - padding: 7px 0 5px 5px; - background-position: 0 50%; - background-repeat: no-repeat; - cursor: pointer; -} -.openerp .oe_initial_welcome_message ul a, .openerp .initial_welcome_message ul a:hover, .openerp .initial_welcome_message ul a:active, .openerp .initial_welcome_message ul a:focus { - color:#222; - text-decoration:none; -} diff --git a/addons/web_dashboard/static/src/img/layout_1-1-1.png b/addons/web_dashboard/static/src/img/layout_1-1-1.png deleted file mode 100644 index 5eda2823c46c11bcfed2b657847dba77ba568d52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*OR1|(Tp;!}VWV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwcjggO={}+qxO`y;wPZ!6Kid%2* zY~(s*AmVT_{9`i{U##_yn?Qo&=NvIDD-SpBNhty6?(R}4s8IF3m3a4h`ifn}E=Ou+ zdxn_AE;mo9yzqUhqRqk#VUGz4|G!`P7jkar>1B^odpbIv?)!6O*U~AII=^H!vuI9G zaO6?}s$mrZl1!XJOB|Y5ID-@%n^2`><>&kwcjggN>>c$NJuRx)lo-U3d6}R5r z*~`~tAkuKL`_%6V78{Iy+~8Zoqh`a$(#h8rD0JEFkLCSi*XG<==Iw15(;ls{)7izP zI?q$(%A8s3Pd+WY9^F>ZuH>)a*!1Ua@bAdl`}zA0{EBdQaVdXk7VjMzs&?rb8)pzu zTEt_5f+Lp-kYp87@n~e>6k6iY!~&Pvzb|v1!?P84rYq#;PWXTORqCIur=P#insdBA pvbz(cScqRbf7@lPKaL9i<>&kwcjggOsH`@D@5m0ESr;B4q#jUq@ z47r;eBpM!`KlNYPWQWz4&C)TlO!a+9LCzLxN9IoWx@UGbJOBN{)0u{M+TAsF2D`Xa z=X$DKiJ2w-8MOoBrGl{vBI;KYvq3?K)+pMY~IPA6m8Ql*_GK3XWVV z9ut^2g;YEmSvZB3I5e?nP5^2U@c@!gsVDDdKjTd4JC)3N=^ES5{cGcn#qX|}cgdoE s_P+ZrAeHe|H-4m9uRSEs^63l9x%sjacD6Gc13kgu>FVdQ&MBb@00A6wf&c&j diff --git a/addons/web_dashboard/static/src/img/layout_1.png b/addons/web_dashboard/static/src/img/layout_1.png deleted file mode 100644 index 69a0e30854c06cb060533c0c41963584cc0aaf71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*OR1|(Tp;!}VWV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwcjggPr#GC)hU!c$uPZ!6Kid%2* z7;-fmh%`J*U;F)}pp4D7X7>|?EZT1sn!1}*yl=n1zo~A|1XWMt{m;r*>_~SxV&bR5 z^{TzD`HuLm`*tn-BBe~6LQme$yOsWQ4yUY_=1h-hX%&w~7S13A$0iod2|!ZBV}b&! zkc!6yph~#ZpI_5T86y|3d+TuPmcsw-r%(R~pME}738-h~?e<>t+o`5?0xK@FA8ZpB URCT#*40JDpr>mdKI;Vst0C^K*^Z)<= diff --git a/addons/web_dashboard/static/src/img/layout_2-1.png b/addons/web_dashboard/static/src/img/layout_2-1.png deleted file mode 100644 index ed866add47c5e1c2384f18981f0fe13edc9cda0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^AZ*OR1|(Tp;!}VWV{wqX6T`Z5GB1G~wj^(N7l!{J zxM1({$v_d#0*}aI1_o|n5N2eUHAey{$X?><>&kwcjggOAlJ7!C2T*8(r;B4q#jUq@ zHgYu^h&Wta{=>16Zyn#?H$bAbrq9V+wkvt5>a-}!@?t^TJrh);dbfWR)LPfs@j~CW zvuRiH_m&vFFO{bSu4!!JRPmT_{O;EHsm1?RPtWwvb#dXj{!sh7zvfI2Z)p{eMi$N> z1;-{9%?UtK#AAX2s}N8F6DN>Fmdg5T@bA{c&$ecFm(RD|-pRr#wB+86oSMzCVNdy) bZksS4=9HQcS-jp2=ynEAS3j3^P6 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 Tu8hFi00000NkvXXu0mjfq2O{c diff --git a/addons/web_dashboard/static/src/js/dashboard.js b/addons/web_dashboard/static/src/js/dashboard.js deleted file mode 100644 index 92166cc02b1..00000000000 --- a/addons/web_dashboard/static/src/js/dashboard.js +++ /dev/null @@ -1,333 +0,0 @@ -openerp.web_dashboard = function(instance) { -var QWeb = instance.web.qweb, - _t = instance.web._t; - -if (!instance.web_dashboard) { - /** @namespace */ - instance.web_dashboard = {}; -} - -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_dashboard_action_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_dashboard_fold', 'click', this.on_fold_action); - this.$element.delegate('.oe_dashboard_column .ui-icon-closethick', '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($('
    '), { - 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_dashboard_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_dashboard_action:first'), - id = parseInt($action.attr('data-id'), 10); - if ($e.is('.ui-icon-minusthick')) { - $action.data('action_attrs').fold = '1'; - } else { - delete($action.data('action_attrs').fold); - } - $e.toggleClass('ui-icon-minusthick ui-icon-plusthick'); - $action.find('.oe_dashboard_action_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_dashboard_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_dashboard_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.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( - $('
    ') - .append($('
    ').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'); - -/* - * Widgets - * This client action designed to be used as a dashboard widget display - * the html content of a res_widget given as argument - */ -instance.web.client_actions.add( 'board.home.widgets', 'instance.web_dashboard.Widget'); -instance.web_dashboard.Widget = instance.web.View.extend(/** @lends instance.web_dashboard.Widgets# */{ - template: 'HomeWidget', - /** - * Initializes a "HomeWidget" client widget: handles the display of a given - * res.widget objects in an OpenERP view (mainly a dashboard). - * - * @constructs instance.web_dashboard.Widget - * @extends instance.web.View - * - * @param {Object} parent - * @param {Object} options - * @param {Number} options.widget_id - */ - init: function (parent, options) { - this._super(parent); - this.widget_id = options.widget_id; - }, - start: function () { - var ds = new instance.web.DataSet(this, 'res.widget'); - return ds.read_ids([this.widget_id], ['title']).then(this.on_widget_loaded); - }, - on_widget_loaded: function (widgets) { - var widget = widgets[0]; - var url = _.str.sprintf( - '/web_dashboard/widgets/content?session_id=%s&widget_id=%d', - this.session.session_id, widget.id); - this.$element.html(QWeb.render('HomeWidget.content', { - widget: widget, - url: url - })); - } -}); - - -}; diff --git a/addons/web_dashboard/static/src/xml/web_dashboard.xml b/addons/web_dashboard/static/src/xml/web_dashboard.xml deleted file mode 100644 index 68dda7d7f67..00000000000 --- a/addons/web_dashboard/static/src/xml/web_dashboard.xml +++ /dev/null @@ -1,64 +0,0 @@ -