-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
##############################################################################
#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
-# $Id$
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# 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 General Public License for more details.
+# GNU Affero General Public License for more details.
#
-# You should have received a copy of the GNU General Public License
+# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-##############################################################################
-#
-# Copyright (c) 2004 Axelor SPRL. (http://www.axelor.com) All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-##############################################################################
import partner
import installer
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# Copyright (c) 2004 Axelor SPRL. (http://www.axelor.com) All Rights Reserved.
#
# This program is free software: you can redistribute it and/or modify
{
"name" : "Thunderbird Interface",
"version" : "1.0",
- "author" : "Axelor",
- "website" : "http://www.axelor.com/",
- "depends" : ["base"],
+ "author" : "OpenERP SA & Axelor",
+ "website" : "http://www.openerp.com/",
+ "depends" : ["base","mail_gateway"],
"category" : "Generic Modules/Thunderbird interface",
- "description": '''
+ "description": """
This module is required for the thuderbird plug-in to work
properly.
a project, an analytical account, or any other object and attach selected
mail as .eml file in attachment of selected record.
- You can create new case in crm using Create Case button.
- Select a section for which you want to create case.''',
+ """,
"init_xml" : [],
"demo_xml" : [],
"update_xml" : ['thunderbird_installer.xml',
##############################################################################
#
# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
from tools import config
import base64
+import addons
class thunderbird_installer(osv.osv_memory):
_name = 'thunderbird.installer'
def default_get(self, cr, uid, fields, context={}):
data = super(thunderbird_installer, self).default_get(cr, uid, fields, context)
- pdf_file = open(config['addons_path'] + "/thunderbird/doc/Installation Guide to OpenERP Thunderbid Plug-in.pdf", 'r')
+ pdf_file = open(addons.get_module_resource('thunderbird','doc', 'Installation Guide to OpenERP Thunderbid Plug-in.pdf'),'rb')
data['pdf_file'] = base64.encodestring(pdf_file.read())
- file = open(config['addons_path'] + "/thunderbird/plugin/tiny_plugin-2.0.xpi", 'r')
+ file = open(addons.get_module_resource('thunderbird','plugin', 'openerp_plugin.xpi'),'rb')
data['plugin_file'] = base64.encodestring(file.read())
return data
_defaults = {
'thunderbird' : True,
- 'name' : 'OpenERP_plugin-2.0.xpi',
+ 'name' : 'openerp_plugin.xpi',
'pdf_name' : 'Installation Guide to OpenERP Thunderbid Plug-in.pdf',
- 'description' : """ * Save the Thunderbird plugin. \n * Follow the steps to install Thunderbird plugin. \n -> 1.From Menu Bar of Thunderbird, open Tools > Addons. \n -> 2. Click on install button and a browser window appears. \n -> 3. Select the plug-in(.xpi file) and click Ok. \n -> 4. Software installation window appears and within a short time “Install Now” button will be enabled \n -> 5. Click "Install Now". \n -> 6. Restart Thunderbird. \n Follow the steps to configure OpenERP in Thunderbird. \n -> 1. Go to Tools > OpenERP Synchronization. \n -> 2. Check data (configured by default) \n -> 3. Click Test Connection. \n -> 4. A message appears with state of your connection. \n -> 5. If your connection failed, check if your database is open, and check your data. \n -> 6. If you have a good connection, click Ok and start to archive mail in OpenERP. """
- }
+ 'description' : """* Save the Thunderbird plugin.
+* Follows the following step to install Thunderbird plugin.
+ 1. From Menu Bar of Thunderbird, open Tools > Add ons.
+ 2. Click on install button and a browser window appears.
+ 3. Select the plug-in(.xpi file) and click Ok.
+ 4. Software installation window appears and within a short time “Install Now” button will be enabled.
+ 5. Click "Install Now".
+ 6. Restart Thunderbird.
+* Follow the steps to configure OpenERP in Thunderbird.
+ 1. Go to Tools > OpenERP Synchronization.
+ 2. Check data (configured by default).
+ 3. Click "Connect".
+ 4. A message appears with state of your connection.
+ 5. If your connection failed, check if your database is open, and check your data.
+ 6. If you have a good connection, you can start to archive mail in OpenERP. """
+ }
thunderbird_installer()
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
##############################################################################
#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
-# $Id$
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# 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 General Public License for more details.
+# GNU Affero General Public License for more details.
#
-# You should have received a copy of the GNU General Public License
+# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
-##############################################################################
-#
-# Copyright (c) 2004 Axelor SPRL. (http://www.axelor.com) All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-##############################################################################
import partner
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
-# $Id$
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-#
-##############################################################################
-##############################################################################
-#
-# Copyright (c) 2004 Axelor SPRL. (http://www.axelor.com) All Rights Reserved.
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsability of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# garantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-##############################################################################
-
-import time
-import ir
-from osv import osv,fields
-import base64
-import netsvc
-from tools.translate import _
-
-class tinythunderbird_partner(osv.osv):
-
- def _links_get(self, cr, uid, context={}):
- obj = self.pool.get('res.request.link')
- ids = obj.search(cr, uid, [])
- res = obj.read(cr, uid, ids, ['object', 'name'], context)
-
- return [(r['object'], r['name']) for r in res]
-
- _name = "tinythunderbird.partner"
- _description="Thunderbid mails"
- _rec_name="sender"
- _columns = {
- 'sender':fields.char("Sender",size=128,required=True,select=True),
- 'receiver':fields.text("Receiver"),
- "copy_to":fields.text("Copy To"),
- "date":fields.date("Date",select=True),
- "title":fields.char("Subject",size=128,select=True),
- "description":fields.text("Description"),
- "reference":fields.reference("Reference", selection=_links_get, size=128),
- "res_user_id":fields.many2one("res.users","User"),
- "attachments":fields.text("Attached Files",readonly=True),
- }
- _defaults = {
- 'res_user_id':lambda obj,cr,uid,context: uid,
- 'date': lambda *a: time.strftime('%Y-%m-%d')
- }
-
- def thunderbird_mailcreate(self,cr,user,vals):
- dictcreate = dict(vals)
- import email
- header_name = email.Header.decode_header(dictcreate['name'])
- dictcreate['name'] = header_name and header_name[0] and header_name[0][0]
- add_obj=self.pool.get('res.partner.address')
- case_pool=self.pool.get(dictcreate.get('object','crm.case'))
- partner_ids=add_obj.search(cr,user,[('email','=',dictcreate['email_from'])])
- partner=add_obj.read(cr,user,partner_ids,['partner_id'])
- if partner and partner[0] and partner[0]['partner_id']:
- dictcreate.update({'partner_id':partner[0]['partner_id'][0]})
- create_id = case_pool.create(cr, user, dictcreate)
- cases=case_pool.browse(cr,user,[create_id])
- case_pool._history(cr, user, cases, _('Archive'), history=True, email=False)
- return create_id
-
- def thunderbird_createcontact(self,cr,user,vals):
- dictcreate = dict(vals)
- create_id = self.pool.get('res.partner.address').create(cr, user, dictcreate)
- return create_id
-
- def thunderbird_createpartner(self,cr,user,vals):
- dictcreate = dict(vals)
- address_obj = self.pool.get('res.partner')
- search_id = address_obj.search(cr, user,[('name','=',dictcreate['name'])])
- if search_id:
- return 0
- create_id = address_obj.create(cr, user, dictcreate)
- return create_id
-
- def thunderbird_searchobject(self,cr,user,vals):
- dictcreate = dict(vals)
- search_id = self.pool.get('ir.model').search(cr, user,[('model','=',dictcreate['model'])])
- return (search_id and search_id[0]) or 0
-
- def thunderbird_searchcontact(self,cr,user,vals):
- address_obj = self.pool.get('res.partner.address')
- search_id1 = address_obj.search(cr,user,[('name','ilike',vals)])
- search_id2 = address_obj.search(cr,user,[('email','=',vals)])
- if search_id1:
- return address_obj.name_get(cr, user, search_id1)
- elif search_id2:
- return address_obj.name_get(cr, user, search_id2)
- return []
-
- def thunderbird_tempsearch(self,cr,user,vals):
- if vals[0]:
- value = vals[0][0]
- if vals[1]:
- obj = vals[1];
- name_get=[]
- er_val=[]
- for object in obj:
- dyn_object = self.pool.get(object)
- if object == 'res.partner.address':
- search_id1 = dyn_object.search(cr,user,[('name','ilike',value)])
- search_id2 = dyn_object.search(cr,user,[('email','=',value)])
- if search_id1:
- name_get.append(object)
- name_get.append(dyn_object.name_get(cr, user, search_id1))
- elif search_id2:
- name_get.append(object)
- name_get.append(dyn_object.name_get(cr, user, search_id2))
- else:
- try:
- search_id1 = dyn_object.search(cr,user,[('name','ilike',value)])
- if search_id1:
- name_get.append(object)
- name_get.append(dyn_object.name_get(cr, user, search_id1))
- except:
- er_val.append(object)
- continue
- if len(er_val) > 0:
- name_get.append('error')
- name_get.append(er_val)
- return name_get
-
- def thunderbird_attachment(self,cr,user,vals):
- dictcreate = dict(vals)
- datas = [dictcreate['datas']]
- name = [dictcreate['name']]
- f_name = [dictcreate['datas_fname']]
- if(dictcreate['datas'].__contains__(',')):
- name = dictcreate['name'].split(',')
- datas = dictcreate['datas'].split(',')
- f_name = dictcreate['datas_fname'].split(',')
- for i in range(0,datas.__len__()):
- dictcreate['name'] = name[i]
- dictcreate['datas'] = datas[i]
- dictcreate['datas_fname'] = f_name[i]
- create_id = self.pool.get('ir.attachment').create(cr,user,dictcreate)
- return 0
-
- def thunderbird_login(self,cr,user,vals):
- dictcreate = dict(vals)
- service = netsvc.LocalService('common')
- res = service.login(dictcreate['db'],dictcreate['login'],dictcreate['passwd'])
- return res or 0
-
- def read(self, cr, user, ids, fields=None, context={}, load='_classic_read'):
- ret_read = super(tinythunderbird_partner, self).read(cr, user, ids,fields,context,load)
- attach_obj = self.pool.get('ir.attachment')
- for read_data in ret_read:
- attachments = attach_obj.search(cr,user,[('res_model','=',self._name),('res_id','=',read_data['id'])])
- attechments_data = sattach_obj.read(cr,user,attachments,['name'])
- file_names = [a['name'] for a in attechments_data]
- text_atteched = '\n'.join(file_names)
- read_data['attachments'] = text_atteched
- return ret_read
-
- def unlink(self, cr, uid, ids, context={}):
- attach_obj = self.pool.get('ir.attachment')
- attachments = attach_obj.search(cr,uid,[('res_model','=',self._name),('res_id','in',ids)])
- attach_obj.unlink(cr,uid,attachments)
- return super(tinythunderbird_partner, self).unlink(cr, uid, ids,context)
-
- def thunderbird_objectsearch(self,cr,user,vals):
- obj_list= [('crm.claim', 'Claim'), ('crm.lead','Lead'), ('crm.meeting','Metting'), ('crm.opportunity','Opportunity'), ('crm.phonecall','Phonecall'), ('crm.fundraising','Fund raising'), ('crm.helpdesk','Helpdesk')]
- object=[]
- model_obj = self.pool.get('ir.model')
- for obj in obj_list:
- if model_obj.search(cr, user, [('model', '=', obj[0])]):
- object.append(obj)
- return object
-
- def thunderbird_list_search_object(self,cr,user,vals):
- model_obj = self.pool.get('ir.model')
- object=''
- for obj in vals[0][1].split(','):
- if model_obj.search(cr, user, [('model', '=', obj)]):
- object += obj + ","
- else:
- object += "null,"
- return object
-
-tinythunderbird_partner()
+# -*- coding: utf-8 -*-\r
+##############################################################################\r
+#\r
+# OpenERP, Open Source Management Solution\r
+# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).\r
+#\r
+# This program is free software: you can redistribute it and/or modify\r
+# it under the terms of the GNU Affero General Public License as\r
+# published by the Free Software Foundation, either version 3 of the\r
+# License, or (at your option) any later version.\r
+#\r
+# This program is distributed in the hope that it will be useful,\r
+# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+# GNU Affero General Public License for more details.\r
+#\r
+# You should have received a copy of the GNU Affero General Public License\r
+# along with this program. If not, see <http://www.gnu.org/licenses/>.\r
+#\r
+##############################################################################\r
+\r
+import time\r
+import ir\r
+from osv import osv,fields\r
+import base64\r
+import netsvc\r
+from tools.translate import _\r
+import email\r
+import tools\r
+import binascii\r
+class email_server_tools(osv.osv_memory):\r
+ _inherit = "email.server.tools"\r
+ def history_message(self, cr, uid, model, res_id, message):\r
+ #@param message: string of mail which is read from EML File\r
+ attachment_pool = self.pool.get('ir.attachment')\r
+ msg = self.parse_message(message)\r
+ attachments = msg.get('attachments', [])\r
+ att_ids = []\r
+ for attachment in attachments:\r
+ data_attach = {\r
+ 'name': attachment,\r
+ 'datas': binascii.b2a_base64(str(attachments.get(attachment))),\r
+ 'datas_fname': attachment,\r
+ 'description': 'Mail attachment From Thunderbird msg_id: %s' %(msg.get('message_id', '')),\r
+ 'res_model': model,\r
+ 'res_id': res_id,\r
+ }\r
+ att_ids.append(attachment_pool.create(cr, uid, data_attach))\r
+ return self.history(cr, uid, model, res_id, msg, att_ids)\r
+\r
+ def parse_message(self, message):\r
+ #TOCHECK: put this function in mailgateway\r
+ msg_txt = email.message_from_string(message)\r
+ message_id = msg_txt.get('message-id', False)\r
+ msg = {}\r
+ msg_txt = email.message_from_string(message)\r
+ fields = msg_txt.keys()\r
+ msg['id'] = message_id\r
+ msg['message-id'] = message_id\r
+\r
+ if 'Subject' in fields:\r
+ msg['subject'] = self._decode_header(msg_txt.get('Subject'))\r
+\r
+ if 'Content-Type' in fields:\r
+ msg['content-type'] = msg_txt.get('Content-Type')\r
+\r
+ if 'From' in fields:\r
+ msg['from'] = self._decode_header(msg_txt.get('From'))\r
+\r
+ if 'Delivered-To' in fields:\r
+ msg['to'] = self._decode_header(msg_txt.get('Delivered-To'))\r
+\r
+ if 'CC' in fields:\r
+ msg['cc'] = self._decode_header(msg_txt.get('CC'))\r
+\r
+ if 'Reply-to' in fields:\r
+ msg['reply'] = self._decode_header(msg_txt.get('Reply-To'))\r
+\r
+ if 'Date' in fields:\r
+ msg['date'] = self._decode_header(msg_txt.get('Date'))\r
+\r
+ if 'Content-Transfer-Encoding' in fields:\r
+ msg['encoding'] = msg_txt.get('Content-Transfer-Encoding')\r
+\r
+ if 'References' in fields:\r
+ msg['references'] = msg_txt.get('References')\r
+\r
+ if 'In-Reply-To' in fields:\r
+ msg['in-reply-to'] = msg_txt.get('In-Reply-To')\r
+\r
+ if 'X-Priority' in fields:\r
+ msg['priority'] = msg_txt.get('X-Priority', '3 (Normal)').split(' ')[0]\r
+\r
+ if not msg_txt.is_multipart() or 'text/plain' in msg.get('Content-Type', ''):\r
+ encoding = msg_txt.get_content_charset()\r
+ body = msg_txt.get_payload(decode=True)\r
+ msg['body'] = tools.ustr(body, encoding)\r
+\r
+ attachments = {}\r
+ has_plain_text = False\r
+ if msg_txt.is_multipart() or 'multipart/alternative' in msg.get('content-type', ''):\r
+ body = ""\r
+ for part in msg_txt.walk():\r
+ if part.get_content_maintype() == 'multipart':\r
+ continue\r
+\r
+ encoding = part.get_content_charset()\r
+ filename = part.get_filename()\r
+ if part.get_content_maintype()=='text':\r
+ content = part.get_payload(decode=True)\r
+ if filename:\r
+ attachments[filename] = content\r
+ elif not has_plain_text:\r
+ # main content parts should have 'text' maintype\r
+ # and no filename. we ignore the html part if\r
+ # there is already a plaintext part without filename,\r
+ # because presumably these are alternatives.\r
+ content = tools.ustr(content, encoding)\r
+ if part.get_content_subtype() == 'html':\r
+ body = tools.ustr(tools.html2plaintext(content))\r
+ elif part.get_content_subtype() == 'plain':\r
+ body = content\r
+ has_plain_text = True\r
+ elif part.get_content_maintype() in ('application', 'image'):\r
+ if filename :\r
+ attachments[filename] = part.get_payload(decode=True)\r
+ else:\r
+ res = part.get_payload(decode=True)\r
+ body += tools.ustr(res, encoding)\r
+\r
+ msg['body'] = body\r
+ msg['attachments'] = attachments\r
+ return msg\r
+email_server_tools()\r
+\r
+class thunderbird_partner(osv.osv_memory):\r
+ _name = "thunderbird.partner"\r
+ _description="Thunderbid mails"\r
+\r
+ def create_contact(self,cr,user,vals):\r
+ dictcreate = dict(vals)\r
+ if not eval(dictcreate.get('partner_id')):\r
+ dictcreate.update({'partner_id': False})\r
+ create_id = self.pool.get('res.partner.address').create(cr, user, dictcreate)\r
+ return create_id\r
+\r
+ def history_message(self,cr,uid,vals):\r
+ dictcreate = dict(vals)\r
+ server_tools_pool = self.pool.get('email.server.tools')\r
+ res_id = int(dictcreate.get('res_id'))\r
+ model = str(dictcreate.get('model'))\r
+ message = str(dictcreate.get('message'))\r
+ server_tools_pool.history_message(cr,uid,model,res_id,message)\r
+ return True\r
+\r
+ def process_email(self,cr,uid,vals):\r
+ dictcreate = dict(vals)\r
+ model = str(dictcreate.get('model'))\r
+ message = str(dictcreate.get('message'))\r
+ return self.pool.get('email.server.tools').process_email(cr, uid, model, message, attach=True, context=None)\r
+\r
+ def search_contact(self, cr, user, vals):\r
+ address_obj = self.pool.get('res.partner.address')\r
+ partner = address_obj.search(cr, user,[('email','=',vals)])\r
+ res = {}\r
+ res1 = {}\r
+\r
+ if not partner:\r
+ res1 = {\r
+ 'email': '',\r
+ }\r
+ return res1.items()\r
+\r
+ if partner:\r
+ partner=partner[0]\r
+ data = address_obj.read(cr,user, partner)\r
+ res = {\r
+ 'partner_name': data['partner_id'] and data['partner_id'][1] or '',\r
+ 'contactname': data['name'] or '',\r
+ 'street': data['street'] or '',\r
+ 'street2': data['street2'] or '',\r
+ 'zip': data['zip'] or '',\r
+ 'city': data['city'] or '',\r
+ 'country': data['country_id'] and data['country_id'][1] or '',\r
+ 'state': data['state_id'] and data['state_id'][1] or '',\r
+ 'email': data['email'] or '',\r
+ 'phone': data['phone'] or '',\r
+ 'mobile': data['mobile'] or '',\r
+ 'fax': data['fax'] or '',\r
+ 'res_id': str(partner),\r
+ }\r
+ return res.items()\r
+\r
+ def update_contact(self,cr,user,vals):\r
+ dictcreate = dict(vals)\r
+ res_id = dictcreate.get('res_id',False)\r
+ result={}\r
+\r
+ if not (dictcreate.get('partner_id')):\r
+ dictcreate.update({'partner_id': False})\r
+ create_id = self.pool.get('res.partner.address').create(cr, user, dictcreate)\r
+ return create_id\r
+\r
+ if res_id:\r
+ address_obj = self.pool.get('res.partner.address')\r
+ address_data = address_obj.read(cr, user, int(res_id), [])\r
+ result={ 'partner_id': address_data['partner_id'] and address_data['partner_id'][0] or False,\r
+ 'country_id': dictcreate['country_id'] and int(dictcreate['country_id'][0]) or False,\r
+ 'state_id': dictcreate['state_id'] and int(dictcreate['state_id'][0]) or False,\r
+ 'name': dictcreate['name'],\r
+ 'street': dictcreate['street'],\r
+ 'street2': dictcreate['street2'],\r
+ 'zip': dictcreate['zip'],\r
+ 'city': dictcreate['city'],\r
+ 'phone': dictcreate['phone'],\r
+ 'fax': dictcreate['fax'],\r
+ 'mobile': dictcreate['mobile'],\r
+ 'email': dictcreate['email'],\r
+ }\r
+ address_obj.write(cr, user,int(res_id),result )\r
+ return True\r
+\r
+ def create_partner(self,cr,user,vals):\r
+ dictcreate = dict(vals)\r
+ partner_obj = self.pool.get('res.partner')\r
+ search_id = partner_obj.search(cr, user,[('name','=',dictcreate['name'])])\r
+ if search_id:\r
+ return 0\r
+ create_id = partner_obj.create(cr, user, dictcreate)\r
+ return create_id\r
+\r
+ def search_document(self,cr,user,vals):\r
+ dictcreate = dict(vals)\r
+ search_id = self.pool.get('ir.model').search(cr, user,[('model','=',dictcreate['model'])])\r
+ return (search_id and search_id[0]) or 0\r
+\r
+ def search_checkbox(self,cr,user,vals):\r
+ if vals[0]:\r
+ value = vals[0][0]\r
+ if vals[1]:\r
+ obj = vals[1];\r
+ name_get=[]\r
+ er_val=[]\r
+ for object in obj:\r
+ dyn_object = self.pool.get(object)\r
+ if object == 'res.partner.address':\r
+ search_id1 = dyn_object.search(cr,user,[('name','ilike',value)])\r
+ search_id2 = dyn_object.search(cr,user,[('email','=',value)])\r
+ if search_id1:\r
+ name_get.append(object)\r
+ name_get.append(dyn_object.name_get(cr, user, search_id1))\r
+ elif search_id2:\r
+ name_get.append(object)\r
+ name_get.append(dyn_object.name_get(cr, user, search_id2))\r
+ else:\r
+ try:\r
+ search_id1 = dyn_object.search(cr,user,[('name','ilike',value)])\r
+ if search_id1:\r
+ name_get.append(object)\r
+ name_get.append(dyn_object.name_get(cr, user, search_id1))\r
+ except:\r
+ er_val.append(object)\r
+ continue\r
+ if len(er_val) > 0:\r
+ name_get.append('error')\r
+ name_get.append(er_val)\r
+ return name_get\r
+\r
+\r
+\r
+ def list_alldocument(self,cr,user,vals):\r
+ obj_list= [('crm.lead','Lead'),('project.issue','Project Issue'), ('hr.applicant','HR Recruitment')]\r
+ object=[]\r
+ model_obj = self.pool.get('ir.model')\r
+ for obj in obj_list:\r
+ if model_obj.search(cr, user, [('model', '=', obj[0])]):\r
+ object.append(obj)\r
+ return object\r
+\r
+ def list_allcountry(self,cr,user,vals):\r
+ country_list = []\r
+ cr.execute("SELECT id, name from res_country")\r
+ country_list = cr.fetchall()\r
+ return country_list\r
+\r
+ def list_allstate(self,cr,user,vals):\r
+ cr.execute("SELECT id, name from res_country_state")\r
+ state_country_list = cr.fetchall()\r
+ return state_country_list\r
+\r
+ def search_document_attachment(self,cr,user,vals):\r
+ model_obj = self.pool.get('ir.model')\r
+ object=''\r
+ for obj in vals[0][1].split(','):\r
+ if model_obj.search(cr, user, [('model', '=', obj)]):\r
+ object += obj + ","\r
+ else:\r
+ object += "null,"\r
+ return object\r
+\r
+thunderbird_partner()\r
--- /dev/null
+content openerp_plugin jar:chrome/openerp_plugin.jar!/content/
+overlay chrome://messenger/content/messenger.xul chrome://openerp_plugin/content/overlay.xul
+locale openerp_plugin en-US jar:chrome/openerp_plugin.jar!/locale/en-US/
+skin openerp_plugin classic/1.0 jar:chrome/openerp_plugin.jar!/skin/
+#style chrome://global/content/customizeToolbar.xul chrome://openerp_plugin/skin/overlay.css
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/address.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" onload="myPrefObserver.createContactAddress()" height="380" width="800">
+
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+
+<tabpanel id="contact">
+ <groupbox id="contact">
+ <hbox>
+ <label align="right" id="emailid" value="&emailid.value;" width="94" />
+ <textbox id="txtemail" width="268" align="right"/>
+ <spacer width="5"/>
+ <button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
+ <button label="&bsearch.label;" oncommand="searchContactdetail();" image="&imagesearch.value;"/>
+ </hbox>
+ <hbox>
+ <label align="right" id="name" value="&name.value;" width="80" />
+ <textbox id="txtname" align="right" width="270" readonly="true"/>
+ <spacer width="5"/>
+ <button label="New Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);" width="133"/>
+ </hbox>
+ </groupbox>
+</tabpanel>
+
+<tabpanel id="address">
+ <groupbox id="address">
+ <hbox>
+ <caption label="&postaladdress.value;" />
+ <spacer width="300"/>
+ <vbox>
+ <caption label="&communication.value;" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="contactname" value="&contactname.value;" width="80" />
+ <textbox id="txtcontactname" align="right" width="270" />
+ <spacer width="33"/>
+ <vbox>
+ <label align="right" id="office" value="&office.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtoffice" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="street" value="&street.value;" width="97" />
+ <textbox id="txtstreet" width="270"/>
+ <spacer width="33"/>
+ <vbox>
+ <label align="right" id="mobile" value="&mobile.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtmobile"/>
+ </vbox>
+ </hbox>
+ <hbox>
+ <label align="right" id="street2" value="&street2.value;" width="97" />
+ <textbox id="txtstreet2" width="270"/>
+ <spacer width="35"/>
+ <vbox>
+ <label align="right" id="fax" value="&fax.value;" width="48" />
+ </vbox>
+ <vbox>
+ <textbox id="txtfax" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="zip" value="&zip.value;" width="97" />
+ <textbox id="txtzip" />
+ <spacer width="115"/>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="city" value="&city.value;" width="97" />
+ <textbox id="txtcity" />
+ </hbox>
+
+ <hbox>
+ <label align="right" id="countryname" value="&country.value;" width="97" />
+ <menulist id="country" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="statename" value="&state.value;" width="97" />
+ <menulist id="state" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+</groupbox>
+</tabpanel>
+
+<description></description>
+
+<hbox>
+ <spacer width="600"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&ok.label;" image="&imageok.value;" oncommand="UpdateContact();"/>
+
+</hbox>
+
+</window>
--- /dev/null
+
+function config_close()
+{
+ //window.close("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ //ksa
+ window.close("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");
+}
+
+//set the value of the configuration fields
+function config_change_load()
+{
+ var s = getServer();
+ var a =s.split(':');
+ if (String(a)=="" || String(a)=="undefined"){
+ document.getElementById('txtcurl').value = "localhost"
+ document.getElementById('txtcport').value = "8069"
+ }
+ else
+ {
+ len = a[1];
+ var url = "";
+ for (i=0;i<len.length;i++)
+ { if (len[i] == "/")
+ {
+ continue
+ }
+ url += len[i]
+ }
+ if (String(url) == "" || String(url) == "undefined"){
+ document.getElementById('txtcurl').value = "localhost"
+ }
+ else
+ {
+ document.getElementById('txtcurl').value = url
+ }
+
+ if (String(a[2]) == "" || String(a[2]) == "undefined"){
+ document.getElementById('txtcport').value = "8069"
+ setPort("8069");
+ }
+ else
+ {
+ document.getElementById('txtcport').value = a[2]
+ setPort(a[2]);
+ }
+
+ }
+}
+function config_ok()
+{
+ if (document.getElementById('txtcurl').value == '')
+ {
+ alert("You Must Enter Server Name!")
+ return false;
+
+ }
+ if (document.getElementById('txtcport').value == '')
+ {
+ alert("You Must Enter Port!")
+ return false;
+ }
+ setServer("http://"+document.getElementById('txtcurl').value +":" + document.getElementById('txtcport').value);
+ window.close("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ //ksa
+ window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");
+}
+function openConfigChange()
+{
+ //window.open("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ //ksa
+ window.close("chrome://openerp_plugin/content/config.xul", "", "chrome");
+ window.open("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+}
+
+function appendDbList()
+{
+ setServerService('xmlrpc/db');
+ getDbList('DBlist');
+}
+
+//set the database list in the listbox in configuration window
+function setDb()
+{
+ var cmbDbList = document.getElementById('listDBListBox');
+ document.getElementById('DBlist').value = cmbDbList.getItemAtIndex(cmbDbList.selectedIndex).value;
+}
+
+//stores the value of configuration fields in preferences
+function okClick()
+{
+ if (getDBList()=="false")
+ {
+ if (document.getElementById('DBlist_text').value =='')
+ {
+ alert("You Must Enter Database Name");
+ return false;
+ }
+ setDbName(document.getElementById('DBlist_text').value);
+ }
+ else if(document.getElementById('DBlist') != null)
+ {
+ setDbName(document.getElementById('DBlist').value);
+ }
+ setServer(document.getElementById('txturl').value);
+ var s = document.getElementById('txturl').value;
+ var a =s.split(':');
+ setPort(a[a.length-1]);
+ setUsername(document.getElementById('txtusername').value);
+ setPassword(document.getElementById('txtpassword').value);
+ window.close();
+}
+
+//deletes the value of the selected value in the listbox in configuraton menu
+function deleteDocument(){
+ if(document.getElementById("listObjectListBox").selectedItem){
+ var objectlist = getPref().getCharPref("object").split(',');
+ var imagelist = getPref().getCharPref("imagename").split(',');
+ var objlist = getPref().getCharPref("listobject").split(',');
+ if(objectlist.length>0){
+ var objectcharpref = '';
+ var imagecharpref = '';
+ var objcharpref = '';
+ var nodelist = document.getElementById("listObjectListBox").selectedItem.childNodes
+ var childnode = document.getElementById("listObjectListBox").childNodes
+ for(i=2;i<childnode.length;i++){
+ if(childnode[i].hasChildNodes){
+ var secondchild = childnode[i].childNodes;
+ if (secondchild[1].getAttribute("label") != nodelist[1].getAttribute("label")){
+ objcharpref += secondchild[0].getAttribute("label")+',';
+ objectcharpref += secondchild[1].getAttribute("label")+',';
+ imagecharpref += secondchild[2].getAttribute("image")+',';
+ }
+ }
+ }
+ var demo3 = objectcharpref.substring(0,objectcharpref.length-1);
+ var demo4 = imagecharpref.substring(0,imagecharpref.length-1);
+ var demo5 = objcharpref.substring(0,objcharpref.length-1);
+
+ getPref().setCharPref("listobject",demo5);
+ getPref().setCharPref("object",demo3);
+ getPref().setCharPref("imagename",demo4);
+ }
+ document.getElementById("listObjectListBox").removeItemAt(document.getElementById("listObjectListBox").selectedIndex)
+ }
+ else{
+ alert("No Document Selected");
+ }
+}
+
+//function to add the image file for the checkbox
+function addFile(){
+ var nsIFilePicker = Components.interfaces.nsIFilePicker;
+ var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
+ fp.init(this, "Select a File", nsIFilePicker.modeOpen);
+ fp.appendFilters(nsIFilePicker.filterImages);
+ var res = fp.show();
+ if (res == nsIFilePicker.returnOK){
+ var thefile = fp.file;
+ document.getElementById("txtimagename").value = thefile.path
+ }
+}
+
--- /dev/null
+<?xml version="1.0"?>\r
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>\r
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/config.dtd">\r
+\r
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\r
+ xmlns:html="http://www.w3.org/1999/xhtml"\r
+ title="&title.label;" onload="myPrefObserver.register();" unload="myPrefObserver.unregister()" height="410" width="900">\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>\r
+<tabbox>\r
+ <tabs>\r
+ <tab label="Configuration Settings"/>\r
+ <tab label="Document Settings"/>\r
+ <tab label="About"/>\r
+ </tabs>\r
+ <tabpanels>\r
+ <tabpanel id="configtab">\r
+ <vbox >\r
+ <groupbox id="gpConnection" width="770" height="300" align ="center" >\r
+ <caption label="&gpConnection.label;"/>\r
+ <hbox>\r
+ <label align="right" id="url" value="&txturl.label;" width="80" />\r
+ <textbox id="txturl" width="200" readonly="true" />\r
+ <button label="&getdblist.label;" oncommand="openConfigChange();" image="&imagesearch.value;" width="90"/>\r
+ </hbox>\r
+ <hbox align="center" id="database_option">\r
+ </hbox>\r
+ <hbox id="first">\r
+ <label align="right" id="lbldb_list1" control="DBlist" value="&database.label;" width="80"/>
+ <textbox id="DBlist_text" width="300"/>\r
+ </hbox>\r
+\r
+ <hbox >\r
+ <label align="right" control="txtusername" value="&username.label;" width="80"/>\r
+ <textbox id="txtusername" width="300"/>\r
+ </hbox>\r
+ <hbox>\r
+ <label align="right" control="txtpassword" value="&password.label;" width="80"/>\r
+ <textbox id="txtpassword" type="password" width="300"/>\r
+ </hbox>\r
+ <hbox >\r
+ <spacer width="290"/>\r
+ <button align="center" id="btconnection" label="&connection.label;" oncommand="testConnection();" image="&imageok.value;" width="100"/>\r
+ </hbox>\r
+ </groupbox>\r
+ </vbox>\r
+ </tabpanel>\r
+ <tabpanel id="objecttab">\r
+ <groupbox id="gpObject" width="700" >\r
+ <caption label="&listDocument.header;"/>\r
+ <hbox>\r
+ <vbox>\r
+ <hbox>\r
+ <label control="txtobject" value="Title : " />\r
+ <textbox id="txtobj" width="100"/>\r
+ <label control="txtobject" value="&document.label;"/>\r
+ <textbox id="txtobject" width="100"/>\r
+ <label control="txtimagename" value="&image.label;"/>\r
+ <textbox id="txtimagename" width="100" readonly="true" />\r
+ <button id="btaddfile" label="&addfile.label;" oncommand="addFile();" image="&imagemoveleft.value;"/>\r
+ \r
+ <button id="btobjectcreate" label="&documentcreate.label;" oncommand="searchDocument();" image="&imagemovedown.value;"/>\r
+ <button id="btobjectdelete" label="&documentdelete.label;" oncommand="deleteDocument();" image="&imagecancel.value;"/>\r
+ </hbox>\r
+ \r
+ <listbox id="listObjectListBox" flex="1" rows="10">\r
+ <listhead>\r
+ <listheader label="Title"/>\r
+ <listheader label="&listDocumentListBox.header;"/>\r
+ <listheader label="Image"/>\r
+ </listhead>\r
+ <listcols>\r
+ <listcol flex="1"/>\r
+ <listcol flex="2"/>\r
+ <listcol flex="3"/>\r
+ </listcols>\r
+ </listbox>\r
+ </vbox>\r
+ <vbox>\r
+ <description> </description>\r
+ </vbox>\r
+ </hbox>\r
+ </groupbox>\r
+ </tabpanel>\r
+ <tabpanel id="abouttab">\r
+ <groupbox id="gpAbout" width="770" align="center">\r
+ <caption label="&gpAbout.label;"/>\r
+ <image src="chrome://openerp_plugin/skin/developped_by.png" sizemode="stretch" align="center"/>\r
+ <description> </description>\r
+ <description> </description>\r
+ <description>&develop.value;</description>\r
+ <description> </description>\r
+ <description> </description>\r
+ <description>&information.value;</description>\r
+ <description><html:a href="&openerp.value;">&openerp.value;</html:a></description>\r
+ <description><html:a href="&axelor.value;">&axelor.value;</html:a></description>\r
+ <description><html:a href="&tinyerp.value;">&tinyerp.value;</html:a></description>\r
+ <description> </description>\r
+ <description> </description>\r
+ <description>Copyright © 2006-TODAY OpenERP SA All Rights Reserved.</description>\r
+ <description>OpenERP is a trademark of the OpenERP SA Company. OpenERP Web is jointly developed by OpenERP SA and Axelor.</description>\r
+ <description>Licenced under the terms of <html:a href="https://tiny.odoo.com/LICENSE.txt"> OpenERP Public License (OEPL) v1.1 (https://tiny.odoo.com/LICENSE.txt)</html:a> </description>\r
+ </groupbox>\r
+ </tabpanel>\r
+ </tabpanels>\r
+</tabbox>\r
+<hbox align="center">\r
+ <spacer width="800"/>\r
+ <button label="&close.label;" oncommand="close();" image="&imagecancel.value;"/>\r
+</hbox>\r
+</window>\r
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/config_change.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml" onload="config_change_load()"
+ title="Openerp Connection" height="140" width="280">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+ <hbox>
+ <spacer width="70"/>
+ <description>Openerp Connection</description>
+ </hbox>
+<groupbox id="gpData" width="200">
+ <hbox >
+ <label id="lblurl" control="txtcurl" value="&lblurl.label;" width="80"/>
+ <textbox id="txtcurl" width="100" />
+ </hbox>
+ <hbox>
+ <label id="lblport" control="txtcport" value="&lblport.label;" width="80"/>
+ <textbox id="txtcport" width="100" />
+ </hbox>
+
+</groupbox>
+<hbox align="right">
+ <spacer width="50"/>
+ <button label="Cancel" image="&imagecancel.value;" oncommand="config_close();" />
+ <button label="OK" image="&imageok.value;" oncommand="config_ok()"/>
+</hbox>
+
+</window>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/create.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" onload="myPrefObserver.createContact()" height="350" width="780">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<tabpanel id="contact">
+ <groupbox id="contact">
+ <hbox>
+ <label align="right" id="partner" value="&selectpartner.value;" width="97" />
+ <textbox id="txtselectpartner" readonly="true" value="" width="270"/>
+ <button label="&bsearch.label;" oncommand="Select.onMenuItemCommand(event);" image="&imagesearch.value;"/>
+ </hbox>
+ <hbox>
+ <label align="right" id="name" value="&name.value;" width="80" />
+ <textbox id="txtname" align="right" width="270"/>
+ </hbox>
+ </groupbox>
+ </tabpanel>
+
+ <tabpanel id="address">
+ <groupbox id="address">
+ <hbox>
+ <caption label="&postaladdress.value;" />
+ <spacer width="300"/>
+ <vbox>
+ <caption label="&communication.value;" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="street" value="&street.value;" width="97" />
+ <textbox id="txtstreet" width="270"/>
+ <spacer width="33"/>
+ <vbox>
+ <label align="right" id="office" value="&office.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtoffice" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="street2" value="&street2.value;" width="97" />
+ <textbox id="txtstreet2" width="270"/>
+ <spacer width="35"/>
+ <vbox>
+ <label align="right" id="fax" value="&fax.value;" width="48" />
+ </vbox>
+ <vbox>
+ <textbox id="txtfax" />
+ </vbox>
+ </hbox>
+ <hbox>
+ <label align="right" id="zip" value="&zip.value;" width="97" />
+ <textbox id="txtzip" />
+ <spacer width="114"/>
+ <vbox>
+ <label align="right" id="mobile" value="&mobile.value;" width="48" />
+ </vbox>
+ <vbox>
+ <textbox id="txtmobile"/>
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="city" value="&city.value;" width="97"/>
+ <textbox id="txtcity" />
+ <spacer width="112"/>
+ <vbox>
+ <label align="right" id="emailid" value="&email.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtemail" width="260" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="countryname" value="&country.value;" width="97" />
+ <menulist id="country" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="statename" value="&state.value;" width="97" />
+ <menulist id="state" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+</groupbox>
+</tabpanel>
+<description></description>
+<hbox>
+ <spacer width="580"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&ok.label;" image="&imageok.value;" oncommand="createContact();"/>
+</hbox>
+
+</window>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/createpartner.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" height="100" width="325">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<groupbox id="gpData">
+ <hbox>
+ <description>&name.value;</description>
+ <spacer width="50"/>
+ <textbox id="txtname" align="right" />
+ </hbox>
+</groupbox>
+<description></description>
+<hbox>
+ <spacer width="140"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&ok.label;" image="&imageok.value;" oncommand="createPartner();"/>
+</hbox>
+
+</window>
--- /dev/null
+
+var MBstrBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].
+ getService(Components.interfaces.nsIStringBundleService);
+var mboximportbundle = MBstrBundleService.createBundle("chrome://openerp_plugin/locale/mboximport.properties");
+
+
+function saveMsgAsEML(msguri,file,append,uriArray,hdrArray,fileArray) {
+
+ var myEMLlistner = {
+
+ scriptStream : null,
+ emailtext : "",
+
+ QueryInterface : function(iid) {
+ if (iid.equals(Components.interfaces.nsIStreamListener) ||
+ iid.equals(Components.interfaces.nsIMsgHeaderSink) ||
+ iid.equals(Components.interfaces.nsISupports))
+ return this;
+
+ throw Components.results.NS_NOINTERFACE;
+ return 0;
+ },
+
+ onStartRequest : function (aRequest, aContext) {
+ this.scriptStream = Components.classes['@mozilla.org/binaryinputstream;1'].createInstance(Components.interfaces.nsIBinaryInputStream);
+ },
+
+ onStopRequest : function (aRequest, aContext, aStatusCode) {
+ this.scriptStream = null;
+
+ if (append) {
+ if (this.emailtext != "") {
+ var data = this.emailtext + "\n";
+ // Some Imap servers don't add to the message the "From" prologue
+ if (data && ! data.match(/^From/)) {
+ var now = new Date;
+ var prologue = "From - " + now.toString() + "\n";
+ data = prologue+data;
+ }
+ data = IETescapeBeginningFrom(data);
+ }
+ var fileClone = file.clone();
+ IETwriteDataOnDisk(fileClone,data,true,this.sub,null);
+ }
+ else {
+ if (! hdrArray)
+ var sub = getSubjectForHdr(hdr);
+ else {
+ var parts = hdrArray[IETexported].split("§][§^^§");
+ var sub = parts[4];
+ }
+
+ var data = this.emailtext.replace(/^From.+\r?\n]/, "");
+ data = IETescapeBeginningFrom(data);
+ var clone = file.clone();
+ // The name is taken from the subject "corrected"
+ clone.append(sub+".eml");
+ clone.createUnique(0,0644);
+ var time = (hdr.dateInSeconds)*1000;
+ IETwriteDataOnDisk(clone,data,false,null,time);
+ }
+ IETexported = IETexported + 1;
+ IETwritestatus(mboximportbundle.GetStringFromName("exported")+" "+IETexported+" "+mboximportbundle.GetStringFromName("msgs")+" "+IETtotal);
+
+ if (IETexported < IETtotal) {
+ if (fileArray) {
+ var nextUri = uriArray[IETexported];
+ var nextFile = fileArray[IETexported];
+ }
+ else if (! hdrArray) {
+ var nextUri = uriArray[IETexported];
+ var nextFile = file;
+ }
+ else {
+ parts = hdrArray[IETexported].split("§][§^^§");
+ var nextUri = parts[5];
+ var nextFile = file;
+ }
+ saveMsgAsEML(nextUri,nextFile,append,uriArray,hdrArray,fileArray);
+ }
+ else {
+ IETexported = 0;
+ IETtotal = 0;
+ }
+ },
+
+ onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) {
+ this.scriptStream.setInputStream(aInputStream);
+ var chunk = this.scriptStream.readBytes(aCount);
+ this.emailtext += chunk;
+ }
+ };
+ var mms = messenger.messageServiceFromURI(msguri).QueryInterface(Components.interfaces.nsIMsgMessageService);
+ var hdr = mms.messageURIToMsgHdr(msguri);
+ mms.streamMessage(msguri, myEMLlistner, msgWindow, null, false, null);
+}
+
+
+function nametoascii(str) {
+ if (! gPrefBranch.getBoolPref("mboximport.export.filenames_toascii")) {
+ str = str.replace(/[\x00-\x19]/g,"_");
+ return str.replace(/[\/\\:,<>*\?\"\|]/g,"_");
+ }
+ if (str)
+ str = str.replace(/[^a-zA-Z0-9]/g,"_");
+ else
+ str = "Undefinied_or_empty";
+ return str;
+}
+
+
+function IETwriteDataOnDisk(file,data,append,name,time) {
+ var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
+ .createInstance(Components.interfaces.nsIFileOutputStream);
+ if (append) {
+ file.append(name);
+ foStream.init(file, 0x02 | 0x08 | 0x10, 0664, 0); // write, create, append
+ }
+ else
+ foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
+ if (data)
+ foStream.write(data,data.length);
+ foStream.close();
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (time && prefs.getBoolPref("mboximport.export.set_filetime"))
+ file.lastModifiedTime = time;
+}
+
+
+
+function IETescapeBeginningFrom(data) {
+ // Workaround to fix the "From " in beginning line problem in body messages
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=119441 and
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=194382
+ // TB2 has uncorrect beahviour with html messages
+ // This is not very fine, but I didnt' find anything better...
+ var datacorrected = data.replace(/\nFrom /g, "\n From ");
+ return datacorrected;
+}
+
+
+function getPredefinedFolder(type) {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ // type 0 = folder
+ // type 1 = all messages
+ // type 2 = selected messages
+
+ var use_dir = "mboximport.exportMSG.use_dir";
+
+ var dir_path="";
+ if(navigator.userAgent.indexOf('Linux')!= -1){
+ dir_path ="/tmp"
+ }
+ else if(navigator.userAgent.indexOf('Win')!= -1){
+ dir_path ="C:\\"
+ }
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
+ dir_path ="/tmp"
+ }
+ try {
+ var localFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+ localFile.initWithPath(dir_path);
+ return localFile;
+
+ }
+ catch(e) {
+ return null;
+ }
+}
+
+function getSubjectForHdr(hdr) {
+ var emlNameType = gPrefBranch.getIntPref("mboximport.exportEML.filename_format");
+ var mustcorrectname = gPrefBranch.getBoolPref("mboximport.export.filenames_toascii");
+ var subMaxLen = gPrefBranch.getIntPref("mboximport.subject.max_length")-1;
+ if (hdr.mime2DecodedSubject)
+
+ var subj = hdr.mime2DecodedSubject.substring(0, subMaxLen);
+ else
+ var subj =IETnosub;
+ subj = nametoascii(subj);
+ var dateInSec = hdr.dateInSeconds;
+ var msgDate8601string = dateInSecondsTo8601(dateInSec);
+ var key = hdr.messageKey;
+ if (emlNameType == 2) {
+ var pattern = gPrefBranch.getCharPref("mboximport.export.filename_pattern");
+ pattern = pattern.replace("%s",subj);
+ pattern = pattern.replace("%k",key);
+ pattern = pattern.replace("%d", msgDate8601string);
+ pattern = pattern.replace(/-%e/g, "");
+ pattern = pattern.replace(/[\x00-\x19]/g,"_");
+ var fname = pattern;
+ }
+ else {
+
+ var fname = msgDate8601string+"-"+subj+"-"+hdr.messageKey;
+ }
+ setFileName(fname)
+ fname = fname.replace(/[\x00-\x19]/g,"_");
+ if (mustcorrectname)
+ fname = nametoascii(fname);
+ else
+ fname = fname.replace(/[\/\\:,<>*\?\"\|]/g,"_");
+ return fname;
+}
+
+function dateInSecondsTo8601(secs) {
+ var addTime = gPrefBranch.getBoolPref("mboximport.export.filenames_addtime");
+ var msgDate = new Date(secs*1000);
+ var msgDate8601 = msgDate.getFullYear();
+ if (msgDate.getMonth() < 9)
+ var month = "0"+(msgDate.getMonth()+1);
+ else
+ var month = msgDate.getMonth()+1;
+ if (msgDate.getDate() < 10)
+ var day = "0"+ msgDate.getDate();
+ else
+ var day = msgDate.getDate();
+ var msgDate8601string = msgDate8601.toString()+month.toString()+day.toString();
+ if (addTime && gPrefBranch.getIntPref("mboximport.exportEML.filename_format") == 2) {
+ if (msgDate.getHours() < 10)
+ var hours = "0"+msgDate.getHours();
+ else
+ var hours = msgDate.getHours();
+ if (msgDate.getMinutes() < 10)
+ var min = "0"+msgDate.getMinutes();
+ else
+ var min = msgDate.getMinutes();
+ msgDate8601string += "-"+ hours.toString() + min.toString();
+ }
+ return msgDate8601string;
+}
+
+function IETwritestatus(text) {
+ document.getElementById("statusText").setAttribute("label", text);
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+ var delay = prefs.getIntPref("mboximport.delay.clean_statusbar");
+ if (delay > 0)
+ window.setTimeout(function(){IETdeletestatus(text);}, delay);
+}
+
+function IETdeletestatus(text) {
+ if (document.getElementById("statusText").getAttribute("label") == text)
+ document.getElementById("statusText").setAttribute("label", "");
+}
+
+
--- /dev/null
+//gives the preference branch instance
+var preferenceBranch = getPref();
+
+//returns the selected checkbox for searching
+function getnamesearch()
+{
+ var checkboxlist = [];
+ var j=0;
+ var objectlist = preferenceBranch.getCharPref("object").split(',');
+ if (objectlist[0]!=''){
+ for (var i=1;i<=objectlist.length;i++)
+ {
+ if(document.getElementById('cbx'+i) && document.getElementById('cbx'+i).checked == true)
+ {
+ checkboxlist[j] = objectlist[i-1] //document.getElementById('cbx'+i).label;
+ j++;
+ }
+ }
+ }
+ return checkboxlist;
+}
+//function to set the text value for the selected partner for contact creation
+function selectPartner(){
+ if(document.getElementById('listPartnerBox').selectedItem){
+ var listselectedItem = document.getElementById('listPartnerBox').selectedItem;
+ var value = listselectedItem.firstChild.getAttribute('label');
+ setPartnerId(listselectedItem.value);
+ document.getElementById('txtselectpartner').setAttribute('value',value);
+ window.opener.document.getElementById('txtselectpartner').setAttribute('value',value);
+ }
+ else{
+ window.opener.document.getElementById('txtselectpartner').setAttribute('value','');
+ }
+}
+
+//function for the intialization procedure //used while loading and unloading of the window
+var myPrefObserver =
+{
+ //set the intial value of the email for the text field in plugin window and also loads the listbox of objects with image
+ loaddata: function()
+ {
+ setTimeout("listSearchDocumentAttachment()", 0)
+ },
+
+ //set the initial value of name and email field of create contact window
+ createContact: function()
+ {
+ document.getElementById("txtname").value = getSenderName();
+ document.getElementById("txtemail").value = getSenderEmail();
+ document.getElementById("country").value = getAllCountry();
+ document.getElementById("state").value = getAllState();
+ setPartnerId(0);
+ },
+
+ //sets the value of email information in preferences and adds observer for the window
+ register: function()
+ {
+ appendDbList()
+ preferenceBranch.addObserver("", myPrefObserver, false);
+ document.getElementById("txturl").value = getServer();
+ var s = document.getElementById('txturl').value;
+ var a =s.split(':');
+ setPort(a[a.length-1]);
+ document.getElementById("txtusername").value = getUsername();
+ document.getElementById("txtpassword").value = getPassword();
+ document.getElementById("DBlist_text").value = getDbName();
+ if(getPref().getCharPref("object") != ''){
+ var objectlist = getPref().getCharPref("object").split(',');
+ var imagelist = getPref().getCharPref("imagename").split(',');
+ var obj = getPref().getCharPref("listobject").split(',');
+ if(objectlist.length>0){
+ for(i=0;i<objectlist.length;i++){
+ var listItem = document.createElement("listitem");
+ var listcell1 = document.createElement("listcell");
+ var listcell2 = document.createElement("listcell");
+ var listcell3 = document.createElement("listcell");
+ listcell1.setAttribute("label",obj[i]);
+ listcell2.setAttribute("label",objectlist[i]);
+ listcell3.setAttribute("image",imagelist[i]);
+ listcell3.setAttribute("class","listcell-iconic")
+ listcell3.setAttribute("width",16)
+ listcell3.setAttribute("height",16)
+ listItem.appendChild(listcell1);
+ listItem.appendChild(listcell2);
+ listItem.appendChild(listcell3);
+ document.getElementById("listObjectListBox").appendChild(listItem);
+
+ }
+ }
+ }
+ },
+
+ createContactAddress: function()
+ {
+ document.getElementById("txtname").value = getPartnerName();
+ document.getElementById("txtcontactname").value = getSenderName();
+ document.getElementById("txtstreet").value = getStreet();
+ document.getElementById("txtstreet2").value = getStreet2();
+ document.getElementById("txtzip").value = getZipCode();
+ document.getElementById("txtcity").value = getCity();
+ document.getElementById("txtoffice").value = getOfficenumber();
+ document.getElementById("txtfax").value = getFax();
+ document.getElementById("txtmobile").value = getMobilenumber();
+ document.getElementById("txtemail").value = getSenderEmail();
+ document.getElementById("country").value =getAllCountry();
+ document.getElementById("state").value = getAllState();
+ },
+
+ //unregistering the window observer
+ unregister: function()
+ {
+ if(!preferenceBranch) return;
+ preferenceBranch.removeObserver("", myPrefObserver);
+ },
+
+ observe: function(aSubject, aTopic, aData)
+ {
+ if(aTopic != "nsPref:changed") return;
+ // aSubject is the nsIPrefBranch we're observing (after appropriate QI)
+ // aData is the name of the pref that's been changed (relative to aSubject)
+ switch (aData) {
+ case "serverport":
+ break;
+ case "serverurl":
+ break;
+ case "serverdbname":
+ break;
+ }
+ },
+}
+
+function runMoreCode()
+{
+}
--- /dev/null
+//global array creation and declaration\r
+var contentType = new Array();\r
+var uri = new Array();\r
+var url = new Array();\r
+var name = new Array();\r
+var test = new Array();\r
+\r
+var MBstrBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].\r
+ getService(Components.interfaces.nsIStringBundleService);\r
+var mboximportbundle = MBstrBundleService.createBundle("chrome://mboximport/locale/mboximport.properties"); \r
+//function to get the required details of the selected email\r
+\r
+function searchmail()\r
+{ \r
+ setTimeout("createConnection()",5000)\r
+ if (getconnect_server() == "false")\r
+ {\r
+ alert("Please Login To The Database First !")\r
+ return false;\r
+ }\r
+ setTimeout("module_install()", 10000)\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);\r
+ var version_obj = prefService.getBranch("extensions.");\r
+ version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);\r
+ version = version_obj.getCharPref("lastAppVersion");\r
+ version = parseInt(version[0])\r
+ \r
+ file = getPredefinedFolder(2);\r
+ \r
+ if (version > 2)\r
+ {\r
+ var emlsArray = gFolderDisplay.selectedMessages;\r
+ }\r
+ else\r
+ {\r
+ var emlsArray = GetSelectedMessages();\r
+ }\r
+\r
+ IETtotal = emlsArray.length;\r
+ IETexported = 0;\r
+ var msguri = emlsArray[0];\r
+\r
+ if(GetNumSelectedMessages() < 1 || GetNumSelectedMessages() > 1){\r
+ alert("You must select only one mail to archive");\r
+ return false\r
+ }\r
+\r
+ //gives the selected email uri\r
+ var messageUri= gDBView.URIForFirstSelectedMessage;\r
+\r
+ var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
+\r
+ //gives the selected email object\r
+ var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
+\r
+\r
+ if (version > 2)\r
+ {\r
+ m_uri = message.folder.getUriForMsg(message);\r
+ saveMsgAsEML(m_uri,file,false,emlsArray,null);\r
+ }\r
+ else\r
+ {\r
+ saveMsgAsEML(msguri,file,false,emlsArray,null);\r
+ }\r
+\r
+ //gives the received email date\r
+ var stdate = new Date(message.date / 1000);\r
+\r
+ //functionality to split the author name and email\r
+ if(message.author.charAt(0) == '"'){\r
+ sendername = message.author.split('"')[1].split('"')[0];\r
+ }\r
+ else if(message.author.indexOf('<')!=-1){\r
+ sendername = message.author.split('<')[0];\r
+ }\r
+ else{\r
+ sendername = message.author;\r
+ }\r
+ if(message.author.indexOf('<')!=-1){\r
+ senderemail = message.author.split('<')[1].split('>')[0];
+ }\r
+ else{\r
+ senderemail = message.author
+ }\r
+\r
+ //gives the receiver email address\r
+ receiveremail = message.mime2DecodedRecipients;\r
+\r
+ //parsing the received date in the particular format\r
+ receivedDate = stdate.getFullYear()+'/'+(stdate.getMonth()+1)+'/'+stdate.getDate();\r
+\r
+ //gives the selected email subject\r
+ subject = message.subject;\r
+\r
+ //gives the selected email cclist\r
+ cclist = message.ccList;\r
+\r
+ //gives the selected email message body in text format\r
+ if (version > 2)\r
+ {\r
+ var listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"].createInstance(Components.interfaces.nsISyncStreamListener); \r
+ var uri = message.folder.getUriForMsg(message);\r
+ messenger.messageServiceFromURI(uri) \r
+ .streamMessage(uri, listener, null, null, false, ""); \r
+ var folder = message.folder; \r
+ messagebody = folder.getMsgTextFromStream(listener.inputStream,message.Charset,65536,32768,false,true,{})\r
+ }\r
+ else\r
+ {\r
+ messagebody = getMessageBrowser().docShell.contentViewer.DOMDocument.body.textContent;\r
+ }\r
+ //gives the selected email message body in html format\r
+ msghtmlbody = ""// getMessageBrowser().docShell.contentViewer.DOMDocument.body.innerHTML;\r
+\r
+ //set the initial information for the selected email\r
+ setSenderEmail(senderemail);\r
+ setSenderName(sendername);\r
+ setReceiverEmail(receiveremail);\r
+ setSubject(subject);\r
+ setReceivedDate(receivedDate);\r
+ setCCList(cclist);\r
+ setMessageBody(messagebody);\r
+ getPref().setCharPref('displayName','');\r
+ getPref().setCharPref('attachmentdata','');\r
+ name = [];\r
+ test = [];\r
+ getPref().setCharPref('attachmentlength',currentAttachments.length);\r
+ //retrieving the information for the selected email's attachment\r
+ if(currentAttachments.length > 0){\r
+ for(i=0;i<currentAttachments.length;i++){\r
+ contentType[i] = currentAttachments[i].contentType;\r
+ uri = currentAttachments[i].uri;\r
+ url[i] = currentAttachments[i].url;\r
+ name[i] = currentAttachments[i].displayName;\r
+ var obj = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
+ if(navigator.userAgent.indexOf('Linux')!= -1){\r
+ obj.initWithPath("/tmp/");\r
+ }\r
+ else if(navigator.userAgent.indexOf('Win')!= -1){\r
+ obj.initWithPath("c:\\");\r
+ }\r
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){ \r
+ obj.initWithPath("/tmp/");\r
+ } \r
+ else{\r
+ alert("Not Compatible for this Operating System");\r
+ false();\r
+ }\r
+ //saving the attachment files in system's temp folder\r
+ test[i] = messenger.saveAttachmentToFolder(contentType[i],url[i],name[i],uri,obj);\r
+ }\r
+ //function to read the attachment file contents\r
+ att =getAttachValue()\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
+ createInstance(name,test)\r
+\r
+ }\r
+ else\r
+ {\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
+ }\r
+}\r
+
+function open_contact()\r
+{ \r
+ setTimeout("createConnection()",5000)\r
+ if (getconnect_server() == "false")\r
+ {\r
+ alert("Please Login To The Database First !")\r
+ return false;\r
+ }\r
+ setTimeout("module_install()", 10000)\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ if(GetNumSelectedMessages() < 1 || GetNumSelectedMessages() > 1){\r
+ alert("You must select only one mail For Open Contact Detail");\r
+ return false\r
+ }\r
+\r
+ //gives the selected email uri\r
+ var messageUri= gDBView.URIForFirstSelectedMessage;\r
+\r
+ var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
+\r
+ //gives the selected email object \r
+ var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
+\r
+ //functionality to split the author name and email\r
+ if(message.author.charAt(0) == '"'){\r
+ sendername = message.author.split('"')[1].split('"')[0];\r
+ }\r
+ else if(message.author.indexOf('<')!=-1){\r
+ sendername = message.author.split('<')[0];
+ }\r
+ else{\r
+ sendername = message.author;
+ }\r
+ if(message.author.indexOf('<')!=-1){\r
+ senderemail = message.author.split('<')[1].split('>')[0];
+ }\r
+ else{\r
+ senderemail = message.author
+ }\r
+\r
+ //set the initial information for the selected email
+ setSenderEmail(senderemail);
+ setSenderName(sendername);
+ setPartnerName("");
+ setStreet("");
+ setStreet2("");
+ setZipCode("");
+ setCity("");
+ setOfficenumber("");
+ setFax("");
+ setMobilenumber("");
+
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ window.open("chrome://openerp_plugin/content/address.xul", "", "chrome, resizable=yes");\r
+\r
+}\r
+\r
+//function to open the configuration window\r
+var Config = {\r
+ onLoad: function() {\r
+ // initialization code\r
+ this.initialized = true;\r
+ },\r
+\r
+ onMenuItemCommand: function() {\r
+ window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { Config.onLoad(e); }, false);\r
+\r
+//function to open the plugin window for searching the records for a particular object\r
+var Plugin = {\r
+ onLoad: function() {\r
+ this.initialized = true;\r
+ },\r
+\r
+ onMenuItemCommand: function() {\r
+ window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { Plugin.onLoad(e); }, false);\r
+\r
+//function to open the window for creating a new partner contact\r
+var Create = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){\r
+ window.open("chrome://openerp_plugin/content/create.xul", "", "chrome");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { Create.onLoad(e); }, false);\r
+
+var Address = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){
+ open_contact();
+ searchContact();\r
+ }\r
+};\r
+
+\r
+//function to open the window for selecting the partner for a new contact creation\r
+var Select = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){\r
+ window.open("chrome://openerp_plugin/content/selectpartner.xul", "", "chrome");\r
+ }\r
+};\r
+\r
+var CreatePartner = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){\r
+ window.open("chrome://openerp_plugin/content/createpartner.xul", "", "chrome");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { CreatePartner.onLoad(e); }, false);\r
+\r
--- /dev/null
+<?xml version="1.0"?>\r
+<?xml-stylesheet href="chrome://openerp_plugin/skin/overlay.css" type="text/css"?>\r
+<!DOCTYPE overlay SYSTEM "chrome://openerp_plugin/locale/overlay.dtd">\r
+<overlay id="tiny-overlay"\r
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\r
+ xmlns:html="http://www.w3.org/1999/xhtml">\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/exportTools.js"></script>\r
+\r
+<menupopup id="taskPopup">\r
+ <menuitem id="tiny-plugin" label="&tinyplugin;"\r
+ oncommand="Config.onMenuItemCommand(event);"\r
+ image="&menuicon.value;"\r
+ class="menuitem-iconic"\r
+ tooltiptext="&pluginconfig.value;"/>\r
+</menupopup>\r
+\r
+<menupopup id="taskPopup">\r
+ <menuitem id="tiny-plugin1" label="&tinypluginconfig;"\r
+ oncommand="searchmail();"\r
+ image="&menuicon.value;"\r
+ class="menuitem-iconic"\r
+ tooltiptext="&pluginconfigvalue.value;"/>\r
+</menupopup>\r
+\r
+<popup id="threadPaneContext">\r
+ <menuitem id="threadPaneContext-saveAsMultiple"\r
+ insertbefore="threadPaneContext-print"\r
+ class="menuitem-iconic"\r
+ image="&menuicon.value;"\r
+ label="Archive To OpenERP"\r
+ accesskey="T"\r
+ oncommand="searchmail();"/>\r
+</popup>\r
+\r
+<toolbarpalette id="MailToolbarPalette">\r
+ <toolbarbutton id="GA-button"\r
+ class="toolbarbutton-1"\r
+ image="&menuicon.value;"\r
+ label= "Archive To OpenERP"\r
+ oncommand="searchmail();" />\r
+</toolbarpalette> \r
+\r
+<toolbarpalette id="MailToolbarPalette">\r
+ <toolbarbutton id="GA-button1"\r
+ class="toolbarbutton-1"\r
+ image="&partnericon.value;"\r
+ label= "Open Contact"\r
+ oncommand="Address.onMenuItemCommand(event);" />\r
+</toolbarpalette> \r
+\r
+<toolbarpalette id="MailToolbarPalette">\r
+ <toolbarbutton id="GA-button2"\r
+ class="toolbarbutton-1"\r
+ image="&imagearchive.value;"\r
+ label= "Open Document"\r
+ oncommand="archivemail();" />\r
+</toolbarpalette> \r
+\r
+\r
+</overlay>\r
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<?xml-stylesheet href="chrome://openerp_plugin/skin/line.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/plugin.dtd">
+<window id="pluginwindows" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" onload="myPrefObserver.loaddata()" height="480" width="1000">
+
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/exportTools.js"></script>
+<description></description>
+<hbox id="root">
+ <vbox width="400">
+ <groupbox height="30" id="existsobjectgroup" width="400">
+ <caption label="&gptinyobj.label;" />
+ <hbox>
+ <label id="lblsearch" control="txtvalueobj" value="&search.label;"/>
+ <textbox id="txtvalueobj" size="30"/>
+ <button label="&bsearch.label;" oncommand="searchCheckbox()" image="&imagesearch.value;" accesskey="s"/>
+ </hbox>
+ <vbox align="left" id="checkbox-dynamic">
+ </vbox>
+ <hbox align="center">
+ <image src='chrome://tiny_plugin/skin/perform.gif'/>
+ <checkbox id="cbxselectall" oncommand="selectAllCheckbox();" label="&cbxselectall.label;" checked="false"/>
+ <spacer width="10"/>
+
+ </hbox>
+ <label id="lblex" value=" "/>
+ <hbox>
+ <description>Documents</description>
+ </hbox>
+ <listbox height="250" id="listSearchBox" seltype="multiple">
+ <listhead >
+ <listheader label="&listSearchBox.header;"/>
+ </listhead>
+ <listcols>
+ <listcol flex="1"/>
+ </listcols>
+ </listbox>
+ <hbox>
+ <spacer width="360"/>
+ <button label="&attach.label;" image="&imagearchive.value;" oncommand="attachmentWidnowOpen('upload');"/>
+ </hbox>
+ </groupbox>
+
+ </vbox>
+ <vbox>
+ <groupbox id="newobjectgroup" align="center" width="170" height="375">
+ <caption label="&newobject.label;" />
+ <hbox>
+ <label id="lblex" value=" "/>
+ <label id="lblex3" control="section" value="&object.label;"/>
+ <menulist id="section" width="150">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ <vbox>
+ <button width="50" label="&archive.label;" accesskey="c" image="&imagearchive.value;" oncommand="attachmentWidnowOpen('create');"/>
+ </vbox>
+ </hbox>
+
+ <label id="lblsection" value=" "/>
+ <separator class="groove-thin" orient="horizontal" width="180"/>
+
+ <tabpanels>\r
+ <tabpanel id="contact">
+ <hbox>
+ <label id="lblsection" control="section" value="&partner.label;"/>
+ <vbox>
+ <button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
+ </vbox>
+ </hbox>
+ </tabpanel>
+ </tabpanels>
+ </groupbox>
+ <label id="lblex" value=" "/>
+ <label id="lblex" value=" "/>
+ <hbox align="right">
+ <spacer width="360"/>
+ <button label="&close.label;" accesskey="l" image="&imagecancel.value;" oncommand="win_close();"/>
+ </hbox>
+
+
+ </vbox>
+</hbox>
+
+</window>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/selectpartner.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml" onload="getPartnerList()"
+ title="&title.label;" height="500" width="375">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<groupbox id="gpPartner">
+ <hbox>
+ <textbox id="txtselectpartner"/>
+ <spacer width="25"/>
+ <button label="&bsearch.label;" image="&imagesearch.value;" oncommand="getPartnerList();"/>
+ </hbox>
+</groupbox>
+<listbox id="listPartnerBox" flex="1" rows="5">
+ <listhead>
+ <listheader label="&listPartnerName.header;"/>
+ </listhead>
+ <listcols>
+ <listcol flex="1"/>
+ </listcols>
+</listbox>
+<description></description>
+<hbox>
+ <button label="Create Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);"/>
+ <spacer width="45"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&select.label;" image="&imageok.value;" oncommand="selectPartner();close()"/>
+</hbox>
+
+</window>
--- /dev/null
+
+//function to check all the checkbox
+function selectAllCheckbox()
+{
+ var objectlist = preferenceBranch.getCharPref("object").split(',');
+ if(objectlist.length == 1 && objectlist[0]==''){
+ return false;
+ }
+ for (var i=1;i<=objectlist.length;i++)
+ {
+ var checkboxobj = document.getElementById('cbx'+i);
+ if (!checkboxobj)
+ continue
+ if(document.getElementById('cbxselectall').checked == true)
+ checkboxobj.checked = true;
+ else
+ checkboxobj.checked = false;
+ }
+}
--- /dev/null
+/**
+* Global instance stored here
+*/
+
+var xmlRpcClient;
+
+//Service name on server like /common,/db etc...
+var strServerService;
+
+//temporary variables
+var strobject;
+
+//Array
+var arrDbList = new Array();
+var arrPartnerList = new Array();
+var arrFinalList = new Array();
+
+
+var contentType = new Array();
+var uri = new Array();
+var url = new Array();
+var name = new Array();
+var attach_eml ="no";
+var popup_display = "yes"
+var rpc= {
+ servers: {},
+ addserver: function(name,ip,port,path) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ this.servers[name]= {
+ ip: ip,
+ port: port,
+ path: path,
+ avaible: true,
+ sock: Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient)};
+ },
+ getany: function(rpcval,n) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var t = ['PRUint8','PRUint16','PRInt16','PRInt32','PRBool','Char','CString','Float','Double','PRTime','InputStream','Array','Dictionary'];
+ for (var i=0; i<t.length; i++)
+ try { return [t[i],this.Iget(rpcval,Components.interfaces[((i==10 || i==12)? 'nsI': 'nsISupports')+t[i]],n)]; } catch(e) {}
+ return [false,'error getany','Undefined type'];
+ },
+ onfault: function(t) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ return (t.constructor==Array && t.length==3 && !t[0] && (t[1].substr(0,5)=='error' || t[1].substr(0,5)=='fault'))?
+ true : false;
+ },
+ getall: function(rpcval,n) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var t = this.getany(rpcval,n);
+ if (this.onfault(t)) return t;
+ if (t[0]=='PRBool') return (t[1]=='true');
+ if (t[0]=='PRInt32') return parseInt(t[1]+'');
+ if (t[0]=='PRTime') {
+ dte= new Date("January 1, 1970, 00:00:00");
+ dte.setUTCMilliseconds(t[1]+'');
+ return dte; }
+ if (t[0]=='Double' || t[0]=='Float') return parseFloat(t[1]+'');
+ if (t[0]=='Char' || t[0]=='CString') return (t[1]+'').replace(/¬/g,'€');
+ if (t[0]=='Array') {
+ var a=[];
+ for (var i=0; i<t[1].Count(); i++) a[i]= this.getall(t[1],i);
+ } else if (t[0]=='Dictionary') {
+ var a={};
+ var keys = t[1].getKeys({});
+ for (var k = 0; k < keys.length; k++)
+ a[keys[k]]= this.getall(t[1],keys[k]);
+ } else return t[1];
+ return a;
+ },
+ Iget: function(rpcval,itype,n) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (n == undefined) return rpcval.QueryInterface(itype);
+ else if (n==parseInt(n)) return rpcval.QueryElementAt(n,itype);
+ else return rpcval.getValue(n).QueryInterface(itype);
+ },
+ checktype: function(val) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (val != undefined) {
+ switch (val.constructor) {
+ case Number: return (val==parseInt(val))? 1:4;
+ case Boolean: return 2;
+ case String: return 3;
+ case Date: return 5;
+ case Object: return 7;
+ case Array: return 6;
+
+ }
+ }
+ return 7;
+
+ },
+ set: function(rpcobj,param) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (param==undefined) return [false,'error set','Undefined parameter'];
+ var itype= this.checktype(param);
+ if (this.onfault(itype)) return itype;
+ var p = this.servers[rpcobj].sock.createType(itype,{});
+ if (itype==6) {
+ if (param.length>0)
+ for (var i=0; i<param.length; i++) p.AppendElement( this.set(rpcobj,param[i]) );
+ } else if (itype==7) {
+ for (var i in param) p.setValue( i, this.set(rpcobj,param[i]) );
+ } else if (itype==4) {
+ p.data=(''+param).replace(',','.');
+ } else p.data=param;
+ return p;
+ },
+ ask: function(rpcobj,method,params,func_out) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var a=this.disableNset(rpcobj) ;
+ if (this.onfault(a)) return a;
+ var handler = {
+ onResult: function(client, async, result) {
+ rpc.servers[rpcobj].avaible= true;
+ func_out(rpc.getall(result)); },
+ onFault: function (client, async, faute) {alert("in ask infault"+result)
+ rpc.servers[rpcobj].avaible= true; func_out([false,'fault',faute]); },
+ onError: function (client, async, status, msg) {
+ rpc.servers[rpcobj].avaible= true;
+ if (status=='2147500037') {
+ status= "no network or no server";
+ msg= "1. Check your network connection.";
+ msg+= "\n2. Check your server connection parameters:";
+ msg+= "\n\t"+rpc.servers[rpcobj].ip+":"+rpc.servers[rpcobj].port+"=>"+params[0];
+ msg+= "\n3. Your server may not be launched or connected to the network.";
+ }
+ func_out([false,'error '+status,msg]);
+ } };
+ var p = [];
+ for (var i=0; i<params.length; i++)
+ p[i]= this.set(rpcobj,params[i]);
+ try { this.servers[rpcobj].sock.asyncCall(handler, null, method, p, p.length);
+ } catch(e) {
+ this.servers[rpcobj].avaible= true;
+ this.servers[rpcobj].sock= Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient) ;
+ func_out([false,'error catch',e]); }
+ return true;
+ },
+ disableNset: function(rpcobj) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (this.servers[rpcobj]) {
+ this.servers[rpcobj].avaible= false;//alert('http://'+this.servers[rpcobj].ip+':'+this.servers[rpcobj].port+this.servers[rpcobj].path);
+ server_path=this.servers[rpcobj].ip+':'+this.servers[rpcobj].port+this.servers[rpcobj].path
+ this.servers[rpcobj].sock.init(server_path);
+
+ return true; }
+ return [false,'error disableNset','Server vars not set'];
+ }
+}
+function handler_function( result ) {
+ if ( rpc.onfault( result ) ) { alert( result[0] + "\n" + result[1] ); return; }
+ else{
+ alert("got result>>>>"+result)
+ }
+}
+
+//Sets the preference service
+function getPref(){
+ var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
+ var branchobj = prefService.getBranch("extensions.tiny.");
+ branchobj.QueryInterface(Components.interfaces.nsIPrefBranch2);
+ return branchobj
+}
+
+function setFileName(fname){
+ getPref().setCharPref('fname',fname);
+}
+
+//set attachment file save or not
+function setAttachment(argAttac){
+ getPref().setCharPref('attachment',argAttac);
+}
+
+//set preference value for server url
+function setServer(argServer){
+ getPref().setCharPref('serverurl',argServer);
+}
+
+//set preference value for server port
+function setPort(argPort){
+ getPref().setCharPref('serverport',argPort)
+}
+
+//set preference value of database name for data searching and selection
+function setDbName(argDbName){
+ getPref().setCharPref('serverdbname',argDbName);
+}
+
+//set preference value of username for login
+function setUsername(argUsername){
+ getPref().setCharPref('username',argUsername);
+}
+
+//set preference value of password for login
+function setPassword(argPassword){
+ getPref().setCharPref('password',argPassword);
+}
+
+//set preference value for storing partner id
+function setPartnerId(argPartnerId){
+ getPref().setCharPref('partnerid',argPartnerId)
+}
+
+//set preference value for Resource Id
+function setResourceId(argResourceId){
+ getPref().setCharPref('res_id',argResourceId)
+}
+//set server service
+function setServerService(argServerService){
+ strServerService = argServerService;
+}
+
+//set preference value for sender email
+function setSenderEmail(argSenderEmail){
+ getPref().setCharPref('senderemail',argSenderEmail)
+}
+
+//set preference value for receiver email
+function setReceiverEmail(argReceiverEmail){
+ getPref().setCharPref('receiveremail',argReceiverEmail)
+}
+
+//set preference value for sender name
+function setSenderName(argSenderName){
+ getPref().setCharPref('sendername',argSenderName)
+}
+
+//set preference value for email subject
+function setSubject(argSubject){
+ getPref().setCharPref('subject',argSubject)
+}
+
+//set preference value for email received date
+function setReceivedDate(argReceivedDate){
+ getPref().setCharPref('receiveddate',argReceivedDate)
+}
+
+//set preference value for storing contact id which is used while storing mail contents after creating a new partner contact
+function setContactId(argContactId){
+ getPref().setCharPref('contactid',argContactId)
+}
+
+//set preference value for storing attachment option in config
+function setAttachValue(argAttachValue){
+ getPref().setCharPref('attachvalue',argAttachValue)
+}
+
+//set preference value for email cclist
+function setCCList(argCCList){
+ getPref().setCharPref('cclist',argCCList)
+}
+
+//set preference value for email message body
+function setMessageBody(argMessageBody){
+ getPref().setCharPref('messagebody',argMessageBody)
+}
+
+//set preference value for Partner Name
+function setPartnerName(argPartnerName){
+ getPref().setCharPref('partnername',argPartnerName)
+}
+
+//set preference value for Contact Name
+function setContactName(argContactName){
+ getPref().setCharPref('contactname',argContactName)
+}
+
+//set preference value for street
+function setStreet(argStreet){
+ getPref().setCharPref('street',argStreet)
+}
+
+//set preference value for street2
+function setStreet2(argStreet2){
+ getPref().setCharPref('street2',argStreet2)
+}
+
+//set preference value for zipcode
+function setZipCode(argZipcode){
+ getPref().setCharPref('zipcode',argZipcode)
+}
+
+//set preference value for Office Number
+function setOfficenumber(argOfficenumber){
+ getPref().setCharPref('officeno',argOfficenumber)
+}
+
+//set preference value for Phone Number
+function setMobilenumber(argMobilenumber){
+ getPref().setCharPref('phoneno',argMobilenumber)
+}
+
+//set preference value for Fax
+function setFax(argFax){
+ getPref().setCharPref('fax',argFax)
+}
+
+//set preference value for city
+function setCity(argCity){
+ getPref().setCharPref('city',argCity)
+}
+
+//set preference value for country
+function setCountry(argCountry){
+ getPref().setCharPref('country',argCountry)
+}
+
+//set preference value for state
+function setState(argState){
+ getPref().setCharPref('state',argState)
+}
+
+
+//set the value for the whole server url
+function setServerUrl(argServerUrl)
+{
+ var seperateUrl = argServerUrl.split(':');
+ setServer(seperateUrl.slice(0,seperateUrl.length-1).join(":"));
+ setPort(seperateUrl[seperateUrl.length-1]);
+}
+
+//set preference value for storing user id
+function setUserId(argUserId){
+ getPref().setIntPref('userid',argUserId);
+}
+
+//set database list is displaye or not
+function setDBList(argDBList){
+ getPref().setCharPref('db_list',argDBList)
+}
+
+//set server connect or not
+function setconnect_server(argconnect_server){
+ getPref().setCharPref('connect_server',argconnect_server)
+}
+
+//set module install or not
+function setmodule_install(argconnect_module){
+ getPref().setCharPref('module_install',argconnect_module)
+}
+
+//get module install or not
+function getmodule_install(){
+ return getPref().getCharPref('module_install');
+}
+
+
+//get server connect or not
+function getconnect_server(){
+ return getPref().getCharPref('connect_server');
+}
+
+
+//get partner id
+function getPartnerId(){
+ return getPref().getCharPref('partnerid');
+}
+//get database list is displaye or not
+function getDBList(){
+ return getPref().getCharPref('db_list');
+}
+
+function getFileName(){
+ return getPref().getCharPref('fname');
+}
+
+//get attachment save or not
+function getAttachment(){
+ return getPref().getCharPref('attachment');
+}
+
+//get serverurl
+function getServer(){
+ return getPref().getCharPref('serverurl');
+}
+
+//get server port
+function getPort(){
+ return getPref().getCharPref('serverport');
+}
+
+//get database name
+function getDbName(){
+ return getPref().getCharPref('serverdbname');
+}
+
+//get username from config settings
+function getUsername(){
+ return getPref().getCharPref('username');
+}
+
+//get password from config settings
+function getPassword(){
+ return getPref().getCharPref('password');
+}
+
+//get serverservice
+function getServerService(){
+ return strServerService;
+
+}
+
+//get sender email
+function getSenderEmail(){
+ return getPref().getCharPref('senderemail');
+}
+
+//get receiver email
+function getReceiverEmail(){
+ return getPref().getCharPref('receiveremail');
+}
+
+//get resource id
+function getResourceId(){
+ return getPref().getCharPref('res_id');
+}
+
+
+//get sender name
+function getSenderName(){
+ str = getPref().getCharPref('sendername');
+ if(!str.toString().match(/=?utf-8?q?/))
+ {
+ return str;
+ }
+ else
+ {
+
+ string = str.replace(/[\'Š',\'Ž',\'š',\'ž',\'Ÿ',\'À',\'Á',\'Â',\'Ã',\'Ä',\'Å',\'Ç',\'È',\'É',\'Ê',\'Ë',\'Ì',\'Í',\'Î',\'Ï',\'Ñ',\'Ò',\'Ó',\'Ô',\'Õ',\'Ö',\'Ø',\'Ù',\'Ú',\'Û',\'Ü',\'Ý',\'à',\'á',\'â',\'ã',\'ä',\'å',\'ç',\'è',\'é',\'ê',\'ë',\'ì',\'í',\'î',\'ï',\'ñ',\'ò',\'ó',\'ô',\'õ',\'ö',\'ø',\'ù',\'ú',\'û',\'ü',\'ý',\'ÿ',\'Þ',\'þ',\'Ð',\'ð',\'ß',\'Œ',\'œ',\'Æ',\'æ',\'µ']/g,'"',"'",'“','”',"\n","\r",'_/',"'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N','O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y','TH','th','DH','dh','ss','OE','oe','AE','ae','u','','','','','','','-'");
+
+ var utftext = "";
+ var encoded_string = "";
+ var convertedString = "";
+ for (var n = 0; n < string.length; n++)
+ {
+ var c = string.charCodeAt(n);
+ if (c < 128) {
+ utftext += String.fromCharCode(c);
+ }
+ }
+
+ encoded_string = encode64(utftext);
+ return encoded_string;
+ }
+}
+
+//ger partner name
+function getPartnerName(){
+ return getPref().getCharPref('partnername');
+}
+
+//get contact name
+function getContactName(){
+ return getPref().getCharPref('contactname');
+}
+
+
+//get street name
+function getStreet(){
+ return getPref().getCharPref('street');
+}
+
+//get street2 name
+function getStreet2(){
+ return getPref().getCharPref('street2');
+}
+
+//get zip code
+function getZipCode(){
+ return getPref().getCharPref('zipcode');
+}
+
+//get city name
+function getCity(){
+ return getPref().getCharPref('city');
+}
+
+//get country name
+function getCountry(){
+ return getPref().getCharPref('country');
+}
+
+//get state name
+function getState(){
+ return getPref().getCharPref('state');
+}
+
+//get office no
+function getOfficenumber(){
+ return getPref().getCharPref('officeno');
+}
+
+//get mobile no
+function getMobilenumber(){
+ return getPref().getCharPref('phoneno');
+}
+
+//get fax no
+function getFax(){
+ return getPref().getCharPref('fax');
+}
+
+
+//get email subject
+function getSubject(){
+ return getPref().getCharPref('subject');
+}
+
+//get email received date
+function getReceivedDate(){
+ return getPref().getCharPref('receiveddate');
+}
+
+//get contact id which is used while storing mail contents after creating a new partner contact
+function getContactId(){
+ return getPref().getCharPref('contactid');
+}
+
+//get attachment option information from the configuration settings
+function getAttachValue(){
+ return getPref().getCharPref('attachvalue');
+}
+
+//get email cclist information
+function getCCList(){
+ return getPref().getCharPref('cclist');
+}
+
+//get email message body
+function getMessageBody(){
+ return getPref().getCharPref('messagebody');
+}
+
+//get the whole server path
+function getServerUrl(){
+ return getServer()+":"+getPort()+"/"+getServerService();
+}
+
+//get user id for the xmlrpc request
+function getUserId(){
+ return getPref().getIntPref('userid');
+}
+
+//Creates and returns and instance of the XML-RPC client
+function getClient() {
+ // Enable correct security
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ return Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient);
+}
+
+//returns the xmlrpc client instance
+function getXmlRpc() {
+ if (!xmlRpcClient) {
+ xmlRpcClient = getClient();
+ }
+
+ // Initialize the client with the URL
+ xmlRpcClient.init(getServerUrl());
+ return xmlRpcClient;
+}
+
+// function to get all basic parameters
+function getBasicList(){
+ var branchobj = getPref();
+ arrBasicList = [];
+ arrBasicList[0] = branchobj.getCharPref("serverdbname");
+ arrBasicList[1] = branchobj.getIntPref('userid');
+ arrBasicList[2] = branchobj.getCharPref("password");
+ arrBasicList[3] = getServer()
+ arrBasicList[4] = getPort()
+ return arrBasicList
+}
+
+function createMenuItem_db(aLabel) {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem
+ item.setAttribute("label", aLabel);
+ item.setAttribute("value", aLabel);
+ return item;
+}
+
+//xmlrpc request handler for getting the list of database
+var listDbHandler = {
+ onResult: function(client, context, result) {
+ setconnect_server("true")
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrMethodList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrMethodList.Count();
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlDbName = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString);
+ arrDbList[i] = strlDbName.data;
+ }
+ var database = ""
+ if (count > 0)
+ {
+ setDBList("true")
+ var label = document.getElementById("database_option");
+ var vbox = document.createElement("vbox");
+ var hbox = document.createElement("hbox");
+ var label1 = document.createElement("label");
+ label1.setAttribute("width","80");
+ label1.setAttribute("value","Database:");
+ label1.setAttribute("id","label111");
+ var menu1 = document.createElement("menulist");
+ var menupopup1 = document.createElement("menupopup");
+ menu1.setAttribute("id","DBlist");
+ menu1.setAttribute("width","300");
+ var menuitem1 = document.createElement("menuitem");
+ database = arrDbList[0]
+ menuitem1.setAttribute("label", arrDbList[0]);
+ menuitem1.setAttribute("value", arrDbList[0]);
+ menupopup1.appendChild(menuitem1);
+ menu1.appendChild(menupopup1)
+ hbox.appendChild(label1);
+ hbox.appendChild(menu1);
+ vbox.appendChild(hbox);
+ label.appendChild(vbox);
+
+ var d = document.getElementById("first");
+ var d_nested = document.getElementById("lbldb_list1");
+ var throwawayNode = d.removeChild(d_nested);
+ var d_nested = document.getElementById("DBlist_text");
+ var throwawayNode = d.removeChild(d_nested);
+
+
+ }
+ else
+ {
+ setDBList("false")
+ }
+ // Loop through the results, adding items to the list
+ if (count)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("DBlist"); // a <menupopup> element
+ var arrsec=new Array()
+ for (var i=0;i<popup.menupopup.childNodes.length;i++) {
+ arrsec.push(popup.menupopup.childNodes[i].label)
+ }
+ for (i=0;i<arrDbList.length;i++){
+
+ if (arrsec.indexOf(arrDbList[i])==-1) {
+ if (arrDbList[i] != database){
+ popup.menupopup.appendChild(createMenuItem_db(arrDbList[i]));
+ }
+ }
+ }
+ }
+ },
+
+
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+};
+//function to get the database list
+function getDbList(argControl)
+{
+ setDBList("false")
+ setconnect_server("false")
+ // Enable correct security
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ // Get the instance of the XML-RPC client
+ var xmlRpcClient = getXmlRpc();
+ arrDbList = [];
+ var cmbDbList = document.getElementById(argControl);
+
+ xmlRpcClient.asyncCall(listDbHandler,cmbDbList,'list',[],0);
+ return arrDbList;
+}
+
+function createMenuItem_partner(aLabel, aValue) {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem
+ item.setAttribute("label", aLabel);
+ item.setAttribute("value", aValue);
+ return item;
+}
+
+//xmlrpc request handler for getting the list of All objects
+var listAllDocumentHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrIdList.Count();
+
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList[i] = arrDataPair;
+ }
+ if (context)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("section"); // a <menupopup> element
+ for (i=0;i<arrPartnerList.length;i++){
+ popup.menupopup.appendChild(createMenuItem_partner(arrPartnerList[i][1],arrPartnerList[i][0]));
+ }
+ }
+ popup_display = "no"
+ searchCheckbox()
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+var listAllCountryHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ var count = arrIdList.Count();
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList[i] = arrDataPair;
+ }
+ if (!context)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("country"); // a <menupopup> element
+ for (i=0;i<arrPartnerList.length;i++){
+ popup.menupopup.appendChild(createMenuItem_partner(arrPartnerList[i][1],arrPartnerList[i][0]));
+
+ }
+ }
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+var listAllStateHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrIdList.Count();
+
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList1[i] = arrDataPair;
+ }
+ if (!context)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("state");
+ // a <menupopup> element
+ for (i=0;i<arrPartnerList1.length;i++){
+ popup.menupopup.appendChild(createMenuItem_partner(arrPartnerList1[i][1],arrPartnerList1[i][0]));
+
+ }
+ }
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+
+//function to get the list of All object
+function getAllDocument(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList = [];
+ var end = document.getElementById("section")
+ length = end.itemCount
+ for (i = 0; i < length; i++) {
+ end.removeItemAt(0)
+ }
+ var cmdObjectList = document.getElementById("section");
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'list_alldocument';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = ""
+ xmlRpcClient.asyncCall(listAllDocumentHandler,cmdObjectList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+
+function getAllCountry(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList = [];
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'list_allcountry';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = document.getElementById("country").value;
+ xmlRpcClient.asyncCall(listAllCountryHandler,null,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+
+function getAllState(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList1 = [];
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'list_allstate';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = document.getElementById("state").value;
+ xmlRpcClient.asyncCall(listAllStateHandler,null,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+
+
+//function to create array object to pass as an parameter for xmlrpc request
+function dictcreation(value,checkboxobj){
+ var temp = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ var test = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ var strkey = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strkey.data = value;
+ test.AppendElement(strkey);
+ temp.AppendElement(test);
+ var test1 = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ for(i=0;i<checkboxobj.length;i++){
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = checkboxobj[i];
+ test1.AppendElement(strvalue);
+ }
+ if(checkboxobj.length>0){
+ temp.AppendElement(test1);
+ }
+ return temp;
+}
+
+//function to search and fillup section selection box
+function createMenuItem(aLabel) {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem
+ item.setAttribute("label", aLabel[1]);
+ item.setAttribute("value", aLabel[0]);
+ return item;
+}
+
+
+function listinstallmodule( result ) {
+ if ( rpc.onfault( result ) )
+ {
+ setmodule_install('no')
+ }
+}
+
+function module_install()
+{
+ setmodule_install("yes")
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ strDbName = branchobj.getCharPref("serverdbname");
+ struid = branchobj.getIntPref('userid');
+ strpass = branchobj.getCharPref("password");
+ strmethod = 'search';
+ strobj = 'thunderbird.partner'; // TOFIX: Find module 'thunderbird' into 'module.module' model.
+ var temp = new Array()
+ server=getServer()
+ port=getPort()
+ basicList=getBasicList()
+ rpc.addserver('object',basicList[3] , basicList[4],'/xmlrpc/object');
+ srcids=rpc.ask( 'object', 'execute', [basicList[0],basicList[1],basicList[2],strobj,strmethod,[]],listinstallmodule)
+}
+
+
+var listSearchContactHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var sendername = getSenderEmail();
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ var count = arrIdList.Count();
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);
+ var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ if(strlSearchResult=="partner_name"){
+ setPartnerName(strlSearchResultValue);
+ var t = getPartnerName();}
+
+ if(strlSearchResult=="contactname"){
+ setSenderName(strlSearchResultValue);
+ var t = getSenderName();}
+
+ if(strlSearchResult=="street"){
+ setStreet(strlSearchResultValue);
+ var t = getStreet();}
+
+ if(strlSearchResult=="street2"){
+ setStreet2(strlSearchResultValue);
+ var t = getStreet2();}
+
+ if(strlSearchResult=="zip"){
+ setZipCode(strlSearchResultValue);
+ var t = getZipCode();}
+
+ if(strlSearchResult=="city"){
+ setCity(strlSearchResultValue);
+ var t = getCity();}
+
+ if(strlSearchResult=="phone"){
+ setOfficenumber(strlSearchResultValue);
+ var t = getOfficenumber();}
+
+ if(strlSearchResult=="fax"){
+ setFax(strlSearchResultValue);
+ var t = getFax();}
+
+ if(strlSearchResult=="mobile"){
+ setMobilenumber(strlSearchResultValue);
+ var t = getMobilenumber();}
+
+ if(strlSearchResult=="email" && strlSearchResultValue!=''){
+ setSenderEmail(sendername);
+ var t = getSenderEmail();}
+
+ if(strlSearchResult=="res_id"){
+ setResourceId(strlSearchResultValue);
+ var t = getResourceId();}
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+
+}
+var listSearchContactdetailHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var sendername = getSenderEmail();
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ var count = arrIdList.Count();
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);
+ var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ if(strlSearchResult=="email" && strlSearchResultValue=='')
+ {
+ alert("Contact is not Available")
+ document.getElementById("txtemail").value = sendername;
+ }
+ if(strlSearchResult=="partner_name"){
+ document.getElementById("txtname").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="contactname"){
+ document.getElementById("txtcontactname").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="street"){
+ document.getElementById("txtstreet").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="street2"){
+ document.getElementById("txtstreet2").value =strlSearchResultValue;}
+ if(strlSearchResult=="zip"){
+ document.getElementById("txtzip").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="city"){
+ document.getElementById("txtcity").value =strlSearchResultValue;}
+ if(strlSearchResult=="phone"){
+ document.getElementById("txtoffice").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="fax"){
+ document.getElementById("txtfax").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="mobile"){
+ document.getElementById("txtmobile").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="email"&& strlSearchResultValue!=''){
+ document.getElementById("txtemail").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="res_id"){
+ setResourceId(strlSearchResultValue);
+ var t = getResourceId();}
+
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+
+}
+
+function searchContactdetail()
+{
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ arrFinalList = [];
+ var xmlRpcClient = getXmlRpc();
+ var cmbSearchList = document.getElementById('listSearchBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_contact';
+ var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strname.data =document.getElementById("txtemail").value;
+ xmlRpcClient.asyncCall(listSearchContactdetailHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strname ],6);
+}
+
+//xmlrpc request handler for getting the search results for the particular selected check box object
+var listSearchCheckboxHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrMethodList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrMethodList.Count();
+ var close=0;
+ if(count == 0 && popup_display != "no"){
+ alert("No records Found");
+ return false;
+ }
+ else if(count ==2 )
+ {
+ if (arrMethodList.QueryElementAt(0, Components.interfaces.nsISupportsCString)=="error")
+ {
+ close =1;
+ }
+ }
+ popup_display = "yes"
+ // Loop through the results, adding items to the list
+ var arr1 = new Array();
+ var arr2 = new Array();
+ var flag1 = 0;
+ var flag2 = 0;
+ var er ="";
+ var er_val =new Array();
+ for (i = 0; i < count; i++)
+ {
+ if(i%2==0){
+ if (arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString)=="error")
+ {
+ er = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString);
+ er_val[0] =arrMethodList.QueryElementAt(i+1, Components.interfaces.nsISupportsArray);
+ i +=1;
+ continue;
+ }
+ arr1[flag1] = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString);
+ flag1++;
+ }
+ else{
+ arr2[flag2] = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ flag2++;
+ }
+ }
+ if (er)
+ {
+ var arrSearchList1 = new Array();
+ for(j=0;j<er_val[0].Count();j++)
+ {
+ var arrDataPair = new Array();
+ arrDataPair[0] = er_val[0].QueryElementAt(j, Components.interfaces.nsISupportsCString)
+ arrSearchList1[j]=arrDataPair;
+ }
+ alert( arrSearchList1 + " model not exists")
+ if (close == 1)
+ {
+ alert("No records Found");
+ return false;
+ }
+ }
+ for (i = 0; i < arr2.length; i++) {
+ var arrSearchList1 = new Array();
+ for(j=0;j<arr2[i].Count();j++){
+ var strlSearchResult = arr2[i].QueryElementAt(j, Components.interfaces.nsISupportsArray);
+ var resultcount = strlSearchResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlSearchResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+ arrDataPair[1] = strlSearchResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrDataPair[2] = arr1[i];
+ arrSearchList1[j] = arrDataPair;
+ }
+ arrFinalList[i]=arrSearchList1;
+ }
+ if (context)
+ {
+
+ var row_count = context.getRowCount();
+ var cmbSearchList = document.getElementById('listSearchBox');
+ for (i=0;i<row_count;i++)
+ {
+ context.removeItemAt(0);
+ }
+ for (i=0;i<arrFinalList.length;i++)
+ {
+ for(j=0;j<arrFinalList[i].length;j++){
+ //creates the dynamic listbox which shows the searched records for the selected object in checkbox
+ var listcell = document.createElement("listcell");
+ var listItem = document.createElement("listitem");
+
+ var objectcharpref = getPref().getCharPref("object").split(',');
+ var imagecharpref = getPref().getCharPref("imagename").split(',');
+ var imagename = ''
+ for(k=0;k<objectcharpref.length;k++){
+ if(arr1[i] == objectcharpref[k]){
+ imagename = imagecharpref[k]
+ }
+ }
+
+ listcell.setAttribute("image",imagename); // stores the image of the object
+ listcell.setAttribute("class","listcell-iconic");
+ listcell.setAttribute("width",12);
+ listcell.setAttribute("height",12);
+ listcell.setAttribute("label",arrFinalList[i][j][1]); //stores the name ofthe record
+ listItem.appendChild(listcell);
+ listItem.value = arrFinalList[i][j][0]; //stores the id of the record
+ listItem.label = arr1[i]; // stores the value of the object
+ cmbSearchList.appendChild(listItem);
+ }
+ }
+ }
+ },
+
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+};
+
+//function to search the records of selected checkbox object
+function searchCheckbox()
+{
+ var checkboxlist = getnamesearch();
+ if(checkboxlist.length == 0){
+ alert("Select One or More Document");
+ return false;
+ }
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ arrFinalList = [];
+ var xmlRpcClient = getXmlRpc();
+ var end = document.getElementById('listSearchBox').getRowCount();
+ for(i=0; i< end; i++){
+ document.getElementById('listSearchBox').removeItemAt(0);
+ }
+ var cmbSearchList = document.getElementById('listSearchBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_checkbox';
+ var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strname.data = document.getElementById('txtvalueobj').value;
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var arrofarr = dictcreation(strname,checkboxlist);
+ xmlRpcClient.asyncCall(listSearchCheckboxHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,arrofarr ],6);
+}
+
+function searchContact()
+{
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ arrFinalList = [];
+ var xmlRpcClient = getXmlRpc();
+ var cmbSearchList = document.getElementById('listSearchBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_contact';
+ var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strname.data =getSenderEmail();
+
+ xmlRpcClient.asyncCall(listSearchContactHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strname ],6);
+}
+
+//xmlrpc request handler for getting the list of partners
+var listPartnerHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrIdList.Count();
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList[i] = arrDataPair;
+ }
+ if (context)
+ {
+ var row_count = context.getRowCount();
+ var cmdPartnerList = document.getElementById('listPartnerBox');
+ for (i=0;i<row_count;i++)
+ {
+ context.removeItemAt(0);
+ }
+ for (i=0;i<arrPartnerList.length;i++)
+ {
+ var listcell = document.createElement("listcell");
+ var listItem = document.createElement("listitem");
+ listcell.setAttribute("label",arrPartnerList[i][1]);
+ listItem.appendChild(listcell);
+ listItem.value = arrPartnerList[i][0];
+ cmdPartnerList.appendChild(listItem);
+ }
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to get the list of partners
+function getPartnerList(){
+ var branchobj = getPref();
+ window.opener.document.getElementById('txtselectpartner').setAttribute('value','');
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList = [];
+ var end = document.getElementById('listPartnerBox').getRowCount();
+ for(i=0; i< end; i++){
+ document.getElementById('listPartnerBox').removeItemAt(0);
+ }
+ var cmdPartnerList = document.getElementById('listPartnerBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'name_search';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'res.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = document.getElementById('txtselectpartner').value;
+ xmlRpcClient.asyncCall(listPartnerHandler,cmdPartnerList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+//function to create the xmlrpc supported variables for xmlrpc request
+function dictcontact(a,b){
+ var temp = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ for(i=0;i<a.length;i++){
+ var strkey = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strkey.data = a[i]
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = b[i]
+ var test = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ test.AppendElement(strkey);
+ test.AppendElement(strvalue);
+ temp.AppendElement(test);
+ }
+ return temp;
+}
+
+//xmlrpc request handler for creating the record of mail
+var listArchiveHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to archive the mail content through xmlrpc request
+
+function parse_eml(){
+ var fpath =""
+ if(navigator.userAgent.indexOf('Linux')!= -1){
+ fpath ="/tmp/"
+ }
+ else if(navigator.userAgent.indexOf('Win')!= -1){
+ fpath ="C:\\"
+ }
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
+ fpath ="/tmp/"
+ }
+
+ name = fpath + getFileName() +".eml"
+
+ var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+ file.initWithPath( name );
+ if ( file.exists() == false ) {
+ return null;
+ } else {
+ var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
+ is.init( file,0x01, 00004, null);
+ var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
+ sis.init( is );
+ var output = sis.read( sis.available() );
+ return output
+ }
+}
+function upload_archivemail()
+{
+ list_documents = document.getElementById('listSearchBox')
+ var context = []
+ var cnt = list_documents.selectedCount
+ for(i=0;i<cnt;i++)
+ {
+ var object = list_documents.getSelectedItem(i)
+ var eml_string = parse_eml();
+ var model = object.label;
+ var res_id = object.value;
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'history_message';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ var a = ['model', 'res_id','message'];
+ var b = [model, res_id,eml_string];
+ var arrofarr = dictcontact(a,b)
+ xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+ alert("Mail Archive Successfully");
+ window.close();
+ }
+
+}
+
+function create_archivemail(){
+ var popup = document.getElementById("section").selectedItem; // a <menupopup> element
+
+ if (String(popup) != "null"){
+ object=popup.value;
+ if (object == undefined) { alert("select At Least one Document !")}
+ else{
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'process_email';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var eml_string = parse_eml()
+ var a = ['model', 'message'];
+ var b = [object, eml_string];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+ alert("Mail Archive Successfully");
+ window.close();
+ }
+ }
+ else
+ {
+ alert(" select At Least one Document !")
+ }
+}
+
+
+//xmlrpc request handler for creating a new contact
+var listCreateContactHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ setContactId(createId);
+ alert("Contact Created Successfully.");
+ window.close();
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+var listUpdateContactHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ alert("Contact Update Successfully.");
+ window.close();
+ var partnerId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ setResourceId(partnerId);
+ window.close();
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to create a new contact
+function createContact(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'create_contact';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var a = ['partner_id','name','street','street2','zip','city','country_id','state_id','phone','fax','mobile','email'];
+ var b = [getPartnerId(),getSenderName(),document.getElementById("txtstreet").value,document.getElementById("txtstreet2").value,document.getElementById("txtzip").value, document.getElementById("txtcity").value,document.getElementById("country").value,document.getElementById("state").value,document.getElementById("txtoffice").value,document.getElementById("txtfax").value,document.getElementById("txtmobile").value,getSenderEmail()];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listCreateContactHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+function UpdateContact(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'update_contact';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var a = ['res_id','partner_id','name','street','street2','zip','city','country_id','state_id','phone','fax','mobile','email'];
+ var b = [getResourceId(),getPartnerName(),document.getElementById("txtcontactname").value,document.getElementById("txtstreet").value,document.getElementById("txtstreet2").value,document.getElementById("txtzip").value, document.getElementById("txtcity").value,document.getElementById("country").value,document.getElementById("state").value,document.getElementById("txtoffice").value,document.getElementById("txtfax").value,document.getElementById("txtmobile").value,document.getElementById("txtemail").value];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listUpdateContactHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+//xmlrpc request handler for creating a attachment record
+var listAttachHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+
+//function to encode the string into base64
+var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split("");
+function base64_encode (s)
+ {
+ // the result/encrypted string, the padding string, and the pad count
+ var r = ""; var p = ""; var c = s.length % 3;
+
+ // add a right zero pad to make this string a multiple of 3 characters
+ if (c > 0) { for (; c < 3; c++) { p += '='; s += "\0"; } }
+
+ // increment over the length of the string, three characters at a time
+ for (c = 0; c < s.length; c += 3) {
+
+ // we add newlines after every 76 output characters, according to the MIME specs
+ if (c > 0 && (c / 3 * 4) % 76 == 0) { r += "\r\n"; }
+
+ // these three 8-bit (ASCII) characters become one 24-bit number
+ var n = (s.charCodeAt(c) << 16) + (s.charCodeAt(c+1) << 8) + s.charCodeAt(c+2);
+
+ // this 24-bit number gets separated into four 6-bit numbers
+ n = [(n >>> 18) & 63, (n >>> 12) & 63, (n >>> 6) & 63, n & 63];
+
+ // those four 6-bit numbers are used as indices into the base64 character list
+ r += base64chars[n[0]] + base64chars[n[1]] + base64chars[n[2]] + base64chars[n[3]];
+
+ // add the actual padding string, after removing the zero pad
+ } return r.substring(0, r.length - p.length) + p;
+ }
+
+//function to encode the string into base64
+var keyStr = "ABCDEFGHIJKLMNOP" +
+ "QRSTUVWXYZabcdef" +
+ "ghijklmnopqrstuv" +
+ "wxyz0123456789+/" +
+ "="+"-_.!~*'()";
+
+function encode64(input) {
+var output = "";
+var chr1, chr2, chr3 = "";
+var enc1, enc2, enc3, enc4 = "";
+var i = 0;
+
+do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output +
+ keyStr.charAt(enc1) +
+ keyStr.charAt(enc2) +
+ keyStr.charAt(enc3) +
+ keyStr.charAt(enc4);
+ chr1 = chr2 = chr3 = "";
+ enc1 = enc2 = enc3 = enc4 = "";
+} while (i < input.length);
+
+return output;
+}
+
+
+//function to read the contents of the attachment files from the temp folder
+function createInstance(name,test){
+ var encoded_string = '';
+ var file_name = ''
+
+ for(i=0;i<test.length;i++){
+ var stream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
+ stream.init(test[i], 0x01, 00004, 0);
+ var bstream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
+ bstream.setInputStream(stream);
+ var r = new Array();
+ var fileContents = bstream.readByteArray(bstream.available(),r);
+ bstream.close();
+ var printstring = '';
+ for(j=0;j<fileContents.length;j++)
+ {
+ printstring += String.fromCharCode(fileContents[j]);
+ }
+ encoded_string += encode64(printstring)+',';
+ file_name += name[i]+',';
+ test[i].remove(true);
+ }
+ encoded_string = encoded_string.substring(0,encoded_string.length-1);
+ file_name = file_name.substring(0,file_name.length-1);
+ getPref().setCharPref('displayName',file_name);
+ getPref().setCharPref('attachmentdata',encoded_string);
+
+
+}
+
+//xmlrpc request handler for handling the login information
+var listLoginHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var login = result.QueryInterface(Components.interfaces.nsISupportsPrimitive)
+ if(login.type == 12){
+ login = result.QueryInterface(Components.interfaces.nsISupportsPRInt32)
+ setUserId(login.data);
+ alert('Successful Login To OpenERP');
+ window.close();
+ }
+ else{
+ alert("Login Failed");
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+ alert("Database does not Exist!\n\n Please specify proper database name.");
+ }
+}
+
+//function to check the login information
+function testConnection(){
+ if (getconnect_server() == "false")
+ {
+ alert("No Server Running..."+" "+getServer())
+ return false;
+ }
+ if (getDBList()=="false")
+ {
+ if (document.getElementById('DBlist_text').value =='')
+ {
+ alert("You Must Enter Database Name");
+ return false;
+ }
+ setDbName(document.getElementById('DBlist_text').value);
+ }
+ else
+ {
+ if (document.getElementById('DBlist').value == 0 || document.getElementById('DBlist').value =="--select--")
+ {
+ alert("You Must Select Database Name");
+ return false;
+ }
+ setDbName(document.getElementById('DBlist').value);
+ }
+ var branchobj = getPref();
+ setServer(document.getElementById('txturl').value);
+ var s = document.getElementById('txturl').value;
+ var a =s.split(':');
+ setPort(a[a.length-1]);
+ setUsername(document.getElementById('txtusername').value);
+ setPassword(document.getElementById('txtpassword').value);
+ setServerService('xmlrpc/common');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = getPref().getCharPref('serverdbname');
+ var strusername = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strusername.data = getPref().getCharPref('username');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = getPref().getCharPref('password');
+ xmlRpcClient.asyncCall(listLoginHandler,null,'login',[strDbName,strusername,strpass],3);
+}
+
+
+//xmlrpc request handler for handling the login information
+var listcreateLoginHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var login = result.QueryInterface(Components.interfaces.nsISupportsPrimitive)
+ setconnect_server("true")
+ if(login.type == 12){
+ login = result.QueryInterface(Components.interfaces.nsISupportsPRInt32)
+ setUserId(login.data);
+ }
+ else{
+ alert("Login Failed");
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+ setconnect_server("false")
+ }
+}
+
+//function to check the login information
+function createConnection(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/common');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = getPref().getCharPref('serverdbname');
+ var strusername = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strusername.data = getPref().getCharPref('username');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = getPref().getCharPref('password');
+ xmlRpcClient.asyncCall(listcreateLoginHandler,null,'login',[strDbName,strusername,strpass],3);
+}
+
+//xmlrpc request handler for handling the partner information
+var listCreatePartnerHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+
+ if(typeof(createId.data) == 'number' && createId!=0){
+ window.close();
+ }
+ if(createId == 0){
+ alert("Partner Already Exist");
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+//function to create the tiny partner object
+function createPartner(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'create_partner';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ if(document.getElementById('txtname').value ==''){
+ alert("You Must Enter Partner Name");
+ return false;
+ }
+ var a = ['name'];
+ var b = [document.getElementById('txtname').value];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listCreatePartnerHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+//xmlrpc request handler for handling the object information
+var listSearchDocumentHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var searchResult = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ if(searchResult.data == 0){
+ alert("Document Does Not Exist");
+ return false;
+ }
+ var objvalue = getPref().getCharPref("listobject");
+ var objectvalue = getPref().getCharPref("object");
+ var imagevalue = getPref().getCharPref("imagename");
+
+ var objcharpref = getPref().getCharPref("listobject").split(',');
+ var objectcharpref = getPref().getCharPref("object").split(',');
+ var imagecharpref = getPref().getCharPref("imagename").split(',');
+
+
+ if(objectcharpref.indexOf(document.getElementById("txtobject").value) != -1){
+ alert("Document already in List");
+ }
+ else{
+ var listItem = document.createElement("listitem");
+ var listcell1 = document.createElement("listcell");
+ var listcell2 = document.createElement("listcell");
+ var listcell3 = document.createElement("listcell");
+ listcell1.setAttribute("label",document.getElementById("txtobj").value);
+ listcell2.setAttribute("label",document.getElementById("txtobject").value);
+ listcell3.setAttribute("image",'file://'+document.getElementById("txtimagename").value);
+ listcell3.setAttribute("class","listcell-iconic")
+ listcell3.setAttribute("width",16)
+ listcell3.setAttribute("height",16)
+ listItem.appendChild(listcell1);
+ listItem.appendChild(listcell2);
+ listItem.appendChild(listcell3);
+ document.getElementById("listObjectListBox").appendChild(listItem)
+ if(getPref().getCharPref("object")!=''){
+ getPref().setCharPref("listobject",objvalue+','+document.getElementById("txtobj").value);
+ getPref().setCharPref("object",objectvalue+','+document.getElementById("txtobject").value);
+ getPref().setCharPref("imagename",imagevalue+','+"file://"+document.getElementById("txtimagename").value);
+ }
+ else{
+ getPref().setCharPref("listobject",document.getElementById("txtobj").value);
+ getPref().setCharPref("object",document.getElementById("txtobject").value);
+ getPref().setCharPref("imagename","file://"+document.getElementById("txtimagename").value);
+ }
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to search the tiny objects for configuration settings
+function searchDocument(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_document';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ if(document.getElementById('txtobj').value =='' ){
+ alert("You Must Enter Document");
+ return false;
+ }
+ if(document.getElementById('txtobject').value =='' ){
+ alert("You Must Enter Document Name");
+ return false;
+ }
+ var a = ['model'];
+ var b = [document.getElementById('txtobject').value];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listSearchDocumentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+//xmlrpc request handler for list of search object exist in database or not.
+var listsearchAttachmentHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var objectlist = result.QueryInterface(Components.interfaces.nsISupportsCString);
+ getPref().setCharPref('tempobject',objectlist)
+ document.getElementById("txtvalueobj").value= getSenderEmail();
+ var checkbox = document.getElementById("checkbox-dynamic");
+
+ var object = preferenceBranch.getCharPref("listobject").split(',');
+ var obj = preferenceBranch.getCharPref("tempobject").split(',');
+ var imagelist = preferenceBranch.getCharPref("imagename").split(',');
+
+ count = 0
+ if (object[0]!=''){
+ for(var i=0; i<object.length; i++){
+ if (obj[i] == "null")
+ {
+ continue
+ }
+
+ if(count%3==0){
+ var vbox = document.createElement("hbox");
+ }
+ count += 1
+ var hbox = document.createElement("vbox");
+ var checkbox1 = document.createElement("checkbox");
+
+ checkbox1.setAttribute("label",object[i]);
+ checkbox1.setAttribute("id","cbx"+(i+1));
+ checkbox1.setAttribute("width",150)
+ if (obj[i] =="res.partner.address")
+ {
+ checkbox1.setAttribute("checked",true);
+ }
+ if(i==0){
+ checkbox1.setAttribute("checked",true);
+ }
+
+ var image1 = document.createElement("image");
+ image1.setAttribute("src",imagelist[i]);
+ image1.setAttribute("width",16)
+ image1.setAttribute("height",16)
+
+ vbox.appendChild(image1);
+ hbox.appendChild(checkbox1);
+ vbox.appendChild(hbox);
+ checkbox.appendChild(vbox);
+ }
+ }
+ setTimeout("getAllDocument()", 0)
+ exis_grp = document.getElementById("existsobjectgroup")
+ new_grp = document.getElementById("newobjectgroup")
+
+ new_grp.height = parseInt(parseInt(new_grp.height) + parseInt((count /3) * 23.5))
+ win = document.getElementById("pluginwindows").setAttribute("height",1000)
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to create a new attachment record
+function listSearchDocumentAttachment(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_document_attachment';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ var popup = document.getElementById("section").selectedItem; // a <menupopup> element
+ object=popup.value;
+ resobj.data = object;
+ var a = ['object'];
+ var b = [getPref().getCharPref("object")];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listsearchAttachmentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+
+//function to create a new attachment record
+
+function win_close()
+{
+ var fpath =""
+ if(navigator.userAgent.indexOf('Linux')!= -1){
+ fpath ="/tmp/"
+ }
+ else if(navigator.userAgent.indexOf('Win')!= -1){
+ fpath ="C:\\"
+ }
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
+ fpath ="/tmp/"
+ }
+ try
+ {
+ name = fpath + getFileName() +".eml"
+
+ var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+ file.initWithPath( name );
+ file.remove(true);
+ window.close();
+ }
+ catch(err)
+ {
+ window.close();
+ }
+}
+
+function attachmentWidnowOpen(msg)
+{
+
+ if (msg=="create")
+ {
+ var popup = document.getElementById("section").selectedItem; // a <menupopup> element
+ if (String(popup) != "null"){
+ object=popup.value;
+ if (object=="" || object == undefined) { alert("select at least one document !")}
+ else{
+ create_archivemail()
+ }
+ }
+ else
+ {
+ alert("select at least one Document !")
+ }
+ }
+ else if (msg=="upload")
+ {
+ if(document.getElementById('listSearchBox').selectedItem)
+ {
+ upload_archivemail()
+ }
+ else{
+ alert("Please select at least one record");
+ }
+ }
+}
--- /dev/null
+<!ENTITY title.label "Open Contact">
+<!ENTITY name.value "Partner Name:">
+<!ENTITY contactname.value "Contact Name:">
+<!ENTITY street.value "Street:">
+<!ENTITY street2.value "Street2:">
+<!ENTITY zip.value "Zip:">
+<!ENTITY city.value "City:">
+<!ENTITY country.value "Country:">
+<!ENTITY state.value "State:">
+<!ENTITY office.value "Office:">
+<!ENTITY fax.value "Fax:">
+<!ENTITY mobile.value "Mobile:">
+<!ENTITY email.value "Email:">
+<!ENTITY emailid.value "Email ID:">
+<!ENTITY communication.value "Communication:">
+<!ENTITY postaladdress.value "Postal Address:">
+<!ENTITY ok.label "Save">
+<!ENTITY partner.label "Create New Contact :">
+<!ENTITY create.label "New Contact">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY newpartner.label "New Partner">
+<!ENTITY bsearch.label "Search Contact">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
--- /dev/null
+<!ENTITY title.label "OpenERP Configuration">\r
+<!ENTITY separate.label "Configuration Login for OpenERP!">\r
+<!ENTITY close.label "Cancel">\r
+<!ENTITY database.label "Database:">
+<!ENTITY ok.label "OK">\r
+<!ENTITY connection.label "Connect">\r
+<!ENTITY txturl.label "Server: ">\r
+<!ENTITY image.label "Image : ">\r
+<!ENTITY obj.label "Document : ">\r
+<!ENTITY username.label "Username: ">\r
+<!ENTITY password.label "Password: ">\r
+<!ENTITY setdb.label "Move >">\r
+<!ENTITY getdblist.label "Change">\r
+<!ENTITY gpConnection.label "Connection Parameters">\r
+<!ENTITY listDBListBox.header "Available DBs">\r
+<!ENTITY listDocument.header "Document">\r
+<!ENTITY listDocumentListBox.header "Document Name">\r
+<!ENTITY document.label "Document Name : ">\r
+<!ENTITY documentcreate.label "Add">\r
+<!--<!ENTITY objectdelete.label "Delete Selected Object From The List"> -->\r
+<!ENTITY documentdelete.label "Delete">\r
+<!ENTITY gpArchive.label "Archived Email Attachment Options">\r
+<!ENTITY rdAlwaysAttached.label "Always Send Email Attachments to OpenERP">\r
+<!ENTITY rdPromptAttached.label "Prompt Before Sending Email Attachments">\r
+<!ENTITY rdNeverAttached.label "Never Send Email attachments to OpenERP">\r
+<!ENTITY reserve.value "Copyright © 2006-TODAY OpenERP SA All Rights Reserved.\r
+OpenERP is a trademark of the OpenERP SA Company. OpenERP Web is jointly developed by OpenERP SA and Axelor.\n\r
+Licenced under the terms of OpenERP Public License (OEPL) v1.1 ">\r
+<!ENTITY openerp.value "http://www.openerp.com/">\r
+<!ENTITY axelor.value "http://www.axelor.com">\r
+<!ENTITY tinyerp.value "http://tiny.be/">\r
+\r
+<!ENTITY openerp_s.value "OpenERP">\r
+<!ENTITY axelor_s.value "The Axelor Company">\r
+<!ENTITY tinyerp_s.value "The Tiny Company">\r
+\r
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">\r
+<!ENTITY gpAbout.label "About OpenERP Thunderbird Plugin">\r
+<!ENTITY develop.value "This Thunderbird Plugin for OpenERP has been developed by OpenERP SA & Axelor">\r
+<!ENTITY information.value "For more information, please visit our website">\r
+<!ENTITY contact.label "Contact Us">\r
+<!ENTITY contact.value "info@axelor.com">\r
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">\r
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">\r
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">\r
+<!ENTITY imagemove.value "chrome://openerp_plugin/skin/Move.gif">\r
+<!ENTITY imagemoveleft.value "chrome://openerp_plugin/skin/MoveLeft.png">\r
+<!ENTITY imagemovedown.value "chrome://openerp_plugin/skin/MoveDown.png">\r
+<!ENTITY addfile.label "Load Image">\r
--- /dev/null
+<!ENTITY lblurl.label "Server: ">\r
+<!ENTITY lblport.label "Port: ">\r
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">\r
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">\r
+\r
--- /dev/null
+<!ENTITY title.label "Create a new Contact">
+<!ENTITY name.value "Contact Name:">
+<!ENTITY street.value "Street:">
+<!ENTITY street2.value "Street2:">
+<!ENTITY zip.value "Zip:">
+<!ENTITY city.value "City:">
+<!ENTITY country.value "Country:">
+<!ENTITY state.value "State:">
+<!ENTITY office.value "Office:">
+<!ENTITY fax.value "Fax:">
+<!ENTITY mobile.value "Mobile:">
+<!ENTITY email.value "Email:">
+<!ENTITY communication.value "Communication:">
+<!ENTITY postaladdress.value "Postal Address:">
+
+
+<!ENTITY selectpartner.value "Partner:">
+<!ENTITY listEmail.header "Email">
+<!ENTITY listName.header "Name">
+<!ENTITY bsearch.label "Search">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY cbxarchive.label "Archive">
+<!ENTITY ok.label "Save">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
+
+<!ENTITY title.label "Select Partner">
+<!ENTITY listPartnerName.header "Partner Name">
+<!ENTITY bsearch.label "Search">
+<!ENTITY create.label "Create">
+<!ENTITY select.label "Select">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY reload.label "Reload">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
+<!ENTITY imagereload.value "chrome://openerp_plugin/skin/Archive.png">
--- /dev/null
+<!ENTITY title.label "Create a new Partner">
+<!ENTITY name.value "Name:">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY ok.label "Save">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
--- /dev/null
+nomboxfile=není mbox souborem
+folderexists=Není možné importovat: složka se stejným názvem již existuje
+fileexists=Není možné importovat: soubor se stejným názvem již existuje
+nowritable=Není možné importovat: nemáte právo zápisu do složky
+exportOK=Export byl úspěšně dokončen
+isNewsgroup=Tato funkce není dostupná: export složky z IMAP účtů nebo diskuzních \nskupin je možný, pouze pokud je nastavené čtení v režimu Offline
+nofolder=Nebyla vybrána žádná cílová složka
+badfolder=Není možné importovat do této složky (typ IMAP nebo diskuzní skupina)
+exportAccount=Export všech složek
+exportFolder=Export složky
+filePickerImport=Výběr souboru k importu
+filePickerExport=Výběr cílové složky
+extensions.{3ed8cc52-86fc-4613-9026-c1ef969da4c3}.description=Umožňuje import a export souborů ve formátu mbox a eml
+virtualfolder=Toto je virtuální složka. Pro export jejich\nzpráv musíte tyto zprávy nejdříve\nzkopírovat do normální složky.
+searchdir=Vyberte složku, ve které budou vyhledány mbox soubory
+confirmimport=Chcete importovat soubor?
+endscan=Konec prohledávání složek
+internalerror=Není možné provést import, protože nastala neznámá chyba
+exportstart=Probíhá export, čekejte prosím...
+exported=Exportovalo se
+msgs=zpráv z
+nosubjectmsg=bez_predmetu
+messsubdir=zprávy
+badfolder2=Není možné importovat do této složky (IMAP nebo diskuzní skupina nebo virtuální složka)
+temp_error=Není možné importovat: nastala chyba při vytváření dočasného souboru
+importEMLstart=Pobíhá import, čekejte prosím...
+numEML=Naimportovány eml soubory:
+CSVseparator=,
+noEML=No eml file found in this directory
+backupWarning=During this operation, the program could be\nunresponsive for some minutes.\nDo you want to go on?\n
+noWaring=Don't show again this warning
--- /dev/null
+<!ENTITY tinyplugin "OpenERP Configuration">
+<!ENTITY tinypluginconfig "Archieve To OpenERP">
+<!ENTITY tinyarchive "Archive to OpenERP">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY menuicon.value "chrome://openerp_plugin/skin/NEWT.png">
+<!ENTITY partnericon.value "chrome://openerp_plugin/skin/Partner.png">
+<!ENTITY imagearchive.value "chrome://openerp_plugin/skin/Archive.png">
+<!ENTITY tooltip.value "Add To Archive">
+<!ENTITY pluginconfig.value "OpenERP Configuration Settings">
+<!ENTITY pluginconfigvalue.value "Archieve To OpenERP Settings">
+
--- /dev/null
+<!ENTITY title.label "Archive To OpenERP">
+<!ENTITY gptinyobj.label "Link to an Existing Document">
+<!ENTITY newobject.label "New Documents">
+<!ENTITY bsearch.label "Search">
+<!ENTITY close.label "Close">
+<!ENTITY attach.label "Archive to OpenERP">
+<!ENTITY create.label "New Contact">
+<!ENTITY archive.label "Create">
+<!ENTITY attach.label "Attach">
+<!ENTITY cbxcontact.label "Contact">
+<!ENTITY cbxinvoice.label "Invoice">
+<!ENTITY cbxproject.label "Project">
+<!ENTITY cbxpartner.label "Partner">
+<!ENTITY cbxproduct.label "Product">
+<!ENTITY cbxaccount.label "Account">
+<!ENTITY cbxsale.label "Sale">
+<!ENTITY cbxcase.label "Case">
+<!ENTITY cbxtask.label "Task">
+<!ENTITY cbxselectall.label "Select All">
+<!ENTITY object.label "Type of Document :">
+<!ENTITY partner.label "Create New Contact :">
+<!ENTITY search.label "Search :">
+<!ENTITY listSearchBox.header "Name">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imagearchive.value "chrome://openerp_plugin/skin/Archive.png">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
+<!ENTITY gptinyobjexe.label "Documents">
--- /dev/null
+<!ENTITY title.label "Select Partner">
+<!ENTITY selectpartner.value "Partner">
+<!ENTITY listPartnerName.header "Partner Name">
+<!ENTITY bsearch.label "Search">
+<!ENTITY create.label "Create">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY select.label "Select">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
--- /dev/null
+menuitem#tiny-plugin {\r
+ color: red !important;\r
+}
--- /dev/null
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla XML-RPC Client component.
+ *
+ * The Initial Developer of the Original Code is
+ * Digital Creations 2, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Martijn Pieters <mj@digicool.com> (original author)
+ * Samuel Sieb <samuel@sieb.net>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * nsXmlRpcClient XPCOM component
+ * Version: $Revision: 1.39 $
+ *
+ * $Id: nsXmlRpcClient.js,v 1.39 2006/10/24 16:02:01 silver%warwickcompsoc.co.uk Exp $
+ */
+
+/*
+ * Constants
+ */
+const XMLRPCCLIENT_CONTRACTID = '@mozilla.org/xml-rpc/client;1';
+const XMLRPCCLIENT_CID =
+ Components.ID('{4d7d15c0-3747-4f7f-b6b3-792a5ea1a9aa}');
+const XMLRPCCLIENT_IID = Components.interfaces.nsIXmlRpcClient;
+
+const XMLRPCFAULT_CONTRACTID = '@mozilla.org/xml-rpc/fault;1';
+const XMLRPCFAULT_CID =
+ Components.ID('{691cb864-0a7e-448c-98ee-4a7f359cf145}');
+const XMLRPCFAULT_IID = Components.interfaces.nsIXmlRpcFault;
+
+const XMLHTTPREQUEST_CONTRACTID = '@mozilla.org/xmlextras/xmlhttprequest;1';
+
+const NSICHANNEL = Components.interfaces.nsIChannel;
+
+const DEBUG = false;
+const DEBUGPARSE = false;
+
+const DOMNode = Components.interfaces.nsIDOMNode;
+/*
+ * Class definitions
+ */
+
+/* The nsXmlRpcFault class constructor. */
+function nsXmlRpcFault() {}
+
+/* the nsXmlRpcFault class def */
+nsXmlRpcFault.prototype = {
+ faultCode: 0,
+ faultString: '',
+
+ init: function(faultCode, faultString) {
+ this.faultCode = faultCode;
+ this.faultString = faultString;
+ },
+
+ toString: function() {
+ return '<XML-RPC Fault: (' + this.faultCode + ') ' +
+ this.faultString + '>';
+ },
+
+ // nsISupports interface
+ QueryInterface: function(iid) {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(XMLRPCFAULT_IID))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ }
+};
+
+/* The nsXmlRpcClient class constructor. */
+function nsXmlRpcClient() {}
+
+/* the nsXmlRpcClient class def */
+nsXmlRpcClient.prototype = {
+ _serverUrl: null,
+ _useAuth: false,
+
+ init: function(serverURL) {
+ this._serverUrl = serverURL;
+ this._encoding = "UTF-8";
+ },
+
+ setAuthentication: function(username, password){
+ if ((typeof username == "string") &&
+ (typeof password == "string")){
+ this._useAuth = true;
+ this._username = username;
+ this._password = password;
+ }
+ },
+
+ clearAuthentication: function(){
+ this._useAuth = false;
+ },
+
+ setEncoding: function(encoding){
+ this._encoding = encoding;
+ },
+
+ get serverUrl() { return this._serverUrl; },
+
+ // Internal copy of the status
+ _status: null,
+ _listener: null,
+
+ asyncCall: function(listener, context, methodName, methodArgs, count) {
+ debug('asyncCall');
+ // Check for call in progress.
+ if (this._inProgress)
+ return;
+ //throw Components.Exception('Call in progress!');
+
+ // Check for the server URL;
+ if (!this._serverUrl)
+ throw Components.Exception('Not initialized');
+
+ this._inProgress = true;
+
+ // Clear state.
+ this._foundFault = false;
+ this._passwordTried = false;
+ this._result = null;
+ this._fault = null;
+ this._status = null;
+ this._responseStatus = null;
+ this._responseString = null;
+ this._listener = listener;
+ this._seenStart = false;
+ this._context = context;
+
+ debug('Arguments: ' + methodArgs);
+
+ // Generate request body
+ var xmlWriter = new XMLWriter(this._encoding);
+ this._generateRequestBody(xmlWriter, methodName, methodArgs);
+
+ var requestBody = xmlWriter.data;
+
+ debug('Request: ' + requestBody);
+
+ this.xmlhttp = Components.classes[XMLHTTPREQUEST_CONTRACTID]
+ .createInstance(Components.interfaces.nsIXMLHttpRequest);
+ if (this._useAuth) {
+ this.xmlhttp.open('POST', this._serverUrl, true,
+ this._username, this._password);
+ } else {
+ this.xmlhttp.open('POST', this._serverUrl);
+ }
+ this.xmlhttp.onload = this._onload;
+ this.xmlhttp.onerror = this._onerror;
+ this.xmlhttp.parent = this;
+ this.xmlhttp.setRequestHeader('Content-Type','text/xml');
+ this.xmlhttp.send(requestBody);
+ var chan = this.xmlhttp.channel.QueryInterface(NSICHANNEL);
+ chan.notificationCallbacks = this;
+ },
+
+ _onload: function(e) {
+ var result;
+ var parent = e.target.parent;
+ parent._inProgress = false;
+ parent._responseStatus = e.target.status;
+ parent._responseString = e.target.statusText;
+ if (!e.target.responseXML) {
+ if (e.target.status) {
+ try {
+ parent._listener.onError(parent, parent._context,
+ Components.results.NS_ERROR_FAILURE,
+ 'Server returned status ' + e.target.status);
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ } else {
+ try {
+ parent._listener.onError(parent, parent._context,
+ Components.results.NS_ERROR_FAILURE,
+ 'Unknown network error');
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ }
+ return;
+ }
+ try {
+ e.target.responseXML.normalize();
+ result = parent.parse(e.target.responseXML);
+ } catch (ex) {
+ try {
+ parent._listener.onError(parent, parent._context,
+ ex.result, ex.message);
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ return;
+ }
+ if (parent._foundFault) {
+ parent._fault = result;
+ try {
+ parent._listener.onFault(parent, parent._context, result);
+ } catch(ex) {
+ debug('Exception in listener.onFault: ' + ex);
+ }
+ } else {
+ parent._result = result.value;
+ try {
+ parent._listener.onResult(parent, parent._context,
+ result.value);
+ } catch (ex) {
+ debug('Exception in listener.onResult: ' + ex);
+ }
+ }
+ },
+
+ _onerror: function(e) {
+ var parent = e.target.parent;
+ parent._inProgress = false;
+ try {
+ parent._listener.onError(parent, parent._context,
+ Components.results.NS_ERROR_FAILURE,
+ 'Unknown network error');
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ },
+
+ _foundFault: false,
+
+ _fault: null,
+ _result: null,
+ _responseStatus: null,
+ _responseString: null,
+
+ get fault() { return this._fault; },
+ get result() { return this._result; },
+ get responseStatus() { return this._responseStatus; },
+ get responseString() { return this._responseString; },
+
+ /* Convenience. Create an appropriate XPCOM object for a given type */
+ INT: 1,
+ BOOLEAN: 2,
+ STRING: 3,
+ DOUBLE: 4,
+ DATETIME: 5,
+ ARRAY: 6,
+ STRUCT: 7,
+ BASE64: 8, // Not part of nsIXmlRpcClient interface, internal use.
+ createType: function(type, uuid) {
+ const SUPPORTSID = '@mozilla.org/supports-';
+ switch(type) {
+ case this.INT:
+ uuid.value = Components.interfaces.nsISupportsPRInt32
+ return createInstance(SUPPORTSID + 'PRInt32;1',
+ 'nsISupportsPRInt32');
+
+ case this.BOOLEAN:
+ uuid.value = Components.interfaces.nsISupportsPRBool
+ return createInstance(SUPPORTSID + 'PRBool;1',
+ 'nsISupportsPRBool');
+
+ case this.STRING:
+ uuid.value = Components.interfaces.nsISupportsCString
+ return createInstance(SUPPORTSID + 'cstring;1',
+ 'nsISupportsCString');
+
+ case this.DOUBLE:
+ uuid.value = Components.interfaces.nsISupportsDouble
+ return createInstance(SUPPORTSID + 'double;1',
+ 'nsISupportsDouble');
+
+ case this.DATETIME:
+ uuid.value = Components.interfaces.nsISupportsPRTime
+ return createInstance(SUPPORTSID + 'PRTime;1',
+ 'nsISupportsPRTime');
+
+ case this.ARRAY:
+ uuid.value = Components.interfaces.nsISupportsArray
+ return createInstance(SUPPORTSID + 'array;1',
+ 'nsISupportsArray');
+
+ case this.STRUCT:
+ uuid.value = Components.interfaces.nsIDictionary
+ return createInstance('@mozilla.org/dictionary;1',
+ 'nsIDictionary');
+
+ default: throw Components.Exception('Unsupported type');
+ }
+ },
+
+ // nsISupports interface
+ QueryInterface: function(iid) {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(XMLRPCCLIENT_IID) &&
+ !iid.equals(Components.interfaces.nsIInterfaceRequestor))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ // nsIInterfaceRequester interface
+ getInterface: function(iid, result){
+ if (iid.equals(Components.interfaces.nsIAuthPrompt)){
+ return this;
+ }
+ Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
+ return null;
+ },
+
+ // nsIAuthPrompt interface
+ _passwordTried: false,
+ promptUsernameAndPassword: function(dialogTitle, text, passwordRealm,
+ savePassword, user, pwd){
+
+ if (this._useAuth){
+ if (this._passwordTried){
+ return false;
+ }
+ user.value = this._username;
+ pwd.value = this._password;
+ this._passwordTried = true;
+ return true;
+ }
+ return false;
+ },
+
+ /* Generate the XML-RPC request body */
+ _generateRequestBody: function(writer, methodName, methodArgs) {
+ writer.startElement('methodCall');
+
+ writer.startElement('methodName');
+ writer.write(methodName);
+ writer.endElement('methodName');
+
+ writer.startElement('params');
+ for (var i = 0; i < methodArgs.length; i++) {
+ writer.startElement('param');
+ this._generateArgumentBody(writer, methodArgs[i]);
+ writer.endElement('param');
+ }
+ writer.endElement('params');
+
+ writer.endElement('methodCall');
+ },
+
+ /* Write out a XML-RPC parameter value */
+ _generateArgumentBody: function(writer, obj) {
+ writer.startElement('value');
+ var sType = this._typeOf(obj);
+ switch (sType) {
+ case 'PRUint8':
+ case 'PRUint16':
+ case 'PRInt16':
+ case 'PRInt32':
+ obj=obj.QueryInterface(Components.interfaces['nsISupports' +
+ sType]);
+ writer.startElement('i4');
+ writer.write(obj.toString());
+ writer.endElement('i4');
+ break;
+
+ case 'PRBool':
+ obj=obj.QueryInterface(Components.interfaces.nsISupportsPRBool);
+ writer.startElement('boolean');
+ writer.write(obj.data ? '1' : '0');
+ writer.endElement('boolean');
+ break;
+
+ case 'Char':
+ case 'CString':
+ obj=obj.QueryInterface(Components.interfaces['nsISupports' +
+ sType]);
+ writer.startElement('string');
+ writer.write(obj.toString());
+ writer.endElement('string');
+ break;
+
+ case 'Float':
+ case 'Double':
+ obj=obj.QueryInterface(Components.interfaces['nsISupports' +
+ sType]);
+ writer.startElement('double');
+ writer.write(obj.toString());
+ writer.endElement('double');
+ break;
+
+ case 'PRTime':
+ obj = obj.QueryInterface(
+ Components.interfaces.nsISupportsPRTime);
+ var date = new Date(obj.data)
+ writer.startElement('dateTime.iso8601');
+ writer.write(iso8601Format(date));
+ writer.endElement('dateTime.iso8601');
+ break;
+
+ case 'InputStream':
+ obj = obj.QueryInterface(Components.interfaces.nsIInputStream);
+ obj = toScriptableStream(obj);
+ writer.startElement('base64');
+ streamToBase64(obj, writer);
+ writer.endElement('base64');
+ break;
+
+ case 'Array':
+ obj = obj.QueryInterface(
+ Components.interfaces.nsISupportsArray);
+ writer.startElement('array');
+ writer.startElement('data');
+ for (var i = 0; i < obj.Count(); i++)
+ this._generateArgumentBody(writer, obj.GetElementAt(i));
+ writer.endElement('data');
+ writer.endElement('array');
+ break;
+
+ case 'Dictionary':
+ obj = obj.QueryInterface(Components.interfaces.nsIDictionary);
+ writer.startElement('struct');
+ var keys = obj.getKeys({});
+ for (var k = 0; k < keys.length; k++) {
+ writer.startElement('member');
+ writer.startElement('name');
+ writer.write(keys[k]);
+ writer.endElement('name');
+ this._generateArgumentBody(writer, obj.getValue(keys[k]));
+ writer.endElement('member');
+ }
+ writer.endElement('struct');
+ break;
+
+ default:
+ throw Components.Exception('Unsupported argument', null, null,
+ obj);
+ }
+
+ writer.endElement('value');
+ },
+
+ /* Determine type of a nsISupports primitive, array or dictionary. */
+ _typeOf: function(obj) {
+ // XPConnect alows JS to pass in anything, because we are a regular
+ // JS object to it. So we have to test rigorously.
+ if (typeof obj != 'object') return 'Unknown';
+
+ // Anything else not nsISupports is not allowed.
+ if (typeof obj.QueryInterface != 'function') return 'Unknown';
+
+ // Now we will have to eliminate by trying all possebilities.
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRUint8);
+ return 'PRUint8';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRUint16);
+ return 'PRUint16';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRInt16);
+ return 'PRInt16';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ return 'PRInt32';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRBool);
+ return 'PRBool';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsChar);
+ return 'Char';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsCString);
+ return 'CString';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsFloat);
+ return 'Float';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsDouble);
+ return 'Double';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRTime);
+ return 'PRTime';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsIInputStream);
+ return 'InputStream';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsArray);
+ return 'Array';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsIDictionary);
+ return 'Dictionary';
+ } catch(e) {}
+
+ // Not a supported type
+ return 'Unknown';
+ },
+
+ // Response parsing state
+ _valueStack: [],
+ _currValue: null,
+ _cdata: null,
+
+ parse: function(doc) {
+ var node = doc.firstChild;
+ var result;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if ((node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'methodResponse')) {
+ throw Components.Exception('Expecting a methodResponse', null, null,
+ doc);
+ }
+ node = node.firstChild;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (node.nodeType != DOMNode.ELEMENT_NODE)
+ throw Components.Exception('Expecting a params or fault', null,
+ null, doc);
+ if (node.nodeName == 'params') {
+ node = node.firstChild;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if ((node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'param')) {
+ throw Components.Exception('Expecting a param', null, null,
+ doc);
+ }
+ result = this.parseValue(node.firstChild);
+ } else if (node.nodeName == 'fault') {
+ this._foundFault = true;
+ result = this.parseFault(node.firstChild);
+ } else {
+ throw Components.Exception('Expecting a params or fault', null,
+ null, doc);
+ }
+ debug('Parse finished');
+ return result;
+ },
+
+ parseValue: function(node) {
+ var cValue = new Value();
+ if (node && (node.nodeType == DOMNode.TEXT_NODE))
+ node = node.nextSibling;
+ if (!node || (node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'value')) {
+ throw Components.Exception('Expecting a value', null, null, node);
+ }
+ node = node.firstChild;
+ if (!node)
+ return cValue;
+ if (node.nodeType == DOMNode.TEXT_NODE){
+ if (!node.nextSibling) {
+ cValue.value = node.nodeValue;
+ return cValue;
+ } else {
+ node = node.nextSibling;
+ }
+ }
+ if (node.nodeType != DOMNode.ELEMENT_NODE)
+ throw Components.Exception('Expecting a value type', null, null,
+ node);
+ switch (node.nodeName) {
+ case 'string':
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'i4':
+ case 'int':
+ cValue.type = this.INT;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'boolean':
+ cValue.type = this.BOOLEAN;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'double':
+ cValue.type = this.DOUBLE;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'dateTime.iso8601':
+ cValue.type = this.DATETIME;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'base64':
+ cValue.type = this.BASE64;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'struct':
+ cValue.type = this.STRUCT;
+ this.parseStruct(cValue, node.firstChild);
+ break;
+ case 'array':
+ cValue.type = this.ARRAY;
+ this.parseArray(cValue, node.firstChild);
+ break;
+ default:
+ throw Components.Exception('Expecting a value type', null, null,
+ node);
+ }
+ return cValue;
+ },
+
+ parseString: function(node) {
+ value = '';
+ while (node) {
+ if (node.nodeType != DOMNode.TEXT_NODE)
+ throw Components.Exception('Expecting a text node', null, null,
+ node);
+ value += node.nodeValue;
+ node = node.nextSibling;
+ }
+ return value;
+ },
+
+ parseStruct: function(struct, node) {
+ while (node) {
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (!node)
+ return;
+ if ((node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'member')) {
+ throw Components.Exception('Expecting a member', null, null,
+ node);
+ }
+ this.parseMember(struct, node.firstChild);
+ node = node.nextSibling;
+ }
+ },
+
+ parseMember: function(struct, node) {
+ var cValue;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (!node || (node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'name')) {
+ throw Components.Exception('Expecting a name', null, null, node);
+ }
+ struct.name = this.parseString(node.firstChild);
+ cValue = this.parseValue(node.nextSibling);
+ struct.appendValue(cValue.value);
+ },
+
+ parseArray: function(array, node) {
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (!node || (node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'data')) {
+ throw Components.Exception('Expecting array data', null, null, node);
+ }
+ for (node = node.firstChild; node; node = node.nextSibling) {
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ continue;
+ array.appendValue(this.parseValue(node).value);
+ }
+ },
+
+ parseFault: function(node) {
+ var fault = createInstance(XMLRPCFAULT_CONTRACTID, 'nsIXmlRpcFault');
+ var cValue = this.parseValue(node);
+ if ((cValue.type != this.STRUCT) ||
+ (!cValue.value.hasKey('faultCode')) ||
+ (!cValue.value.hasKey('faultString'))) {
+ throw Components.Exception('Invalid fault', null, null, node);
+ }
+ fault.init(cValue.value.getValue('faultCode').data,
+ cValue.value.getValue('faultString').data);
+ return fault;
+ }
+};
+
+/* The XMLWriter class constructor */
+function XMLWriter(encoding) {
+ if (!encoding)
+ encoding = "UTF-8";
+ this.data = '<?xml version="1.0" encoding="' + encoding + '"?>';
+}
+
+/* The XMLWriter class def */
+XMLWriter.prototype = {
+ data: '',
+
+ startElement: function(element) {
+ this.data += '<' + element + '>';
+ },
+
+ endElement: function(element) {
+ this.data += '</' + element + '>';
+ },
+
+ write: function(text) {
+ for (var i = 0; i < text.length; i++) {
+ var c = text[i];
+ switch (c) {
+ case '<':
+ this.data += '<';
+ break;
+ case '&':
+ this.data += '&';
+ break;
+ default:
+ this.data += c;
+ }
+ }
+ },
+
+ markup: function(text) { this.data += text }
+};
+
+/* The Value class contructor */
+function Value() { this.type = this.STRING; };
+
+/* The Value class def */
+Value.prototype = {
+ INT: nsXmlRpcClient.prototype.INT,
+ BOOLEAN: nsXmlRpcClient.prototype.BOOLEAN,
+ STRING: nsXmlRpcClient.prototype.STRING,
+ DOUBLE: nsXmlRpcClient.prototype.DOUBLE,
+ DATETIME: nsXmlRpcClient.prototype.DATETIME,
+ ARRAY: nsXmlRpcClient.prototype.ARRAY,
+ STRUCT: nsXmlRpcClient.prototype.STRUCT,
+ BASE64: nsXmlRpcClient.prototype.BASE64,
+
+ _createType: nsXmlRpcClient.prototype.createType,
+
+ name: null,
+
+ _value: null,
+ get value() { return this._value; },
+ set value(val) {
+ // accepts [0-9]+ or x[0-9a-fA-F]+ and returns the character.
+ function entityTrans(substr, code) {
+ return String.fromCharCode("0" + code);
+ }
+
+ switch (this.type) {
+ case this.STRING:
+ val = val.replace(/&#([0-9]+);/g, entityTrans);
+ val = val.replace(/&#(x[0-9a-fA-F]+);/g, entityTrans);
+ val = val.replace(/</g, '<');
+ val = val.replace(/>/g, '>');
+ val = val.replace(/&/g, '&');
+ this._value.data = val;
+ break;
+
+ case this.BOOLEAN:
+ this._value.data = (val == 1);
+ break;
+
+ case this.DATETIME:
+ this._value.data = Date.UTC(val.slice(0, 4),
+ val.slice(4, 6) - 1, val.slice(6, 8), val.slice(9, 11),
+ val.slice(12, 14), val.slice(15));
+ break;
+
+ case this.BASE64:
+ this._value.data = base64ToString(val);
+ break;
+
+ default:
+ this._value.data = val;
+ }
+ },
+
+ _type: null,
+ get type() { return this._type; },
+ set type(type) {
+ this._type = type;
+ if (type == this.BASE64)
+ this._value = this._createType(this.STRING, {});
+ else this._value = this._createType(type, {});
+ },
+
+ appendValue: function(val) {
+ switch (this.type) {
+ case this.ARRAY:
+ this.value.AppendElement(val);
+ break;
+
+ case this.STRUCT:
+ this.value.setValue(this.name, val);
+ break;
+ }
+ }
+};
+
+/*
+ * Objects
+ */
+
+/* nsXmlRpcClient Module (for XPCOM registration) */
+var nsXmlRpcClientModule = {
+ registerSelf: function(compMgr, fileSpec, location, type) {
+ compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
+
+ compMgr.registerFactoryLocation(XMLRPCCLIENT_CID,
+ 'XML-RPC Client JS component',
+ XMLRPCCLIENT_CONTRACTID,
+ fileSpec,
+ location,
+ type);
+ compMgr.registerFactoryLocation(XMLRPCFAULT_CID,
+ 'XML-RPC Fault JS component',
+ XMLRPCFAULT_CONTRACTID,
+ fileSpec,
+ location,
+ type);
+ },
+
+ getClassObject: function(compMgr, cid, iid) {
+ if (!cid.equals(XMLRPCCLIENT_CID) && !cid.equals(XMLRPCFAULT_CID))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+
+ if (!iid.equals(Components.interfaces.nsIFactory))
+ throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
+
+ if (cid.equals(XMLRPCCLIENT_CID))
+ return nsXmlRpcClientFactory
+ else return nsXmlRpcFaultFactory;
+ },
+
+ canUnload: function(compMgr) { return true; }
+};
+
+/* nsXmlRpcClient Class Factory */
+var nsXmlRpcClientFactory = {
+ createInstance: function(outer, iid) {
+ if (outer != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+
+ if (!iid.equals(XMLRPCCLIENT_IID) &&
+ !iid.equals(Components.interfaces.nsISupports))
+ throw Components.results.NS_ERROR_INVALID_ARG;
+
+ return new nsXmlRpcClient();
+ }
+}
+
+/* nsXmlRpcFault Class Factory */
+var nsXmlRpcFaultFactory = {
+ createInstance: function(outer, iid) {
+ if (outer != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+
+ if (!iid.equals(XMLRPCFAULT_IID) &&
+ !iid.equals(Components.interfaces.nsISupports))
+ throw Components.results.NS_ERROR_INVALID_ARG;
+
+ return new nsXmlRpcFault();
+ }
+}
+
+/*
+ * Functions
+ */
+
+/* module initialisation */
+function NSGetModule(comMgr, fileSpec) { return nsXmlRpcClientModule; }
+
+/* Create an instance of the given ContractID, with given interface */
+function createInstance(contractId, intf) {
+ return Components.classes[contractId]
+ .createInstance(Components.interfaces[intf]);
+}
+
+/* Get a pointer to a service indicated by the ContractID, with given interface */
+function getService(contractId, intf) {
+ return Components.classes[contractId]
+ .getService(Components.interfaces[intf]);
+}
+
+/* Convert an inputstream to a scriptable inputstream */
+function toScriptableStream(input) {
+ var SIStream = Components.Constructor(
+ '@mozilla.org/scriptableinputstream;1',
+ 'nsIScriptableInputStream', 'init');
+ return new SIStream(input);
+}
+
+/* format a Date object into a iso8601 datetime string, UTC time */
+function iso8601Format(date) {
+ var datetime = date.getUTCFullYear();
+ var month = String(date.getUTCMonth() + 1);
+ datetime += (month.length == 1 ? '0' + month : month);
+ var day = date.getUTCDate();
+ datetime += (day < 10 ? '0' + day : day);
+
+ datetime += 'T';
+
+ var hour = date.getUTCHours();
+ datetime += (hour < 10 ? '0' + hour : hour) + ':';
+ var minutes = date.getUTCMinutes();
+ datetime += (minutes < 10 ? '0' + minutes : minutes) + ':';
+ var seconds = date.getUTCSeconds();
+ datetime += (seconds < 10 ? '0' + seconds : seconds);
+
+ return datetime;
+}
+
+/* Convert a stream to Base64, writing it away to a string writer */
+const BASE64CHUNK = 255; // Has to be dividable by 3!!
+function streamToBase64(stream, writer) {
+ while (stream.available()) {
+ var data = [];
+ while (data.length < BASE64CHUNK && stream.available()) {
+ var d = stream.read(1).charCodeAt(0);
+ // reading a 0 results in NaN, compensate.
+ data = data.concat(isNaN(d) ? 0 : d);
+ }
+ writer.write(toBase64(data));
+ }
+}
+
+/* Convert data (an array of integers) to a Base64 string. */
+const toBase64Table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' +
+ '0123456789+/';
+const base64Pad = '=';
+function toBase64(data) {
+ var result = '';
+ var length = data.length;
+ var i;
+ // Convert every three bytes to 4 ascii characters.
+ for (i = 0; i < (length - 2); i += 3) {
+ result += toBase64Table[data[i] >> 2];
+ result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
+ result += toBase64Table[((data[i+1] & 0x0f) << 2) + (data[i+2] >> 6)];
+ result += toBase64Table[data[i+2] & 0x3f];
+ }
+
+ // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
+ if (length%3) {
+ i = length - (length%3);
+ result += toBase64Table[data[i] >> 2];
+ if ((length%3) == 2) {
+ result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
+ result += toBase64Table[(data[i+1] & 0x0f) << 2];
+ result += base64Pad;
+ } else {
+ result += toBase64Table[(data[i] & 0x03) << 4];
+ result += base64Pad + base64Pad;
+ }
+ }
+
+ return result;
+}
+
+/* Convert Base64 data to a string */
+const toBinaryTable = [
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
+ 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
+ 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
+ -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
+ 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
+];
+function base64ToString(data) {
+ var result = '';
+ var leftbits = 0; // number of bits decoded, but yet to be appended
+ var leftdata = 0; // bits decoded, but yet to be appended
+
+ // Convert one by one.
+ for (var i = 0; i < data.length; i++) {
+ var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
+ var padding = (data[i] == base64Pad);
+ // Skip illegal characters and whitespace
+ if (c == -1) continue;
+
+ // Collect data into leftdata, update bitcount
+ leftdata = (leftdata << 6) | c;
+ leftbits += 6;
+
+ // If we have 8 or more bits, append 8 bits to the result
+ if (leftbits >= 8) {
+ leftbits -= 8;
+ // Append if not padding.
+ if (!padding)
+ result += String.fromCharCode((leftdata >> leftbits) & 0xff);
+ leftdata &= (1 << leftbits) - 1;
+ }
+ }
+
+ // If there are any bits left, the base64 string was corrupted
+ if (leftbits)
+ throw Components.Exception('Corrupted base64 string');
+
+ return result;
+}
+
+if (DEBUG) debug = function(msg) {
+ dump(' -- XML-RPC client -- : ' + msg + '\n');
+};
+else debug = function() {}
+
+// vim:sw=4:sr:sta:et:sts:
--- /dev/null
+
+pref("extensions.tiny.serverurl", "http://localhost");
+pref("extensions.tiny.serverport", "8069");
+pref("extensions.tiny.serverdbname", "terp");
+pref("extensions.tiny.username","admin");
+pref("extensions.tiny.password","admin");
+pref("extensions.tiny.senderemail","");
+pref("extensions.tiny.sendername","");
+pref("extensions.tiny.receiveremail","");
+pref("extensions.tiny.subject","");
+pref("extensions.tiny.receiveddate","");
+pref("extensions.tiny.partnerid","");
+pref("extensions.tiny.contactid","");
+pref("extensions.tiny.attachvalue","");
+pref("extensions.tiny.cclist","");
+pref("extensions.tiny.messagebody","");
+pref("extensions.tiny.displayName","");
+pref("extensions.tiny.attachmentdata","");
+pref("extensions.tiny.userid",3);
+pref("extensions.tiny.partnername","");
+pref("extensions.tiny.officeno","");
+pref("extensions.tiny.phoneno","");
+pref("extensions.tiny.address","");
+pref("extensions.tiny.listobject","Partner,Partner Address,Accout Invoice,Project,Product,Account,Sale Order,Project Task");
+pref("extensions.tiny.object","res.partner,res.partner.address,account.invoice,project.project,product.product,account.account,sale.order,project.task");
+pref("extensions.tiny.imagename","chrome://openerp_plugin/skin/Partner.png,chrome://openerp_plugin/skin/Contact.png,chrome://openerp_plugin/skin/Invoice.png,chrome://openerp_plugin/skin/Project.png,chrome://openerp_plugin/skin/Product.png,chrome://openerp_plugin/skin/Account.png,chrome://openerp_plugin/skin/Sale.png,chrome://openerp_plugin/skin/Case.png,chrome://openerp_plugin/skin/Task.png");
+pref("extensions.tiny.attachmentlength","");
+pref("extensions.tiny.attachment","");
+pref("extensions.tiny.db_list","false");
+pref("extensions.tiny.connect_server","false");
+pref("extensions.tiny.module_install","yes");
+pref("extensions.tiny.serverprotocol", "false");
+
+
+
+pref("mboximport.export.filenames_toascii", false);
+pref("mboximport.export.overwrite", false);
+pref("mboximport.confirm.before_mbox_import", true);
+pref("mboximport.clipboard.always_just_text", false);
+pref("mboximport.export.HTML_as_displayed", false);
+pref("mboximport.exportEML.filename_format", 0);
+pref("mboximport.delay.clean_statusbar", 5000);
+pref("mboximport.subject.max_length", 50);
+pref("mboximport.author.max_length", 50);
+pref("mboximport.recipients.max_length", 50);
+pref("extensions.{3ed8cc52-86fc-4613-9026-c1ef969da4c3}.description", "chrome://mboximport/locale/mboximport.properties");
+pref("mboximport.export.set_filetime", false);
+pref("mboximport.exportEML.use_dir", false);
+pref("mboximport.exportMBOX.use_dir", false);
+pref("mboximport.exportMSG.use_dir", false);
+pref("mboximport.export.filenames_addtime", false);
+pref("mboximport.export_all.warning1", true);
+pref("mboximport.export_all.warning2", true);
+
+pref("mboximport.exportMSG.dir", "/tmp");
+
--- /dev/null
+// constants
+const APP_DISPLAY_NAME = "OpenERP Thunderbird Plugins";
+const APP_NAME = "OpenERP";
+const APP_VERSION = "1.0";
+const WARNING = "WARNING: You need administrator privileges to install OpenERP Thunderbird Plugin. It will be installed in the application directory for all users.";
+const VERSION_ERROR = "This extension can only be installed in a version higher than 2.0";
+const NOT_WRITABLE_ERROR = "This extension requires write access to the application directory to install properly."
+const locales = [
+ "en-US",
+ null
+];
+
+// Gecko 1.7 doesn't support custom button labels
+var incompatible = (typeof Install.BUTTON_POS_0 == "undefined");
+if (incompatible)
+ alert(VERSION_ERROR);
+
+if (!incompatible) {
+ // Check whether all directories can be accessed
+ var dirList = [
+ getFolder("Components"),
+ getFolder(getFolder("Program", "defaults"), "pref")
+ ];
+ for (var i = 0; i < dirList.length; i++)
+ if (!File.isWritable(dirList[i]))
+ incompatible = true;
+
+ if (incompatible)
+ alert(NOT_WRITABLE_ERROR);
+}
+
+if (!incompatible && confirm(WARNING, APP_DISPLAY_NAME)) {
+ /* Pre-Install Cleanup (for prior versions) */
+
+ // List of files to be checked
+ var checkFiles = [
+ [getFolder("Components"), "nsXmlRpcClient.js"], // Root component
+ [getFolder("Components"), "xml-rpc.xpt"], // Component interface
+ ];
+
+ // Remove any existing files
+ initInstall("pre-install", "/rename", "0.0"); // open dummy-install
+ for (var i = 0 ; i < checkFiles.length ; i++) {
+ var currentDir = checkFiles[i][0];
+ var name = checkFiles[i][1];
+ var oldFile = getFolder(currentDir, name);
+
+ // Find a name to rename the file into
+ var newName = name + "-uninstalled";
+ for (var n = 1; File.exists(oldFile) && File.exists(getFolder(currentDir, newName)); n++)
+ newName = name + n + "-uninstalled";
+
+ if (File.exists(oldFile))
+ File.rename(oldFile, newName);
+ }
+ performInstall(); // commit renamed files
+
+ /* Main part of the installation */
+
+ var chromeType = DELAYED_CHROME;
+
+ var files = [
+ ["components/nsXmlRpcClient.js", getFolder("Components")],
+ ["components/xml-rpc.xpt", getFolder("Components")],
+ ["defaults/preferences/tiny.js", getFolder(getFolder("Program", "defaults"), "pref")],
+ ];
+
+ // initialize our install
+ initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);
+
+ // Add files
+ for (var i = 0; i < files.length; i++)
+ addFile(APP_NAME, APP_VERSION, files[i][0], files[i][1], null);
+
+ try {
+ var err = registerChrome(CONTENT | chromeType, jar, "content/");
+ if (err != SUCCESS)
+ throw "Chrome registration for content failed (error code " + err + ").";
+
+ err = registerChrome(SKIN | chromeType, jar, "skin/classic/");
+ if (err != SUCCESS)
+ throw "Chrome registration for skin failed (error code " + err + ").";
+
+ for (i = 0; i < locales.length; i++) {
+ if (!locales[i])
+ continue;
+
+ err = registerChrome(LOCALE | chromeType, jar, "locale/" + locales[i] + "/");
+ if (err != SUCCESS)
+ throw "Chrome registration for " + locales[i] + " locale failed (error code " + err + ").";
+ }
+
+ var err = performInstall();
+ if (err != SUCCESS && err != 999)
+ throw "Committing installation failed (error code " + err + ").";
+
+ alert("OpenERP Thunderbird Plugin " + APP_VERSION + " is now installed.\n" +
+ "It will become active after you restart your browser.");
+ }
+ catch (ex) {
+ alert("Installation failed: " + ex + "\n" +
+ "You probably don't have the necessary permissions (log in as system administrator).");
+ cancelInstall(err);
+ }
+}
--- /dev/null
+<?xml version="1.0"?>\r
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">\r
+ <Description about="urn:mozilla:install-manifest">\r
+ <em:id>{d57f315a-9f5d-4366-a530-a769a4a8c949}</em:id>\r
+ <em:iconURL>chrome://openerp_plugin/skin/tinyerp-icon.ico</em:iconURL>\r
+ <em:name>OpenERP Plugin for Thunderbird 2.0</em:name>\r
+ <em:version>1.0</em:version>\r
+ <em:description>OpenERP Thunderbird Integration</em:description>\r
+ <em:creator>OpenERP SA</em:creator>\r
+ <!-- optional items -->\r
+ <em:homepageURL>http://openerp.com</em:homepageURL>\r
+ <!-- Thunderbird -->\r
+ <em:targetApplication>\r
+ <Description>\r
+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>\r
+ <em:minVersion>2.0</em:minVersion>\r
+ <em:maxVersion>3.0.*</em:maxVersion>\r
+ </Description>\r
+ </em:targetApplication>\r
+ </Description>\r
+</RDF>\r
--- /dev/null
+content openerp_plugin jar:chrome/openerp_plugin.jar!/content/
+overlay chrome://messenger/content/messenger.xul chrome://openerp_plugin/content/overlay.xul
+locale openerp_plugin en-US jar:chrome/openerp_plugin.jar!/locale/en-US/
+skin openerp_plugin classic/1.0 jar:chrome/openerp_plugin.jar!/skin/
+#style chrome://global/content/customizeToolbar.xul chrome://openerp_plugin/skin/overlay.css
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/address.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" onload="myPrefObserver.createContactAddress()" height="380" width="800">
+
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+
+<tabpanel id="contact">
+ <groupbox id="contact">
+ <hbox>
+ <label align="right" id="emailid" value="&emailid.value;" width="94" />
+ <textbox id="txtemail" width="268" align="right"/>
+ <spacer width="5"/>
+ <button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
+ <button label="&bsearch.label;" oncommand="searchContactdetail();" image="&imagesearch.value;"/>
+ </hbox>
+ <hbox>
+ <label align="right" id="name" value="&name.value;" width="80" />
+ <textbox id="txtname" align="right" width="270" readonly="true"/>
+ <spacer width="5"/>
+ <button label="New Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);" width="133"/>
+ </hbox>
+ </groupbox>
+</tabpanel>
+
+<tabpanel id="address">
+ <groupbox id="address">
+ <hbox>
+ <caption label="&postaladdress.value;" />
+ <spacer width="300"/>
+ <vbox>
+ <caption label="&communication.value;" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="contactname" value="&contactname.value;" width="80" />
+ <textbox id="txtcontactname" align="right" width="270" />
+ <spacer width="33"/>
+ <vbox>
+ <label align="right" id="office" value="&office.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtoffice" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="street" value="&street.value;" width="97" />
+ <textbox id="txtstreet" width="270"/>
+ <spacer width="33"/>
+ <vbox>
+ <label align="right" id="mobile" value="&mobile.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtmobile"/>
+ </vbox>
+ </hbox>
+ <hbox>
+ <label align="right" id="street2" value="&street2.value;" width="97" />
+ <textbox id="txtstreet2" width="270"/>
+ <spacer width="35"/>
+ <vbox>
+ <label align="right" id="fax" value="&fax.value;" width="48" />
+ </vbox>
+ <vbox>
+ <textbox id="txtfax" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="zip" value="&zip.value;" width="97" />
+ <textbox id="txtzip" />
+ <spacer width="115"/>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="city" value="&city.value;" width="97" />
+ <textbox id="txtcity" />
+ </hbox>
+
+ <hbox>
+ <label align="right" id="countryname" value="&country.value;" width="97" />
+ <menulist id="country" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="statename" value="&state.value;" width="97" />
+ <menulist id="state" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+</groupbox>
+</tabpanel>
+
+<description></description>
+
+<hbox>
+ <spacer width="600"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&ok.label;" image="&imageok.value;" oncommand="UpdateContact();"/>
+
+</hbox>
+
+</window>
--- /dev/null
+
+function config_close()
+{
+ //window.close("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ //ksa
+ window.close("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");
+}
+
+//set the value of the configuration fields
+function config_change_load()
+{
+ var s = getServer();
+ var a =s.split(':');
+ if (String(a)=="" || String(a)=="undefined"){
+ document.getElementById('txtcurl').value = "localhost"
+ document.getElementById('txtcport').value = "8069"
+ }
+ else
+ {
+ len = a[1];
+ var url = "";
+ for (i=0;i<len.length;i++)
+ { if (len[i] == "/")
+ {
+ continue
+ }
+ url += len[i]
+ }
+ if (String(url) == "" || String(url) == "undefined"){
+ document.getElementById('txtcurl').value = "localhost"
+ }
+ else
+ {
+ document.getElementById('txtcurl').value = url
+ }
+
+ if (String(a[2]) == "" || String(a[2]) == "undefined"){
+ document.getElementById('txtcport').value = "8069"
+ setPort("8069");
+ }
+ else
+ {
+ document.getElementById('txtcport').value = a[2]
+ setPort(a[2]);
+ }
+
+ }
+}
+function config_ok()
+{
+ if (document.getElementById('txtcurl').value == '')
+ {
+ alert("You Must Enter Server Name!")
+ return false;
+
+ }
+ if (document.getElementById('txtcport').value == '')
+ {
+ alert("You Must Enter Port!")
+ return false;
+ }
+ setServer("http://"+document.getElementById('txtcurl').value +":" + document.getElementById('txtcport').value);
+ window.close("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ //ksa
+ window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");
+}
+function openConfigChange()
+{
+ //window.open("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+ //ksa
+ window.close("chrome://openerp_plugin/content/config.xul", "", "chrome");
+ window.open("chrome://openerp_plugin/content/config_change.xul", "", "chrome");
+}
+
+function appendDbList()
+{
+ setServerService('xmlrpc/db');
+ getDbList('DBlist');
+}
+
+//set the database list in the listbox in configuration window
+function setDb()
+{
+ var cmbDbList = document.getElementById('listDBListBox');
+ document.getElementById('DBlist').value = cmbDbList.getItemAtIndex(cmbDbList.selectedIndex).value;
+}
+
+//stores the value of configuration fields in preferences
+function okClick()
+{
+ if (getDBList()=="false")
+ {
+ if (document.getElementById('DBlist_text').value =='')
+ {
+ alert("You Must Enter Database Name");
+ return false;
+ }
+ setDbName(document.getElementById('DBlist_text').value);
+ }
+ else if(document.getElementById('DBlist') != null)
+ {
+ setDbName(document.getElementById('DBlist').value);
+ }
+ setServer(document.getElementById('txturl').value);
+ var s = document.getElementById('txturl').value;
+ var a =s.split(':');
+ setPort(a[a.length-1]);
+ setUsername(document.getElementById('txtusername').value);
+ setPassword(document.getElementById('txtpassword').value);
+ window.close();
+}
+
+//deletes the value of the selected value in the listbox in configuraton menu
+function deleteDocument(){
+ if(document.getElementById("listObjectListBox").selectedItem){
+ var objectlist = getPref().getCharPref("object").split(',');
+ var imagelist = getPref().getCharPref("imagename").split(',');
+ var objlist = getPref().getCharPref("listobject").split(',');
+ if(objectlist.length>0){
+ var objectcharpref = '';
+ var imagecharpref = '';
+ var objcharpref = '';
+ var nodelist = document.getElementById("listObjectListBox").selectedItem.childNodes
+ var childnode = document.getElementById("listObjectListBox").childNodes
+ for(i=2;i<childnode.length;i++){
+ if(childnode[i].hasChildNodes){
+ var secondchild = childnode[i].childNodes;
+ if (secondchild[1].getAttribute("label") != nodelist[1].getAttribute("label")){
+ objcharpref += secondchild[0].getAttribute("label")+',';
+ objectcharpref += secondchild[1].getAttribute("label")+',';
+ imagecharpref += secondchild[2].getAttribute("image")+',';
+ }
+ }
+ }
+ var demo3 = objectcharpref.substring(0,objectcharpref.length-1);
+ var demo4 = imagecharpref.substring(0,imagecharpref.length-1);
+ var demo5 = objcharpref.substring(0,objcharpref.length-1);
+
+ getPref().setCharPref("listobject",demo5);
+ getPref().setCharPref("object",demo3);
+ getPref().setCharPref("imagename",demo4);
+ }
+ document.getElementById("listObjectListBox").removeItemAt(document.getElementById("listObjectListBox").selectedIndex)
+ }
+ else{
+ alert("No Document Selected");
+ }
+}
+
+//function to add the image file for the checkbox
+function addFile(){
+ var nsIFilePicker = Components.interfaces.nsIFilePicker;
+ var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
+ fp.init(this, "Select a File", nsIFilePicker.modeOpen);
+ fp.appendFilters(nsIFilePicker.filterImages);
+ var res = fp.show();
+ if (res == nsIFilePicker.returnOK){
+ var thefile = fp.file;
+ document.getElementById("txtimagename").value = thefile.path
+ }
+}
+
--- /dev/null
+<?xml version="1.0"?>\r
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>\r
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/config.dtd">\r
+\r
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\r
+ xmlns:html="http://www.w3.org/1999/xhtml"\r
+ title="&title.label;" onload="myPrefObserver.register();" unload="myPrefObserver.unregister()" height="410" width="900">\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>\r
+<tabbox>\r
+ <tabs>\r
+ <tab label="Configuration Settings"/>\r
+ <tab label="Document Settings"/>\r
+ <tab label="About"/>\r
+ </tabs>\r
+ <tabpanels>\r
+ <tabpanel id="configtab">\r
+ <vbox >\r
+ <groupbox id="gpConnection" width="770" height="300" align ="center" >\r
+ <caption label="&gpConnection.label;"/>\r
+ <hbox>\r
+ <label align="right" id="url" value="&txturl.label;" width="80" />\r
+ <textbox id="txturl" width="200" readonly="true" />\r
+ <button label="&getdblist.label;" oncommand="openConfigChange();" image="&imagesearch.value;" width="90"/>\r
+ </hbox>\r
+ <hbox align="center" id="database_option">\r
+ </hbox>\r
+ <hbox id="first">\r
+ <label align="right" id="lbldb_list1" control="DBlist" value="&database.label;" width="80"/>
+ <textbox id="DBlist_text" width="300"/>\r
+ </hbox>\r
+\r
+ <hbox >\r
+ <label align="right" control="txtusername" value="&username.label;" width="80"/>\r
+ <textbox id="txtusername" width="300"/>\r
+ </hbox>\r
+ <hbox>\r
+ <label align="right" control="txtpassword" value="&password.label;" width="80"/>\r
+ <textbox id="txtpassword" type="password" width="300"/>\r
+ </hbox>\r
+ <hbox >\r
+ <spacer width="290"/>\r
+ <button align="center" id="btconnection" label="&connection.label;" oncommand="testConnection();" image="&imageok.value;" width="100"/>\r
+ </hbox>\r
+ </groupbox>\r
+ </vbox>\r
+ </tabpanel>\r
+ <tabpanel id="objecttab">\r
+ <groupbox id="gpObject" width="700" >\r
+ <caption label="&listDocument.header;"/>\r
+ <hbox>\r
+ <vbox>\r
+ <hbox>\r
+ <label control="txtobject" value="Title : " />\r
+ <textbox id="txtobj" width="100"/>\r
+ <label control="txtobject" value="&document.label;"/>\r
+ <textbox id="txtobject" width="100"/>\r
+ <label control="txtimagename" value="&image.label;"/>\r
+ <textbox id="txtimagename" width="100" readonly="true" />\r
+ <button id="btaddfile" label="&addfile.label;" oncommand="addFile();" image="&imagemoveleft.value;"/>\r
+ \r
+ <button id="btobjectcreate" label="&documentcreate.label;" oncommand="searchDocument();" image="&imagemovedown.value;"/>\r
+ <button id="btobjectdelete" label="&documentdelete.label;" oncommand="deleteDocument();" image="&imagecancel.value;"/>\r
+ </hbox>\r
+ \r
+ <listbox id="listObjectListBox" flex="1" rows="10">\r
+ <listhead>\r
+ <listheader label="Title"/>\r
+ <listheader label="&listDocumentListBox.header;"/>\r
+ <listheader label="Image"/>\r
+ </listhead>\r
+ <listcols>\r
+ <listcol flex="1"/>\r
+ <listcol flex="2"/>\r
+ <listcol flex="3"/>\r
+ </listcols>\r
+ </listbox>\r
+ </vbox>\r
+ <vbox>\r
+ <description> </description>\r
+ </vbox>\r
+ </hbox>\r
+ </groupbox>\r
+ </tabpanel>\r
+ <tabpanel id="abouttab">\r
+ <groupbox id="gpAbout" width="770" align="center">\r
+ <caption label="&gpAbout.label;"/>\r
+ <image src="chrome://openerp_plugin/skin/developped_by.png" sizemode="stretch" align="center"/>\r
+ <description> </description>\r
+ <description> </description>\r
+ <description>&develop.value;</description>\r
+ <description> </description>\r
+ <description> </description>\r
+ <description>&information.value;</description>\r
+ <description><html:a href="&openerp.value;">&openerp.value;</html:a></description>\r
+ <description><html:a href="&axelor.value;">&axelor.value;</html:a></description>\r
+ <description><html:a href="&tinyerp.value;">&tinyerp.value;</html:a></description>\r
+ <description> </description>\r
+ <description> </description>\r
+ <description>Copyright © 2006-TODAY OpenERP SA All Rights Reserved.</description>\r
+ <description>OpenERP is a trademark of the OpenERP SA Company. OpenERP Web is jointly developed by OpenERP SA and Axelor.</description>\r
+ <description>Licenced under the terms of <html:a href="https://tiny.odoo.com/LICENSE.txt"> OpenERP Public License (OEPL) v1.1 (https://tiny.odoo.com/LICENSE.txt)</html:a> </description>\r
+ </groupbox>\r
+ </tabpanel>\r
+ </tabpanels>\r
+</tabbox>\r
+<hbox align="center">\r
+ <spacer width="800"/>\r
+ <button label="&close.label;" oncommand="close();" image="&imagecancel.value;"/>\r
+</hbox>\r
+</window>\r
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/config_change.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml" onload="config_change_load()"
+ title="Openerp Connection" height="140" width="280">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+ <hbox>
+ <spacer width="70"/>
+ <description>Openerp Connection</description>
+ </hbox>
+<groupbox id="gpData" width="200">
+ <hbox >
+ <label id="lblurl" control="txtcurl" value="&lblurl.label;" width="80"/>
+ <textbox id="txtcurl" width="100" />
+ </hbox>
+ <hbox>
+ <label id="lblport" control="txtcport" value="&lblport.label;" width="80"/>
+ <textbox id="txtcport" width="100" />
+ </hbox>
+
+</groupbox>
+<hbox align="right">
+ <spacer width="50"/>
+ <button label="Cancel" image="&imagecancel.value;" oncommand="config_close();" />
+ <button label="OK" image="&imageok.value;" oncommand="config_ok()"/>
+</hbox>
+
+</window>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/create.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" onload="myPrefObserver.createContact()" height="350" width="780">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<tabpanel id="contact">
+ <groupbox id="contact">
+ <hbox>
+ <label align="right" id="partner" value="&selectpartner.value;" width="97" />
+ <textbox id="txtselectpartner" readonly="true" value="" width="270"/>
+ <button label="&bsearch.label;" oncommand="Select.onMenuItemCommand(event);" image="&imagesearch.value;"/>
+ </hbox>
+ <hbox>
+ <label align="right" id="name" value="&name.value;" width="80" />
+ <textbox id="txtname" align="right" width="270"/>
+ </hbox>
+ </groupbox>
+ </tabpanel>
+
+ <tabpanel id="address">
+ <groupbox id="address">
+ <hbox>
+ <caption label="&postaladdress.value;" />
+ <spacer width="300"/>
+ <vbox>
+ <caption label="&communication.value;" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="street" value="&street.value;" width="97" />
+ <textbox id="txtstreet" width="270"/>
+ <spacer width="33"/>
+ <vbox>
+ <label align="right" id="office" value="&office.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtoffice" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="street2" value="&street2.value;" width="97" />
+ <textbox id="txtstreet2" width="270"/>
+ <spacer width="35"/>
+ <vbox>
+ <label align="right" id="fax" value="&fax.value;" width="48" />
+ </vbox>
+ <vbox>
+ <textbox id="txtfax" />
+ </vbox>
+ </hbox>
+ <hbox>
+ <label align="right" id="zip" value="&zip.value;" width="97" />
+ <textbox id="txtzip" />
+ <spacer width="114"/>
+ <vbox>
+ <label align="right" id="mobile" value="&mobile.value;" width="48" />
+ </vbox>
+ <vbox>
+ <textbox id="txtmobile"/>
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="city" value="&city.value;" width="97"/>
+ <textbox id="txtcity" />
+ <spacer width="112"/>
+ <vbox>
+ <label align="right" id="emailid" value="&email.value;" width="50" />
+ </vbox>
+ <vbox>
+ <textbox id="txtemail" width="260" />
+ </vbox>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="countryname" value="&country.value;" width="97" />
+ <menulist id="country" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+
+ <hbox>
+ <label align="right" id="statename" value="&state.value;" width="97" />
+ <menulist id="state" width="190">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ </hbox>
+</groupbox>
+</tabpanel>
+<description></description>
+<hbox>
+ <spacer width="580"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&ok.label;" image="&imageok.value;" oncommand="createContact();"/>
+</hbox>
+
+</window>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/createpartner.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" height="100" width="325">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<groupbox id="gpData">
+ <hbox>
+ <description>&name.value;</description>
+ <spacer width="50"/>
+ <textbox id="txtname" align="right" />
+ </hbox>
+</groupbox>
+<description></description>
+<hbox>
+ <spacer width="140"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&ok.label;" image="&imageok.value;" oncommand="createPartner();"/>
+</hbox>
+
+</window>
--- /dev/null
+
+var MBstrBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].
+ getService(Components.interfaces.nsIStringBundleService);
+var mboximportbundle = MBstrBundleService.createBundle("chrome://openerp_plugin/locale/mboximport.properties");
+
+
+function saveMsgAsEML(msguri,file,append,uriArray,hdrArray,fileArray) {
+
+ var myEMLlistner = {
+
+ scriptStream : null,
+ emailtext : "",
+
+ QueryInterface : function(iid) {
+ if (iid.equals(Components.interfaces.nsIStreamListener) ||
+ iid.equals(Components.interfaces.nsIMsgHeaderSink) ||
+ iid.equals(Components.interfaces.nsISupports))
+ return this;
+
+ throw Components.results.NS_NOINTERFACE;
+ return 0;
+ },
+
+ onStartRequest : function (aRequest, aContext) {
+ this.scriptStream = Components.classes['@mozilla.org/binaryinputstream;1'].createInstance(Components.interfaces.nsIBinaryInputStream);
+ },
+
+ onStopRequest : function (aRequest, aContext, aStatusCode) {
+ this.scriptStream = null;
+
+ if (append) {
+ if (this.emailtext != "") {
+ var data = this.emailtext + "\n";
+ // Some Imap servers don't add to the message the "From" prologue
+ if (data && ! data.match(/^From/)) {
+ var now = new Date;
+ var prologue = "From - " + now.toString() + "\n";
+ data = prologue+data;
+ }
+ data = IETescapeBeginningFrom(data);
+ }
+ var fileClone = file.clone();
+ IETwriteDataOnDisk(fileClone,data,true,this.sub,null);
+ }
+ else {
+ if (! hdrArray)
+ var sub = getSubjectForHdr(hdr);
+ else {
+ var parts = hdrArray[IETexported].split("§][§^^§");
+ var sub = parts[4];
+ }
+
+ var data = this.emailtext.replace(/^From.+\r?\n]/, "");
+ data = IETescapeBeginningFrom(data);
+ var clone = file.clone();
+ // The name is taken from the subject "corrected"
+ clone.append(sub+".eml");
+ clone.createUnique(0,0644);
+ var time = (hdr.dateInSeconds)*1000;
+ IETwriteDataOnDisk(clone,data,false,null,time);
+ }
+ IETexported = IETexported + 1;
+ IETwritestatus(mboximportbundle.GetStringFromName("exported")+" "+IETexported+" "+mboximportbundle.GetStringFromName("msgs")+" "+IETtotal);
+
+ if (IETexported < IETtotal) {
+ if (fileArray) {
+ var nextUri = uriArray[IETexported];
+ var nextFile = fileArray[IETexported];
+ }
+ else if (! hdrArray) {
+ var nextUri = uriArray[IETexported];
+ var nextFile = file;
+ }
+ else {
+ parts = hdrArray[IETexported].split("§][§^^§");
+ var nextUri = parts[5];
+ var nextFile = file;
+ }
+ saveMsgAsEML(nextUri,nextFile,append,uriArray,hdrArray,fileArray);
+ }
+ else {
+ IETexported = 0;
+ IETtotal = 0;
+ }
+ },
+
+ onDataAvailable : function (aRequest, aContext, aInputStream, aOffset, aCount) {
+ this.scriptStream.setInputStream(aInputStream);
+ var chunk = this.scriptStream.readBytes(aCount);
+ this.emailtext += chunk;
+ }
+ };
+ var mms = messenger.messageServiceFromURI(msguri).QueryInterface(Components.interfaces.nsIMsgMessageService);
+ var hdr = mms.messageURIToMsgHdr(msguri);
+ mms.streamMessage(msguri, myEMLlistner, msgWindow, null, false, null);
+}
+
+
+function nametoascii(str) {
+ if (! gPrefBranch.getBoolPref("mboximport.export.filenames_toascii")) {
+ str = str.replace(/[\x00-\x19]/g,"_");
+ return str.replace(/[\/\\:,<>*\?\"\|]/g,"_");
+ }
+ if (str)
+ str = str.replace(/[^a-zA-Z0-9]/g,"_");
+ else
+ str = "Undefinied_or_empty";
+ return str;
+}
+
+
+function IETwriteDataOnDisk(file,data,append,name,time) {
+ var foStream = Components.classes["@mozilla.org/network/file-output-stream;1"]
+ .createInstance(Components.interfaces.nsIFileOutputStream);
+ if (append) {
+ file.append(name);
+ foStream.init(file, 0x02 | 0x08 | 0x10, 0664, 0); // write, create, append
+ }
+ else
+ foStream.init(file, 0x02 | 0x08 | 0x20, 0664, 0); // write, create, truncate
+ if (data)
+ foStream.write(data,data.length);
+ foStream.close();
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ if (time && prefs.getBoolPref("mboximport.export.set_filetime"))
+ file.lastModifiedTime = time;
+}
+
+
+
+function IETescapeBeginningFrom(data) {
+ // Workaround to fix the "From " in beginning line problem in body messages
+ // See https://bugzilla.mozilla.org/show_bug.cgi?id=119441 and
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=194382
+ // TB2 has uncorrect beahviour with html messages
+ // This is not very fine, but I didnt' find anything better...
+ var datacorrected = data.replace(/\nFrom /g, "\n From ");
+ return datacorrected;
+}
+
+
+function getPredefinedFolder(type) {
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ // type 0 = folder
+ // type 1 = all messages
+ // type 2 = selected messages
+
+ var use_dir = "mboximport.exportMSG.use_dir";
+
+ var dir_path="";
+ if(navigator.userAgent.indexOf('Linux')!= -1){
+ dir_path ="/tmp"
+ }
+ else if(navigator.userAgent.indexOf('Win')!= -1){
+ dir_path ="C:\\"
+ }
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
+ dir_path ="/tmp"
+ }
+ try {
+ var localFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+ localFile.initWithPath(dir_path);
+ return localFile;
+
+ }
+ catch(e) {
+ return null;
+ }
+}
+
+function getSubjectForHdr(hdr) {
+ var emlNameType = gPrefBranch.getIntPref("mboximport.exportEML.filename_format");
+ var mustcorrectname = gPrefBranch.getBoolPref("mboximport.export.filenames_toascii");
+ var subMaxLen = gPrefBranch.getIntPref("mboximport.subject.max_length")-1;
+ if (hdr.mime2DecodedSubject)
+
+ var subj = hdr.mime2DecodedSubject.substring(0, subMaxLen);
+ else
+ var subj =IETnosub;
+ subj = nametoascii(subj);
+ var dateInSec = hdr.dateInSeconds;
+ var msgDate8601string = dateInSecondsTo8601(dateInSec);
+ var key = hdr.messageKey;
+ if (emlNameType == 2) {
+ var pattern = gPrefBranch.getCharPref("mboximport.export.filename_pattern");
+ pattern = pattern.replace("%s",subj);
+ pattern = pattern.replace("%k",key);
+ pattern = pattern.replace("%d", msgDate8601string);
+ pattern = pattern.replace(/-%e/g, "");
+ pattern = pattern.replace(/[\x00-\x19]/g,"_");
+ var fname = pattern;
+ }
+ else {
+
+ var fname = msgDate8601string+"-"+subj+"-"+hdr.messageKey;
+ }
+ setFileName(fname)
+ fname = fname.replace(/[\x00-\x19]/g,"_");
+ if (mustcorrectname)
+ fname = nametoascii(fname);
+ else
+ fname = fname.replace(/[\/\\:,<>*\?\"\|]/g,"_");
+ return fname;
+}
+
+function dateInSecondsTo8601(secs) {
+ var addTime = gPrefBranch.getBoolPref("mboximport.export.filenames_addtime");
+ var msgDate = new Date(secs*1000);
+ var msgDate8601 = msgDate.getFullYear();
+ if (msgDate.getMonth() < 9)
+ var month = "0"+(msgDate.getMonth()+1);
+ else
+ var month = msgDate.getMonth()+1;
+ if (msgDate.getDate() < 10)
+ var day = "0"+ msgDate.getDate();
+ else
+ var day = msgDate.getDate();
+ var msgDate8601string = msgDate8601.toString()+month.toString()+day.toString();
+ if (addTime && gPrefBranch.getIntPref("mboximport.exportEML.filename_format") == 2) {
+ if (msgDate.getHours() < 10)
+ var hours = "0"+msgDate.getHours();
+ else
+ var hours = msgDate.getHours();
+ if (msgDate.getMinutes() < 10)
+ var min = "0"+msgDate.getMinutes();
+ else
+ var min = msgDate.getMinutes();
+ msgDate8601string += "-"+ hours.toString() + min.toString();
+ }
+ return msgDate8601string;
+}
+
+function IETwritestatus(text) {
+ document.getElementById("statusText").setAttribute("label", text);
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
+ var delay = prefs.getIntPref("mboximport.delay.clean_statusbar");
+ if (delay > 0)
+ window.setTimeout(function(){IETdeletestatus(text);}, delay);
+}
+
+function IETdeletestatus(text) {
+ if (document.getElementById("statusText").getAttribute("label") == text)
+ document.getElementById("statusText").setAttribute("label", "");
+}
+
+
--- /dev/null
+//gives the preference branch instance
+var preferenceBranch = getPref();
+
+//returns the selected checkbox for searching
+function getnamesearch()
+{
+ var checkboxlist = [];
+ var j=0;
+ var objectlist = preferenceBranch.getCharPref("object").split(',');
+ if (objectlist[0]!=''){
+ for (var i=1;i<=objectlist.length;i++)
+ {
+ if(document.getElementById('cbx'+i) && document.getElementById('cbx'+i).checked == true)
+ {
+ checkboxlist[j] = objectlist[i-1] //document.getElementById('cbx'+i).label;
+ j++;
+ }
+ }
+ }
+ return checkboxlist;
+}
+//function to set the text value for the selected partner for contact creation
+function selectPartner(){
+ if(document.getElementById('listPartnerBox').selectedItem){
+ var listselectedItem = document.getElementById('listPartnerBox').selectedItem;
+ var value = listselectedItem.firstChild.getAttribute('label');
+ setPartnerId(listselectedItem.value);
+ document.getElementById('txtselectpartner').setAttribute('value',value);
+ window.opener.document.getElementById('txtselectpartner').setAttribute('value',value);
+ }
+ else{
+ window.opener.document.getElementById('txtselectpartner').setAttribute('value','');
+ }
+}
+
+//function for the intialization procedure //used while loading and unloading of the window
+var myPrefObserver =
+{
+ //set the intial value of the email for the text field in plugin window and also loads the listbox of objects with image
+ loaddata: function()
+ {
+ setTimeout("listSearchDocumentAttachment()", 0)
+ },
+
+ //set the initial value of name and email field of create contact window
+ createContact: function()
+ {
+ document.getElementById("txtname").value = getSenderName();
+ document.getElementById("txtemail").value = getSenderEmail();
+ document.getElementById("country").value = getAllCountry();
+ document.getElementById("state").value = getAllState();
+ setPartnerId(0);
+ },
+
+ //sets the value of email information in preferences and adds observer for the window
+ register: function()
+ {
+ appendDbList()
+ preferenceBranch.addObserver("", myPrefObserver, false);
+ document.getElementById("txturl").value = getServer();
+ var s = document.getElementById('txturl').value;
+ var a =s.split(':');
+ setPort(a[a.length-1]);
+ document.getElementById("txtusername").value = getUsername();
+ document.getElementById("txtpassword").value = getPassword();
+ document.getElementById("DBlist_text").value = getDbName();
+ if(getPref().getCharPref("object") != ''){
+ var objectlist = getPref().getCharPref("object").split(',');
+ var imagelist = getPref().getCharPref("imagename").split(',');
+ var obj = getPref().getCharPref("listobject").split(',');
+ if(objectlist.length>0){
+ for(i=0;i<objectlist.length;i++){
+ var listItem = document.createElement("listitem");
+ var listcell1 = document.createElement("listcell");
+ var listcell2 = document.createElement("listcell");
+ var listcell3 = document.createElement("listcell");
+ listcell1.setAttribute("label",obj[i]);
+ listcell2.setAttribute("label",objectlist[i]);
+ listcell3.setAttribute("image",imagelist[i]);
+ listcell3.setAttribute("class","listcell-iconic")
+ listcell3.setAttribute("width",16)
+ listcell3.setAttribute("height",16)
+ listItem.appendChild(listcell1);
+ listItem.appendChild(listcell2);
+ listItem.appendChild(listcell3);
+ document.getElementById("listObjectListBox").appendChild(listItem);
+
+ }
+ }
+ }
+ },
+
+ createContactAddress: function()
+ {
+ document.getElementById("txtname").value = getPartnerName();
+ document.getElementById("txtcontactname").value = getSenderName();
+ document.getElementById("txtstreet").value = getStreet();
+ document.getElementById("txtstreet2").value = getStreet2();
+ document.getElementById("txtzip").value = getZipCode();
+ document.getElementById("txtcity").value = getCity();
+ document.getElementById("txtoffice").value = getOfficenumber();
+ document.getElementById("txtfax").value = getFax();
+ document.getElementById("txtmobile").value = getMobilenumber();
+ document.getElementById("txtemail").value = getSenderEmail();
+ document.getElementById("country").value =getAllCountry();
+ document.getElementById("state").value = getAllState();
+ },
+
+ //unregistering the window observer
+ unregister: function()
+ {
+ if(!preferenceBranch) return;
+ preferenceBranch.removeObserver("", myPrefObserver);
+ },
+
+ observe: function(aSubject, aTopic, aData)
+ {
+ if(aTopic != "nsPref:changed") return;
+ // aSubject is the nsIPrefBranch we're observing (after appropriate QI)
+ // aData is the name of the pref that's been changed (relative to aSubject)
+ switch (aData) {
+ case "serverport":
+ break;
+ case "serverurl":
+ break;
+ case "serverdbname":
+ break;
+ }
+ },
+}
+
+function runMoreCode()
+{
+}
--- /dev/null
+//global array creation and declaration\r
+var contentType = new Array();\r
+var uri = new Array();\r
+var url = new Array();\r
+var name = new Array();\r
+var test = new Array();\r
+\r
+var MBstrBundleService = Components.classes["@mozilla.org/intl/stringbundle;1"].\r
+ getService(Components.interfaces.nsIStringBundleService);\r
+var mboximportbundle = MBstrBundleService.createBundle("chrome://mboximport/locale/mboximport.properties"); \r
+//function to get the required details of the selected email\r
+\r
+function searchmail()\r
+{ \r
+ setTimeout("createConnection()",5000)\r
+ if (getconnect_server() == "false")\r
+ {\r
+ alert("Please Login To The Database First !")\r
+ return false;\r
+ }\r
+ setTimeout("module_install()", 10000)\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);\r
+ var version_obj = prefService.getBranch("extensions.");\r
+ version_obj.QueryInterface(Components.interfaces.nsIPrefBranch2);\r
+ version = version_obj.getCharPref("lastAppVersion");\r
+ version = parseInt(version[0])\r
+ \r
+ file = getPredefinedFolder(2);\r
+ \r
+ if (version > 2)\r
+ {\r
+ var emlsArray = gFolderDisplay.selectedMessages;\r
+ }\r
+ else\r
+ {\r
+ var emlsArray = GetSelectedMessages();\r
+ }\r
+\r
+ IETtotal = emlsArray.length;\r
+ IETexported = 0;\r
+ var msguri = emlsArray[0];\r
+\r
+ if(GetNumSelectedMessages() < 1 || GetNumSelectedMessages() > 1){\r
+ alert("You must select only one mail to archive");\r
+ return false\r
+ }\r
+\r
+ //gives the selected email uri\r
+ var messageUri= gDBView.URIForFirstSelectedMessage;\r
+\r
+ var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
+\r
+ //gives the selected email object\r
+ var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
+\r
+\r
+ if (version > 2)\r
+ {\r
+ m_uri = message.folder.getUriForMsg(message);\r
+ saveMsgAsEML(m_uri,file,false,emlsArray,null);\r
+ }\r
+ else\r
+ {\r
+ saveMsgAsEML(msguri,file,false,emlsArray,null);\r
+ }\r
+\r
+ //gives the received email date\r
+ var stdate = new Date(message.date / 1000);\r
+\r
+ //functionality to split the author name and email\r
+ if(message.author.charAt(0) == '"'){\r
+ sendername = message.author.split('"')[1].split('"')[0];\r
+ }\r
+ else if(message.author.indexOf('<')!=-1){\r
+ sendername = message.author.split('<')[0];\r
+ }\r
+ else{\r
+ sendername = message.author;\r
+ }\r
+ if(message.author.indexOf('<')!=-1){\r
+ senderemail = message.author.split('<')[1].split('>')[0];
+ }\r
+ else{\r
+ senderemail = message.author
+ }\r
+\r
+ //gives the receiver email address\r
+ receiveremail = message.mime2DecodedRecipients;\r
+\r
+ //parsing the received date in the particular format\r
+ receivedDate = stdate.getFullYear()+'/'+(stdate.getMonth()+1)+'/'+stdate.getDate();\r
+\r
+ //gives the selected email subject\r
+ subject = message.subject;\r
+\r
+ //gives the selected email cclist\r
+ cclist = message.ccList;\r
+\r
+ //gives the selected email message body in text format\r
+ if (version > 2)\r
+ {\r
+ var listener = Components.classes["@mozilla.org/network/sync-stream-listener;1"].createInstance(Components.interfaces.nsISyncStreamListener); \r
+ var uri = message.folder.getUriForMsg(message);\r
+ messenger.messageServiceFromURI(uri) \r
+ .streamMessage(uri, listener, null, null, false, ""); \r
+ var folder = message.folder; \r
+ messagebody = folder.getMsgTextFromStream(listener.inputStream,message.Charset,65536,32768,false,true,{})\r
+ }\r
+ else\r
+ {\r
+ messagebody = getMessageBrowser().docShell.contentViewer.DOMDocument.body.textContent;\r
+ }\r
+ //gives the selected email message body in html format\r
+ msghtmlbody = ""// getMessageBrowser().docShell.contentViewer.DOMDocument.body.innerHTML;\r
+\r
+ //set the initial information for the selected email\r
+ setSenderEmail(senderemail);\r
+ setSenderName(sendername);\r
+ setReceiverEmail(receiveremail);\r
+ setSubject(subject);\r
+ setReceivedDate(receivedDate);\r
+ setCCList(cclist);\r
+ setMessageBody(messagebody);\r
+ getPref().setCharPref('displayName','');\r
+ getPref().setCharPref('attachmentdata','');\r
+ name = [];\r
+ test = [];\r
+ getPref().setCharPref('attachmentlength',currentAttachments.length);\r
+ //retrieving the information for the selected email's attachment\r
+ if(currentAttachments.length > 0){\r
+ for(i=0;i<currentAttachments.length;i++){\r
+ contentType[i] = currentAttachments[i].contentType;\r
+ uri = currentAttachments[i].uri;\r
+ url[i] = currentAttachments[i].url;\r
+ name[i] = currentAttachments[i].displayName;\r
+ var obj = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
+ if(navigator.userAgent.indexOf('Linux')!= -1){\r
+ obj.initWithPath("/tmp/");\r
+ }\r
+ else if(navigator.userAgent.indexOf('Win')!= -1){\r
+ obj.initWithPath("c:\\");\r
+ }\r
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){ \r
+ obj.initWithPath("/tmp/");\r
+ } \r
+ else{\r
+ alert("Not Compatible for this Operating System");\r
+ false();\r
+ }\r
+ //saving the attachment files in system's temp folder\r
+ test[i] = messenger.saveAttachmentToFolder(contentType[i],url[i],name[i],uri,obj);\r
+ }\r
+ //function to read the attachment file contents\r
+ att =getAttachValue()\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
+ createInstance(name,test)\r
+\r
+ }\r
+ else\r
+ {\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
+ }\r
+}\r
+
+function open_contact()\r
+{ \r
+ setTimeout("createConnection()",5000)\r
+ if (getconnect_server() == "false")\r
+ {\r
+ alert("Please Login To The Database First !")\r
+ return false;\r
+ }\r
+ setTimeout("module_install()", 10000)\r
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ if(GetNumSelectedMessages() < 1 || GetNumSelectedMessages() > 1){\r
+ alert("You must select only one mail For Open Contact Detail");\r
+ return false\r
+ }\r
+\r
+ //gives the selected email uri\r
+ var messageUri= gDBView.URIForFirstSelectedMessage;\r
+\r
+ var messenger = Components.classes['@mozilla.org/messenger;1'].createInstance(Components.interfaces.nsIMessenger);\r
+\r
+ //gives the selected email object \r
+ var message = messenger.messageServiceFromURI(messageUri).messageURIToMsgHdr(messageUri);\r
+\r
+ //functionality to split the author name and email\r
+ if(message.author.charAt(0) == '"'){\r
+ sendername = message.author.split('"')[1].split('"')[0];\r
+ }\r
+ else if(message.author.indexOf('<')!=-1){\r
+ sendername = message.author.split('<')[0];
+ }\r
+ else{\r
+ sendername = message.author;
+ }\r
+ if(message.author.indexOf('<')!=-1){\r
+ senderemail = message.author.split('<')[1].split('>')[0];
+ }\r
+ else{\r
+ senderemail = message.author
+ }\r
+\r
+ //set the initial information for the selected email
+ setSenderEmail(senderemail);
+ setSenderName(sendername);
+ setPartnerName("");
+ setStreet("");
+ setStreet2("");
+ setZipCode("");
+ setCity("");
+ setOfficenumber("");
+ setFax("");
+ setMobilenumber("");
+
+ if (getmodule_install() == "no")\r
+ {\r
+ alert("Please install the thunderbird module on your '" + getDbName() +"' database Or try again !");\r
+ return false\r
+ }\r
+ window.open("chrome://openerp_plugin/content/address.xul", "", "chrome, resizable=yes");\r
+\r
+}\r
+\r
+//function to open the configuration window\r
+var Config = {\r
+ onLoad: function() {\r
+ // initialization code\r
+ this.initialized = true;\r
+ },\r
+\r
+ onMenuItemCommand: function() {\r
+ window.open("chrome://openerp_plugin/content/config.xul", "", "chrome");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { Config.onLoad(e); }, false);\r
+\r
+//function to open the plugin window for searching the records for a particular object\r
+var Plugin = {\r
+ onLoad: function() {\r
+ this.initialized = true;\r
+ },\r
+\r
+ onMenuItemCommand: function() {\r
+ window.open("chrome://openerp_plugin/content/plugin.xul", "", "chrome, resizable=yes");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { Plugin.onLoad(e); }, false);\r
+\r
+//function to open the window for creating a new partner contact\r
+var Create = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){\r
+ window.open("chrome://openerp_plugin/content/create.xul", "", "chrome");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { Create.onLoad(e); }, false);\r
+
+var Address = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){
+ open_contact();
+ searchContact();\r
+ }\r
+};\r
+
+\r
+//function to open the window for selecting the partner for a new contact creation\r
+var Select = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){\r
+ window.open("chrome://openerp_plugin/content/selectpartner.xul", "", "chrome");\r
+ }\r
+};\r
+\r
+var CreatePartner = {\r
+ onLoad: function(){\r
+ this.initialized=true;\r
+ },\r
+\r
+ onMenuItemCommand: function(){\r
+ window.open("chrome://openerp_plugin/content/createpartner.xul", "", "chrome");\r
+ }\r
+};\r
+window.addEventListener("load", function(e) { CreatePartner.onLoad(e); }, false);\r
+\r
--- /dev/null
+<?xml version="1.0"?>\r
+<?xml-stylesheet href="chrome://openerp_plugin/skin/overlay.css" type="text/css"?>\r
+<!DOCTYPE overlay SYSTEM "chrome://openerp_plugin/locale/overlay.dtd">\r
+<overlay id="tiny-overlay"\r
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\r
+ xmlns:html="http://www.w3.org/1999/xhtml">\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>\r
+<script type="text/javascript" src="chrome://openerp_plugin/content/exportTools.js"></script>\r
+\r
+<menupopup id="taskPopup">\r
+ <menuitem id="tiny-plugin" label="&tinyplugin;"\r
+ oncommand="Config.onMenuItemCommand(event);"\r
+ image="&menuicon.value;"\r
+ class="menuitem-iconic"\r
+ tooltiptext="&pluginconfig.value;"/>\r
+</menupopup>\r
+\r
+<menupopup id="taskPopup">\r
+ <menuitem id="tiny-plugin1" label="&tinypluginconfig;"\r
+ oncommand="searchmail();"\r
+ image="&menuicon.value;"\r
+ class="menuitem-iconic"\r
+ tooltiptext="&pluginconfigvalue.value;"/>\r
+</menupopup>\r
+\r
+<popup id="threadPaneContext">\r
+ <menuitem id="threadPaneContext-saveAsMultiple"\r
+ insertbefore="threadPaneContext-print"\r
+ class="menuitem-iconic"\r
+ image="&menuicon.value;"\r
+ label="Archive To OpenERP"\r
+ accesskey="T"\r
+ oncommand="searchmail();"/>\r
+</popup>\r
+\r
+<toolbarpalette id="MailToolbarPalette">\r
+ <toolbarbutton id="GA-button"\r
+ class="toolbarbutton-1"\r
+ image="&menuicon.value;"\r
+ label= "Archive To OpenERP"\r
+ oncommand="searchmail();" />\r
+</toolbarpalette> \r
+\r
+<toolbarpalette id="MailToolbarPalette">\r
+ <toolbarbutton id="GA-button1"\r
+ class="toolbarbutton-1"\r
+ image="&partnericon.value;"\r
+ label= "Open Contact"\r
+ oncommand="Address.onMenuItemCommand(event);" />\r
+</toolbarpalette> \r
+\r
+<toolbarpalette id="MailToolbarPalette">\r
+ <toolbarbutton id="GA-button2"\r
+ class="toolbarbutton-1"\r
+ image="&imagearchive.value;"\r
+ label= "Open Document"\r
+ oncommand="archivemail();" />\r
+</toolbarpalette> \r
+\r
+\r
+</overlay>\r
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<?xml-stylesheet href="chrome://openerp_plugin/skin/line.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/plugin.dtd">
+<window id="pluginwindows" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml"
+ title="&title.label;" onload="myPrefObserver.loaddata()" height="480" width="1000">
+
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/exportTools.js"></script>
+<description></description>
+<hbox id="root">
+ <vbox width="400">
+ <groupbox height="30" id="existsobjectgroup" width="400">
+ <caption label="&gptinyobj.label;" />
+ <hbox>
+ <label id="lblsearch" control="txtvalueobj" value="&search.label;"/>
+ <textbox id="txtvalueobj" size="30"/>
+ <button label="&bsearch.label;" oncommand="searchCheckbox()" image="&imagesearch.value;" accesskey="s"/>
+ </hbox>
+ <vbox align="left" id="checkbox-dynamic">
+ </vbox>
+ <hbox align="center">
+ <image src='chrome://tiny_plugin/skin/perform.gif'/>
+ <checkbox id="cbxselectall" oncommand="selectAllCheckbox();" label="&cbxselectall.label;" checked="false"/>
+ <spacer width="10"/>
+
+ </hbox>
+ <label id="lblex" value=" "/>
+ <hbox>
+ <description>Documents</description>
+ </hbox>
+ <listbox height="250" id="listSearchBox" seltype="multiple">
+ <listhead >
+ <listheader label="&listSearchBox.header;"/>
+ </listhead>
+ <listcols>
+ <listcol flex="1"/>
+ </listcols>
+ </listbox>
+ <hbox>
+ <spacer width="360"/>
+ <button label="&attach.label;" image="&imagearchive.value;" oncommand="attachmentWidnowOpen('upload');"/>
+ </hbox>
+ </groupbox>
+
+ </vbox>
+ <vbox>
+ <groupbox id="newobjectgroup" align="center" width="170" height="375">
+ <caption label="&newobject.label;" />
+ <hbox>
+ <label id="lblex" value=" "/>
+ <label id="lblex3" control="section" value="&object.label;"/>
+ <menulist id="section" width="150">
+ <menupopup>
+ <menuitem label="" value=""/>
+ </menupopup>
+ </menulist>
+ <vbox>
+ <button width="50" label="&archive.label;" accesskey="c" image="&imagearchive.value;" oncommand="attachmentWidnowOpen('create');"/>
+ </vbox>
+ </hbox>
+
+ <label id="lblsection" value=" "/>
+ <separator class="groove-thin" orient="horizontal" width="180"/>
+
+ <tabpanels>\r
+ <tabpanel id="contact">
+ <hbox>
+ <label id="lblsection" control="section" value="&partner.label;"/>
+ <vbox>
+ <button label="&create.label;" accesskey="r" image="&imagecreate.value;" oncommand="Create.onMenuItemCommand(event);"/>
+ </vbox>
+ </hbox>
+ </tabpanel>
+ </tabpanels>
+ </groupbox>
+ <label id="lblex" value=" "/>
+ <label id="lblex" value=" "/>
+ <hbox align="right">
+ <spacer width="360"/>
+ <button label="&close.label;" accesskey="l" image="&imagecancel.value;" oncommand="win_close();"/>
+ </hbox>
+
+
+ </vbox>
+</hbox>
+
+</window>
--- /dev/null
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+<!DOCTYPE window SYSTEM "chrome://openerp_plugin/locale/selectpartner.dtd">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml" onload="getPartnerList()"
+ title="&title.label;" height="500" width="375">
+<script type="text/javascript" src="chrome://openerp_plugin/content/tiny_xmlrpc.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/config.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/loaddata.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/static.js"></script>
+<script type="text/javascript" src="chrome://openerp_plugin/content/overlay.js"></script>
+<groupbox id="gpPartner">
+ <hbox>
+ <textbox id="txtselectpartner"/>
+ <spacer width="25"/>
+ <button label="&bsearch.label;" image="&imagesearch.value;" oncommand="getPartnerList();"/>
+ </hbox>
+</groupbox>
+<listbox id="listPartnerBox" flex="1" rows="5">
+ <listhead>
+ <listheader label="&listPartnerName.header;"/>
+ </listhead>
+ <listcols>
+ <listcol flex="1"/>
+ </listcols>
+</listbox>
+<description></description>
+<hbox>
+ <button label="Create Partner" image="&imagecreate.value;" oncommand="CreatePartner.onMenuItemCommand(event);"/>
+ <spacer width="45"/>
+ <button label="&cancel.label;" image="&imagecancel.value;" oncommand="close();" />
+ <button label="&select.label;" image="&imageok.value;" oncommand="selectPartner();close()"/>
+</hbox>
+
+</window>
--- /dev/null
+
+//function to check all the checkbox
+function selectAllCheckbox()
+{
+ var objectlist = preferenceBranch.getCharPref("object").split(',');
+ if(objectlist.length == 1 && objectlist[0]==''){
+ return false;
+ }
+ for (var i=1;i<=objectlist.length;i++)
+ {
+ var checkboxobj = document.getElementById('cbx'+i);
+ if (!checkboxobj)
+ continue
+ if(document.getElementById('cbxselectall').checked == true)
+ checkboxobj.checked = true;
+ else
+ checkboxobj.checked = false;
+ }
+}
--- /dev/null
+/**
+* Global instance stored here
+*/
+
+var xmlRpcClient;
+
+//Service name on server like /common,/db etc...
+var strServerService;
+
+//temporary variables
+var strobject;
+
+//Array
+var arrDbList = new Array();
+var arrPartnerList = new Array();
+var arrFinalList = new Array();
+
+
+var contentType = new Array();
+var uri = new Array();
+var url = new Array();
+var name = new Array();
+var attach_eml ="no";
+var popup_display = "yes"
+var rpc= {
+ servers: {},
+ addserver: function(name,ip,port,path) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ this.servers[name]= {
+ ip: ip,
+ port: port,
+ path: path,
+ avaible: true,
+ sock: Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient)};
+ },
+ getany: function(rpcval,n) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var t = ['PRUint8','PRUint16','PRInt16','PRInt32','PRBool','Char','CString','Float','Double','PRTime','InputStream','Array','Dictionary'];
+ for (var i=0; i<t.length; i++)
+ try { return [t[i],this.Iget(rpcval,Components.interfaces[((i==10 || i==12)? 'nsI': 'nsISupports')+t[i]],n)]; } catch(e) {}
+ return [false,'error getany','Undefined type'];
+ },
+ onfault: function(t) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ return (t.constructor==Array && t.length==3 && !t[0] && (t[1].substr(0,5)=='error' || t[1].substr(0,5)=='fault'))?
+ true : false;
+ },
+ getall: function(rpcval,n) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var t = this.getany(rpcval,n);
+ if (this.onfault(t)) return t;
+ if (t[0]=='PRBool') return (t[1]=='true');
+ if (t[0]=='PRInt32') return parseInt(t[1]+'');
+ if (t[0]=='PRTime') {
+ dte= new Date("January 1, 1970, 00:00:00");
+ dte.setUTCMilliseconds(t[1]+'');
+ return dte; }
+ if (t[0]=='Double' || t[0]=='Float') return parseFloat(t[1]+'');
+ if (t[0]=='Char' || t[0]=='CString') return (t[1]+'').replace(/¬/g,'€');
+ if (t[0]=='Array') {
+ var a=[];
+ for (var i=0; i<t[1].Count(); i++) a[i]= this.getall(t[1],i);
+ } else if (t[0]=='Dictionary') {
+ var a={};
+ var keys = t[1].getKeys({});
+ for (var k = 0; k < keys.length; k++)
+ a[keys[k]]= this.getall(t[1],keys[k]);
+ } else return t[1];
+ return a;
+ },
+ Iget: function(rpcval,itype,n) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (n == undefined) return rpcval.QueryInterface(itype);
+ else if (n==parseInt(n)) return rpcval.QueryElementAt(n,itype);
+ else return rpcval.getValue(n).QueryInterface(itype);
+ },
+ checktype: function(val) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (val != undefined) {
+ switch (val.constructor) {
+ case Number: return (val==parseInt(val))? 1:4;
+ case Boolean: return 2;
+ case String: return 3;
+ case Date: return 5;
+ case Object: return 7;
+ case Array: return 6;
+
+ }
+ }
+ return 7;
+
+ },
+ set: function(rpcobj,param) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (param==undefined) return [false,'error set','Undefined parameter'];
+ var itype= this.checktype(param);
+ if (this.onfault(itype)) return itype;
+ var p = this.servers[rpcobj].sock.createType(itype,{});
+ if (itype==6) {
+ if (param.length>0)
+ for (var i=0; i<param.length; i++) p.AppendElement( this.set(rpcobj,param[i]) );
+ } else if (itype==7) {
+ for (var i in param) p.setValue( i, this.set(rpcobj,param[i]) );
+ } else if (itype==4) {
+ p.data=(''+param).replace(',','.');
+ } else p.data=param;
+ return p;
+ },
+ ask: function(rpcobj,method,params,func_out) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var a=this.disableNset(rpcobj) ;
+ if (this.onfault(a)) return a;
+ var handler = {
+ onResult: function(client, async, result) {
+ rpc.servers[rpcobj].avaible= true;
+ func_out(rpc.getall(result)); },
+ onFault: function (client, async, faute) {alert("in ask infault"+result)
+ rpc.servers[rpcobj].avaible= true; func_out([false,'fault',faute]); },
+ onError: function (client, async, status, msg) {
+ rpc.servers[rpcobj].avaible= true;
+ if (status=='2147500037') {
+ status= "no network or no server";
+ msg= "1. Check your network connection.";
+ msg+= "\n2. Check your server connection parameters:";
+ msg+= "\n\t"+rpc.servers[rpcobj].ip+":"+rpc.servers[rpcobj].port+"=>"+params[0];
+ msg+= "\n3. Your server may not be launched or connected to the network.";
+ }
+ func_out([false,'error '+status,msg]);
+ } };
+ var p = [];
+ for (var i=0; i<params.length; i++)
+ p[i]= this.set(rpcobj,params[i]);
+ try { this.servers[rpcobj].sock.asyncCall(handler, null, method, p, p.length);
+ } catch(e) {
+ this.servers[rpcobj].avaible= true;
+ this.servers[rpcobj].sock= Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient) ;
+ func_out([false,'error catch',e]); }
+ return true;
+ },
+ disableNset: function(rpcobj) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ if (this.servers[rpcobj]) {
+ this.servers[rpcobj].avaible= false;//alert('http://'+this.servers[rpcobj].ip+':'+this.servers[rpcobj].port+this.servers[rpcobj].path);
+ server_path=this.servers[rpcobj].ip+':'+this.servers[rpcobj].port+this.servers[rpcobj].path
+ this.servers[rpcobj].sock.init(server_path);
+
+ return true; }
+ return [false,'error disableNset','Server vars not set'];
+ }
+}
+function handler_function( result ) {
+ if ( rpc.onfault( result ) ) { alert( result[0] + "\n" + result[1] ); return; }
+ else{
+ alert("got result>>>>"+result)
+ }
+}
+
+//Sets the preference service
+function getPref(){
+ var prefService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService);
+ var branchobj = prefService.getBranch("extensions.tiny.");
+ branchobj.QueryInterface(Components.interfaces.nsIPrefBranch2);
+ return branchobj
+}
+
+function setFileName(fname){
+ getPref().setCharPref('fname',fname);
+}
+
+//set attachment file save or not
+function setAttachment(argAttac){
+ getPref().setCharPref('attachment',argAttac);
+}
+
+//set preference value for server url
+function setServer(argServer){
+ getPref().setCharPref('serverurl',argServer);
+}
+
+//set preference value for server port
+function setPort(argPort){
+ getPref().setCharPref('serverport',argPort)
+}
+
+//set preference value of database name for data searching and selection
+function setDbName(argDbName){
+ getPref().setCharPref('serverdbname',argDbName);
+}
+
+//set preference value of username for login
+function setUsername(argUsername){
+ getPref().setCharPref('username',argUsername);
+}
+
+//set preference value of password for login
+function setPassword(argPassword){
+ getPref().setCharPref('password',argPassword);
+}
+
+//set preference value for storing partner id
+function setPartnerId(argPartnerId){
+ getPref().setCharPref('partnerid',argPartnerId)
+}
+
+//set preference value for Resource Id
+function setResourceId(argResourceId){
+ getPref().setCharPref('res_id',argResourceId)
+}
+//set server service
+function setServerService(argServerService){
+ strServerService = argServerService;
+}
+
+//set preference value for sender email
+function setSenderEmail(argSenderEmail){
+ getPref().setCharPref('senderemail',argSenderEmail)
+}
+
+//set preference value for receiver email
+function setReceiverEmail(argReceiverEmail){
+ getPref().setCharPref('receiveremail',argReceiverEmail)
+}
+
+//set preference value for sender name
+function setSenderName(argSenderName){
+ getPref().setCharPref('sendername',argSenderName)
+}
+
+//set preference value for email subject
+function setSubject(argSubject){
+ getPref().setCharPref('subject',argSubject)
+}
+
+//set preference value for email received date
+function setReceivedDate(argReceivedDate){
+ getPref().setCharPref('receiveddate',argReceivedDate)
+}
+
+//set preference value for storing contact id which is used while storing mail contents after creating a new partner contact
+function setContactId(argContactId){
+ getPref().setCharPref('contactid',argContactId)
+}
+
+//set preference value for storing attachment option in config
+function setAttachValue(argAttachValue){
+ getPref().setCharPref('attachvalue',argAttachValue)
+}
+
+//set preference value for email cclist
+function setCCList(argCCList){
+ getPref().setCharPref('cclist',argCCList)
+}
+
+//set preference value for email message body
+function setMessageBody(argMessageBody){
+ getPref().setCharPref('messagebody',argMessageBody)
+}
+
+//set preference value for Partner Name
+function setPartnerName(argPartnerName){
+ getPref().setCharPref('partnername',argPartnerName)
+}
+
+//set preference value for Contact Name
+function setContactName(argContactName){
+ getPref().setCharPref('contactname',argContactName)
+}
+
+//set preference value for street
+function setStreet(argStreet){
+ getPref().setCharPref('street',argStreet)
+}
+
+//set preference value for street2
+function setStreet2(argStreet2){
+ getPref().setCharPref('street2',argStreet2)
+}
+
+//set preference value for zipcode
+function setZipCode(argZipcode){
+ getPref().setCharPref('zipcode',argZipcode)
+}
+
+//set preference value for Office Number
+function setOfficenumber(argOfficenumber){
+ getPref().setCharPref('officeno',argOfficenumber)
+}
+
+//set preference value for Phone Number
+function setMobilenumber(argMobilenumber){
+ getPref().setCharPref('phoneno',argMobilenumber)
+}
+
+//set preference value for Fax
+function setFax(argFax){
+ getPref().setCharPref('fax',argFax)
+}
+
+//set preference value for city
+function setCity(argCity){
+ getPref().setCharPref('city',argCity)
+}
+
+//set preference value for country
+function setCountry(argCountry){
+ getPref().setCharPref('country',argCountry)
+}
+
+//set preference value for state
+function setState(argState){
+ getPref().setCharPref('state',argState)
+}
+
+
+//set the value for the whole server url
+function setServerUrl(argServerUrl)
+{
+ var seperateUrl = argServerUrl.split(':');
+ setServer(seperateUrl.slice(0,seperateUrl.length-1).join(":"));
+ setPort(seperateUrl[seperateUrl.length-1]);
+}
+
+//set preference value for storing user id
+function setUserId(argUserId){
+ getPref().setIntPref('userid',argUserId);
+}
+
+//set database list is displaye or not
+function setDBList(argDBList){
+ getPref().setCharPref('db_list',argDBList)
+}
+
+//set server connect or not
+function setconnect_server(argconnect_server){
+ getPref().setCharPref('connect_server',argconnect_server)
+}
+
+//set module install or not
+function setmodule_install(argconnect_module){
+ getPref().setCharPref('module_install',argconnect_module)
+}
+
+//get module install or not
+function getmodule_install(){
+ return getPref().getCharPref('module_install');
+}
+
+
+//get server connect or not
+function getconnect_server(){
+ return getPref().getCharPref('connect_server');
+}
+
+
+//get partner id
+function getPartnerId(){
+ return getPref().getCharPref('partnerid');
+}
+//get database list is displaye or not
+function getDBList(){
+ return getPref().getCharPref('db_list');
+}
+
+function getFileName(){
+ return getPref().getCharPref('fname');
+}
+
+//get attachment save or not
+function getAttachment(){
+ return getPref().getCharPref('attachment');
+}
+
+//get serverurl
+function getServer(){
+ return getPref().getCharPref('serverurl');
+}
+
+//get server port
+function getPort(){
+ return getPref().getCharPref('serverport');
+}
+
+//get database name
+function getDbName(){
+ return getPref().getCharPref('serverdbname');
+}
+
+//get username from config settings
+function getUsername(){
+ return getPref().getCharPref('username');
+}
+
+//get password from config settings
+function getPassword(){
+ return getPref().getCharPref('password');
+}
+
+//get serverservice
+function getServerService(){
+ return strServerService;
+
+}
+
+//get sender email
+function getSenderEmail(){
+ return getPref().getCharPref('senderemail');
+}
+
+//get receiver email
+function getReceiverEmail(){
+ return getPref().getCharPref('receiveremail');
+}
+
+//get resource id
+function getResourceId(){
+ return getPref().getCharPref('res_id');
+}
+
+
+//get sender name
+function getSenderName(){
+ str = getPref().getCharPref('sendername');
+ if(!str.toString().match(/=?utf-8?q?/))
+ {
+ return str;
+ }
+ else
+ {
+
+ string = str.replace(/[\'Š',\'Ž',\'š',\'ž',\'Ÿ',\'À',\'Á',\'Â',\'Ã',\'Ä',\'Å',\'Ç',\'È',\'É',\'Ê',\'Ë',\'Ì',\'Í',\'Î',\'Ï',\'Ñ',\'Ò',\'Ó',\'Ô',\'Õ',\'Ö',\'Ø',\'Ù',\'Ú',\'Û',\'Ü',\'Ý',\'à',\'á',\'â',\'ã',\'ä',\'å',\'ç',\'è',\'é',\'ê',\'ë',\'ì',\'í',\'î',\'ï',\'ñ',\'ò',\'ó',\'ô',\'õ',\'ö',\'ø',\'ù',\'ú',\'û',\'ü',\'ý',\'ÿ',\'Þ',\'þ',\'Ð',\'ð',\'ß',\'Œ',\'œ',\'Æ',\'æ',\'µ']/g,'"',"'",'“','”',"\n","\r",'_/',"'S','Z','s','z','Y','A','A','A','A','A','A','C','E','E','E','E','I','I','I','I','N','O','O','O','O','O','O','U','U','U','U','Y','a','a','a','a','a','a','c','e','e','e','e','i','i','i','i','n','o','o','o','o','o','o','u','u','u','u','y','y','TH','th','DH','dh','ss','OE','oe','AE','ae','u','','','','','','','-'");
+
+ var utftext = "";
+ var encoded_string = "";
+ var convertedString = "";
+ for (var n = 0; n < string.length; n++)
+ {
+ var c = string.charCodeAt(n);
+ if (c < 128) {
+ utftext += String.fromCharCode(c);
+ }
+ }
+
+ encoded_string = encode64(utftext);
+ return encoded_string;
+ }
+}
+
+//ger partner name
+function getPartnerName(){
+ return getPref().getCharPref('partnername');
+}
+
+//get contact name
+function getContactName(){
+ return getPref().getCharPref('contactname');
+}
+
+
+//get street name
+function getStreet(){
+ return getPref().getCharPref('street');
+}
+
+//get street2 name
+function getStreet2(){
+ return getPref().getCharPref('street2');
+}
+
+//get zip code
+function getZipCode(){
+ return getPref().getCharPref('zipcode');
+}
+
+//get city name
+function getCity(){
+ return getPref().getCharPref('city');
+}
+
+//get country name
+function getCountry(){
+ return getPref().getCharPref('country');
+}
+
+//get state name
+function getState(){
+ return getPref().getCharPref('state');
+}
+
+//get office no
+function getOfficenumber(){
+ return getPref().getCharPref('officeno');
+}
+
+//get mobile no
+function getMobilenumber(){
+ return getPref().getCharPref('phoneno');
+}
+
+//get fax no
+function getFax(){
+ return getPref().getCharPref('fax');
+}
+
+
+//get email subject
+function getSubject(){
+ return getPref().getCharPref('subject');
+}
+
+//get email received date
+function getReceivedDate(){
+ return getPref().getCharPref('receiveddate');
+}
+
+//get contact id which is used while storing mail contents after creating a new partner contact
+function getContactId(){
+ return getPref().getCharPref('contactid');
+}
+
+//get attachment option information from the configuration settings
+function getAttachValue(){
+ return getPref().getCharPref('attachvalue');
+}
+
+//get email cclist information
+function getCCList(){
+ return getPref().getCharPref('cclist');
+}
+
+//get email message body
+function getMessageBody(){
+ return getPref().getCharPref('messagebody');
+}
+
+//get the whole server path
+function getServerUrl(){
+ return getServer()+":"+getPort()+"/"+getServerService();
+}
+
+//get user id for the xmlrpc request
+function getUserId(){
+ return getPref().getIntPref('userid');
+}
+
+//Creates and returns and instance of the XML-RPC client
+function getClient() {
+ // Enable correct security
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ return Components.classes['@mozilla.org/xml-rpc/client;1'].createInstance(Components.interfaces.nsIXmlRpcClient);
+}
+
+//returns the xmlrpc client instance
+function getXmlRpc() {
+ if (!xmlRpcClient) {
+ xmlRpcClient = getClient();
+ }
+
+ // Initialize the client with the URL
+ xmlRpcClient.init(getServerUrl());
+ return xmlRpcClient;
+}
+
+// function to get all basic parameters
+function getBasicList(){
+ var branchobj = getPref();
+ arrBasicList = [];
+ arrBasicList[0] = branchobj.getCharPref("serverdbname");
+ arrBasicList[1] = branchobj.getIntPref('userid');
+ arrBasicList[2] = branchobj.getCharPref("password");
+ arrBasicList[3] = getServer()
+ arrBasicList[4] = getPort()
+ return arrBasicList
+}
+
+function createMenuItem_db(aLabel) {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem
+ item.setAttribute("label", aLabel);
+ item.setAttribute("value", aLabel);
+ return item;
+}
+
+//xmlrpc request handler for getting the list of database
+var listDbHandler = {
+ onResult: function(client, context, result) {
+ setconnect_server("true")
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrMethodList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrMethodList.Count();
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlDbName = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString);
+ arrDbList[i] = strlDbName.data;
+ }
+ var database = ""
+ if (count > 0)
+ {
+ setDBList("true")
+ var label = document.getElementById("database_option");
+ var vbox = document.createElement("vbox");
+ var hbox = document.createElement("hbox");
+ var label1 = document.createElement("label");
+ label1.setAttribute("width","80");
+ label1.setAttribute("value","Database:");
+ label1.setAttribute("id","label111");
+ var menu1 = document.createElement("menulist");
+ var menupopup1 = document.createElement("menupopup");
+ menu1.setAttribute("id","DBlist");
+ menu1.setAttribute("width","300");
+ var menuitem1 = document.createElement("menuitem");
+ database = arrDbList[0]
+ menuitem1.setAttribute("label", arrDbList[0]);
+ menuitem1.setAttribute("value", arrDbList[0]);
+ menupopup1.appendChild(menuitem1);
+ menu1.appendChild(menupopup1)
+ hbox.appendChild(label1);
+ hbox.appendChild(menu1);
+ vbox.appendChild(hbox);
+ label.appendChild(vbox);
+
+ var d = document.getElementById("first");
+ var d_nested = document.getElementById("lbldb_list1");
+ var throwawayNode = d.removeChild(d_nested);
+ var d_nested = document.getElementById("DBlist_text");
+ var throwawayNode = d.removeChild(d_nested);
+
+
+ }
+ else
+ {
+ setDBList("false")
+ }
+ // Loop through the results, adding items to the list
+ if (count)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("DBlist"); // a <menupopup> element
+ var arrsec=new Array()
+ for (var i=0;i<popup.menupopup.childNodes.length;i++) {
+ arrsec.push(popup.menupopup.childNodes[i].label)
+ }
+ for (i=0;i<arrDbList.length;i++){
+
+ if (arrsec.indexOf(arrDbList[i])==-1) {
+ if (arrDbList[i] != database){
+ popup.menupopup.appendChild(createMenuItem_db(arrDbList[i]));
+ }
+ }
+ }
+ }
+ },
+
+
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+};
+//function to get the database list
+function getDbList(argControl)
+{
+ setDBList("false")
+ setconnect_server("false")
+ // Enable correct security
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ // Get the instance of the XML-RPC client
+ var xmlRpcClient = getXmlRpc();
+ arrDbList = [];
+ var cmbDbList = document.getElementById(argControl);
+
+ xmlRpcClient.asyncCall(listDbHandler,cmbDbList,'list',[],0);
+ return arrDbList;
+}
+
+function createMenuItem_partner(aLabel, aValue) {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem
+ item.setAttribute("label", aLabel);
+ item.setAttribute("value", aValue);
+ return item;
+}
+
+//xmlrpc request handler for getting the list of All objects
+var listAllDocumentHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrIdList.Count();
+
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList[i] = arrDataPair;
+ }
+ if (context)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("section"); // a <menupopup> element
+ for (i=0;i<arrPartnerList.length;i++){
+ popup.menupopup.appendChild(createMenuItem_partner(arrPartnerList[i][1],arrPartnerList[i][0]));
+ }
+ }
+ popup_display = "no"
+ searchCheckbox()
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+var listAllCountryHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ var count = arrIdList.Count();
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList[i] = arrDataPair;
+ }
+ if (!context)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("country"); // a <menupopup> element
+ for (i=0;i<arrPartnerList.length;i++){
+ popup.menupopup.appendChild(createMenuItem_partner(arrPartnerList[i][1],arrPartnerList[i][0]));
+
+ }
+ }
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+var listAllStateHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrIdList.Count();
+
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList1[i] = arrDataPair;
+ }
+ if (!context)
+ {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var popup = document.getElementById("state");
+ // a <menupopup> element
+ for (i=0;i<arrPartnerList1.length;i++){
+ popup.menupopup.appendChild(createMenuItem_partner(arrPartnerList1[i][1],arrPartnerList1[i][0]));
+
+ }
+ }
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+
+//function to get the list of All object
+function getAllDocument(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList = [];
+ var end = document.getElementById("section")
+ length = end.itemCount
+ for (i = 0; i < length; i++) {
+ end.removeItemAt(0)
+ }
+ var cmdObjectList = document.getElementById("section");
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'list_alldocument';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = ""
+ xmlRpcClient.asyncCall(listAllDocumentHandler,cmdObjectList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+
+function getAllCountry(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList = [];
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'list_allcountry';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = document.getElementById("country").value;
+ xmlRpcClient.asyncCall(listAllCountryHandler,null,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+
+function getAllState(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList1 = [];
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'list_allstate';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = document.getElementById("state").value;
+ xmlRpcClient.asyncCall(listAllStateHandler,null,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+
+
+//function to create array object to pass as an parameter for xmlrpc request
+function dictcreation(value,checkboxobj){
+ var temp = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ var test = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ var strkey = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strkey.data = value;
+ test.AppendElement(strkey);
+ temp.AppendElement(test);
+ var test1 = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ for(i=0;i<checkboxobj.length;i++){
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = checkboxobj[i];
+ test1.AppendElement(strvalue);
+ }
+ if(checkboxobj.length>0){
+ temp.AppendElement(test1);
+ }
+ return temp;
+}
+
+//function to search and fillup section selection box
+function createMenuItem(aLabel) {
+ const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
+ var item = document.createElementNS(XUL_NS, "menuitem"); // create a new XUL menuitem
+ item.setAttribute("label", aLabel[1]);
+ item.setAttribute("value", aLabel[0]);
+ return item;
+}
+
+
+function listinstallmodule( result ) {
+ if ( rpc.onfault( result ) )
+ {
+ setmodule_install('no')
+ }
+}
+
+function module_install()
+{
+ setmodule_install("yes")
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ strDbName = branchobj.getCharPref("serverdbname");
+ struid = branchobj.getIntPref('userid');
+ strpass = branchobj.getCharPref("password");
+ strmethod = 'search';
+ strobj = 'thunderbird.partner'; // TOFIX: Find module 'thunderbird' into 'module.module' model.
+ var temp = new Array()
+ server=getServer()
+ port=getPort()
+ basicList=getBasicList()
+ rpc.addserver('object',basicList[3] , basicList[4],'/xmlrpc/object');
+ srcids=rpc.ask( 'object', 'execute', [basicList[0],basicList[1],basicList[2],strobj,strmethod,[]],listinstallmodule)
+}
+
+
+var listSearchContactHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var sendername = getSenderEmail();
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ var count = arrIdList.Count();
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);
+ var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ if(strlSearchResult=="partner_name"){
+ setPartnerName(strlSearchResultValue);
+ var t = getPartnerName();}
+
+ if(strlSearchResult=="contactname"){
+ setSenderName(strlSearchResultValue);
+ var t = getSenderName();}
+
+ if(strlSearchResult=="street"){
+ setStreet(strlSearchResultValue);
+ var t = getStreet();}
+
+ if(strlSearchResult=="street2"){
+ setStreet2(strlSearchResultValue);
+ var t = getStreet2();}
+
+ if(strlSearchResult=="zip"){
+ setZipCode(strlSearchResultValue);
+ var t = getZipCode();}
+
+ if(strlSearchResult=="city"){
+ setCity(strlSearchResultValue);
+ var t = getCity();}
+
+ if(strlSearchResult=="phone"){
+ setOfficenumber(strlSearchResultValue);
+ var t = getOfficenumber();}
+
+ if(strlSearchResult=="fax"){
+ setFax(strlSearchResultValue);
+ var t = getFax();}
+
+ if(strlSearchResult=="mobile"){
+ setMobilenumber(strlSearchResultValue);
+ var t = getMobilenumber();}
+
+ if(strlSearchResult=="email" && strlSearchResultValue!=''){
+ setSenderEmail(sendername);
+ var t = getSenderEmail();}
+
+ if(strlSearchResult=="res_id"){
+ setResourceId(strlSearchResultValue);
+ var t = getResourceId();}
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+
+}
+var listSearchContactdetailHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var sendername = getSenderEmail();
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ var count = arrIdList.Count();
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var strlSearchResult = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsCString);
+ var strlSearchResultValue = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ if(strlSearchResult=="email" && strlSearchResultValue=='')
+ {
+ alert("Contact is not Available")
+ document.getElementById("txtemail").value = sendername;
+ }
+ if(strlSearchResult=="partner_name"){
+ document.getElementById("txtname").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="contactname"){
+ document.getElementById("txtcontactname").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="street"){
+ document.getElementById("txtstreet").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="street2"){
+ document.getElementById("txtstreet2").value =strlSearchResultValue;}
+ if(strlSearchResult=="zip"){
+ document.getElementById("txtzip").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="city"){
+ document.getElementById("txtcity").value =strlSearchResultValue;}
+ if(strlSearchResult=="phone"){
+ document.getElementById("txtoffice").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="fax"){
+ document.getElementById("txtfax").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="mobile"){
+ document.getElementById("txtmobile").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="email"&& strlSearchResultValue!=''){
+ document.getElementById("txtemail").value =strlSearchResultValue;}
+
+ if(strlSearchResult=="res_id"){
+ setResourceId(strlSearchResultValue);
+ var t = getResourceId();}
+
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+
+}
+
+function searchContactdetail()
+{
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ arrFinalList = [];
+ var xmlRpcClient = getXmlRpc();
+ var cmbSearchList = document.getElementById('listSearchBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_contact';
+ var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strname.data =document.getElementById("txtemail").value;
+ xmlRpcClient.asyncCall(listSearchContactdetailHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strname ],6);
+}
+
+//xmlrpc request handler for getting the search results for the particular selected check box object
+var listSearchCheckboxHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrMethodList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrMethodList.Count();
+ var close=0;
+ if(count == 0 && popup_display != "no"){
+ alert("No records Found");
+ return false;
+ }
+ else if(count ==2 )
+ {
+ if (arrMethodList.QueryElementAt(0, Components.interfaces.nsISupportsCString)=="error")
+ {
+ close =1;
+ }
+ }
+ popup_display = "yes"
+ // Loop through the results, adding items to the list
+ var arr1 = new Array();
+ var arr2 = new Array();
+ var flag1 = 0;
+ var flag2 = 0;
+ var er ="";
+ var er_val =new Array();
+ for (i = 0; i < count; i++)
+ {
+ if(i%2==0){
+ if (arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString)=="error")
+ {
+ er = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString);
+ er_val[0] =arrMethodList.QueryElementAt(i+1, Components.interfaces.nsISupportsArray);
+ i +=1;
+ continue;
+ }
+ arr1[flag1] = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsCString);
+ flag1++;
+ }
+ else{
+ arr2[flag2] = arrMethodList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ flag2++;
+ }
+ }
+ if (er)
+ {
+ var arrSearchList1 = new Array();
+ for(j=0;j<er_val[0].Count();j++)
+ {
+ var arrDataPair = new Array();
+ arrDataPair[0] = er_val[0].QueryElementAt(j, Components.interfaces.nsISupportsCString)
+ arrSearchList1[j]=arrDataPair;
+ }
+ alert( arrSearchList1 + " model not exists")
+ if (close == 1)
+ {
+ alert("No records Found");
+ return false;
+ }
+ }
+ for (i = 0; i < arr2.length; i++) {
+ var arrSearchList1 = new Array();
+ for(j=0;j<arr2[i].Count();j++){
+ var strlSearchResult = arr2[i].QueryElementAt(j, Components.interfaces.nsISupportsArray);
+ var resultcount = strlSearchResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlSearchResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+ arrDataPair[1] = strlSearchResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrDataPair[2] = arr1[i];
+ arrSearchList1[j] = arrDataPair;
+ }
+ arrFinalList[i]=arrSearchList1;
+ }
+ if (context)
+ {
+
+ var row_count = context.getRowCount();
+ var cmbSearchList = document.getElementById('listSearchBox');
+ for (i=0;i<row_count;i++)
+ {
+ context.removeItemAt(0);
+ }
+ for (i=0;i<arrFinalList.length;i++)
+ {
+ for(j=0;j<arrFinalList[i].length;j++){
+ //creates the dynamic listbox which shows the searched records for the selected object in checkbox
+ var listcell = document.createElement("listcell");
+ var listItem = document.createElement("listitem");
+
+ var objectcharpref = getPref().getCharPref("object").split(',');
+ var imagecharpref = getPref().getCharPref("imagename").split(',');
+ var imagename = ''
+ for(k=0;k<objectcharpref.length;k++){
+ if(arr1[i] == objectcharpref[k]){
+ imagename = imagecharpref[k]
+ }
+ }
+
+ listcell.setAttribute("image",imagename); // stores the image of the object
+ listcell.setAttribute("class","listcell-iconic");
+ listcell.setAttribute("width",12);
+ listcell.setAttribute("height",12);
+ listcell.setAttribute("label",arrFinalList[i][j][1]); //stores the name ofthe record
+ listItem.appendChild(listcell);
+ listItem.value = arrFinalList[i][j][0]; //stores the id of the record
+ listItem.label = arr1[i]; // stores the value of the object
+ cmbSearchList.appendChild(listItem);
+ }
+ }
+ }
+ },
+
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+};
+
+//function to search the records of selected checkbox object
+function searchCheckbox()
+{
+ var checkboxlist = getnamesearch();
+ if(checkboxlist.length == 0){
+ alert("Select One or More Document");
+ return false;
+ }
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ arrFinalList = [];
+ var xmlRpcClient = getXmlRpc();
+ var end = document.getElementById('listSearchBox').getRowCount();
+ for(i=0; i< end; i++){
+ document.getElementById('listSearchBox').removeItemAt(0);
+ }
+ var cmbSearchList = document.getElementById('listSearchBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_checkbox';
+ var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strname.data = document.getElementById('txtvalueobj').value;
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var arrofarr = dictcreation(strname,checkboxlist);
+ xmlRpcClient.asyncCall(listSearchCheckboxHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,arrofarr ],6);
+}
+
+function searchContact()
+{
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ arrFinalList = [];
+ var xmlRpcClient = getXmlRpc();
+ var cmbSearchList = document.getElementById('listSearchBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_contact';
+ var strname = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strname.data =getSenderEmail();
+
+ xmlRpcClient.asyncCall(listSearchContactHandler,cmbSearchList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strname ],6);
+}
+
+//xmlrpc request handler for getting the list of partners
+var listPartnerHandler = {
+
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var arrIdList = result.QueryInterface(Components.interfaces.nsISupportsArray);
+ // Set the number of results
+ var count = arrIdList.Count();
+ // Loop through the results, adding items to the list
+ for (i = 0; i < count; i++) {
+ var strlResult = arrIdList.QueryElementAt(i, Components.interfaces.nsISupportsArray);
+ var resultcount = strlResult.Count();
+ var arrDataPair = new Array();
+ arrDataPair[0] = strlResult.QueryElementAt(0, Components.interfaces.nsISupportsPRInt32);
+ arrDataPair[1] = strlResult.QueryElementAt(1, Components.interfaces.nsISupportsCString);
+ arrPartnerList[i] = arrDataPair;
+ }
+ if (context)
+ {
+ var row_count = context.getRowCount();
+ var cmdPartnerList = document.getElementById('listPartnerBox');
+ for (i=0;i<row_count;i++)
+ {
+ context.removeItemAt(0);
+ }
+ for (i=0;i<arrPartnerList.length;i++)
+ {
+ var listcell = document.createElement("listcell");
+ var listItem = document.createElement("listitem");
+ listcell.setAttribute("label",arrPartnerList[i][1]);
+ listItem.appendChild(listcell);
+ listItem.value = arrPartnerList[i][0];
+ cmdPartnerList.appendChild(listItem);
+ }
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to get the list of partners
+function getPartnerList(){
+ var branchobj = getPref();
+ window.opener.document.getElementById('txtselectpartner').setAttribute('value','');
+ setServerService('xmlrpc/object');
+ var xmlRpcClient = getXmlRpc();
+ arrPartnerList = [];
+ var end = document.getElementById('listPartnerBox').getRowCount();
+ for(i=0; i< end; i++){
+ document.getElementById('listPartnerBox').removeItemAt(0);
+ }
+ var cmdPartnerList = document.getElementById('listPartnerBox');
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struid = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struid.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'name_search';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'res.partner';
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = document.getElementById('txtselectpartner').value;
+ xmlRpcClient.asyncCall(listPartnerHandler,cmdPartnerList,'execute',[ strDbName,struid,strpass,strobj,strmethod,strvalue ],6);
+}
+//function to create the xmlrpc supported variables for xmlrpc request
+function dictcontact(a,b){
+ var temp = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ for(i=0;i<a.length;i++){
+ var strkey = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strkey.data = a[i]
+ var strvalue = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strvalue.data = b[i]
+ var test = xmlRpcClient.createType(xmlRpcClient.ARRAY,{});
+ test.AppendElement(strkey);
+ test.AppendElement(strvalue);
+ temp.AppendElement(test);
+ }
+ return temp;
+}
+
+//xmlrpc request handler for creating the record of mail
+var listArchiveHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to archive the mail content through xmlrpc request
+
+function parse_eml(){
+ var fpath =""
+ if(navigator.userAgent.indexOf('Linux')!= -1){
+ fpath ="/tmp/"
+ }
+ else if(navigator.userAgent.indexOf('Win')!= -1){
+ fpath ="C:\\"
+ }
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
+ fpath ="/tmp/"
+ }
+
+ name = fpath + getFileName() +".eml"
+
+ var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+ file.initWithPath( name );
+ if ( file.exists() == false ) {
+ return null;
+ } else {
+ var is = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance( Components.interfaces.nsIFileInputStream );
+ is.init( file,0x01, 00004, null);
+ var sis = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance( Components.interfaces.nsIScriptableInputStream );
+ sis.init( is );
+ var output = sis.read( sis.available() );
+ return output
+ }
+}
+function upload_archivemail()
+{
+ list_documents = document.getElementById('listSearchBox')
+ var context = []
+ var cnt = list_documents.selectedCount
+ for(i=0;i<cnt;i++)
+ {
+ var object = list_documents.getSelectedItem(i)
+ var eml_string = parse_eml();
+ var model = object.label;
+ var res_id = object.value;
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'history_message';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ var a = ['model', 'res_id','message'];
+ var b = [model, res_id,eml_string];
+ var arrofarr = dictcontact(a,b)
+ xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+ alert("Mail Archive Successfully");
+ window.close();
+ }
+
+}
+
+function create_archivemail(){
+ var popup = document.getElementById("section").selectedItem; // a <menupopup> element
+
+ if (String(popup) != "null"){
+ object=popup.value;
+ if (object == undefined) { alert("select At Least one Document !")}
+ else{
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'process_email';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var eml_string = parse_eml()
+ var a = ['model', 'message'];
+ var b = [object, eml_string];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listArchiveHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+ alert("Mail Archive Successfully");
+ window.close();
+ }
+ }
+ else
+ {
+ alert(" select At Least one Document !")
+ }
+}
+
+
+//xmlrpc request handler for creating a new contact
+var listCreateContactHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ setContactId(createId);
+ alert("Contact Created Successfully.");
+ window.close();
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+var listUpdateContactHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ alert("Contact Update Successfully.");
+ window.close();
+ var partnerId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ setResourceId(partnerId);
+ window.close();
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to create a new contact
+function createContact(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'create_contact';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var a = ['partner_id','name','street','street2','zip','city','country_id','state_id','phone','fax','mobile','email'];
+ var b = [getPartnerId(),getSenderName(),document.getElementById("txtstreet").value,document.getElementById("txtstreet2").value,document.getElementById("txtzip").value, document.getElementById("txtcity").value,document.getElementById("country").value,document.getElementById("state").value,document.getElementById("txtoffice").value,document.getElementById("txtfax").value,document.getElementById("txtmobile").value,getSenderEmail()];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listCreateContactHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+function UpdateContact(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'update_contact';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var a = ['res_id','partner_id','name','street','street2','zip','city','country_id','state_id','phone','fax','mobile','email'];
+ var b = [getResourceId(),getPartnerName(),document.getElementById("txtcontactname").value,document.getElementById("txtstreet").value,document.getElementById("txtstreet2").value,document.getElementById("txtzip").value, document.getElementById("txtcity").value,document.getElementById("country").value,document.getElementById("state").value,document.getElementById("txtoffice").value,document.getElementById("txtfax").value,document.getElementById("txtmobile").value,document.getElementById("txtemail").value];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listUpdateContactHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+//xmlrpc request handler for creating a attachment record
+var listAttachHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+
+//function to encode the string into base64
+var base64chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split("");
+function base64_encode (s)
+ {
+ // the result/encrypted string, the padding string, and the pad count
+ var r = ""; var p = ""; var c = s.length % 3;
+
+ // add a right zero pad to make this string a multiple of 3 characters
+ if (c > 0) { for (; c < 3; c++) { p += '='; s += "\0"; } }
+
+ // increment over the length of the string, three characters at a time
+ for (c = 0; c < s.length; c += 3) {
+
+ // we add newlines after every 76 output characters, according to the MIME specs
+ if (c > 0 && (c / 3 * 4) % 76 == 0) { r += "\r\n"; }
+
+ // these three 8-bit (ASCII) characters become one 24-bit number
+ var n = (s.charCodeAt(c) << 16) + (s.charCodeAt(c+1) << 8) + s.charCodeAt(c+2);
+
+ // this 24-bit number gets separated into four 6-bit numbers
+ n = [(n >>> 18) & 63, (n >>> 12) & 63, (n >>> 6) & 63, n & 63];
+
+ // those four 6-bit numbers are used as indices into the base64 character list
+ r += base64chars[n[0]] + base64chars[n[1]] + base64chars[n[2]] + base64chars[n[3]];
+
+ // add the actual padding string, after removing the zero pad
+ } return r.substring(0, r.length - p.length) + p;
+ }
+
+//function to encode the string into base64
+var keyStr = "ABCDEFGHIJKLMNOP" +
+ "QRSTUVWXYZabcdef" +
+ "ghijklmnopqrstuv" +
+ "wxyz0123456789+/" +
+ "="+"-_.!~*'()";
+
+function encode64(input) {
+var output = "";
+var chr1, chr2, chr3 = "";
+var enc1, enc2, enc3, enc4 = "";
+var i = 0;
+
+do {
+ chr1 = input.charCodeAt(i++);
+ chr2 = input.charCodeAt(i++);
+ chr3 = input.charCodeAt(i++);
+
+ enc1 = chr1 >> 2;
+ enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
+ enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
+ enc4 = chr3 & 63;
+
+ if (isNaN(chr2)) {
+ enc3 = enc4 = 64;
+ } else if (isNaN(chr3)) {
+ enc4 = 64;
+ }
+
+ output = output +
+ keyStr.charAt(enc1) +
+ keyStr.charAt(enc2) +
+ keyStr.charAt(enc3) +
+ keyStr.charAt(enc4);
+ chr1 = chr2 = chr3 = "";
+ enc1 = enc2 = enc3 = enc4 = "";
+} while (i < input.length);
+
+return output;
+}
+
+
+//function to read the contents of the attachment files from the temp folder
+function createInstance(name,test){
+ var encoded_string = '';
+ var file_name = ''
+
+ for(i=0;i<test.length;i++){
+ var stream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream);
+ stream.init(test[i], 0x01, 00004, 0);
+ var bstream = Components.classes["@mozilla.org/binaryinputstream;1"].createInstance(Components.interfaces.nsIBinaryInputStream);
+ bstream.setInputStream(stream);
+ var r = new Array();
+ var fileContents = bstream.readByteArray(bstream.available(),r);
+ bstream.close();
+ var printstring = '';
+ for(j=0;j<fileContents.length;j++)
+ {
+ printstring += String.fromCharCode(fileContents[j]);
+ }
+ encoded_string += encode64(printstring)+',';
+ file_name += name[i]+',';
+ test[i].remove(true);
+ }
+ encoded_string = encoded_string.substring(0,encoded_string.length-1);
+ file_name = file_name.substring(0,file_name.length-1);
+ getPref().setCharPref('displayName',file_name);
+ getPref().setCharPref('attachmentdata',encoded_string);
+
+
+}
+
+//xmlrpc request handler for handling the login information
+var listLoginHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var login = result.QueryInterface(Components.interfaces.nsISupportsPrimitive)
+ if(login.type == 12){
+ login = result.QueryInterface(Components.interfaces.nsISupportsPRInt32)
+ setUserId(login.data);
+ alert('Successful Login To OpenERP');
+ window.close();
+ }
+ else{
+ alert("Login Failed");
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+ alert("Database does not Exist!\n\n Please specify proper database name.");
+ }
+}
+
+//function to check the login information
+function testConnection(){
+ if (getconnect_server() == "false")
+ {
+ alert("No Server Running..."+" "+getServer())
+ return false;
+ }
+ if (getDBList()=="false")
+ {
+ if (document.getElementById('DBlist_text').value =='')
+ {
+ alert("You Must Enter Database Name");
+ return false;
+ }
+ setDbName(document.getElementById('DBlist_text').value);
+ }
+ else
+ {
+ if (document.getElementById('DBlist').value == 0 || document.getElementById('DBlist').value =="--select--")
+ {
+ alert("You Must Select Database Name");
+ return false;
+ }
+ setDbName(document.getElementById('DBlist').value);
+ }
+ var branchobj = getPref();
+ setServer(document.getElementById('txturl').value);
+ var s = document.getElementById('txturl').value;
+ var a =s.split(':');
+ setPort(a[a.length-1]);
+ setUsername(document.getElementById('txtusername').value);
+ setPassword(document.getElementById('txtpassword').value);
+ setServerService('xmlrpc/common');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = getPref().getCharPref('serverdbname');
+ var strusername = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strusername.data = getPref().getCharPref('username');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = getPref().getCharPref('password');
+ xmlRpcClient.asyncCall(listLoginHandler,null,'login',[strDbName,strusername,strpass],3);
+}
+
+
+//xmlrpc request handler for handling the login information
+var listcreateLoginHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var login = result.QueryInterface(Components.interfaces.nsISupportsPrimitive)
+ setconnect_server("true")
+ if(login.type == 12){
+ login = result.QueryInterface(Components.interfaces.nsISupportsPRInt32)
+ setUserId(login.data);
+ }
+ else{
+ alert("Login Failed");
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+ setconnect_server("false")
+ }
+}
+
+//function to check the login information
+function createConnection(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/common');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = getPref().getCharPref('serverdbname');
+ var strusername = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strusername.data = getPref().getCharPref('username');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = getPref().getCharPref('password');
+ xmlRpcClient.asyncCall(listcreateLoginHandler,null,'login',[strDbName,strusername,strpass],3);
+}
+
+//xmlrpc request handler for handling the partner information
+var listCreatePartnerHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var createId = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+
+ if(typeof(createId.data) == 'number' && createId!=0){
+ window.close();
+ }
+ if(createId == 0){
+ alert("Partner Already Exist");
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+//function to create the tiny partner object
+function createPartner(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'create_partner';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ if(document.getElementById('txtname').value ==''){
+ alert("You Must Enter Partner Name");
+ return false;
+ }
+ var a = ['name'];
+ var b = [document.getElementById('txtname').value];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listCreatePartnerHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+//xmlrpc request handler for handling the object information
+var listSearchDocumentHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var searchResult = result.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ if(searchResult.data == 0){
+ alert("Document Does Not Exist");
+ return false;
+ }
+ var objvalue = getPref().getCharPref("listobject");
+ var objectvalue = getPref().getCharPref("object");
+ var imagevalue = getPref().getCharPref("imagename");
+
+ var objcharpref = getPref().getCharPref("listobject").split(',');
+ var objectcharpref = getPref().getCharPref("object").split(',');
+ var imagecharpref = getPref().getCharPref("imagename").split(',');
+
+
+ if(objectcharpref.indexOf(document.getElementById("txtobject").value) != -1){
+ alert("Document already in List");
+ }
+ else{
+ var listItem = document.createElement("listitem");
+ var listcell1 = document.createElement("listcell");
+ var listcell2 = document.createElement("listcell");
+ var listcell3 = document.createElement("listcell");
+ listcell1.setAttribute("label",document.getElementById("txtobj").value);
+ listcell2.setAttribute("label",document.getElementById("txtobject").value);
+ listcell3.setAttribute("image",'file://'+document.getElementById("txtimagename").value);
+ listcell3.setAttribute("class","listcell-iconic")
+ listcell3.setAttribute("width",16)
+ listcell3.setAttribute("height",16)
+ listItem.appendChild(listcell1);
+ listItem.appendChild(listcell2);
+ listItem.appendChild(listcell3);
+ document.getElementById("listObjectListBox").appendChild(listItem)
+ if(getPref().getCharPref("object")!=''){
+ getPref().setCharPref("listobject",objvalue+','+document.getElementById("txtobj").value);
+ getPref().setCharPref("object",objectvalue+','+document.getElementById("txtobject").value);
+ getPref().setCharPref("imagename",imagevalue+','+"file://"+document.getElementById("txtimagename").value);
+ }
+ else{
+ getPref().setCharPref("listobject",document.getElementById("txtobj").value);
+ getPref().setCharPref("object",document.getElementById("txtobject").value);
+ getPref().setCharPref("imagename","file://"+document.getElementById("txtimagename").value);
+ }
+ }
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to search the tiny objects for configuration settings
+function searchDocument(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_document';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ if(document.getElementById('txtobj').value =='' ){
+ alert("You Must Enter Document");
+ return false;
+ }
+ if(document.getElementById('txtobject').value =='' ){
+ alert("You Must Enter Document Name");
+ return false;
+ }
+ var a = ['model'];
+ var b = [document.getElementById('txtobject').value];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listSearchDocumentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+//xmlrpc request handler for list of search object exist in database or not.
+var listsearchAttachmentHandler = {
+ onResult: function(client, context, result) {
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var objectlist = result.QueryInterface(Components.interfaces.nsISupportsCString);
+ getPref().setCharPref('tempobject',objectlist)
+ document.getElementById("txtvalueobj").value= getSenderEmail();
+ var checkbox = document.getElementById("checkbox-dynamic");
+
+ var object = preferenceBranch.getCharPref("listobject").split(',');
+ var obj = preferenceBranch.getCharPref("tempobject").split(',');
+ var imagelist = preferenceBranch.getCharPref("imagename").split(',');
+
+ count = 0
+ if (object[0]!=''){
+ for(var i=0; i<object.length; i++){
+ if (obj[i] == "null")
+ {
+ continue
+ }
+
+ if(count%3==0){
+ var vbox = document.createElement("hbox");
+ }
+ count += 1
+ var hbox = document.createElement("vbox");
+ var checkbox1 = document.createElement("checkbox");
+
+ checkbox1.setAttribute("label",object[i]);
+ checkbox1.setAttribute("id","cbx"+(i+1));
+ checkbox1.setAttribute("width",150)
+ if (obj[i] =="res.partner.address")
+ {
+ checkbox1.setAttribute("checked",true);
+ }
+ if(i==0){
+ checkbox1.setAttribute("checked",true);
+ }
+
+ var image1 = document.createElement("image");
+ image1.setAttribute("src",imagelist[i]);
+ image1.setAttribute("width",16)
+ image1.setAttribute("height",16)
+
+ vbox.appendChild(image1);
+ hbox.appendChild(checkbox1);
+ vbox.appendChild(hbox);
+ checkbox.appendChild(vbox);
+ }
+ }
+ setTimeout("getAllDocument()", 0)
+ exis_grp = document.getElementById("existsobjectgroup")
+ new_grp = document.getElementById("newobjectgroup")
+
+ new_grp.height = parseInt(parseInt(new_grp.height) + parseInt((count /3) * 23.5))
+ win = document.getElementById("pluginwindows").setAttribute("height",1000)
+
+ },
+ onFault: function (client, ctxt, fault) {
+
+ },
+
+ onError: function (client, ctxt, status, errorMsg) {
+
+ }
+}
+
+//function to create a new attachment record
+function listSearchDocumentAttachment(){
+ var branchobj = getPref();
+ setServerService('xmlrpc/object');
+ netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserAccess');
+ var xmlRpcClient = getXmlRpc();
+ var strDbName = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strDbName.data = branchobj.getCharPref("serverdbname");
+ var struids = xmlRpcClient.createType(xmlRpcClient.INT,{});
+ struids.data = branchobj.getIntPref('userid');
+ var strpass = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strpass.data = branchobj.getCharPref("password");
+ var strmethod = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strmethod.data = 'search_document_attachment';
+ var strobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ strobj.data = 'thunderbird.partner';
+ var resobj = xmlRpcClient.createType(xmlRpcClient.STRING,{});
+ var popup = document.getElementById("section").selectedItem; // a <menupopup> element
+ object=popup.value;
+ resobj.data = object;
+ var a = ['object'];
+ var b = [getPref().getCharPref("object")];
+ var arrofarr = dictcontact(a,b);
+ xmlRpcClient.asyncCall(listsearchAttachmentHandler,null,'execute',[strDbName,struids,strpass,strobj,strmethod,arrofarr],6);
+}
+
+
+//function to create a new attachment record
+
+function win_close()
+{
+ var fpath =""
+ if(navigator.userAgent.indexOf('Linux')!= -1){
+ fpath ="/tmp/"
+ }
+ else if(navigator.userAgent.indexOf('Win')!= -1){
+ fpath ="C:\\"
+ }
+ else if(navigator.userAgent.indexOf('Mac OS X')!= -1){
+ fpath ="/tmp/"
+ }
+ try
+ {
+ name = fpath + getFileName() +".eml"
+
+ var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+ file.initWithPath( name );
+ file.remove(true);
+ window.close();
+ }
+ catch(err)
+ {
+ window.close();
+ }
+}
+
+function attachmentWidnowOpen(msg)
+{
+
+ if (msg=="create")
+ {
+ var popup = document.getElementById("section").selectedItem; // a <menupopup> element
+ if (String(popup) != "null"){
+ object=popup.value;
+ if (object=="" || object == undefined) { alert("select at least one document !")}
+ else{
+ create_archivemail()
+ }
+ }
+ else
+ {
+ alert("select at least one Document !")
+ }
+ }
+ else if (msg=="upload")
+ {
+ if(document.getElementById('listSearchBox').selectedItem)
+ {
+ upload_archivemail()
+ }
+ else{
+ alert("Please select at least one record");
+ }
+ }
+}
--- /dev/null
+<!ENTITY title.label "Open Contact">
+<!ENTITY name.value "Partner Name:">
+<!ENTITY contactname.value "Contact Name:">
+<!ENTITY street.value "Street:">
+<!ENTITY street2.value "Street2:">
+<!ENTITY zip.value "Zip:">
+<!ENTITY city.value "City:">
+<!ENTITY country.value "Country:">
+<!ENTITY state.value "State:">
+<!ENTITY office.value "Office:">
+<!ENTITY fax.value "Fax:">
+<!ENTITY mobile.value "Mobile:">
+<!ENTITY email.value "Email:">
+<!ENTITY emailid.value "Email ID:">
+<!ENTITY communication.value "Communication:">
+<!ENTITY postaladdress.value "Postal Address:">
+<!ENTITY ok.label "Save">
+<!ENTITY partner.label "Create New Contact :">
+<!ENTITY create.label "New Contact">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY newpartner.label "New Partner">
+<!ENTITY bsearch.label "Search Contact">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
--- /dev/null
+<!ENTITY title.label "OpenERP Configuration">\r
+<!ENTITY separate.label "Configuration Login for OpenERP!">\r
+<!ENTITY close.label "Cancel">\r
+<!ENTITY database.label "Database:">
+<!ENTITY ok.label "OK">\r
+<!ENTITY connection.label "Connect">\r
+<!ENTITY txturl.label "Server: ">\r
+<!ENTITY image.label "Image : ">\r
+<!ENTITY obj.label "Document : ">\r
+<!ENTITY username.label "Username: ">\r
+<!ENTITY password.label "Password: ">\r
+<!ENTITY setdb.label "Move >">\r
+<!ENTITY getdblist.label "Change">\r
+<!ENTITY gpConnection.label "Connection Parameters">\r
+<!ENTITY listDBListBox.header "Available DBs">\r
+<!ENTITY listDocument.header "Document">\r
+<!ENTITY listDocumentListBox.header "Document Name">\r
+<!ENTITY document.label "Document Name : ">\r
+<!ENTITY documentcreate.label "Add">\r
+<!--<!ENTITY objectdelete.label "Delete Selected Object From The List"> -->\r
+<!ENTITY documentdelete.label "Delete">\r
+<!ENTITY gpArchive.label "Archived Email Attachment Options">\r
+<!ENTITY rdAlwaysAttached.label "Always Send Email Attachments to OpenERP">\r
+<!ENTITY rdPromptAttached.label "Prompt Before Sending Email Attachments">\r
+<!ENTITY rdNeverAttached.label "Never Send Email attachments to OpenERP">\r
+<!ENTITY reserve.value "Copyright © 2006-TODAY OpenERP SA All Rights Reserved.\r
+OpenERP is a trademark of the OpenERP SA Company. OpenERP Web is jointly developed by OpenERP SA and Axelor.\n\r
+Licenced under the terms of OpenERP Public License (OEPL) v1.1 ">\r
+<!ENTITY openerp.value "http://www.openerp.com/">\r
+<!ENTITY axelor.value "http://www.axelor.com">\r
+<!ENTITY tinyerp.value "http://tiny.be/">\r
+\r
+<!ENTITY openerp_s.value "OpenERP">\r
+<!ENTITY axelor_s.value "The Axelor Company">\r
+<!ENTITY tinyerp_s.value "The Tiny Company">\r
+\r
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">\r
+<!ENTITY gpAbout.label "About OpenERP Thunderbird Plugin">\r
+<!ENTITY develop.value "This Thunderbird Plugin for OpenERP has been developed by OpenERP SA & Axelor">\r
+<!ENTITY information.value "For more information, please visit our website">\r
+<!ENTITY contact.label "Contact Us">\r
+<!ENTITY contact.value "info@axelor.com">\r
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">\r
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">\r
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">\r
+<!ENTITY imagemove.value "chrome://openerp_plugin/skin/Move.gif">\r
+<!ENTITY imagemoveleft.value "chrome://openerp_plugin/skin/MoveLeft.png">\r
+<!ENTITY imagemovedown.value "chrome://openerp_plugin/skin/MoveDown.png">\r
+<!ENTITY addfile.label "Load Image">\r
--- /dev/null
+<!ENTITY lblurl.label "Server: ">\r
+<!ENTITY lblport.label "Port: ">\r
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">\r
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">\r
+\r
--- /dev/null
+<!ENTITY title.label "Create a new Contact">
+<!ENTITY name.value "Contact Name:">
+<!ENTITY street.value "Street:">
+<!ENTITY street2.value "Street2:">
+<!ENTITY zip.value "Zip:">
+<!ENTITY city.value "City:">
+<!ENTITY country.value "Country:">
+<!ENTITY state.value "State:">
+<!ENTITY office.value "Office:">
+<!ENTITY fax.value "Fax:">
+<!ENTITY mobile.value "Mobile:">
+<!ENTITY email.value "Email:">
+<!ENTITY communication.value "Communication:">
+<!ENTITY postaladdress.value "Postal Address:">
+
+
+<!ENTITY selectpartner.value "Partner:">
+<!ENTITY listEmail.header "Email">
+<!ENTITY listName.header "Name">
+<!ENTITY bsearch.label "Search">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY cbxarchive.label "Archive">
+<!ENTITY ok.label "Save">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
+
+<!ENTITY title.label "Select Partner">
+<!ENTITY listPartnerName.header "Partner Name">
+<!ENTITY bsearch.label "Search">
+<!ENTITY create.label "Create">
+<!ENTITY select.label "Select">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY reload.label "Reload">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
+<!ENTITY imagereload.value "chrome://openerp_plugin/skin/Archive.png">
--- /dev/null
+<!ENTITY title.label "Create a new Partner">
+<!ENTITY name.value "Name:">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY ok.label "Save">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
--- /dev/null
+nomboxfile=není mbox souborem
+folderexists=Není možné importovat: složka se stejným názvem již existuje
+fileexists=Není možné importovat: soubor se stejným názvem již existuje
+nowritable=Není možné importovat: nemáte právo zápisu do složky
+exportOK=Export byl úspěšně dokončen
+isNewsgroup=Tato funkce není dostupná: export složky z IMAP účtů nebo diskuzních \nskupin je možný, pouze pokud je nastavené čtení v režimu Offline
+nofolder=Nebyla vybrána žádná cílová složka
+badfolder=Není možné importovat do této složky (typ IMAP nebo diskuzní skupina)
+exportAccount=Export všech složek
+exportFolder=Export složky
+filePickerImport=Výběr souboru k importu
+filePickerExport=Výběr cílové složky
+extensions.{3ed8cc52-86fc-4613-9026-c1ef969da4c3}.description=Umožňuje import a export souborů ve formátu mbox a eml
+virtualfolder=Toto je virtuální složka. Pro export jejich\nzpráv musíte tyto zprávy nejdříve\nzkopírovat do normální složky.
+searchdir=Vyberte složku, ve které budou vyhledány mbox soubory
+confirmimport=Chcete importovat soubor?
+endscan=Konec prohledávání složek
+internalerror=Není možné provést import, protože nastala neznámá chyba
+exportstart=Probíhá export, čekejte prosím...
+exported=Exportovalo se
+msgs=zpráv z
+nosubjectmsg=bez_predmetu
+messsubdir=zprávy
+badfolder2=Není možné importovat do této složky (IMAP nebo diskuzní skupina nebo virtuální složka)
+temp_error=Není možné importovat: nastala chyba při vytváření dočasného souboru
+importEMLstart=Pobíhá import, čekejte prosím...
+numEML=Naimportovány eml soubory:
+CSVseparator=,
+noEML=No eml file found in this directory
+backupWarning=During this operation, the program could be\nunresponsive for some minutes.\nDo you want to go on?\n
+noWaring=Don't show again this warning
--- /dev/null
+<!ENTITY tinyplugin "OpenERP Configuration">
+<!ENTITY tinypluginconfig "Archieve To OpenERP">
+<!ENTITY tinyarchive "Archive to OpenERP">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY menuicon.value "chrome://openerp_plugin/skin/NEWT.png">
+<!ENTITY partnericon.value "chrome://openerp_plugin/skin/Partner.png">
+<!ENTITY imagearchive.value "chrome://openerp_plugin/skin/Archive.png">
+<!ENTITY tooltip.value "Add To Archive">
+<!ENTITY pluginconfig.value "OpenERP Configuration Settings">
+<!ENTITY pluginconfigvalue.value "Archieve To OpenERP Settings">
+
--- /dev/null
+<!ENTITY title.label "Archive To OpenERP">
+<!ENTITY gptinyobj.label "Link to an Existing Document">
+<!ENTITY newobject.label "New Documents">
+<!ENTITY bsearch.label "Search">
+<!ENTITY close.label "Close">
+<!ENTITY attach.label "Archive to OpenERP">
+<!ENTITY create.label "New Contact">
+<!ENTITY archive.label "Create">
+<!ENTITY attach.label "Attach">
+<!ENTITY cbxcontact.label "Contact">
+<!ENTITY cbxinvoice.label "Invoice">
+<!ENTITY cbxproject.label "Project">
+<!ENTITY cbxpartner.label "Partner">
+<!ENTITY cbxproduct.label "Product">
+<!ENTITY cbxaccount.label "Account">
+<!ENTITY cbxsale.label "Sale">
+<!ENTITY cbxcase.label "Case">
+<!ENTITY cbxtask.label "Task">
+<!ENTITY cbxselectall.label "Select All">
+<!ENTITY object.label "Type of Document :">
+<!ENTITY partner.label "Create New Contact :">
+<!ENTITY search.label "Search :">
+<!ENTITY listSearchBox.header "Name">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imagearchive.value "chrome://openerp_plugin/skin/Archive.png">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
+<!ENTITY gptinyobjexe.label "Documents">
--- /dev/null
+<!ENTITY title.label "Select Partner">
+<!ENTITY selectpartner.value "Partner">
+<!ENTITY listPartnerName.header "Partner Name">
+<!ENTITY bsearch.label "Search">
+<!ENTITY create.label "Create">
+<!ENTITY imageicon.value "chrome://openerp_plugin/skin/NEWT1.png">
+<!ENTITY select.label "Select">
+<!ENTITY cancel.label "Cancel">
+<!ENTITY imagesearch.value "chrome://openerp_plugin/skin/Search.gif">
+<!ENTITY imagecancel.value "chrome://openerp_plugin/skin/Error.gif">
+<!ENTITY imageok.value "chrome://openerp_plugin/skin/Success.gif">
+<!ENTITY imagecreate.value "chrome://openerp_plugin/skin/Create.png">
--- /dev/null
+menuitem#tiny-plugin {\r
+ color: red !important;\r
+}
--- /dev/null
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is Mozilla XML-RPC Client component.
+ *
+ * The Initial Developer of the Original Code is
+ * Digital Creations 2, Inc.
+ * Portions created by the Initial Developer are Copyright (C) 2000
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s):
+ * Martijn Pieters <mj@digicool.com> (original author)
+ * Samuel Sieb <samuel@sieb.net>
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+/*
+ * nsXmlRpcClient XPCOM component
+ * Version: $Revision: 1.39 $
+ *
+ * $Id: nsXmlRpcClient.js,v 1.39 2006/10/24 16:02:01 silver%warwickcompsoc.co.uk Exp $
+ */
+
+/*
+ * Constants
+ */
+const XMLRPCCLIENT_CONTRACTID = '@mozilla.org/xml-rpc/client;1';
+const XMLRPCCLIENT_CID =
+ Components.ID('{4d7d15c0-3747-4f7f-b6b3-792a5ea1a9aa}');
+const XMLRPCCLIENT_IID = Components.interfaces.nsIXmlRpcClient;
+
+const XMLRPCFAULT_CONTRACTID = '@mozilla.org/xml-rpc/fault;1';
+const XMLRPCFAULT_CID =
+ Components.ID('{691cb864-0a7e-448c-98ee-4a7f359cf145}');
+const XMLRPCFAULT_IID = Components.interfaces.nsIXmlRpcFault;
+
+const XMLHTTPREQUEST_CONTRACTID = '@mozilla.org/xmlextras/xmlhttprequest;1';
+
+const NSICHANNEL = Components.interfaces.nsIChannel;
+
+const DEBUG = false;
+const DEBUGPARSE = false;
+
+const DOMNode = Components.interfaces.nsIDOMNode;
+/*
+ * Class definitions
+ */
+
+/* The nsXmlRpcFault class constructor. */
+function nsXmlRpcFault() {}
+
+/* the nsXmlRpcFault class def */
+nsXmlRpcFault.prototype = {
+ faultCode: 0,
+ faultString: '',
+
+ init: function(faultCode, faultString) {
+ this.faultCode = faultCode;
+ this.faultString = faultString;
+ },
+
+ toString: function() {
+ return '<XML-RPC Fault: (' + this.faultCode + ') ' +
+ this.faultString + '>';
+ },
+
+ // nsISupports interface
+ QueryInterface: function(iid) {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(XMLRPCFAULT_IID))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ }
+};
+
+/* The nsXmlRpcClient class constructor. */
+function nsXmlRpcClient() {}
+
+/* the nsXmlRpcClient class def */
+nsXmlRpcClient.prototype = {
+ _serverUrl: null,
+ _useAuth: false,
+
+ init: function(serverURL) {
+ this._serverUrl = serverURL;
+ this._encoding = "UTF-8";
+ },
+
+ setAuthentication: function(username, password){
+ if ((typeof username == "string") &&
+ (typeof password == "string")){
+ this._useAuth = true;
+ this._username = username;
+ this._password = password;
+ }
+ },
+
+ clearAuthentication: function(){
+ this._useAuth = false;
+ },
+
+ setEncoding: function(encoding){
+ this._encoding = encoding;
+ },
+
+ get serverUrl() { return this._serverUrl; },
+
+ // Internal copy of the status
+ _status: null,
+ _listener: null,
+
+ asyncCall: function(listener, context, methodName, methodArgs, count) {
+ debug('asyncCall');
+ // Check for call in progress.
+ if (this._inProgress)
+ return;
+ //throw Components.Exception('Call in progress!');
+
+ // Check for the server URL;
+ if (!this._serverUrl)
+ throw Components.Exception('Not initialized');
+
+ this._inProgress = true;
+
+ // Clear state.
+ this._foundFault = false;
+ this._passwordTried = false;
+ this._result = null;
+ this._fault = null;
+ this._status = null;
+ this._responseStatus = null;
+ this._responseString = null;
+ this._listener = listener;
+ this._seenStart = false;
+ this._context = context;
+
+ debug('Arguments: ' + methodArgs);
+
+ // Generate request body
+ var xmlWriter = new XMLWriter(this._encoding);
+ this._generateRequestBody(xmlWriter, methodName, methodArgs);
+
+ var requestBody = xmlWriter.data;
+
+ debug('Request: ' + requestBody);
+
+ this.xmlhttp = Components.classes[XMLHTTPREQUEST_CONTRACTID]
+ .createInstance(Components.interfaces.nsIXMLHttpRequest);
+ if (this._useAuth) {
+ this.xmlhttp.open('POST', this._serverUrl, true,
+ this._username, this._password);
+ } else {
+ this.xmlhttp.open('POST', this._serverUrl);
+ }
+ this.xmlhttp.onload = this._onload;
+ this.xmlhttp.onerror = this._onerror;
+ this.xmlhttp.parent = this;
+ this.xmlhttp.setRequestHeader('Content-Type','text/xml');
+ this.xmlhttp.send(requestBody);
+ var chan = this.xmlhttp.channel.QueryInterface(NSICHANNEL);
+ chan.notificationCallbacks = this;
+ },
+
+ _onload: function(e) {
+ var result;
+ var parent = e.target.parent;
+ parent._inProgress = false;
+ parent._responseStatus = e.target.status;
+ parent._responseString = e.target.statusText;
+ if (!e.target.responseXML) {
+ if (e.target.status) {
+ try {
+ parent._listener.onError(parent, parent._context,
+ Components.results.NS_ERROR_FAILURE,
+ 'Server returned status ' + e.target.status);
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ } else {
+ try {
+ parent._listener.onError(parent, parent._context,
+ Components.results.NS_ERROR_FAILURE,
+ 'Unknown network error');
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ }
+ return;
+ }
+ try {
+ e.target.responseXML.normalize();
+ result = parent.parse(e.target.responseXML);
+ } catch (ex) {
+ try {
+ parent._listener.onError(parent, parent._context,
+ ex.result, ex.message);
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ return;
+ }
+ if (parent._foundFault) {
+ parent._fault = result;
+ try {
+ parent._listener.onFault(parent, parent._context, result);
+ } catch(ex) {
+ debug('Exception in listener.onFault: ' + ex);
+ }
+ } else {
+ parent._result = result.value;
+ try {
+ parent._listener.onResult(parent, parent._context,
+ result.value);
+ } catch (ex) {
+ debug('Exception in listener.onResult: ' + ex);
+ }
+ }
+ },
+
+ _onerror: function(e) {
+ var parent = e.target.parent;
+ parent._inProgress = false;
+ try {
+ parent._listener.onError(parent, parent._context,
+ Components.results.NS_ERROR_FAILURE,
+ 'Unknown network error');
+ } catch (ex) {
+ debug('Exception in listener.onError: ' + ex);
+ }
+ },
+
+ _foundFault: false,
+
+ _fault: null,
+ _result: null,
+ _responseStatus: null,
+ _responseString: null,
+
+ get fault() { return this._fault; },
+ get result() { return this._result; },
+ get responseStatus() { return this._responseStatus; },
+ get responseString() { return this._responseString; },
+
+ /* Convenience. Create an appropriate XPCOM object for a given type */
+ INT: 1,
+ BOOLEAN: 2,
+ STRING: 3,
+ DOUBLE: 4,
+ DATETIME: 5,
+ ARRAY: 6,
+ STRUCT: 7,
+ BASE64: 8, // Not part of nsIXmlRpcClient interface, internal use.
+ createType: function(type, uuid) {
+ const SUPPORTSID = '@mozilla.org/supports-';
+ switch(type) {
+ case this.INT:
+ uuid.value = Components.interfaces.nsISupportsPRInt32
+ return createInstance(SUPPORTSID + 'PRInt32;1',
+ 'nsISupportsPRInt32');
+
+ case this.BOOLEAN:
+ uuid.value = Components.interfaces.nsISupportsPRBool
+ return createInstance(SUPPORTSID + 'PRBool;1',
+ 'nsISupportsPRBool');
+
+ case this.STRING:
+ uuid.value = Components.interfaces.nsISupportsCString
+ return createInstance(SUPPORTSID + 'cstring;1',
+ 'nsISupportsCString');
+
+ case this.DOUBLE:
+ uuid.value = Components.interfaces.nsISupportsDouble
+ return createInstance(SUPPORTSID + 'double;1',
+ 'nsISupportsDouble');
+
+ case this.DATETIME:
+ uuid.value = Components.interfaces.nsISupportsPRTime
+ return createInstance(SUPPORTSID + 'PRTime;1',
+ 'nsISupportsPRTime');
+
+ case this.ARRAY:
+ uuid.value = Components.interfaces.nsISupportsArray
+ return createInstance(SUPPORTSID + 'array;1',
+ 'nsISupportsArray');
+
+ case this.STRUCT:
+ uuid.value = Components.interfaces.nsIDictionary
+ return createInstance('@mozilla.org/dictionary;1',
+ 'nsIDictionary');
+
+ default: throw Components.Exception('Unsupported type');
+ }
+ },
+
+ // nsISupports interface
+ QueryInterface: function(iid) {
+ if (!iid.equals(Components.interfaces.nsISupports) &&
+ !iid.equals(XMLRPCCLIENT_IID) &&
+ !iid.equals(Components.interfaces.nsIInterfaceRequestor))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+ return this;
+ },
+
+ // nsIInterfaceRequester interface
+ getInterface: function(iid, result){
+ if (iid.equals(Components.interfaces.nsIAuthPrompt)){
+ return this;
+ }
+ Components.returnCode = Components.results.NS_ERROR_NO_INTERFACE;
+ return null;
+ },
+
+ // nsIAuthPrompt interface
+ _passwordTried: false,
+ promptUsernameAndPassword: function(dialogTitle, text, passwordRealm,
+ savePassword, user, pwd){
+
+ if (this._useAuth){
+ if (this._passwordTried){
+ return false;
+ }
+ user.value = this._username;
+ pwd.value = this._password;
+ this._passwordTried = true;
+ return true;
+ }
+ return false;
+ },
+
+ /* Generate the XML-RPC request body */
+ _generateRequestBody: function(writer, methodName, methodArgs) {
+ writer.startElement('methodCall');
+
+ writer.startElement('methodName');
+ writer.write(methodName);
+ writer.endElement('methodName');
+
+ writer.startElement('params');
+ for (var i = 0; i < methodArgs.length; i++) {
+ writer.startElement('param');
+ this._generateArgumentBody(writer, methodArgs[i]);
+ writer.endElement('param');
+ }
+ writer.endElement('params');
+
+ writer.endElement('methodCall');
+ },
+
+ /* Write out a XML-RPC parameter value */
+ _generateArgumentBody: function(writer, obj) {
+ writer.startElement('value');
+ var sType = this._typeOf(obj);
+ switch (sType) {
+ case 'PRUint8':
+ case 'PRUint16':
+ case 'PRInt16':
+ case 'PRInt32':
+ obj=obj.QueryInterface(Components.interfaces['nsISupports' +
+ sType]);
+ writer.startElement('i4');
+ writer.write(obj.toString());
+ writer.endElement('i4');
+ break;
+
+ case 'PRBool':
+ obj=obj.QueryInterface(Components.interfaces.nsISupportsPRBool);
+ writer.startElement('boolean');
+ writer.write(obj.data ? '1' : '0');
+ writer.endElement('boolean');
+ break;
+
+ case 'Char':
+ case 'CString':
+ obj=obj.QueryInterface(Components.interfaces['nsISupports' +
+ sType]);
+ writer.startElement('string');
+ writer.write(obj.toString());
+ writer.endElement('string');
+ break;
+
+ case 'Float':
+ case 'Double':
+ obj=obj.QueryInterface(Components.interfaces['nsISupports' +
+ sType]);
+ writer.startElement('double');
+ writer.write(obj.toString());
+ writer.endElement('double');
+ break;
+
+ case 'PRTime':
+ obj = obj.QueryInterface(
+ Components.interfaces.nsISupportsPRTime);
+ var date = new Date(obj.data)
+ writer.startElement('dateTime.iso8601');
+ writer.write(iso8601Format(date));
+ writer.endElement('dateTime.iso8601');
+ break;
+
+ case 'InputStream':
+ obj = obj.QueryInterface(Components.interfaces.nsIInputStream);
+ obj = toScriptableStream(obj);
+ writer.startElement('base64');
+ streamToBase64(obj, writer);
+ writer.endElement('base64');
+ break;
+
+ case 'Array':
+ obj = obj.QueryInterface(
+ Components.interfaces.nsISupportsArray);
+ writer.startElement('array');
+ writer.startElement('data');
+ for (var i = 0; i < obj.Count(); i++)
+ this._generateArgumentBody(writer, obj.GetElementAt(i));
+ writer.endElement('data');
+ writer.endElement('array');
+ break;
+
+ case 'Dictionary':
+ obj = obj.QueryInterface(Components.interfaces.nsIDictionary);
+ writer.startElement('struct');
+ var keys = obj.getKeys({});
+ for (var k = 0; k < keys.length; k++) {
+ writer.startElement('member');
+ writer.startElement('name');
+ writer.write(keys[k]);
+ writer.endElement('name');
+ this._generateArgumentBody(writer, obj.getValue(keys[k]));
+ writer.endElement('member');
+ }
+ writer.endElement('struct');
+ break;
+
+ default:
+ throw Components.Exception('Unsupported argument', null, null,
+ obj);
+ }
+
+ writer.endElement('value');
+ },
+
+ /* Determine type of a nsISupports primitive, array or dictionary. */
+ _typeOf: function(obj) {
+ // XPConnect alows JS to pass in anything, because we are a regular
+ // JS object to it. So we have to test rigorously.
+ if (typeof obj != 'object') return 'Unknown';
+
+ // Anything else not nsISupports is not allowed.
+ if (typeof obj.QueryInterface != 'function') return 'Unknown';
+
+ // Now we will have to eliminate by trying all possebilities.
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRUint8);
+ return 'PRUint8';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRUint16);
+ return 'PRUint16';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRInt16);
+ return 'PRInt16';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRInt32);
+ return 'PRInt32';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRBool);
+ return 'PRBool';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsChar);
+ return 'Char';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsCString);
+ return 'CString';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsFloat);
+ return 'Float';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsDouble);
+ return 'Double';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsPRTime);
+ return 'PRTime';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsIInputStream);
+ return 'InputStream';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsISupportsArray);
+ return 'Array';
+ } catch(e) {}
+
+ try {
+ obj.QueryInterface(Components.interfaces.nsIDictionary);
+ return 'Dictionary';
+ } catch(e) {}
+
+ // Not a supported type
+ return 'Unknown';
+ },
+
+ // Response parsing state
+ _valueStack: [],
+ _currValue: null,
+ _cdata: null,
+
+ parse: function(doc) {
+ var node = doc.firstChild;
+ var result;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if ((node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'methodResponse')) {
+ throw Components.Exception('Expecting a methodResponse', null, null,
+ doc);
+ }
+ node = node.firstChild;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (node.nodeType != DOMNode.ELEMENT_NODE)
+ throw Components.Exception('Expecting a params or fault', null,
+ null, doc);
+ if (node.nodeName == 'params') {
+ node = node.firstChild;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if ((node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'param')) {
+ throw Components.Exception('Expecting a param', null, null,
+ doc);
+ }
+ result = this.parseValue(node.firstChild);
+ } else if (node.nodeName == 'fault') {
+ this._foundFault = true;
+ result = this.parseFault(node.firstChild);
+ } else {
+ throw Components.Exception('Expecting a params or fault', null,
+ null, doc);
+ }
+ debug('Parse finished');
+ return result;
+ },
+
+ parseValue: function(node) {
+ var cValue = new Value();
+ if (node && (node.nodeType == DOMNode.TEXT_NODE))
+ node = node.nextSibling;
+ if (!node || (node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'value')) {
+ throw Components.Exception('Expecting a value', null, null, node);
+ }
+ node = node.firstChild;
+ if (!node)
+ return cValue;
+ if (node.nodeType == DOMNode.TEXT_NODE){
+ if (!node.nextSibling) {
+ cValue.value = node.nodeValue;
+ return cValue;
+ } else {
+ node = node.nextSibling;
+ }
+ }
+ if (node.nodeType != DOMNode.ELEMENT_NODE)
+ throw Components.Exception('Expecting a value type', null, null,
+ node);
+ switch (node.nodeName) {
+ case 'string':
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'i4':
+ case 'int':
+ cValue.type = this.INT;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'boolean':
+ cValue.type = this.BOOLEAN;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'double':
+ cValue.type = this.DOUBLE;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'dateTime.iso8601':
+ cValue.type = this.DATETIME;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'base64':
+ cValue.type = this.BASE64;
+ cValue.value = this.parseString(node.firstChild);
+ break;
+ case 'struct':
+ cValue.type = this.STRUCT;
+ this.parseStruct(cValue, node.firstChild);
+ break;
+ case 'array':
+ cValue.type = this.ARRAY;
+ this.parseArray(cValue, node.firstChild);
+ break;
+ default:
+ throw Components.Exception('Expecting a value type', null, null,
+ node);
+ }
+ return cValue;
+ },
+
+ parseString: function(node) {
+ value = '';
+ while (node) {
+ if (node.nodeType != DOMNode.TEXT_NODE)
+ throw Components.Exception('Expecting a text node', null, null,
+ node);
+ value += node.nodeValue;
+ node = node.nextSibling;
+ }
+ return value;
+ },
+
+ parseStruct: function(struct, node) {
+ while (node) {
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (!node)
+ return;
+ if ((node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'member')) {
+ throw Components.Exception('Expecting a member', null, null,
+ node);
+ }
+ this.parseMember(struct, node.firstChild);
+ node = node.nextSibling;
+ }
+ },
+
+ parseMember: function(struct, node) {
+ var cValue;
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (!node || (node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'name')) {
+ throw Components.Exception('Expecting a name', null, null, node);
+ }
+ struct.name = this.parseString(node.firstChild);
+ cValue = this.parseValue(node.nextSibling);
+ struct.appendValue(cValue.value);
+ },
+
+ parseArray: function(array, node) {
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ node = node.nextSibling;
+ if (!node || (node.nodeType != DOMNode.ELEMENT_NODE) ||
+ (node.nodeName != 'data')) {
+ throw Components.Exception('Expecting array data', null, null, node);
+ }
+ for (node = node.firstChild; node; node = node.nextSibling) {
+ if (node.nodeType == DOMNode.TEXT_NODE)
+ continue;
+ array.appendValue(this.parseValue(node).value);
+ }
+ },
+
+ parseFault: function(node) {
+ var fault = createInstance(XMLRPCFAULT_CONTRACTID, 'nsIXmlRpcFault');
+ var cValue = this.parseValue(node);
+ if ((cValue.type != this.STRUCT) ||
+ (!cValue.value.hasKey('faultCode')) ||
+ (!cValue.value.hasKey('faultString'))) {
+ throw Components.Exception('Invalid fault', null, null, node);
+ }
+ fault.init(cValue.value.getValue('faultCode').data,
+ cValue.value.getValue('faultString').data);
+ return fault;
+ }
+};
+
+/* The XMLWriter class constructor */
+function XMLWriter(encoding) {
+ if (!encoding)
+ encoding = "UTF-8";
+ this.data = '<?xml version="1.0" encoding="' + encoding + '"?>';
+}
+
+/* The XMLWriter class def */
+XMLWriter.prototype = {
+ data: '',
+
+ startElement: function(element) {
+ this.data += '<' + element + '>';
+ },
+
+ endElement: function(element) {
+ this.data += '</' + element + '>';
+ },
+
+ write: function(text) {
+ for (var i = 0; i < text.length; i++) {
+ var c = text[i];
+ switch (c) {
+ case '<':
+ this.data += '<';
+ break;
+ case '&':
+ this.data += '&';
+ break;
+ default:
+ this.data += c;
+ }
+ }
+ },
+
+ markup: function(text) { this.data += text }
+};
+
+/* The Value class contructor */
+function Value() { this.type = this.STRING; };
+
+/* The Value class def */
+Value.prototype = {
+ INT: nsXmlRpcClient.prototype.INT,
+ BOOLEAN: nsXmlRpcClient.prototype.BOOLEAN,
+ STRING: nsXmlRpcClient.prototype.STRING,
+ DOUBLE: nsXmlRpcClient.prototype.DOUBLE,
+ DATETIME: nsXmlRpcClient.prototype.DATETIME,
+ ARRAY: nsXmlRpcClient.prototype.ARRAY,
+ STRUCT: nsXmlRpcClient.prototype.STRUCT,
+ BASE64: nsXmlRpcClient.prototype.BASE64,
+
+ _createType: nsXmlRpcClient.prototype.createType,
+
+ name: null,
+
+ _value: null,
+ get value() { return this._value; },
+ set value(val) {
+ // accepts [0-9]+ or x[0-9a-fA-F]+ and returns the character.
+ function entityTrans(substr, code) {
+ return String.fromCharCode("0" + code);
+ }
+
+ switch (this.type) {
+ case this.STRING:
+ val = val.replace(/&#([0-9]+);/g, entityTrans);
+ val = val.replace(/&#(x[0-9a-fA-F]+);/g, entityTrans);
+ val = val.replace(/</g, '<');
+ val = val.replace(/>/g, '>');
+ val = val.replace(/&/g, '&');
+ this._value.data = val;
+ break;
+
+ case this.BOOLEAN:
+ this._value.data = (val == 1);
+ break;
+
+ case this.DATETIME:
+ this._value.data = Date.UTC(val.slice(0, 4),
+ val.slice(4, 6) - 1, val.slice(6, 8), val.slice(9, 11),
+ val.slice(12, 14), val.slice(15));
+ break;
+
+ case this.BASE64:
+ this._value.data = base64ToString(val);
+ break;
+
+ default:
+ this._value.data = val;
+ }
+ },
+
+ _type: null,
+ get type() { return this._type; },
+ set type(type) {
+ this._type = type;
+ if (type == this.BASE64)
+ this._value = this._createType(this.STRING, {});
+ else this._value = this._createType(type, {});
+ },
+
+ appendValue: function(val) {
+ switch (this.type) {
+ case this.ARRAY:
+ this.value.AppendElement(val);
+ break;
+
+ case this.STRUCT:
+ this.value.setValue(this.name, val);
+ break;
+ }
+ }
+};
+
+/*
+ * Objects
+ */
+
+/* nsXmlRpcClient Module (for XPCOM registration) */
+var nsXmlRpcClientModule = {
+ registerSelf: function(compMgr, fileSpec, location, type) {
+ compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
+
+ compMgr.registerFactoryLocation(XMLRPCCLIENT_CID,
+ 'XML-RPC Client JS component',
+ XMLRPCCLIENT_CONTRACTID,
+ fileSpec,
+ location,
+ type);
+ compMgr.registerFactoryLocation(XMLRPCFAULT_CID,
+ 'XML-RPC Fault JS component',
+ XMLRPCFAULT_CONTRACTID,
+ fileSpec,
+ location,
+ type);
+ },
+
+ getClassObject: function(compMgr, cid, iid) {
+ if (!cid.equals(XMLRPCCLIENT_CID) && !cid.equals(XMLRPCFAULT_CID))
+ throw Components.results.NS_ERROR_NO_INTERFACE;
+
+ if (!iid.equals(Components.interfaces.nsIFactory))
+ throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
+
+ if (cid.equals(XMLRPCCLIENT_CID))
+ return nsXmlRpcClientFactory
+ else return nsXmlRpcFaultFactory;
+ },
+
+ canUnload: function(compMgr) { return true; }
+};
+
+/* nsXmlRpcClient Class Factory */
+var nsXmlRpcClientFactory = {
+ createInstance: function(outer, iid) {
+ if (outer != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+
+ if (!iid.equals(XMLRPCCLIENT_IID) &&
+ !iid.equals(Components.interfaces.nsISupports))
+ throw Components.results.NS_ERROR_INVALID_ARG;
+
+ return new nsXmlRpcClient();
+ }
+}
+
+/* nsXmlRpcFault Class Factory */
+var nsXmlRpcFaultFactory = {
+ createInstance: function(outer, iid) {
+ if (outer != null)
+ throw Components.results.NS_ERROR_NO_AGGREGATION;
+
+ if (!iid.equals(XMLRPCFAULT_IID) &&
+ !iid.equals(Components.interfaces.nsISupports))
+ throw Components.results.NS_ERROR_INVALID_ARG;
+
+ return new nsXmlRpcFault();
+ }
+}
+
+/*
+ * Functions
+ */
+
+/* module initialisation */
+function NSGetModule(comMgr, fileSpec) { return nsXmlRpcClientModule; }
+
+/* Create an instance of the given ContractID, with given interface */
+function createInstance(contractId, intf) {
+ return Components.classes[contractId]
+ .createInstance(Components.interfaces[intf]);
+}
+
+/* Get a pointer to a service indicated by the ContractID, with given interface */
+function getService(contractId, intf) {
+ return Components.classes[contractId]
+ .getService(Components.interfaces[intf]);
+}
+
+/* Convert an inputstream to a scriptable inputstream */
+function toScriptableStream(input) {
+ var SIStream = Components.Constructor(
+ '@mozilla.org/scriptableinputstream;1',
+ 'nsIScriptableInputStream', 'init');
+ return new SIStream(input);
+}
+
+/* format a Date object into a iso8601 datetime string, UTC time */
+function iso8601Format(date) {
+ var datetime = date.getUTCFullYear();
+ var month = String(date.getUTCMonth() + 1);
+ datetime += (month.length == 1 ? '0' + month : month);
+ var day = date.getUTCDate();
+ datetime += (day < 10 ? '0' + day : day);
+
+ datetime += 'T';
+
+ var hour = date.getUTCHours();
+ datetime += (hour < 10 ? '0' + hour : hour) + ':';
+ var minutes = date.getUTCMinutes();
+ datetime += (minutes < 10 ? '0' + minutes : minutes) + ':';
+ var seconds = date.getUTCSeconds();
+ datetime += (seconds < 10 ? '0' + seconds : seconds);
+
+ return datetime;
+}
+
+/* Convert a stream to Base64, writing it away to a string writer */
+const BASE64CHUNK = 255; // Has to be dividable by 3!!
+function streamToBase64(stream, writer) {
+ while (stream.available()) {
+ var data = [];
+ while (data.length < BASE64CHUNK && stream.available()) {
+ var d = stream.read(1).charCodeAt(0);
+ // reading a 0 results in NaN, compensate.
+ data = data.concat(isNaN(d) ? 0 : d);
+ }
+ writer.write(toBase64(data));
+ }
+}
+
+/* Convert data (an array of integers) to a Base64 string. */
+const toBase64Table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' +
+ '0123456789+/';
+const base64Pad = '=';
+function toBase64(data) {
+ var result = '';
+ var length = data.length;
+ var i;
+ // Convert every three bytes to 4 ascii characters.
+ for (i = 0; i < (length - 2); i += 3) {
+ result += toBase64Table[data[i] >> 2];
+ result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
+ result += toBase64Table[((data[i+1] & 0x0f) << 2) + (data[i+2] >> 6)];
+ result += toBase64Table[data[i+2] & 0x3f];
+ }
+
+ // Convert the remaining 1 or 2 bytes, pad out to 4 characters.
+ if (length%3) {
+ i = length - (length%3);
+ result += toBase64Table[data[i] >> 2];
+ if ((length%3) == 2) {
+ result += toBase64Table[((data[i] & 0x03) << 4) + (data[i+1] >> 4)];
+ result += toBase64Table[(data[i+1] & 0x0f) << 2];
+ result += base64Pad;
+ } else {
+ result += toBase64Table[(data[i] & 0x03) << 4];
+ result += base64Pad + base64Pad;
+ }
+ }
+
+ return result;
+}
+
+/* Convert Base64 data to a string */
+const toBinaryTable = [
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,-1,
+ -1,-1,-1,-1, -1,-1,-1,-1, -1,-1,-1,62, -1,-1,-1,63,
+ 52,53,54,55, 56,57,58,59, 60,61,-1,-1, -1, 0,-1,-1,
+ -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 11,12,13,14,
+ 15,16,17,18, 19,20,21,22, 23,24,25,-1, -1,-1,-1,-1,
+ -1,26,27,28, 29,30,31,32, 33,34,35,36, 37,38,39,40,
+ 41,42,43,44, 45,46,47,48, 49,50,51,-1, -1,-1,-1,-1
+];
+function base64ToString(data) {
+ var result = '';
+ var leftbits = 0; // number of bits decoded, but yet to be appended
+ var leftdata = 0; // bits decoded, but yet to be appended
+
+ // Convert one by one.
+ for (var i = 0; i < data.length; i++) {
+ var c = toBinaryTable[data.charCodeAt(i) & 0x7f];
+ var padding = (data[i] == base64Pad);
+ // Skip illegal characters and whitespace
+ if (c == -1) continue;
+
+ // Collect data into leftdata, update bitcount
+ leftdata = (leftdata << 6) | c;
+ leftbits += 6;
+
+ // If we have 8 or more bits, append 8 bits to the result
+ if (leftbits >= 8) {
+ leftbits -= 8;
+ // Append if not padding.
+ if (!padding)
+ result += String.fromCharCode((leftdata >> leftbits) & 0xff);
+ leftdata &= (1 << leftbits) - 1;
+ }
+ }
+
+ // If there are any bits left, the base64 string was corrupted
+ if (leftbits)
+ throw Components.Exception('Corrupted base64 string');
+
+ return result;
+}
+
+if (DEBUG) debug = function(msg) {
+ dump(' -- XML-RPC client -- : ' + msg + '\n');
+};
+else debug = function() {}
+
+// vim:sw=4:sr:sta:et:sts:
--- /dev/null
+
+pref("extensions.tiny.serverurl", "http://localhost");
+pref("extensions.tiny.serverport", "8069");
+pref("extensions.tiny.serverdbname", "terp");
+pref("extensions.tiny.username","admin");
+pref("extensions.tiny.password","admin");
+pref("extensions.tiny.senderemail","");
+pref("extensions.tiny.sendername","");
+pref("extensions.tiny.receiveremail","");
+pref("extensions.tiny.subject","");
+pref("extensions.tiny.receiveddate","");
+pref("extensions.tiny.partnerid","");
+pref("extensions.tiny.contactid","");
+pref("extensions.tiny.attachvalue","");
+pref("extensions.tiny.cclist","");
+pref("extensions.tiny.messagebody","");
+pref("extensions.tiny.displayName","");
+pref("extensions.tiny.attachmentdata","");
+pref("extensions.tiny.userid",3);
+pref("extensions.tiny.partnername","");
+pref("extensions.tiny.officeno","");
+pref("extensions.tiny.phoneno","");
+pref("extensions.tiny.address","");
+pref("extensions.tiny.listobject","Partner,Partner Address,Accout Invoice,Project,Product,Account,Sale Order,Project Task");
+pref("extensions.tiny.object","res.partner,res.partner.address,account.invoice,project.project,product.product,account.account,sale.order,project.task");
+pref("extensions.tiny.imagename","chrome://openerp_plugin/skin/Partner.png,chrome://openerp_plugin/skin/Contact.png,chrome://openerp_plugin/skin/Invoice.png,chrome://openerp_plugin/skin/Project.png,chrome://openerp_plugin/skin/Product.png,chrome://openerp_plugin/skin/Account.png,chrome://openerp_plugin/skin/Sale.png,chrome://openerp_plugin/skin/Case.png,chrome://openerp_plugin/skin/Task.png");
+pref("extensions.tiny.attachmentlength","");
+pref("extensions.tiny.attachment","");
+pref("extensions.tiny.db_list","false");
+pref("extensions.tiny.connect_server","false");
+pref("extensions.tiny.module_install","yes");
+pref("extensions.tiny.serverprotocol", "false");
+
+
+
+pref("mboximport.export.filenames_toascii", false);
+pref("mboximport.export.overwrite", false);
+pref("mboximport.confirm.before_mbox_import", true);
+pref("mboximport.clipboard.always_just_text", false);
+pref("mboximport.export.HTML_as_displayed", false);
+pref("mboximport.exportEML.filename_format", 0);
+pref("mboximport.delay.clean_statusbar", 5000);
+pref("mboximport.subject.max_length", 50);
+pref("mboximport.author.max_length", 50);
+pref("mboximport.recipients.max_length", 50);
+pref("extensions.{3ed8cc52-86fc-4613-9026-c1ef969da4c3}.description", "chrome://mboximport/locale/mboximport.properties");
+pref("mboximport.export.set_filetime", false);
+pref("mboximport.exportEML.use_dir", false);
+pref("mboximport.exportMBOX.use_dir", false);
+pref("mboximport.exportMSG.use_dir", false);
+pref("mboximport.export.filenames_addtime", false);
+pref("mboximport.export_all.warning1", true);
+pref("mboximport.export_all.warning2", true);
+
+pref("mboximport.exportMSG.dir", "/tmp");
+
--- /dev/null
+// constants
+const APP_DISPLAY_NAME = "OpenERP Thunderbird Plugins";
+const APP_NAME = "OpenERP";
+const APP_VERSION = "1.0";
+const WARNING = "WARNING: You need administrator privileges to install OpenERP Thunderbird Plugin. It will be installed in the application directory for all users.";
+const VERSION_ERROR = "This extension can only be installed in a version higher than 2.0";
+const NOT_WRITABLE_ERROR = "This extension requires write access to the application directory to install properly."
+const locales = [
+ "en-US",
+ null
+];
+
+// Gecko 1.7 doesn't support custom button labels
+var incompatible = (typeof Install.BUTTON_POS_0 == "undefined");
+if (incompatible)
+ alert(VERSION_ERROR);
+
+if (!incompatible) {
+ // Check whether all directories can be accessed
+ var dirList = [
+ getFolder("Components"),
+ getFolder(getFolder("Program", "defaults"), "pref")
+ ];
+ for (var i = 0; i < dirList.length; i++)
+ if (!File.isWritable(dirList[i]))
+ incompatible = true;
+
+ if (incompatible)
+ alert(NOT_WRITABLE_ERROR);
+}
+
+if (!incompatible && confirm(WARNING, APP_DISPLAY_NAME)) {
+ /* Pre-Install Cleanup (for prior versions) */
+
+ // List of files to be checked
+ var checkFiles = [
+ [getFolder("Components"), "nsXmlRpcClient.js"], // Root component
+ [getFolder("Components"), "xml-rpc.xpt"], // Component interface
+ ];
+
+ // Remove any existing files
+ initInstall("pre-install", "/rename", "0.0"); // open dummy-install
+ for (var i = 0 ; i < checkFiles.length ; i++) {
+ var currentDir = checkFiles[i][0];
+ var name = checkFiles[i][1];
+ var oldFile = getFolder(currentDir, name);
+
+ // Find a name to rename the file into
+ var newName = name + "-uninstalled";
+ for (var n = 1; File.exists(oldFile) && File.exists(getFolder(currentDir, newName)); n++)
+ newName = name + n + "-uninstalled";
+
+ if (File.exists(oldFile))
+ File.rename(oldFile, newName);
+ }
+ performInstall(); // commit renamed files
+
+ /* Main part of the installation */
+
+ var chromeType = DELAYED_CHROME;
+
+ var files = [
+ ["components/nsXmlRpcClient.js", getFolder("Components")],
+ ["components/xml-rpc.xpt", getFolder("Components")],
+ ["defaults/preferences/tiny.js", getFolder(getFolder("Program", "defaults"), "pref")],
+ ];
+
+ // initialize our install
+ initInstall(APP_NAME, APP_PACKAGE, APP_VERSION);
+
+ // Add files
+ for (var i = 0; i < files.length; i++)
+ addFile(APP_NAME, APP_VERSION, files[i][0], files[i][1], null);
+
+ try {
+ var err = registerChrome(CONTENT | chromeType, jar, "content/");
+ if (err != SUCCESS)
+ throw "Chrome registration for content failed (error code " + err + ").";
+
+ err = registerChrome(SKIN | chromeType, jar, "skin/classic/");
+ if (err != SUCCESS)
+ throw "Chrome registration for skin failed (error code " + err + ").";
+
+ for (i = 0; i < locales.length; i++) {
+ if (!locales[i])
+ continue;
+
+ err = registerChrome(LOCALE | chromeType, jar, "locale/" + locales[i] + "/");
+ if (err != SUCCESS)
+ throw "Chrome registration for " + locales[i] + " locale failed (error code " + err + ").";
+ }
+
+ var err = performInstall();
+ if (err != SUCCESS && err != 999)
+ throw "Committing installation failed (error code " + err + ").";
+
+ alert("OpenERP Thunderbird Plugin " + APP_VERSION + " is now installed.\n" +
+ "It will become active after you restart your browser.");
+ }
+ catch (ex) {
+ alert("Installation failed: " + ex + "\n" +
+ "You probably don't have the necessary permissions (log in as system administrator).");
+ cancelInstall(err);
+ }
+}
--- /dev/null
+<?xml version="1.0"?>\r
+<RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"\r
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#">\r
+ <Description about="urn:mozilla:install-manifest">\r
+ <em:id>{d57f315a-9f5d-4366-a530-a769a4a8c949}</em:id>\r
+ <em:iconURL>chrome://openerp_plugin/skin/tinyerp-icon.ico</em:iconURL>\r
+ <em:name>OpenERP Plugin for Thunderbird 2.0</em:name>\r
+ <em:version>1.0</em:version>\r
+ <em:description>OpenERP Thunderbird Integration</em:description>\r
+ <em:creator>OpenERP SA</em:creator>\r
+ <!-- optional items -->\r
+ <em:homepageURL>http://openerp.com</em:homepageURL>\r
+ <!-- Thunderbird -->\r
+ <em:targetApplication>\r
+ <Description>\r
+ <em:id>{3550f703-e582-4d05-9a08-453d09bdfdc6}</em:id>\r
+ <em:minVersion>2.0</em:minVersion>\r
+ <em:maxVersion>3.0.*</em:maxVersion>\r
+ </Description>\r
+ </em:targetApplication>\r
+ </Description>\r
+</RDF>\r
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_tinythunderbird_partner","tinythunderbird.partner","model_tinythunderbird_partner",,1,1,1,1
+
<field name="arch" type="xml">
<data>
<form position="attributes">
- <attribute name="string">Thunderbird Plug-In Installation</attribute>
+ <attribute name="string">Thunderbird Module Installation</attribute>
</form>
<separator string="title" position="attributes">
<attribute name="string">Thunderbird</attribute>
</separator>
<xpath expr="//label[@string='description']" position="attributes">
- <attribute name="string">This module allows you to archive an e-mail on one or more objects of OpenERP. You can attach an email to a partner, a task, an analytic account or any other object. You can also create a new document like a lead, a phone call, claim and many more.</attribute>
+ <attribute name="string">This module allows you to archive an e-mail on one or more objects of OpenERP. You can attach an email to a partner, a task, an analytic account or any other object. You can also create a new object like a lead, a phone call, claim and many more.</attribute>
</xpath>
<xpath expr="//button[@string='Install Modules']" position="attributes">
<attribute name="string">Configure</attribute>