-Ximfmail (0.6.4)
+Ximfmail (3.1.20+0.8.2)
+* Corrective on diplaying classification stamps
+* Corrective on displaying XIMF headers panel
+* Corrective on managing XIMF instances
+* Corrective on custom columns
+* Corrective on empty Ximf header value to hide
+* Corrective on using settings to sign messages (user can send unsigned message)
+-- Sep 07 2012
+
+Ximfmail (3.1.11+0.6.4)
* Corrective on blocking TrustedBird on downloading messages with big attachments
* Corrective on using settings to sign messages
-- Sep 09 2011
content ximfmail chrome/content/kernel/ xpcnativewrappers=yes
content theme_ximfmail chrome/content/theme/ xpcnativewrappers=yes
-locale ximfmail fr chrome/locale/fr/
+locale ximfmail fr chrome/locale/fr-FR/
locale ximfmail us chrome/locale/en-US/
skin ximfmail classic/1.0 chrome/skin/
overlay chrome://messenger/content/messenger.xul chrome://ximfmail/content/messenger-ov-ximfmail.xul
+++ /dev/null
-content ximfmail jar:chrome/ximfmail.jar!/content/kernel/ xpcnativewrappers=yes
-content theme_ximfmail chrome/content/theme/ xpcnativewrappers=yes
-locale ximfmail fr jar:chrome/ximfmail.jar!/locale/fr/
-locale ximfmail us jar:chrome/ximfmail.jar!/locale/en-US/
-skin ximfmail classic/1.0 jar:chrome/ximfmail.jar!/skin/
-overlay chrome://messenger/content/messenger.xul chrome://ximfmail/content/messenger-ov-ximfmail.xul
-overlay chrome://messenger/content/messengercompose/messengercompose.xul chrome://ximfmail/content/messengerCompose-ov-ximfmail.xul
-overlay chrome://messenger/content/messageWindow.xul chrome://ximfmail/content/messageWindow-ov-ximfmail.xul
-overlay chrome://messenger-smime/content/msgReadSecurityInfo.xul chrome://ximfmail/content/msgReadSecurityInfo-ov-ximfmail.xul
-
-
/* \r
* global variables\r
*/\r
-var gJSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].createInstance(Components.interfaces.mozIJSSubScriptLoader); \r
var gXimfmailIdentity=null;\r
-gJSLoader.loadSubScript("chrome://ximfmail/content/jquery.js");\r
-gJSLoader.loadSubScript("chrome://ximfmail/content/controler-ximfmail.js");\r
-gJSLoader.loadSubScript("chrome://ximfmail/content/constant-ximfmail.js");\r
-\r
\r
/* \r
* new theme selection : load instances of theme\r
$("#checkListTheme").removeAttr("disabled");\r
\r
//get XIMF instances of profile for account\r
- CreateXimfmailCatalog();\r
+ if(!gXimfCatalog) CreateXimfmailCatalog();\r
var listInstances = document.getElementById("listThemPopup"); \r
listInstances.database.AddDataSource(gXimfCatalog.getDSCatalog()); \r
listInstances.builder.rebuild();\r
if($("#checkListTheme").attr("checked") == "true"){\r
$("#isUsingXimfail").attr("disabled","false"); \r
return false; \r
- }else{ \r
+ }else{\r
$("#isUsingXimfail").attr("disabled","true");\r
return true;\r
- } \r
+ }\r
}\r
\r
/*\r
class="color-dialog" onload="parent.onPanelLoaded('am-ximfmail.xul');"\r
orient="vertical">\r
\r
+ <script type="application/javascript" src="chrome://ximfmail/content/jquery.js" />\r
+ <script type="application/javascript" src="chrome://ximfmail/content/constant-ximfmail.js" />\r
+ <script type="application/javascript" src="chrome://ximfmail/content/ximfCatalog.js" />\r
+ <script type="application/javascript" src="chrome://ximfmail/content/controler-ximfmail.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/ximfmail.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/am-ximfmail.js" />\r
\r
object="?name" /> \r
<triple subject="?elt"\r
predicate="http://www.ximfmail.com/RDF#instanceLabel"\r
- object="?label" /> \r
+ object="?label" /> \r
<triple subject="?elt"\r
predicate="http://www.ximfmail.com/RDF#active"\r
object="true" /> \r
* global variables\r
*/\r
var gConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);\r
-var gJSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].createInstance(Components.interfaces.mozIJSSubScriptLoader);\r
-gJSLoader.loadSubScript("chrome://ximfmail/content/jquery.js");\r
-\r
\r
/*\r
* \r
//$("#"+idElement).attr("ref",refValue);\r
\r
var list = document.getElementById(idElement); \r
- list.database.AddDataSource(gXimfCatalog.getDSCatalog()); \r
+ list.database.AddDataSource(XimfCatalog.getInstance().getDSCatalog()); \r
list.setAttribute("ref",refValue);\r
list.builder.rebuild();\r
\r
}\r
\r
//add complete header to description\r
- document.getElementById("ximfheaderName").value = title.substring(0,title.lastIndexOf(":"));\r
- if(!xSeparator){ \r
+ //document.getElementById("ximfheaderName").value = title.substring(0,title.lastIndexOf(":"));\r
+ document.title = title.substring(0,title.lastIndexOf(":"));\r
+ if(!xSeparator){\r
document.getElementById("ximfheaderValue").value = val;\r
}else{ \r
var reg=new RegExp("["+xSeparator+"]+", "g");\r
\r
<!DOCTYPE overlay SYSTEM "chrome://ximfmail/locale/ximfmail.dtd">\r
<?xml-stylesheet href="chrome://ximfmail/skin" type="text/css"?>\r
-<dialog id="ximfmail-dialog-hdrInfo" title="&dlgheader.hdrInfo.descr;" \r
+<!-- title="&dlgheader.hdrInfo.descr;" -->\r
+<dialog id="ximfmail-dialog-hdrInfo" \r
+ \r
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" \r
buttons="accept" \r
buttonlabelaccept="OK"\r
$("#ximfmail_dTreeAdd").bind("command",OnPushAddSelection);\r
$("#iTreechildDialog").dblclick(OnPushAddSelection);\r
$("#ximfmail_dTreeDel").bind("command",OnPushDelSelection);\r
- $("#ximfmail_dTreeRaz").bind("command",OnPushRazSelection); \r
-\r
+ $("#ximfmail_dTreeRaz").bind("command",OnPushRazSelection);\r
+ \r
// event for scroll \r
$("#ximfmailTreeDialogScroll").mousemove(OnClickScrollTreeList);\r
$("#ximfmailTreeDialogScroll").click(OnClickScrollTreeList);\r
</treecols> \r
<treechildren flex="1"\r
id="iTreechildDialog"\r
- datasources="rdf:null"\r
+ datasources="rdf:null"\r
ref="http://www.ximfmail.com/dialogtree/datas">\r
<template>\r
<treeitem uri="?uri">\r
</treeitem>\r
</template>\r
</treechildren>\r
- </tree> \r
+ </tree>\r
<scrollbar id="ximfmailTreeDialogScroll" curpos="0" maxpos="50" orient="vertical" /> \r
</hbox>\r
<vbox id="ximfmailTreeDialogButtonbox">\r
+\r
/* ***** BEGIN LICENSE BLOCK *****\r
* Copyright (c) 2008-2009 EADS DEFENCE AND SECURITY - All rights reserved.\r
* ximfmail is under the triple license MPL 1.1/GPL 2.0/LGPL 2.1.\r
}\r
\r
\r
- //remove last separator \r
- if(newvalue.lastIndexOf(gXimfSeparator)+1 == newvalue.length){\r
- newvalue = newvalue.substring(0,newvalue.lastIndexOf(gXimfSeparator));\r
- }\r
+ //remove last separator \r
+ if(newvalue.lastIndexOf(gXimfSeparator)+1 == newvalue.length){\r
+ newvalue = newvalue.substring(0,newvalue.lastIndexOf(gXimfSeparator));\r
+ } \r
\r
window.opener.document.getElementById(gBoxOpener).value = newvalue;\r
window.opener.document.getElementById(gBoxOpener).setAttribute("ximfvalue", newvalue); \r
* Dual licensed under the MIT (MIT-LICENSE.txt)\r
* and GPL (GPL-LICENSE.txt) licenses.\r
*\r
- * $Date: 2009-11-05 14:00:08 +0100 (jeu., 05 nov. 2009) $\r
- * $Rev: 40578 $\r
+ * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $\r
+ * $Rev: 5685 $\r
*/\r
(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else\r
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else\r
* ZAC de la Clef Saint Pierre - 78990 Elancourt - FRANCE (IDDN.FR.001.480012.002.S.P.2008.000.10000)
* ***** END LICENSE BLOCK ***** */
var gConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
-var gJSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].createInstance(Components.interfaces.mozIJSSubScriptLoader);
-gJSLoader.loadSubScript("chrome://ximfmail/content/constant-ximfmail.js");
/**
if (aIID.equals(Components.interfaces.nsISupports)
|| aIID.equals(Components.interfaces.nsIStreamListener))
return this;
- throw Components.results.NS_NOINTERFACE;
},
data: "",
isDataComplete: false,
this.data += stream.read(available);
stream.close();
stream = null;
-
+
// parse headers only
var idxEnd = this.data.indexOf("\r\n\r\n",0); // * CRLF DOS : "\r\n"
if(idxEnd == -1) idxEnd = this.data.indexOf("\n\n",0); // * CRLF UNIX : "\n"
if(idxEnd == -1) idxEnd = this.data.indexOf("\r\r",0); //CRLF OS : "\r"
- if(idxEnd != -1) this.isDataComplete = true; // msgSrc = msgSrc.substr(0,idxEnd); //dbg gConsole.logStringMessage("[smime - MessageAnalyser - succes getting mime headers : ] \n" + msgSrc);
+ if(idxEnd != -1) this.isDataComplete = true;
+ gConsole.logStringMessage("[XimfmailGetMessage - streamListener.onDataAvailable ]isDataComplete=true ");
}
+ gConsole.logStringMessage("[XimfmailGetMessage - streamListener.onDataAvailable ]");
},
onStopRequest: function(request, context, status) {
if (Components.isSuccessCode(status)) {
+ gConsole.logStringMessage("[XimfmailGetMessage - streamListener.isDataComplete ] all mime headers have been parsed - status = " + status );
callbackFunction( this.data, mailUri, callbackParam);
- } else {
- srv.errorSrv("notifyListener.getMsgSrc - "+mailUri+" - Error: "+status);
+ } else {
+ if(this.isDataComplete == true){
+ // all mime headers have been parsed
+ gConsole.logStringMessage("[XimfmailGetMessage - streamListener.isDataComplete ] all mime headers have been parsed !");
+ callbackFunction( this.data, mailUri, callbackParam);
+ }else{
+ gConsole.logStringMessage("[XimfmailGetMessage - streamListener.onStopRequest ] Error: "+status);
+ }
+ }
+ }
}
- }
- }
-
+
gConsole.logStringMessage("[ximfmail - XimfmailGetMessage ]");
- $("#ximfmailMailPanel").attr("collapsed","true"); // XIMF headers ihm
- $("#ximfmail-custom-panel").attr("collapsed","true"); //XIMF account profile type ihm
- $("#ximfHeadBox").attr("collapsed","true"); // XIMF pictures ihm
+ //$("#ximfmailMailPanel").attr("collapsed","true"); // XIMF headers ihm
+ //$("#ximfmail-custom-panel").attr("collapsed","true"); //XIMF account profile type ihm
var pref = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);
pref = pref.QueryInterface(Components.interfaces.nsIPrefBranch2);
if(pref.getBoolPref("mailnews.headers.showXimfmail")){
var cmessenger = Components.classes["@mozilla.org/messenger;1"].createInstance(Components.interfaces.nsIMessenger);
var msgSvc = cmessenger.messageServiceFromURI(mailUri);
try { msgSvc.streamMessage(mailUri, streamListener, null, null, false, null); } catch (ex) { return false; }
- }else{
+ }else{
DeleteXimfHeaders();
- }
+ gUriMsgLoading.remove(mailUri);
+ }
}
-
+
/*
- * Set Ximf headers of message to array
- *
- *
+ * Set Ximf headers of message to array : {[headerName][headerValue],[headerName][headerValue],...}
+ * headerName will be low-case formated
+ * use "for (headerName in gSecureHeadersArray) {}" to parse array
*/
function XimfmailParseMessage(msgSrc){
- var separator = new RegExp("\\r\\n|\\r|\\n", "i");// end line
+ var separator = new RegExp("\\r\\n|\\r|\\n", "i");// end line
var tab = msgSrc.split(separator);
- var currentXimfHdrArray = [];
- // filter on IMF headers - append data to array
- var reg_folding = new RegExp("( )","g");
- var reg_folding2 = new RegExp("(\t)","g");
- var idxTab=0;
-
- for(idxTab=0; idxTab<tab.length; ++idxTab){
- var header_line = tab[idxTab];
- // search for long header fields (folding) - RFC 2822
- if(header_line[0]!= " "){
- try{
- while( idxTab < tab.length ){
- var next_line = tab[idxTab+1];
- if(next_line){
- if(next_line[0] == " " || next_line[0] == "\t"){
- header_line += next_line; //next_line.toLowerCase();
- header_line = header_line.replace(reg_folding," ");
- header_line = header_line.replace(reg_folding2,"");
- ++idxTab;
- }else{ break; }
- }else{ break; }
- }
- }catch(e){}
- }
- //gConsole.logStringMessage("[ximfmail - createXimfHdrArray - decode header line : ] \n" + header_line);
-
- // fill _ximfHdrArray
- //var lowcaseTmp = header_line.toLowerCase();
-
- var lowcaseTmp = header_line; //String_from_utf8(header_line).toLowerCase();
- if(lowcaseTmp.indexOf(":")!=-1){
- var xhdr = new Object;
- xhdr._hdrName = lowcaseTmp.substring(0,lowcaseTmp.indexOf(": ",0));
- xhdr._hdrValue = lowcaseTmp.substring(lowcaseTmp.indexOf(": ",lowcaseTmp)+2);
-
- // decode MIME Header
- xhdr._hdrValue = DecodeMimeXimfheader(xhdr._hdrValue);
-
- currentXimfHdrArray.push(xhdr);
- //gConsole.logStringMessage("[ximfmail - MessageAnalyser - push : ] \n" + xhdr._hdrName + " :: "+xhdr._hdrValue);
- }
- }
-
+ var currentXimfHdrArray = {};
+
+ // filter on IMF headers - append data to array
+ var reg_folding = new RegExp("( )","g");
+ var reg_folding2 = new RegExp("(\t)","g");
+ for(var idxTab=0; idxTab<tab.length; ++idxTab){
+ try{
+ var header_line = tab[idxTab];
+ // search for long header fields (folding) - RFC 2822
+ if(header_line[0]!= " "){
+ while( idxTab < tab.length ){
+ try{
+ var next_line = tab[idxTab+1];
+ if(next_line){
+ if(next_line[0] == " " || next_line[0] == "\t"){
+ header_line += next_line; //next_line.toLowerCase();
+ header_line = header_line.replace(reg_folding," ");
+ header_line = header_line.replace(reg_folding2,"");
+ ++idxTab;
+ }else{ break; }
+ }else{ break; }
+ }catch(e){}
+ }
+ }
+ // decode MIME Header and add header to arrray
+ if(header_line.indexOf(":")!=-1){
+ let hdrName = header_line.substring(0,header_line.indexOf(": ",0));
+ let hdrValue = header_line.substring(header_line.indexOf(": ",header_line)+2);
+ if(hdrName != "") currentXimfHdrArray[hdrName/*.toLowerCase()*/]= DecodeMimeXimfheader(hdrValue);
+ }
+ }catch(e){}
+ }
return currentXimfHdrArray;
}
/*
* Ximf headers of current message
- */
+ */
function XimfmailMesssage(){
this._mailUri = null;
this._instanceMsgXimf = null;
this._current_definition = null;
- this._currentXimfHdrArray = [];
+ this._currentXimfHdrArray = {};
if(typeof XimfmailMesssage.initialized == "undefined"){
// set uri of message
XimfmailMesssage.prototype.set = function(uri){
- try{
+ try{
if(!uri) return;
if(this._mailUri == uri) return;
this._mailUri = uri;
- }catch(e){
+ }catch(e){
gConsole.logStringMessage("[ximfmail - XimfmailMesssage.set ] " + e +"\nline : " + e.lineNumber + " : "+ e + "\nfile : "+ Error().fileName);
- }
+ }
return false;
};
//
this._mailUri = uri;
this._instanceMsgXimf = null;
- this._currentXimfHdrArray=headerArray;
+ // this._currentXimfHdrArray=headerArray;
+ // be sure to have lower case header name
+ for(hdr in headerArray){
+ //this._currentXimfHdrArray[hdr.toLowerCase()] = headerArray[hdr];
+ this._currentXimfHdrArray[hdr] = headerArray[hdr];
+ }
// get account XIMF definition
var prefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);
}else{
gConsole.logStringMessage("DBG [ximfmail - XimfmailMesssage.init ] no ximf preferences ");
return false;
- }
-
+ }
+
var uriXimfInstance = this.hasXimfHeaders(this._current_definition);
if(uriXimfInstance){
gConsole.logStringMessage("DBG [ximfmail - XimfmailMesssage.init ] mail instance : " + uriXimfInstance);
return true;
}else{
return false;
- }
+ }
}catch(e){
var sversion = null;
var sname = null;
- sversion = this.getHeaderValue(XIMF_VERSION_HEADER);
+ sversion = this.getHeaderValue(XIMF_VERSION_HEADER);
sname = this.getHeaderValue(XIMF_NAME_HEADER);
gConsole.logStringMessage("DBG [ximfmail - MessageAnalyser - hasXimfHeaders ] \ndefinition uri = "+ currentDefinition +"\nXIMF version = "+ sversion+"\nXIMF name = "+sname );
if(!sname) return null;
// check currentDefinition in XimfmailCatalog
- CreateXimfmailCatalog();
- uriInstanceXimf = gXimfCatalog.getInstanceUri(currentDefinition,sname,sversion);
-
+ if(!gXimfCatalog){CreateXimfmailCatalog();}
+ var uriInstanceXimf = gXimfCatalog.getInstanceUri(currentDefinition,sname,sversion);
+
}catch(e){
gConsole.logStringMessage("[ximfmail - XimfmailMesssage.hasXimfHeaders ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
}
- return uriInstanceXimf;
+ return uriInstanceXimf;
};
// get XIMF value from message
XimfmailMesssage.prototype.getHeaderValue = function(headerName){
var value = null;
try{
- var tmpHead = null;
- for(var idx_xHdrArray = 0 ; idx_xHdrArray < this._currentXimfHdrArray.length ; ++idx_xHdrArray){
- tmpHead = this._currentXimfHdrArray[idx_xHdrArray]._hdrName;
- if(headerName.toLowerCase() == tmpHead.toLowerCase()){
- value = this._currentXimfHdrArray[idx_xHdrArray]._hdrValue;
- break;
- }
+ //value = this._currentXimfHdrArray[headerName.toLowerCase()];
+ value = this._currentXimfHdrArray[headerName];
+ if(value == null){
+ // try to get header insensitive case
+ for(hdr in this._currentXimfHdrArray){
+ if(headerName.toLowerCase() == hdr.toLowerCase()){
+ value = this._currentXimfHdrArray[hdr];
+ break;
+ //alert("value as insensitive case founded : " +hdr+" : "+ value)
+ }
+ }
}
+
}catch(e){
gConsole.logStringMessage("[ximfmail - XimfmailMesssage.getValue ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ value=null;
}
return value;
};
-
+
// get XIMF value from message
- XimfmailMesssage.prototype.getCompleteArray = function(){
- return this._currentXimfHdrArray();
+ XimfmailMesssage.prototype.getCompleteXimfArray = function(){
+ return this._currentXimfHdrArray;
};
// set XIMF value to message
XimfmailMesssage.prototype.setXimfHeader = function(headerName,headerValue){
- try{
- var isNewHeader = true;
- for(var idx_xHdrArray = 0 ; idx_xHdrArray < this._currentXimfHdrArray.length ; ++idx_xHdrArray){
- var tmpHead = this._currentXimfHdrArray[idx_xHdrArray]._hdrName;
- if(tmpHead.toLowerCase() == headerName.toLowerCase()){
- this._currentXimfHdrArray[idx_xHdrArray]._hdrValue = headerValue;
- isNewHeader = false;
- break;
- }
- }
- if(isNewHeader){
- var xhdr = new Object;
- xhdr._hdrName = headerName;
- xhdr._hdrValue = headerValue;
- this._currentXimfHdrArray.push(xhdr);
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfmailMesssage.setXimfHeader ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
- }
+ try{
+ //this._currentXimfHdrArray[headerName.toLowerCase()] = headerValue;
+ this._currentXimfHdrArray[headerName] = headerValue;
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfmailMesssage.setXimfHeader ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ }
};
XimfmailMesssage.initialized = true;
- }
+ }
}
\ No newline at end of file
//
window.addEventListener('messagepane-loaded', InitXimfailMsgWindow, true);
+
+/*
+ * gUriMsgLoading check for messages which are currently loading *
+ */
+var gUriMsgLoading = {
+ uriList : [], // array of uri loading
+ add : function(uri){
+ if(uri) this.uriList.push(uri)
+ gConsole.logStringMessage("[ximfmail - gUriMsgLoading.add ] uri : " + uri);
+ },
+ remove : function(uri){
+ if(!uri) return;
+ var idx = 0;
+ try{
+ for(idx ; idx<this.uriList.length ; ++idx){
+ if(this.uriList[idx] === uri){
+ this.uriList.splice(idx,1);
+ gConsole.logStringMessage("[ximfmail - gUriMsgLoading.remove ] uri : " + uri);
+ return;
+ }
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - gUriMsgLoading.remove ] error for uri " + uri +"\n error: "+ e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
+ },
+ isLoading : function(uri){
+ if(!uri) return;
+ try{
+ for(var idx=0 ; idx<this.uriList.length ; ++idx){
+ if(this.uriList[idx] === uri){
+ gConsole.logStringMessage("[ximfmail - gUriMsgLoading.isloading : true ] uri : " + uri);
+ return true;
+ }
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - gUriMsgLoading.isloading ] error for uri " + uri +"\n error: "+ e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
+ gConsole.logStringMessage("[ximfmail - gUriMsgLoading.isloading : false ] uri : " + uri);
+ return false;
+ }
+};
/*
* Create a message listener
//
gMessageListeners.push({
onStartHeaders: function (){
-
+ $("#ximfmailMailPanel").attr("collapsed","true"); // box for ximf headers
+ $("#ximfHeadBox").attr("collapsed","true"); // box for ximf pictures
},
- onEndHeaders: function(){
+ onEndHeaders: function(){
var uriMsg = null;
if (gMessageDisplay.isDummy){
// displayed message from disk
var msgDBHdr = gFolderDisplay.selectedMessage;
if(msgDBHdr) uriMsg = msgDBHdr.folder.getUriForMsg(msgDBHdr);
}
- XimfmailGetMessage(uriMsg,XimfmailParseAndOpenMesssage);
+ if(!gUriMsgLoading.isLoading(uriMsg)){
+ gUriMsgLoading.add(uriMsg);
+ XimfmailGetMessage(uriMsg,XimfmailParseAndOpenMesssage);
+ }
},
- onEndAttachments: function (){
+ onEndAttachments: function (){
}
});
}
function XimfmailParseAndOpenMesssage(msgSrc,uriSrc){
var currentXimfHdrArray = XimfmailParseMessage(msgSrc);
try{
- if(currentXimfHdrArray.length > 0){
+
var ximfMsg = new XimfmailMesssage();
if(ximfMsg.init(uriSrc,currentXimfHdrArray)){
//alert("XimfmailParseMesssage uriSrc = " + uriSrc +" \n valid ximfmail message")
- var folderPaneElt = document.getElementById('folderPaneBox');
- if(folderPaneElt){
- // is read message opened in new tab
- if(folderPaneElt.hasAttribute("collapsed")){
- $("#ximfmail-custom-panel").attr("collapsed","true");
+ var folderPaneElt = document.getElementById('folderPaneBox');
+ if(folderPaneElt){
+ // is read message opened in new tab
+ if(folderPaneElt.hasAttribute("collapsed")){
+ $("#ximfmail-custom-panel").attr("collapsed","true");
if(ShowXimfmailPanel(ximfMsg)){
- $("#ximfmailMailPanel").removeAttr("collapsed");
+ $("#ximfmailMailPanel").removeAttr("collapsed");
+ }
+ }else{
+ $("#ximfmail-custom-panel").removeAttr("collapsed");
}
- }else{
- $("#ximfmail-custom-panel").removeAttr("collapsed");
- }
- }else{
- //alert("XimfmailParseMesssage - new window - uriSrc = " + uriSrc +" \n valid ximfmail message")
- // message is displayed in new window
- $("#ximfmail-custom-panel").removeAttr("collapsed");
+ }else{
+ // message is displayed in new window
if(ShowXimfmailPanel(ximfMsg)) $("#ximfmailMailPanel").removeAttr("collapsed");
- }
- // common elements to display
- if(ShowExpandedHeaders(ximfMsg)){
- $("#ximfHeadBox").removeAttr("collapsed");
- }
+ }
+ // common elements to display
+ ShowExpandedHeaders(ximfMsg);
}
- }
+
}catch(e){
gConsole.logStringMessage("XimfmailParseAndOpenMesssage error:"+e);
}
+ gUriMsgLoading.remove(uriSrc);
};
if($("#signedHdrIcon").attr("signed") == "ximfalert"){
$("#signedHdrIcon").attr("signed","");
}
+ try{$(".ximfImgCategory").remove()}catch(e){}
}catch(e){}
}
var composeDom = CreateDOMWithXimfInstance(ximfmailMesssage._instanceMsgXimf,"chrome://theme_ximfmail/content/messengerCompose-ximfmail.xsl");
$("#ximfmailMailHeadersTablist").append(composeDom);
$("#ximfmailMailPanel").attr("hidden","true");
-
+ $("#ximfmail-custom-panel").attr("collapsed",true); // Dom element of preview panel
// compute datas to message
try{
var xheader_dom = $("label[ximfheader]");
try{
//gConsole.logStringMessage("[ximfmail - XimfMsgComposeView - search value for textbox : " + xheader_dom[idx_xheader_dom].getAttribute("ximfheader"));
var ximfValue = ximfmailMesssage.getHeaderValue(xheader_dom[idx_xheader_dom].getAttribute("ximfheader"));
- if(ximfValue){
+ if(ximfValue){
// search for value and comlete display box
var display_box = $("textbox[refheader='" + xheader_dom[idx_xheader_dom].getAttribute("id") + "']");
- if(display_box.length > 0){
+ if(display_box.length > 0){
try{
// ximfValue is in Array
if(ximfValue.constructor == Array){
if(refHeader){
//gConsole.logStringMessage("[ximfmail - XimfMsgComposeView - search value for freetext :" + $("label[id='"+ximfLabelId+"']").attr("ximfheader")+"\nid ="+ximfLabelId);
var ximfValue = ximfmailMesssage.getHeaderValue($("label[id='"+refHeader+"']").attr("ximfheader"));
- if(ximfValue){
+ if(ximfValue){
try{
// ximfValue is in Array
if(ximfValue.constructor == Array){
// replace values with international labels
ConvertMimeDatasToLabelValues();
-
+
// modify DOM to create readable ihm
//replace textbox elements with labels elements
xheader_dom = $("textbox[class='XimfTextboxDisplay']");
// insert security pictures...
function ShowExpandedHeaders(ximfmailMesssage){
- try{
- // ximfmail elements to display pictures
- var imgClassification = document.getElementById("ximfSecurityClassificationLabelImg");
- var imgCategory = document.getElementById("ximfCategoryClassificationLabelImg");
+ try{
+ // raz ximf pictures elements
+ try{
+ $(".ximfImgCategory").remove();
+ $("#ximfSecurityClassificationLabelImg").attr("src","");
+ $("#ximfCategoryClassificationLabelImg").attr("src","");
+ }catch(e){}
// selected message has no XIMF headers
if(!ximfmailMesssage._instanceMsgXimf){
- // remove all ximfmail pictures
- if(imgClassification) imgClassification.setAttribute("src","");
- if(imgCategory) imgCategory.setAttribute("src","");
return false;
- }
-
+ }
+
+ // ximfmail elements to display pictures
+ var imgClassification = document.getElementById("ximfSecurityClassificationLabelImg");
+ var imgCategory = document.getElementById("ximfCategoryClassificationLabelImg");
+
//display security labels pictures
//gConsole.logStringMessage("[ximfmail - showExpandedHeaders ] \n search for labels to display... ");
if(imgClassification){
var valuemsg = valueRef.toLowerCase();
var valueref = tabPictureValueRef[iPict].toLowerCase();
if( valuemsg.indexOf(valueref, 0) != -1 ){
- imgClassification.setAttribute("src",tabPictureValueName[iPict]);
+ imgClassification.setAttribute("src",tabPictureValueName[iPict]);
}
}
}
}
if(imgCategory){
- imgCategory.setAttribute("src","");
+ imgCategory.setAttribute("src","");
+ $(".ximfImgCategory").remove();
var reg=new RegExp("[&]+", "g");
var picturesCategorArray = CreateRulesArray(ximfmailMesssage._instanceMsgXimf,"ximf:categoryPictures");
for(var iHdr=0; iHdr<picturesCategorArray.length ; ++iHdr){
//alert("picturesClassifArray[idxPix]._valueRef : "+picturesClassifArray[idxPix]._valueRef + " & " + valueRef );
var valuemsg = valueRef.toLowerCase();
var valueref = tabPictureValueRef[iPict].toLowerCase();
+ var container = document.getElementById("ximfHeadBox");
if( valuemsg.indexOf(valueref, 0) != -1 ){
- imgCategory.setAttribute("src",tabPictureValueName[iPict]);
+ //imgCategory.setAttribute("src",tabPictureValueName[iPict]);
+ try{
+ var img = document.createElement("image");
+ img.setAttribute("class","ximfImgCategory");
+ img.setAttribute("src",tabPictureValueName[iPict]);
+ container.appendChild(img);
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - showExpandedHeaders ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
}
}
}
}catch(e){
gConsole.logStringMessage("[ximfmail - showExpandedHeaders ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
}
+
+ $("#ximfHeadBox").removeAttr("collapsed");
return true;
}
<?xml-stylesheet href="chrome://ximfmail/skin" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://ximfmail/locale/ximfmail.dtd">
-<overlay id="ximfMessengerOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+<overlay id="ximfMessengerOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:html="http://www.w3.org/1999/xhtml">
<script type="application/javascript" src="chrome://ximfmail/content/jquery.js" />
<script type="application/javascript" src="chrome://ximfmail/content/controler-ximfmail.js" />
<script type="application/javascript" src="chrome://ximfmail/content/constant-ximfmail.js" />
+ <script type="application/javascript" src="chrome://ximfmail/content/ximfCatalog.js" />
<script type="application/javascript" src="chrome://ximfmail/content/ximfmail.js" />
<script type="application/javascript" src="chrome://ximfmail/content/messageAnalyser-ximfmail.js" />
<script type="application/javascript" src="chrome://ximfmail/content/messageWindow-ov-ximfmail.js" />
- <!-- Display Ximf pictures in message of new window-->
- <!-- Display Ximf pictures in message -->
- <rows id="expandedHeaderRows">
- <row id="ximfHeadBox" insertbefore="expandedfromRow" collapsed="true">
- <label value=""/>
- <hbox>
- <image id="ximfSecurityClassificationLabelImg"/>
- <spacer flex="1"/>
- <image id="ximfCategoryClassificationLabelImg"/>
- <spacer flex="1"/>
- </hbox>
- </row>
- </rows>
+ <!-- Display Ximf pictures in message -->
+ <html:div id="expandedHeadersTopBox">
+ <hbox id="ximfHeadBox" insertafter="header-view-toolbox">
+ <image id="ximfSecurityClassificationLabelImg"/>
+ <image id="ximfCategoryClassificationLabelImg"/>
+ </hbox>
+ </html:div>
- <vbox id="messagepanebox">
+ <vbox id="messagepanebox">
<!-- Display Ximf headers in message of new window -->
<vbox id="ximfmailMailPanel" insertafter="msgHeaderView" collapsed="true">
<hbox id="ximfmailMailPanelFocusBar" class="ximfmailFocusBar" flex="1" align="center">
var gCurrentIdentity = null;\r
var gPreviousIdentity = null;\r
var gComposeMsgByMenuitem = false;\r
-var gXimfThreadTree = null;\r
\r
var gConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);\r
var gXBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);\r
$(document).ready(function(){\r
// init ximfmail operations\r
CreateXimfmailCatalog(); \r
- gXimfThreadTree = new XimfThreadTree();\r
+ OnSelectfolderPane(); \r
+ \r
+ // Creating Ximf Custom Columns\r
var observerService = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);\r
- observerService.addObserver(XimfThreadTreeDBViewObserver, "MsgCreateDBView", false); \r
-\r
- OnSelectfolderPane();\r
-\r
+ observerService.addObserver(XimfThreadTreeDBViewObserver, "MsgCreateDBView", false); \r
+ \r
// event manager\r
$("#folderTree").select(OnSelectfolderPane);\r
//optional-for technical informations $("#threadTree").select(OnSelectMsg);\r
$("#key_openMessage").bind("command",OnOpenMsg);\r
$("#threadTree").keypress(OnOpenMsgWithKey); \r
//\r
- $("#threadTree").click(UpdateThreadPane);\r
$("#button-newmsg").mousedown(OnSelectfolderPane); // load instances \r
$("#button-newmsg").bind('command', OnComposeDefaultMsg); // use default instance \r
$("#button-reply").mousedown(OnSelectfolderPane);\r
\r
// Security Labels compatibility (RFC2634)\r
try{CreateSecurityLabelXml();}catch(e){}\r
+ \r
});\r
\r
-\r
-/*\r
- * save state of custom columns\r
- */\r
-function UpdateThreadPane(){\r
- if(gXimfThreadTree){ \r
- gXimfThreadTree.saveColumnToHide();\r
- }\r
-}\r
-\r
- \r
-\r
/*\r
* \r
*/\r
try{\r
if(!gCurrentIdentity) return false; \r
if (IsXimfailActivated(gCurrentIdentity)){ \r
- pref.setBoolPref("mailnews.headers.showXimfmail",true); \r
+ pref.setBoolPref("mailnews.headers.showXimfmail",true);\r
}else{\r
pref.setBoolPref("mailnews.headers.showXimfmail",false); \r
}\r
pref.setBoolPref("mailnews.headers.showXimfmail",true);\r
$("#menupopup-newmsg").attr("datasources","chrome://theme_ximfmail/content/ximfCatalog.rdf");\r
$("#menupopup-newmsg menuitem").attr("hidden","false");\r
- $("#ximfmail-custom-panel").attr("hidden","false"); \r
+ $("#ximfmail-custom-panel").removeAttr("collapsed"); \r
+ $("#button-newmsg").attr("type","menu-button");\r
}else{\r
pref.setBoolPref("mailnews.headers.showXimfmail",false);\r
$("#menupopup-newmsg").attr("datasources","");\r
$("#menupopup-newmsg menuitem").attr("hidden","true");\r
- $("#ximfmail-custom-panel").attr("hidden","true"); \r
+ $("#ximfmail-custom-panel").attr("collapsed","true"); \r
+ $("#button-newmsg").attr("type","");\r
}\r
- \r
- // load custom tree\r
- if( gPreviousIdentity != gCurrentIdentity){ \r
- gPreviousIdentity = gCurrentIdentity;\r
- if(gXimfThreadTree){ \r
- gXimfThreadTree.createThreadTree();\r
- gXimfThreadTree.addCustomColumnHandler();\r
- }\r
- } \r
}catch(e){\r
gConsole.logStringMessage("[ximfmail - OnSelectfolderPane ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber); \r
-\r
}\r
}\r
\r
/*\r
* Get account user settings\r
*/\r
- function GetCurrentUser() { \r
+ function GetCurrentUser() {\r
+ \r
var folder=GetFirstSelectedMsgFolder();\r
var identity = null; \r
var server;\r
}\r
if(identity){\r
gCurrentIdentity=identity;\r
- var prefName="mail.identity."+identity.key+".useremail";\r
+ var prefName="mail.identity."+identity.key+".useremail"; \r
try{\r
if(gXBranch.prefHasUserValue( prefName ))\r
return gXBranch.getCharPref(prefName); \r
\r
<?xml-stylesheet href="chrome://ximfmail/skin" type="text/css"?>\r
<!DOCTYPE overlay SYSTEM "chrome://ximfmail/locale/ximfmail.dtd">\r
-<overlay id="ximfMessengerOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">\r
+<overlay id="ximfMessengerOverlay" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"\r
+ xmlns:html="http://www.w3.org/1999/xhtml">\r
\r
<script type="application/javascript" src="chrome://ximfmail/content/jquery.js" /> \r
<script type="application/javascript" src="chrome://ximfmail/content/constant-ximfmail.js" />\r
+ <script type="application/javascript" src="chrome://ximfmail/content/ximfCatalog.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/controler-ximfmail.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/ximfmail.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/messageAnalyser-ximfmail.js" />\r
object="?pathDictionary" />\r
<triple subject="?elt"\r
predicate="http://www.ximfmail.com/RDF#instanceLabel"\r
- object="?label" /> \r
+ object="?label" /> \r
<triple subject="?elt"\r
predicate="http://www.ximfmail.com/RDF#active"\r
object="true" />\r
\r
<!-- Display Ximf headers in single message -->\r
<vbox id="singlemessage">\r
- <vbox id="ximfmailMailPanel" insertafter="msgHeaderView" collapsed="true">\r
- \r
+ <vbox id="ximfmailMailPanel" insertafter="msgHeaderView" collapsed="true"> \r
<hbox id="ximfmailMailPanelFocusBar" class="ximfmailFocusBar" flex="1" align="center">\r
<button class="ximfmailButton" id="ximfmailComposeMessageMaximize" tooltiptext="&ximfmail.compose.focus;" accesskey="+" hidden="true" />\r
<button class="ximfmailButton" id="ximfmailComposeMessageMinimize" tooltiptext="&ximfmail.compose.unfocus;" accesskey="-" />\r
</hbox> \r
</vbox>\r
</vbox>\r
- <!-- Display Ximf pictures in message --> \r
- <rows id="expandedHeaderRows">\r
- <row id="ximfHeadBox" insertbefore="expandedfromRow" collapsed="true">\r
- <label value=""/>\r
- <hbox>\r
- <image id="ximfSecurityClassificationLabelImg"/>\r
- <spacer flex="1"/> \r
- <image id="ximfCategoryClassificationLabelImg"/>\r
- <spacer flex="1"/> \r
- </hbox> \r
- </row>\r
- </rows>\r
+ \r
+ <!-- Display Ximf pictures in message expandedHeadersBottomBox --> \r
+ <html:div id="expandedHeadersTopBox">\r
+ <hbox id="ximfHeadBox" insertafter="header-view-toolbox">\r
+ <image id="ximfSecurityClassificationLabelImg"/> \r
+ <image id="ximfCategoryClassificationLabelImg"/> \r
+ </hbox>\r
+ </html:div>\r
+ \r
</overlay>
\ No newline at end of file
\r
/* Init ximfmail document */ \r
window.addEventListener("compose-window-init", XimfmailComposeInit, true);\r
-//window.addEventListener("compose-window-reopen", XimfmailReOpen, true); function XimfmailReOpen(){alert("compose-window-reopen")}\r
\r
/*\r
* (Re)open message composer with XIMF instance\r
*/\r
-function XimfmailComposeInit(){\r
+function XimfmailComposeInit(){ \r
// ximfmail not requested\r
+ ResetXimfhdrsDom();\r
if(!gPrefBranch) gPrefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);\r
if(!gPrefBranch.getBoolPref("mailnews.headers.showXimfmail")){ \r
- $("#isUsingXimfail").attr("hidden","true");\r
- $("#ximfmailComposeMessageHeadersTablist").empty(); \r
+ $("#isUsingXimfail").attr("hidden","true"); \r
try{\r
//remove ximf events ...\r
HideSendMessageElements(true);\r
ReloadSecurityAccess();\r
}catch(e){}\r
}else{\r
- CreateXimfmailCatalog(); \r
+ if(!gXimfCatalog) CreateXimfmailCatalog();\r
$("#isUsingXimfail").attr("hidden","false");\r
\r
// observer on sending message\r
var ximfmailObserverSvc = Components.classes["@mozilla.org/observer-service;1"].getService(Components.interfaces.nsIObserverService);\r
ximfmailObserverSvc.addObserver(ximfmailOnSend, "mail:composeOnSend", false); \r
- \r
- // I can't catch event on completely initialized compose message, so loop on gCurrentIdentity loaded\r
- setTimeout("XimfmailStartup()", 50);\r
+ \r
+ XimfmailStartup();\r
} \r
}\r
\r
var gMaxTimeoutXimfmail=0;\r
function XimfmailStartup(){\r
if(!gCurrentIdentity){ \r
+ // I can't catch event on completely initialized compose message, so loop on gCurrentIdentity loaded\r
if(gMaxTimeoutXimfmail<20){\r
setTimeout("XimfmailStartup()", 100);\r
++gMaxTimeoutXimfmail;\r
- } \r
+ }\r
return;\r
- }\r
+ } \r
\r
var currentInstance = null;\r
var current_definition = null;\r
- //is Template or Draft message\r
+ // is Template or Draft message\r
var typeMsg = -1;\r
try{\r
// get current definition and default instance of account loaded \r
case nsIMsgCompType.ForwardInline: \r
case nsIMsgCompType.ForwardAsAttachment: \r
var uriMsg = null;\r
- if( args){ \r
+ if( args){\r
uriMsg = args.originalMsgURI; \r
}else{\r
if(gMsgCompose) uriMsg = gMsgCompose.originalMsgURI; \r
* Get Extended headers of messages and display known instances\r
*/\r
function XimfmailParseAndUpdateComposeMesssage(msgSrc,uriSrc){\r
+ \r
var currentXimfHdrArray = XimfmailParseMessage(msgSrc);\r
var ximfMsg = new XimfmailMesssage();\r
if(ximfMsg.init(uriSrc,currentXimfHdrArray)){\r
LoadXimfmailPanel(ximfMsg._instanceMsgXimf);\r
ComputeWithForm(ximfMsg);\r
- }else{ \r
- $("#ximfmailComposeMessageHeadersTablist").empty();\r
- $("#ximfmailComposeMessageTitle").attr("value","");\r
- $("#isUsingXimfail").attr("hidden","false"); \r
- //remove ximf events ...\r
- HideSendMessageElements(true);\r
- $("#addressingWidget").unbind("command",SpecialXimfRule_CheckAddress); \r
- ReloadSecurityAccess(); \r
- } \r
+ }else{ \r
+ $("#ximfmailComposeMessageTitle").attr("value","");\r
+ $("#isUsingXimfail").attr("hidden","false");\r
+ //remove ximf events ...\r
+ HideSendMessageElements(true);\r
+ $("#addressingWidget").unbind("command",SpecialXimfRule_CheckAddress);\r
+ ReloadSecurityAccess();\r
+ }\r
}\r
\r
/*\r
* \r
*/\r
-function LoadXimfmailPanel(currentInstance){ \r
+function LoadXimfmailPanel(currentInstance){\r
try{\r
- //reset old ihm\r
- $("#ximfmailComposeMessageHeadersTablist").empty();\r
ReloadSecurityAccess(); // reload security user functions\r
}catch(e){}\r
gConsole.logStringMessage("DBG [ximfmail - messengerCompose - LoadXimfmailPanel ] \n XIMF instance : "+ currentInstance);\r
} \r
}\r
\r
+// overload Trustedbird function : add verifications on security message\r
+SendMessage = function(){\r
+ if(CheckIfMustBSigned()){ return false;}\r
+ dump("SendMessage from XUL\n");\r
+ GenericSendMessage(nsIMsgCompDeliverMode.Now);\r
+};\r
+\r
+// overload Trustedbird function : add verifications on security message\r
+SendMessageLater = function(){\r
+ if(CheckIfMustBSigned()){ return false;}\r
+ dump("SendMessageLater from XUL\n");\r
+ GenericSendMessage(nsIMsgCompDeliverMode.Later);\r
+};\r
+\r
+/*\r
+ * is XIMFMAIL message ?\r
+ * yes : check if message must be signed\r
+ * no : continue\r
+ */\r
+function CheckIfMustBSigned(){ \r
+ try{\r
+\r
+ var arrSecureHdrs = CreateRulesArray(gCurrentInstance,"ximf:secureHeaders"); \r
+ var arrSecurityLabelHdrs = CreateRulesArray(gCurrentInstance,"ximf:securityLabel");\r
+ if(arrSecureHdrs.length > 0 || arrSecurityLabelHdrs.length > 0){ \r
+ if(!gSMFields.signMessage){ \r
+ // current message must be secured\r
+ toggleSignMessage(); \r
+ if (!gCurrentIdentity.getUnicharAttribute("signing_cert_name")){ \r
+ return true;\r
+ }else{ \r
+ if(!gSMFields.signMessage){\r
+ // certificate is set by user\r
+ toggleSignMessage();\r
+ }\r
+ }\r
+ }\r
+ }\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - SendMessage_Ximf ] not a ximf message... \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);\r
+ }\r
+ return false;\r
+}\r
\r
/*\r
* \r
*/\r
-var ximfmailOnSend = { \r
- observe: function(subject, topic, data) { \r
- if(!gCurrentIdentity) return; \r
+var ximfmailOnSend = {\r
+ observe: function(subject, topic, data) {\r
+ if(!gCurrentIdentity) return; \r
try{\r
var msgCompFields = gMsgCompose.compFields; \r
var charSet = null;\r
}\r
\r
// append Security labels\r
- AppendESSSecuityLabel(); \r
+ AppendESSSecuityLabel();\r
}catch(e){\r
- gConsole.logStringMessage("[ximfmail - XimfmailStartup ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber); \r
+ gConsole.logStringMessage("[ximfmail - ximfmailOnSend ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber); \r
} \r
}\r
};
\ No newline at end of file
<script type="application/javascript" src="chrome://ximfmail/content/jquery.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/messengerCompose-ov-ximfmail.js" /> \r
<script type="application/javascript" src="chrome://ximfmail/content/constant-ximfmail.js" />\r
+ <script type="application/javascript" src="chrome://ximfmail/content/ximfCatalog.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/ximfmail.js" /> \r
<script type="application/javascript" src="chrome://ximfmail/content/ximfDataSource.js" />\r
<script type="application/javascript" src="chrome://ximfmail/content/messageAnalyser-ximfmail.js" />\r
<tabbox id="ximfmailComposeMessageHeadersTablist" observes="isShowingXimfail" handleCtrlTab="true" eventnode="parent"/> \r
</vbox>\r
</toolbar> \r
- </toolbox> \r
+ </toolbox>\r
</overlay>
\ No newline at end of file
} \r
}\r
\r
-\r
var gXimfHdrs = null; \r
// \r
function XimfmailInstanceHeaders(){\r
};\r
// \r
XimfmailInstanceHeaders.prototype.loadXimfSecurityRules = function(){\r
- var isSigned = false;\r
- \r
+ var isToogleSigned = false;\r
// get secure state from prefs\r
- if (gSMFields) isSigned = gSMFields.signMessage; \r
+ if(!gSMFields){\r
+ // use Trustedbird function to initialize gSMFields\r
+ onComposerReOpen(); \r
+ }\r
\r
// secure headers \r
try{\r
serializer.serializeToStream(signHeaders, foStream, ""); // rememeber, doc is the DOM tree\r
foStream.close();\r
\r
- // set folder datas \r
+ // set folder datas\r
gCurrentIdentity.setCharAttribute("secureheaders.folderdata",file.path);\r
\r
- // sign message with secure headers\r
+ // message with secure headers : force sign message\r
gCurrentIdentity.setBoolAttribute("secureheaders.checked",true);\r
$("#idItemSecureHeaders_1").attr("checked","true"); \r
$("#idItemSecureHeaders_2").attr("checked","true"); \r
$("#idItemSecureHeaders_1").attr("disabled","true");\r
- $("#idItemSecureHeaders_2").attr("disabled","true"); \r
- if(!isSigned){\r
- toggleSignMessage();// signMessage(); // from file msgCompSMIMIEOverlay.js\r
- isSigned = true;\r
- } \r
+ $("#idItemSecureHeaders_2").attr("disabled","true"); \r
+ \r
+ $("#menu_securitySign1").attr("checked","true");\r
+ $("#menu_securitySign2").attr("checked","true");\r
$("#menu_securitySign1").attr("disabled","true");\r
- $("#menu_securitySign2").attr("disabled","true"); \r
+ $("#menu_securitySign2").attr("disabled","true");\r
\r
+ if(!gSMFields.signMessage){\r
+ toggleSignMessage();\r
+ isToogleSigned = true;\r
+ // if certificate problem resolved, try to load ui signature\r
+ if (gCurrentIdentity.getUnicharAttribute("signing_cert_name")&&!gSMFields.signMessage){\r
+ toggleSignMessage();// certificate is set by user\r
+ }\r
+ \r
+ }\r
gConsole.logStringMessage("ximfmail - loadSecurityRules - secureHeaders on "); \r
}\r
}else{\r
_eSSSecurityLabelHdrArray = CreateRulesArray(_instance,"ximf:securityLabel");\r
if(_eSSSecurityLabelHdrArray.length > 0){ \r
$("#menu_securityLabelDialog1").attr("checked","true"); \r
- $("#menu_securityLabelDialog2").attr("checked","true"); \r
$("#menu_securityLabelDialog1").attr("disabled","true");\r
+ $("#menu_securityLabelDialog2").attr("checked","true"); \r
$("#menu_securityLabelDialog2").attr("disabled","true");\r
\r
- if(!isSigned){\r
- toggleSignMessage(); // from file msgCompSMIMIEOverlay.js\r
- isSigned = true;\r
- }\r
- if(gSMFields){\r
- gSMFields.securityClassification = -1;\r
- gSMFields.privacyMark = "";\r
- gSMFields.securityCategories = "";\r
- }\r
+ $("#menu_securitySign1").attr("checked","true"); \r
+ $("#menu_securitySign1").attr("disabled","true");\r
+ $("#menu_securitySign2").attr("checked","true");\r
+ $("#menu_securitySign2").attr("disabled","true");\r
+ \r
+ if(!gSMFields.signMessage){\r
+ if(!isToogleSigned){\r
+ toggleSignMessage();\r
+ // if certificate problem resolved, try to load ui signature\r
+ if (gCurrentIdentity.getUnicharAttribute("signing_cert_name")&&!gSMFields.signMessage){\r
+ toggleSignMessage();// certificate is set by user\r
+ }\r
+ }\r
+ } \r
+ \r
+ // \r
+ gSMFields.securityClassification = -1;\r
+ gSMFields.privacyMark = "";\r
+ gSMFields.securityCategories = ""; \r
gConsole.logStringMessage("ximfmail - loadSecurityRules - securityLabels on "); \r
}else{\r
gConsole.logStringMessage("ximfmail - loadSecurityRules - securityLabels off "); \r
function InsertXimfmailComposer(currentInstance){\r
try{\r
if(gXimfHdrs){gXimfHdrs = null;}\r
- \r
gXimfHdrs = new XimfmailInstanceHeaders();\r
gXimfHdrs.init(currentInstance);\r
gXimfHdrs.loadXimfSecurityRules();\r
\r
// ihm init \r
- ResetXimfhdrsDom();\r
InsertXimfhdrsDom(gXimfHdrs.getXimfInstanceResource(), gChromeXslMsgCompose);\r
\r
// controler init \r
* DOM MANIPULATIONS OF XIMFMAIL ELEMENTS\r
*/\r
function ResetXimfhdrsDom(){\r
- // delete old ximf items\r
- $("#ximfmailComposeMessageHeadersTablist").empty();\r
+ try{\r
+ // delete old ximf items\r
+ $("#ximfmailComposeMessageHeadersTablist").empty();\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - ResetXimfhdrsDom ] " + e +"\nline : " + e.lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ }\r
}\r
\r
function InsertXimfhdrsDom(ximfInstanceResource, urlXslTemplate){\r
$("#isUsingXimfail").attr("hidden","true");\r
return;\r
}\r
- $("#isUsingXimfail").attr("hidden","false");\r
- \r
+\r
if(gXimfCatalog){\r
$("#ximfmailComposeMessageTitle").attr("value",gXimfCatalog.getLabelInstance(ximfInstanceResource));\r
}else{\r
$("#ximfmailComposeMessageHeadersTablist").append(CreateDOMWithXimfInstance(ximfInstanceResource, urlXslTemplate));\r
}catch(e){\r
// TODO : alert user of xslt problem\r
- ("#isUsingXimfail").attr("hidden","false");\r
+ ("#isUsingXimfail").attr("hidden","true");\r
} \r
\r
// custom panels where maxitem=1 and contains composed elements\r
for(j=0;j<mnuitems.length;++j){\r
var chkbx = document.createElement("checkbox");\r
$(chkbx).attr("id",$(mnuitems[j]).attr("id"));\r
+ $(chkbx).attr("class","ximfCheckbox");\r
$(chkbx).attr("label",$(mnuitems[j]).attr("label"));\r
$(chkbx).attr("ximfvalue",$(mnuitems[j]).attr("ximfvalue"));\r
$(chkbx).attr("ximftextbox",$(mnuitems[j]).attr("ximftextbox"));\r
// Custom Ximf Headers Dom\r
CustomXimfhdrsInputBox(); \r
CustomXimfhdrsButton(); \r
- CustomXimfhdrsTreeDialog(); // append DOM elements to access external datas \r
+ CustomXimfhdrsTreeDialog(); // append DOM elements to access external datas\r
+ \r
+ // display Ximf elements\r
+ $("#isUsingXimfail").attr("hidden","false");\r
} \r
\r
/*\r
var listEditorClass = $("popup > textbox[class='ximfInputbox']");\r
for(var i = 0 ; i<listEditorClass.length ; ++i){ \r
try{\r
- var idTxtBox = listEditorClass[i].getAttribute("ximfreftextbox");\r
- var inputbox = $("textbox[id='"+idTxtBox+"'][class]");\r
- if(inputbox[0].getAttribute("class") != "ximfDatetime"){ \r
- var editor_button = $("textbox[id='"+idTxtBox+"']>button");\r
- editor_button[0].setAttribute("class","ximfmailButtonTxt ximfEditor"); \r
- editor_button[0].setAttribute("tooltiptext",getIlkProperties("ximfmail.composer.editor.image"));\r
- editor_button[0].setAttribute("refbox",inputbox[0].getAttribute("id")); \r
+ var idTxtBox = $(listEditorClass[i]).attr("ximfreftextbox");\r
+ var inputbox = $("textbox[id='"+idTxtBox+"']");\r
+ if($(inputbox).attr("class") != "ximfDatetime"){ \r
+ var editor_button = $("textbox[id='"+idTxtBox+"']>button"); \r
+ $(editor_button).attr("class","ximfmailButtonTxt ximfEditor"); \r
+ $(editor_button).attr("tooltiptext",getIlkProperties("ximfmail.composer.editor.image"));\r
+ $(editor_button).attr("refbox",$(inputbox).attr("id"));\r
\r
- inputbox[0].setAttribute("ximfmaxitems", listEditorClass[i].getAttribute("ximfmaxitems"));\r
- inputbox[0].setAttribute("ximfminitems", listEditorClass[i].getAttribute("ximfminitems"));\r
- inputbox[0].setAttribute("ximseparator", listEditorClass[i].getAttribute("ximseparator"));\r
- inputbox[0].setAttribute("tabindex",parseInt(i, 10)+100);\r
- inputbox[0].setAttribute("class","ximfEditor"); \r
- inputbox[0].removeAttribute("popup");\r
- inputbox[0].removeAttribute("readonly");\r
+ $(inputbox).attr("ximfmaxitems", $(listEditorClass[i]).attr("ximfmaxitems"));\r
+ $(inputbox).attr("ximfminitems", $(listEditorClass[i]).attr("ximfminitems"));\r
+ $(inputbox).attr("ximseparator", $(listEditorClass[i]).attr("ximseparator"));\r
+ $(inputbox).attr("tabindex",parseInt(i, 10)+100);\r
+ $(inputbox).attr("class","ximfEditor");\r
+ $(inputbox).removeAttr("popup");\r
+ $(inputbox).removeAttr("readonly");\r
}\r
}catch(e){\r
- gConsole.logStringMessage("[ximfmail - modifyEditorBox ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber); \r
+ gConsole.logStringMessage("[ximfmail - CustomXimfhdrsInputBox ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber); \r
} \r
}\r
\r
rdfdataSource = _dataSourceArray[idxDatasSource]._dataSource;\r
refRdfdataSource = _dataSourceArray[idxDatasSource]._refDataSource;\r
}else{ \r
- // get xml schema from profile instance directory \r
+ // get xml schema from profile instance directory\r
var sCompletePath = getFilePathInProfile("extensions/"+gXimfCatalog.getSchemaInstance(gXimfHdrs.getXimfInstanceResource()));\r
sCompletePath = sCompletePath.substring(0, sCompletePath.lastIndexOf("\\")+1) + keyCat; \r
var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
} \r
}\r
\r
+\r
/*\r
* Open window text editor\r
*/\r
$("button[class*='ximfEraser']").bind("command",OnClickEraser); \r
$("button[class*='ximfTreeDialog']").bind("command",OnClickTreeDialogButton);\r
$("button[class*='ximfDatepicker']").bind("command",OnClickDatepicker); \r
- $("textbox[class='ximfEditor']").click(OnXimfhdrsEditor); \r
+ $("textbox[class='ximfEditor']").click(OnXimfhdrsEditor);\r
$("textbox[class='ximfEditor']").bind("change",OnCheckXimfhdrsEditor); \r
$("button[class*='ximfEditor']").bind("command",OnClickEditorButton);\r
\r
+ // check for mandatory ximf headers when editor texbox has changed\r
+ $("#ximfmailComposeMessageHeadersTablist textbox").bind("change",function(e){\r
+ e.currentTarget.setAttribute("ximfvalue",e.currentTarget.value);\r
+ CheckXimfhdrsSelection();});\r
+ \r
// get complete information of ximf hdr\r
$("button[class*='ximfDetail']").bind("command",function(evt){\r
OpenInfoDialog($(evt.currentTarget).attr("refLabel")); \r
}catch(e){\r
gConsole.logStringMessage("[ximfmail - OnSelectXimfmailContextBox ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber); \r
}\r
-} \r
-\r
+}\r
+ \r
function OnCheckXimfhdrsEditor(evt){\r
try{\r
//alert(evt.currentTarget.id)\r
var arrayCheckedbox = null;\r
while(nextElt){\r
if(nextElt.localName == "popup"){ \r
- arrayCheckedbox = $("popup[id='"+nextElt.id+"'] checkbox[class='ximCheckbox'][checked]" ); \r
+ arrayCheckedbox = $("popup[id='"+nextElt.id+"'] checkbox[class='ximfCheckbox'][checked]" ); \r
//alert("checklist OK !!" + nextElt.id + arrayCheckbox.length);\r
// id of parent node\r
idTextBox = nextElt.getAttribute('ximfreftextbox'); \r
// send hidden headers elements\r
var arrayValues = $("label[class='ximfHiddenHeader']");\r
if(arrayValues){ \r
- for(var idx=0; idx<=arrayValues.length; idx++){\r
+ for(var idx=0; idx<arrayValues.length; idx++){\r
try { \r
if(arrayValues[idx].getAttribute(_XIMF_ATT_XVALUE)){ \r
sCompleteList += EncodeMimeXimfheader($(arrayValues[idx]).attr("ximfheader"), $(arrayValues[idx]).attr(_XIMF_ATT_XVALUE), charSet) + headersSeparator; \r
// send textbox elements\r
arrayValues = $("textbox[class='XimfTextboxDisplay']");\r
if(arrayValues){ \r
- for(var idx=0; idx<=arrayValues.length; idx++){\r
+ for(var idx=0; idx<arrayValues.length; idx++){\r
try { \r
if($(arrayValues[idx]).attr(_XIMF_ATT_XVALUE)){\r
sCompleteList += EncodeMimeXimfheader($("#"+$(arrayValues[idx]).attr(_XIMF_ATT_REF_HEADER)).attr("ximfheader"), $(arrayValues[idx]).attr(_XIMF_ATT_XVALUE), charSet) + headersSeparator;\r
try{ \r
arrayValues = $("textbox[class='ximfEditor']");\r
if(arrayValues){\r
- for( idx=0; idx<=arrayValues.length; idx++){ \r
+ for( idx=0; idx<arrayValues.length; idx++){ \r
if(arrayValues[idx].value){\r
try{\r
sCompleteList += EncodeMimeXimfheader($("#"+$(arrayValues[idx]).attr(_XIMF_ATT_REF_HEADER)).attr("ximfheader"), arrayValues[idx].value, charSet) + headersSeparator; \r
//arrayValues = $("#ximfmailComposeMessagePanel " + _XIMF_ELT_DATEPICKER); \r
arrayValues = $("textbox[class='ximfDatetime']"); \r
if(arrayValues){ \r
- for( idx=0; idx<=arrayValues.length; idx++){ \r
+ for( idx=0; idx<arrayValues.length; idx++){ \r
if(arrayValues[idx].value){ \r
try{\r
sCompleteList += EncodeMimeXimfheader($("#"+$(arrayValues[idx]).attr(_XIMF_ATT_REF_HEADER)).attr("ximfheader"), arrayValues[idx].getAttribute(_XIMF_ATT_XVALUE), charSet) + headersSeparator; \r
try{\r
arrayValues = $("#ximfmailComposeMessagePanel ximfaddress");\r
if(arrayValues){ \r
- for( idx=0; idx<=arrayValues.length; idx++){ \r
+ for( idx=0; idx<arrayValues.length; idx++){ \r
if(arrayValues[idx].listaddress != ""){\r
try{\r
sCompleteList += EncodeMimeXimfheader($("#"+$(arrayValues[idx]).attr(_XIMF_ATT_REF_HEADER)).attr("ximfheader"), arrayValues[idx].listaddress, charSet) + headersSeparator;\r
+\r
/* ***** BEGIN LICENSE BLOCK *****\r
* Copyright (c) 2008-2009 EADS DEFENCE AND SECURITY - All rights reserved.\r
* ximfmail is under the triple license MPL 1.1/GPL 2.0/LGPL 2.1.\r
* ***** END LICENSE BLOCK ***** */\r
\r
/*\r
- * TreeThread observer\r
+ * XimfThreadTreeDBViewObserver\r
+ * 'MsgCreateDBView' : Special event that gets fired whenever a view is created. \r
+ * When that event fires, set up the custom column handler on the new view.\r
*/\r
var XimfThreadTreeDBViewObserver = {\r
// Components.interfaces.nsIObserver\r
- observe: function(aMsgFolder, aTopic, aData) { \r
- if(gXimfThreadTree) gXimfThreadTree.addCustomColumnHandler();\r
+ observe: function(aMsgFolder, aTopic, aData){ \r
+ gConsole.logStringMessage("ximfmail - XimfThreadTreeDBViewObserver:observe");\r
+ XimfThreadTree.getInstance().create();\r
}\r
}\r
\r
-/* \r
- * XimfThreadTree class\r
+/*\r
+ * Column handler template definition \r
+ */\r
+function XimfCustomColumnHandler(property){\r
+ // Properties\r
+ this.property = property;\r
+ this.isString = true; \r
+ \r
+ // Functions\r
+ this.getSortStringForRow = function (hdr){ return (this.isString) ? hdr.getStringProperty(this.property) : ""; };\r
+ this.isString = function (){ return this.isString; };\r
+ this.getCellProperties = function (row, col, props) {};\r
+ this.getRowProperties = function(row, props){};\r
+ this.getImageSrc = function (row, col){return null; };\r
+ this.getSortLongForRow = function(hdr){ return (this.isString) ? 0 : new Number(hdr.getStringProperty(this.property)).value; };\r
+ this.getCellText = function (row, col){\r
+ // get cell informations\r
+ var key = gDBView.getKeyAt(row);\r
+ var hdr = gDBView.db.GetMsgHdrForKey(key);\r
+ var value = hdr.getStringProperty(this.property); \r
+ // get ilk value if exists \r
+ var ilklabel = XimfThreadTree.getInstance().getIlkColumnArray()[this.property.toLowerCase()][value.toLowerCase()];\r
+ if(ilklabel == undefined) ilklabel = value;\r
+ //gConsole.logStringMessage("[ximfmail - XimfCustomColumnHandler ] getCellText "+this.property+" = " + ilklabel ); \r
+ return ilklabel; \r
+ };\r
+};\r
+\r
+/*\r
+ * XimfThreadTree \r
+ * Custom Columns with XIMF headers\r
+ * Get XIMF headers in xml containers <ihm> of Ximfmail instances : \r
+ * <ximf:treeRcv>\r
+ * <ximf:headerRef>header-reference</ximf:headerRef> \r
+ * <ximf:headerRef>header-reference-other</ximf:headerRef>\r
+ * </ximf:treeRcv>\r
*/\r
-function XimfThreadTree(){\r
+var XimfThreadTree = (function(){\r
// private:\r
+ var instantiated; \r
+ var _chromeXslTreeRcv = "chrome://theme_ximfmail/content/threadTree-ximfmail.xsl";\r
var _ximfHdrArrayByID = [];\r
+ var _refAccountArray = []; \r
+ var _ximfIlilkCustomColumnArray = [];\r
\r
- //\r
- function isDataInArray(data,array){\r
- for(var i=0; i<array.length; ++i){\r
- if(data == array[i]){\r
- return true;\r
- }\r
- }\r
- return false;\r
- }\r
- \r
- /*\r
- * Get ilk values from instance\r
- */\r
- function LoadIlkColumnsValues2(currentInstance){\r
- try{\r
- var ilkArray = [];\r
- // get xml schema for instance\r
- if(!gXimfCatalog){ \r
- gXimfCatalog = new XimfCatalog();\r
+ // add DOM element to tree\r
+ function addColumn(domTreecol,idTreecol){\r
+ $("#threadCols").append(domTreecol); // istancedom_treecol is mofified by append jquery function is called\r
+ var splitter_dom = document.createElement("splitter");\r
+ $(splitter_dom).attr("reftreecol",idTreecol);\r
+ $(splitter_dom).attr("class","tree-splitter");\r
+ $(splitter_dom).attr("ximfheadtree","1"); \r
+ $("#threadCols").append(splitter_dom);\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:addColumn] add new ximf column to Dom - id = " + idTreecol);\r
+ };\r
+ // attach handler object to custom column. addColumnHandler that takes a column ID\r
+ function addColumnHandler(idTreecol){\r
+ if (gDBView){ \r
+ gDBView.addColumnHandler(idTreecol, new XimfCustomColumnHandler(idTreecol.toLowerCase())); \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:addColumnHandler] load new XimfCustomColumnHandler for column " + idTreecol);\r
}\r
- var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
- var completePath = getFilePathInProfile("extensions/"+gXimfCatalog.getSchemaInstance(currentInstance));\r
- dir.initWithPath( completePath ); \r
- if(!dir.exists()){ \r
- gConsole.logStringMessage("[Ximfmail - createThreadTree - LoadIlkColumnsValues2] Error loading schema file : " + completePath);\r
- return;\r
- } \r
- var objXML = GetXmlDocument(completePath);\r
- var headers = objXML.getElementsByTagName("ximf:header");\r
- \r
- // get xml dictionary parser\r
- var urlDictionary = getFilePathInProfile("extensions/"+gXimfCatalog.getDictionaryInstance(currentInstance));\r
- dir.initWithPath( urlDictionary ); \r
- if(!dir.exists()){ \r
- gConsole.logStringMessage("[Ximfmail - LoadIlkColumnsValues2] Error loading dictionary file : " + completePath);\r
- return;\r
+ };\r
+ // remove DOM element from tree\r
+ function deleteColummn(idTreeCol){ \r
+ for(var i = 0 ; i < _ximfHdrArrayByID.length ; ++i){\r
+ if(_ximfHdrArrayByID[i] === idTreeCol){\r
+ _ximfHdrArrayByID.splice(i,1);\r
+ $("#"+idTreeCol).remove();\r
+ $("splitter[reftreecol='"+idTreeCol+"']").remove();\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:deleteColummn] remove ximf column from Dom - id = " + idTreeCol); \r
+ }\r
} \r
- var dicoXML = GetXmlDocument(urlDictionary);\r
- var dicoElements = dicoXML.getElementsByTagName("ximf:locale");\r
- \r
- // get local lang \r
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);\r
- var refLang = prefs.getCharPref("general.useragent.locale");\r
- if(!refLang) refLang = "fr"; \r
- var ilkEntities = null;\r
- for(var idxLang=0 ; idxLang < dicoElements.length ; ++idxLang){ \r
- if(dicoElements[idxLang].getAttribute("lang") == refLang){\r
- ilkEntities = dicoElements[idxLang].getElementsByTagName("ximf:ilk");\r
+ };\r
+ // update Ximfmail column\r
+ function updateXimfHdrArrayByID(idToUpdate){\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateXimfHdrArrayByID] update Ximfmail column " + idToUpdate); \r
+ var isIdExist = false;\r
+ for(var i = 0 ; i < _ximfHdrArrayByID.length ; ++i){\r
+ if(_ximfHdrArrayByID[i] === idToUpdate){ \r
+ isIdExist = true;\r
break;\r
}\r
}\r
- \r
- // parse XML and get labels\r
- for(var i=0 ; i < _ximfHdrArrayByID.length ; ++i){\r
- var currentTreeColId = _ximfHdrArrayByID[i];\r
- for(var idxH = 0 ; idxH < headers.length; ++idxH){ \r
- var attrHeaderList = headers[idxH].attributes; \r
- var headerName = headers[idxH].getAttribute("headerName");\r
- \r
- if(headerName.toLowerCase() == currentTreeColId.toLowerCase()){ \r
- var stringListElt = headers[idxH].getElementsByTagName("ximf:string");\r
- var treeElement = document.getElementById(currentTreeColId);\r
- \r
- var reg=new RegExp(' ', "gi");\r
- for(var j=0 ; j< stringListElt.length ; j++){\r
- try{ \r
- // get values from instance headers\r
- var sContent = stringListElt[j].getAttribute("content"); \r
- var sIlk = stringListElt[j].getAttribute("ilk")\r
- \r
- // get ilk entity from instance dictionay\r
- if(ilkEntities){\r
- for(var idxIlk = 0 ; idxIlk < ilkEntities.length ; ++idxIlk){\r
- if(ilkEntities[idxIlk].getAttribute("entity") == sIlk){\r
- sIlk = ilkEntities[idxIlk].textContent;\r
- //gConsole.logStringMessage("[Ximfmail - LoadIlkColumnsValues2] sIlk : " + sIlk); \r
- break;\r
- }\r
- }\r
- }\r
- // set values to tree column \r
- var ilkid = "ximfkey_"+sContent;\r
- ilkid = ilkid.replace(reg,"_");\r
- //gConsole.logStringMessage("[Ximfmail - LoadIlkColumnsValues2] ]"+ilkid +":"+sIlk+"["); \r
- treeElement.setAttribute(ilkid,sIlk); \r
- }catch(e){} \r
- }\r
- break;\r
- }\r
- }\r
- }\r
-\r
- }catch(e){\r
- gConsole.logStringMessage("[ximfmail - LoadIlkColumnsValues ] " + e +"\nline : " + e.lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ if(!isIdExist){\r
+ _ximfHdrArrayByID.push(idToUpdate);\r
}\r
- return ilkArray;\r
}\r
- \r
- //\r
- function addCustomPreferences(preference, lower){\r
- var xListHdr = "";\r
- var prefList = [];\r
- var prefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);\r
+ // set Ximf headers to display to Thunderbird to check for x-headers\r
+ function addCustomPreferences(preference){\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateColumnToHide] Set Ximf headers to display to Thunderbird pref : " + preference);\r
+ var xListHdr = "";\r
+ var prefList = [];\r
+ var prefBranch = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefService).getBranch(null);\r
\r
- try {\r
- xListHdr = prefBranch.getCharPref(preference);\r
- if((xListHdr) != ""){\r
- var reg=new RegExp("[ ]+", "g");\r
- prefList=xListHdr.split(reg); \r
- }\r
- } catch(ex) {}\r
-\r
- // add only new headers\r
- for (var i = 0; i < _ximfHdrArrayByID.length; i++) { \r
- if (!isDataInArray(_ximfHdrArrayByID[i].toLowerCase(),prefList)){\r
- if (xListHdr != "") {\r
- xListHdr += " ";\r
- } \r
- xListHdr += _ximfHdrArrayByID[i].toLowerCase();\r
- }\r
- } \r
- prefBranch.setCharPref(preference, xListHdr);\r
- };\r
- //Column handler template definition \r
- function XimfCustomColumnHandler(property) {\r
- // Properties\r
- this.property = property;\r
- this.isString = true; \r
- \r
- // Functions\r
- this.getSortStringForRow = function (hdr){ return (this.isString) ? hdr.getStringProperty(this.property) : ""; };\r
- this.isString = function (){ return this.isString; };\r
- this.getCellProperties = function (row, col, props) {};\r
- this.getRowProperties = function(row, props){};\r
- this.getImageSrc = function (row, col){return null; };\r
- this.getSortLongForRow = function(hdr){ return (this.isString) ? 0 : new Number(hdr.getStringProperty(this.property)).value; };\r
- this.getIlkValue = function(value){\r
- var newValue = value;\r
- listTreecol = $("treecol[ximfheadtree='1']");\r
- var reg=new RegExp(' ', "gi");\r
- for(var i=0; i<listTreecol.length; ++i){\r
- if(listTreecol[i].getAttribute("id").toLowerCase()== this.property){\r
- // set values to tree column\r
- var ilkid = "ximfkey_"+value;\r
- ilkid = ilkid.replace(reg,"_"); \r
- newValue = listTreecol[i].getAttribute(ilkid);\r
- if (newValue == ""){ \r
- newValue = value;\r
- }\r
- break;\r
+ try {\r
+ xListHdr = prefBranch.getCharPref(preference);\r
+ if((xListHdr) != ""){\r
+ var reg=new RegExp("[ ]+", "g");\r
+ prefList=xListHdr.split(reg); \r
+ }\r
+ } catch(ex) {}\r
+ \r
+ function isDataInArray(data,array){ \r
+ for(var i=0; i<array.length; ++i){\r
+ if(data == array[i]){\r
+ return true;\r
}\r
}\r
- return newValue;\r
- };\r
- this.getCellText = function (row, col){\r
- var key = gDBView.getKeyAt(row);\r
- var hdr = gDBView.db.GetMsgHdrForKey(key);\r
- var value = hdr.getStringProperty(this.property);\r
- //return hdr.getStringProperty(this.property);\r
- //return value.toLowerCase();\r
- return this.getIlkValue(value);;\r
- }; \r
+ return false;\r
+ }; \r
+ \r
+ // add only new headers\r
+ for (var i = 0; i < _ximfHdrArrayByID.length; i++) { \r
+ if (!isDataInArray(_ximfHdrArrayByID[i].toLowerCase(),prefList)){\r
+ if (xListHdr != "") {\r
+ xListHdr += " ";\r
+ } \r
+ xListHdr += _ximfHdrArrayByID[i].toLowerCase();\r
+ }\r
+ }\r
+ prefBranch.setCharPref(preference, xListHdr);\r
};\r
- \r
- function updateColumnToHide(){\r
+ // obsolete?\r
+ function updateColumnToHide(){ \r
try{\r
if(_ximfHdrArrayByID.length <= 0 ) return;\r
if(gCurrentIdentity){ \r
var prefList = gCurrentIdentity.getCharAttribute("ximfmail_context_DBHeaders");\r
- if(prefList == "undefined") return;\r
+ if(prefList == undefined) return;\r
for(var i=0; i<_ximfHdrArrayByID.length; ++i){\r
if(prefList.lastIndexOf(_ximfHdrArrayByID[i]) != -1){\r
$("treecol[id='"+_ximfHdrArrayByID[i]+"']").attr("hidden","true");\r
}\r
}\r
}catch(e){\r
- gConsole.logStringMessage("[ximfmail - createThreadTree ] " + e +"\nline : " + Error().lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateColumnToHide ] " + e +"\nline : " + Error().lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
} \r
}; \r
- \r
- // public:\r
- if(typeof XimfThreadTree.initialized == "undefined"){\r
- //load tree cells with ximf headers\r
- XimfThreadTree.prototype.createThreadTree = function(){\r
- try{\r
- if(gCurrentIdentity){\r
- var currentInstance = gCurrentIdentity.getCharAttribute("ximfmail_instance_treethread_ref");\r
- // delete previous ximfmail columns\r
- $("splitter[ximfheadtree='1']").remove();\r
- $("treecol[ximfheadtree='1']").remove();\r
- _ximfHdrArrayByID.splice(0,_ximfHdrArrayByID.length);\r
- // new instance -> new ximf columns\r
- if(gCurrentIdentity.getBoolAttribute(XIMF_PREF_IDENTITY_USE_XIMFMAIL)){\r
- $("#threadCols").append(CreateDOMWithXimfInstance(currentInstance,gChromeXslTreeRcv));\r
- \r
- // save list of ximf columns\r
- var listID = $("#threadCols treecol[ximfheadtree='1']");\r
- \r
- if(!listID) return;\r
- for(var idx=0; idx<listID.length; ++idx){\r
- _ximfHdrArrayByID.push(listID[idx].id); \r
+ // get ilk values from instance\r
+ function updateXimfIlkCustomColumnArray(currentInstance){\r
+ try{\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateXimfIlkCustomColumnArray ] create ilk array for Ximf values of instance : "+currentInstance);\r
+ \r
+ // get xml schema for instance\r
+ gXimfCatalog = XimfCatalog.getInstance();\r
+ \r
+ var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);\r
+ var completePath = getFilePathInProfile("extensions/"+gXimfCatalog.getSchemaInstance(currentInstance));\r
+ dir.initWithPath( completePath ); \r
+ if(!dir.exists()){ \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateXimfIlkCustomColumnArray] Error on loading schema file : " + completePath);\r
+ return;\r
+ } \r
+ var objXML = GetXmlDocument(completePath);\r
+ var headers = objXML.getElementsByTagName("ximf:header");\r
+ \r
+ // get xml dictionary parser\r
+ var urlDictionary = getFilePathInProfile("extensions/"+gXimfCatalog.getDictionaryInstance(currentInstance));\r
+ dir.initWithPath( urlDictionary ); \r
+ if(!dir.exists()){ \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateXimfIlkCustomColumnArray] Error on loading dictionary file : " + completePath);\r
+ return;\r
+ } \r
+ var dicoXML = GetXmlDocument(urlDictionary);\r
+ var dicoElements = dicoXML.getElementsByTagName("ximf:locale");\r
+ \r
+ // get local lang \r
+ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);\r
+ var refLang = prefs.getCharPref("general.useragent.locale");\r
+ if(!refLang) refLang = "fr"; \r
+ var ilkEntities = null;\r
+ for(var idxLang=0 ; idxLang < dicoElements.length ; ++idxLang){ \r
+ if(dicoElements[idxLang].getAttribute("lang") == refLang){\r
+ ilkEntities = dicoElements[idxLang].getElementsByTagName("ximf:ilk");\r
+ break;\r
+ }\r
+ }\r
+ \r
+ // parse XML and get ilk values\r
+ for(var i=0 ; i < _ximfHdrArrayByID.length ; ++i){\r
+ var currentTreeColId = _ximfHdrArrayByID[i];\r
+ for(var idxH = 0 ; idxH < headers.length; ++idxH){ \r
+ var attrHeaderList = headers[idxH].attributes; \r
+ var headerName = headers[idxH].getAttribute("headerName"); \r
+ if(headerName.toLowerCase() == currentTreeColId.toLowerCase()){\r
+ var stringListElt = headers[idxH].getElementsByTagName("ximf:string"); \r
+ var tmparray = new Array(); \r
+ for(var j=0 ; j< stringListElt.length ; j++){\r
+ try{ \r
+ // get values from instance headers\r
+ var sContent = stringListElt[j].getAttribute("content"); \r
+ var sIlk = stringListElt[j].getAttribute("ilk") \r
+ // get ilk entity from instance dictionay\r
+ if(ilkEntities){\r
+ for(var idxIlk = 0 ; idxIlk < ilkEntities.length ; ++idxIlk){\r
+ if(ilkEntities[idxIlk].getAttribute("entity") == sIlk){\r
+ sIlk = ilkEntities[idxIlk].textContent;\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ \r
+ // push array\r
+ tmparray[sContent.toLowerCase()]=sIlk;\r
+ \r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateXimfIlkCustomColumnArray ] " + e +"\nline : " + e.lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ } \r
}\r
- updateColumnToHide();\r
- //LoadIlkColumnsValues(currentInstance);\r
- LoadIlkColumnsValues2(currentInstance); \r
- \r
- // use by Thunderbird to check for x-headers\r
- addCustomPreferences('mailnews.customDBHeaders', true); \r
+ // save ilk values for an ximf header \r
+ if(tmparray) _ximfIlilkCustomColumnArray[headerName.toLowerCase()] = tmparray;\r
}\r
- } \r
- }catch(e){\r
- gConsole.logStringMessage("[ximfmail - createThreadTree ] " + e +"\nline : " + Error().lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
- }\r
- }; \r
- XimfThreadTree.prototype.addCustomColumnHandler = function(){\r
- if(_ximfHdrArrayByID.length <= 0 ) return;\r
- if (gDBView) { \r
- for(var i=0; i<_ximfHdrArrayByID.length; ++i){\r
- gDBView.addColumnHandler(_ximfHdrArrayByID[i], new XimfCustomColumnHandler(_ximfHdrArrayByID[i].toLowerCase()));\r
}\r
}\r
- };\r
- XimfThreadTree.prototype.saveColumnToHide = function(){\r
- var listID = $("#threadCols treecol[ximfheadtree='1']");//\r
- try{\r
- if(gCurrentIdentity){ \r
- prefList = ""\r
- for(var i=0; i<listID.length; ++i){\r
- if(listID[i].getAttribute("hidden") == "true"){\r
- if(prefList != "") prefList +=",";\r
- prefList += listID[i].id;\r
+ }catch(e){ \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:updateXimfIlkCustomColumnArray] " + e +"\nline : " + e.lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ } \r
+ };\r
+ function init(){ \r
+ // singleton here\r
+ return{\r
+ // create : create Ximf columns if don't exist and/or add handler on Ximf columns\r
+ // return true if success / false if failed\r
+ create : function(){\r
+ try{\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] create begin - _ximfHdrArrayByID len : "+_ximfHdrArrayByID.length);\r
+ GetCurrentUser();\r
+ if(!gCurrentIdentity) return false;\r
+ var refIdentityKey = gCurrentIdentity.key;\r
+ var currentlistID = $("#threadCols treecol[ximfheadtree='1']"); // get existing Ximf columns \r
+ \r
+ // check if Ximf columns of account already created \r
+ for(var i = 0 ; i < _refAccountArray.length ; ++i){\r
+ if(_refAccountArray[i] === refIdentityKey){\r
+ // account already updated for this session, don't do it again,\r
+ // handler Ximfmail columns headers must be fired \r
+ for(var idx =0 ; idx < currentlistID.length ; ++idx){\r
+ addColumnHandler(currentlistID[idx].id); \r
+ } \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] account already updated for this session - handler Ximfmail columns");\r
+ return true; \r
+ } \r
+ }\r
+ _refAccountArray.push(refIdentityKey);\r
+ \r
+ // get Ximfmail instance with headers to custom \r
+ var currentInstance = gCurrentIdentity.getCharAttribute("ximfmail_instance_treethread_ref"); \r
+ var instancedom = CreateDOMWithXimfInstance(currentInstance,_chromeXslTreeRcv);\r
+ var istancedom_treecol = instancedom.childNodes;\r
+ \r
+ // add new headers to tree\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] " + istancedom_treecol.length + " elements in Ximfmail instance to custom");\r
+ for(var k = istancedom_treecol.length - 1 ; k >= 0 ; --k){\r
+ try{\r
+ var instanceId = $(istancedom_treecol[k]).attr("id"); \r
+ var isCurrentIdInInstance = false;\r
+ for(var l = 0 ; l < currentlistID.length ; ++l){\r
+ if( instanceId === $(currentlistID[l]).attr("id")){\r
+ isCurrentIdInInstance = true; \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] instance " + instanceId + " exists"); \r
+ break;\r
+ }\r
+ }\r
+ if(!isCurrentIdInInstance){\r
+ updateXimfHdrArrayByID(instanceId);\r
+ addColumn(istancedom_treecol[k],instanceId); // add DOM element to tree\r
+ addColumnHandler(instanceId); // load handler\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] instance " + instanceId + " created"); \r
+ //updateColumnToHide(); ???\r
+ }\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] compute error - id = " + k + " : " + e); \r
+ }\r
+ }\r
+ \r
+ // used by Thunderbird to check for x-headers\r
+ addCustomPreferences('mailnews.customDBHeaders'); \r
+ \r
+ // load ilk array for Ximf values of tree cells\r
+ updateXimfIlkCustomColumnArray(currentInstance);\r
+ \r
+ // trace ilk array \r
+ var string = "";\r
+ for(xh in _ximfIlilkCustomColumnArray){\r
+ for(ilk in _ximfIlilkCustomColumnArray[xh]){\r
+ string += "["+ xh +"]["+ ilk +"]["+ _ximfIlilkCustomColumnArray[xh][ilk] + "]\n";\r
}\r
- } \r
- gCurrentIdentity.setCharAttribute("ximfmail_context_DBHeaders",prefList);\r
+ }\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create ] array of ilk of ximf value" + string); \r
+ return true; \r
+ }catch(e){ \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:create] " + e +"\nline : " + e.lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ return false;\r
+ } \r
+ },\r
+ // delete all custom columns of XIMF headers\r
+ deleteXimfColummns : function(){ \r
+ $("treecol[ximfheadtree='1']").remove();\r
+ $("splitter[ximfheadtree='1']").remove(); \r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:deleteXimfColummns ] delete all custom columns of XIMF headers"); \r
+ },\r
+ // attach customColumnHandler for all columns of XIMF headers\r
+ addCustomColumnHandler : function(){\r
+ var currentlistID = $("#threadCols treecol[ximfheadtree='1']");\r
+ for(var i =0 ; i < currentlistID.length ; ++i){ \r
+ addColumnHandler(); \r
}\r
- }catch(e){\r
- gConsole.logStringMessage("[ximfmail - createThreadTree ] " + e +"\nline : " + Error().lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
- } \r
- }; \r
- // loaded object\r
- XimfThreadTree.initialized = true;\r
+ gConsole.logStringMessage("[ximfmail - XimfThreadTree:addCustomColumnHandler ] attach customColumnHandler for all columns of XIMF headers"); \r
+ },\r
+ // get ilk array for Ximf values of tree cells\r
+ getIlkColumnArray : function(){ \r
+ return _ximfIlilkCustomColumnArray;\r
+ },\r
+ //obsolete?\r
+ saveColumnToHide : function(){\r
+ var listID = $("#threadCols treecol[ximfheadtree='1']");//\r
+ try{\r
+ if(gCurrentIdentity){ \r
+ prefList = ""\r
+ for(var i=0; i<listID.length; ++i){\r
+ if(listID[i].getAttribute("hidden") == "true"){\r
+ if(prefList != "") prefList +=",";\r
+ prefList += listID[i].id;\r
+ }\r
+ } \r
+ gCurrentIdentity.setCharAttribute("ximfmail_context_DBHeaders",prefList);\r
+ }\r
+ }catch(e){\r
+ gConsole.logStringMessage("[ximfmail - saveColumnToHide ] " + e +"\nline : " + Error().lineNumber + " : "+ e + "\nfile : "+ Error().fileName);\r
+ }\r
+ }\r
+ } \r
}\r
-}
\ No newline at end of file
+ return{\r
+ getInstance : function(){\r
+ if(!instantiated){\r
+ instantiated = init();\r
+ }\r
+ return instantiated;\r
+ }\r
+ }; \r
+})(); // one shot on XimfThreadTree
\ No newline at end of file
* ZAC de la Clef Saint Pierre - 78990 Elancourt - FRANCE (IDDN.FR.001.480012.002.S.P.2008.000.10000)
* ***** END LICENSE BLOCK ***** */
var gConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
-var gJSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].createInstance(Components.interfaces.mozIJSSubScriptLoader);
-gJSLoader.loadSubScript("chrome://ximfmail/content/constant-ximfmail.js");
-
+
/*
- *
+ * XimfCatalog : instance to get RDF list of Ximfmail instances
+ * call example : var ximfCatalog = XimfCatalog().getIntance().publicmethod();
*/
-function XimfCatalog(){
- // private:
- var _rdfService = null;
- var _dsCatalog = null;
- var _urlCatalog = null
-
-
- // public:
- if(typeof XimfCatalog.initialized == "undefined"){
- // init datasources
- try{
- // init RDF XPCOM Services
- _rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
- _dsCatalog = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);
- _rdfCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].getService(Components.interfaces.nsIRDFContainerUtils);
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog construct ] \n " + e + "\nfile : " + e.fileName+"\nline : "+ e.lineNumber);
- }
-
- /*
- * get datasource object
- */
- XimfCatalog.prototype.getDSCatalog = function(){
- return _dsCatalog;
- };
-
- /*
- * read infomations from catalog
- */
- XimfCatalog.prototype.getTarget = function(instance,predicate){
- try{
- var resource = _rdfService.GetResource(instance);
- var targets = _dsCatalog.ArcLabelsOut(resource);
- while (targets.hasMoreElements()){
- var newpredicate = targets.getNext();
- if (newpredicate instanceof Components.interfaces.nsIRDFResource){
- var target = _dsCatalog.GetTarget(resource, newpredicate, true);
- if (target instanceof Components.interfaces.nsIRDFLiteral){
- //alert(newpredicate.Value + " : \n\r" + target.Value);
- if(newpredicate.Value == predicate)
- return target.Value;
- }
- }
+var XimfCatalog = (function(){
+ var instantiated;
+ var _rdfService = Components.classes["@mozilla.org/rdf/rdf-service;1"].getService(Components.interfaces.nsIRDFService);
+ var _dsCatalog = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);
+ var _rdfCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].getService(Components.interfaces.nsIRDFContainerUtils);
+
+ /*
+ *
+ */
+ function Create(force,aclLevel){
+ try{
+ if(force !== true){
+ if(instantiated){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:Create ] Catalog has already been instantiated");
+ return;
}
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
}
- return null;
- };
- /*
- * create catalog with profile xml informations
- */
- XimfCatalog.prototype.registerXimfmailProfileNode = function(domProfile,aclLevel){
- try{
- // default title of smtp message
- var smtpXimfVersion = DEFAULT_XIMF_VERSION;
- var smtpVersion = "1.0";
- var smtpInstance = "smtp";
- var smtpInstanceLabel = "";
+
+ var extensionPath = getFilePathInProfile("extensions/");
+ var extensionList = getExtensionsList();
+ var sCompletePath;
+ var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
+
+ // search for themes extensions
+ for(i = 0; i<extensionList.length; i++){
try{
- if(gPrefBranch){
- var val = gPrefBranch.getCharPref("ximfmail.smtp_msg.name");
- if(val){ smtpInstance = val; }
+ sCompletePath = getFilePathInProfile("extensions/" + extensionList[i].id + "/chrome/content/ximfmail-profile.xml");
+ dir.initWithPath( sCompletePath );
+ if(dir.exists()){
+ // get xml profile
+ var xmlDoc = GetXmlDocument(sCompletePath);
+ //gXimfCatalog.registerXimfmailProfileNode(xmlDoc.documentElement,aclLevel);
+ AppendInstance(xmlDoc.documentElement,aclLevel);
}
- }catch(e){}
-
- // create Seq container
- var RDFCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].createInstance(Components.interfaces.nsIRDFContainerUtils);
-
- // create RDF resources
- var seqNode = _rdfService.GetResource("http://www.ximfmail.com/catalog");
- var RDFC = null;
- try{
- RDFC = _rdfCUtils.MakeSeq(_dsCatalog, seqNode);
}catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:Create ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
}
-
- // add datas from xml profile to RDF file
- // Create theme List
- var themeTag = domProfile.getElementsByTagName("theme");
- var theme = "";
- var uriThemeDefinition = "http://www.ximfmail.com/catalog/" + themeTag[0].getAttribute("name");
- if(themeTag.length > 0){
- //var adate = new Date();
- //theme = themeTag[0].getAttribute("name")+"-" + parseInt(adate.getTime())+ parseInt(Math.round(Math.random()*1000));
- theme = themeTag[0].getAttribute("name");
- var newURI = "http://www.ximfmail.com/catalog/" + theme;
+ }
+
+ // Report saved resources
+ if(_dsCatalog){
+ var counter=0;
+ var it = _dsCatalog.GetAllResources();
+ while(it.hasMoreElements()){
+ counter++;
+ it.getNext();
+ }
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:Create ] "+counter+" resources added to XimfmailCatalog" );
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:Create ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
+ }
+ /*
+ *
+ */
+ function AppendInstance(domProfile,aclLevel){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance ] Append to catalog instance (Level " + aclLevel + ")" + TRACE_DATE() );
+ try{
+ // default title of smtp message
+ var smtpXimfVersion = DEFAULT_XIMF_VERSION;
+ var smtpVersion = "1.0";
+ var smtpInstance = "smtp";
+ var smtpInstanceLabel = "";
+ try{
+ if(gPrefBranch){
+ var val = gPrefBranch.getCharPref("ximfmail.smtp_msg.name");
+ if(val){ smtpInstance = val; }
+ }
+ }catch(e){}
+
+ // create Seq container
+ var RDFCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].createInstance(Components.interfaces.nsIRDFContainerUtils);
+
+ // create RDF resources
+ var seqNode = _rdfService.GetResource("http://www.ximfmail.com/catalog");
+ var RDFC = null;
+ try{
+ RDFC = _rdfCUtils.MakeSeq(_dsCatalog, seqNode);
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
- // get acl default level
- var defaultacl=-1;
- if(themeTag[0].hasAttribute("defaultacl")){
- defaultacl = themeTag[0].getAttribute("defaultacl");
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] Default ACL level of profile " + newURI + " : " + defaultacl);
- }
-
- if( RDFC.IndexOf(_rdfService.GetResource(newURI)) == -1){
+ // add datas from xml profile to RDF file
+ // Create theme List
+ var themeTag = domProfile.getElementsByTagName("theme");
+ var theme = "";
+ var uriThemeDefinition = "http://www.ximfmail.com/catalog/" + themeTag[0].getAttribute("name");
+ if(themeTag.length > 0){
+ //var adate = new Date();
+ //theme = themeTag[0].getAttribute("name")+"-" + parseInt(adate.getTime())+ parseInt(Math.round(Math.random()*1000));
+ theme = themeTag[0].getAttribute("name");
+ var newURI = "http://www.ximfmail.com/catalog/" + theme;
+
+ // get acl default level
+ var defaultacl=-1;
+ if(themeTag[0].hasAttribute("defaultacl")){
+ defaultacl = themeTag[0].getAttribute("defaultacl");
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance ] Default ACL level of profile " + newURI + " : " + defaultacl);
+ }
+
+ if( RDFC.IndexOf(_rdfService.GetResource(newURI)) == -1){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] RDFC - AppendElement " + newURI);
RDFC.AppendElement(_rdfService.GetResource(newURI));
-
+
_dsCatalog.Assert(_rdfService.GetResource(newURI),
_rdfService.GetResource("http://www.ximfmail.com/RDF#name"),
_rdfService.GetLiteral(theme), true);
+
+ _dsCatalog.Assert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#refSeq"),
+ _rdfService.GetLiteral("http://www.ximfmail.com/catalog/instance_"+theme), true);
+
+ _dsCatalog.Assert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#defaultacl"),
+ _rdfService.GetLiteral(defaultacl), true);
+ }else{
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] RDFC - ReplacedElement " + newURI);
+
+ _dsCatalog.Unassert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#name"),
+ _rdfService.GetLiteral( getTarget(newURI,"http://www.ximfmail.com/RDF#name")));
+
+ _dsCatalog.Assert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#name"),
+ _rdfService.GetLiteral(theme), true);
+
+ _dsCatalog.Unassert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#refSeq"),
+ _rdfService.GetLiteral( getTarget(newURI,"http://www.ximfmail.com/RDF#refSeq")));
+
_dsCatalog.Assert(_rdfService.GetResource(newURI),
_rdfService.GetResource("http://www.ximfmail.com/RDF#refSeq"),
- _rdfService.GetLiteral("http://www.ximfmail.com/catalog/instance_"+theme), true);
-
- _dsCatalog.Assert(_rdfService.GetResource(newURI),
- _rdfService.GetResource("http://www.ximfmail.com/RDF#defaultacl"),
- _rdfService.GetLiteral(defaultacl), true);
-
- }else{
- _dsCatalog.Change(_rdfService.GetResource(newURI),
- _rdfService.GetResource("http://www.ximfmail.com/RDF#name"),
- _rdfService.GetLiteral( this.getTarget(newURI,"http://www.ximfmail.com/RDF#name")),
- _rdfService.GetLiteral(theme));
+ _rdfService.GetLiteral("http://www.ximfmail.com/catalog/instance_"+theme), true);
+
+ _dsCatalog.Unassert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#defaultacl"),
+ _rdfService.GetLiteral( getTarget(newURI,"http://www.ximfmail.com/RDF#defaultacl")));
- _dsCatalog.Change(_rdfService.GetResource(newURI),
- _rdfService.GetResource("http://www.ximfmail.com/RDF#refSeq"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#refSeq")),
- _rdfService.GetLiteral("http://www.ximfmail.com/catalog/instance_"+theme));
-
- _dsCatalog.Change(_rdfService.GetResource(newURI),
- _rdfService.GetResource("http://www.ximfmail.com/RDF#defaultacl"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#defaultacl")),
- _rdfService.GetLiteral(defaultacl));
+ _dsCatalog.Assert(_rdfService.GetResource(newURI),
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#defaultacl"),
+ _rdfService.GetLiteral(defaultacl), true);
}
-
- }
+
+ }
+
+ // Create instance List
+ var RDFCI = RDFCUtils.MakeSeq(_dsCatalog, _rdfService.GetResource("http://www.ximfmail.com/catalog/instance_"+theme));
+
+ // create definitions entries
+ var instanceTag = themeTag[0].getElementsByTagName("instance");
+ //alert(instanceTag.length + " instances in profile xml " + theme)
+
+ var sValue="";
+ var bHasSmtpInstance=false;
+ for(var i = 0; i < instanceTag.length; i++){
+ try{
+ // default instance message, continue
+ if(instanceTag[i].getAttribute("id") == "smtp"){
+ bHasSmtpInstance = true;
+ smtpInstance = instanceTag[i].getAttribute("name");
+ smtpVersion = instanceTag[i].getAttribute("version");
+ smtpXimfVersion = instanceTag[i].getAttribute("ximfVersion");
+ try{
+ smtpInstanceLabel = instanceTag[i].getAttribute("label");
+ }catch(ex){}
+ if(!smtpInstanceLabel) smtpInstanceLabel = smtpInstance;
+ continue;
+ }
+ }catch(e){}
+ // append resource element to sequence
+ var newURI = "http://www.ximfmail.com/catalog/instance_"+theme +"/"+instanceTag[i].getAttribute("name");
+ var newResource = _rdfService.GetResource(newURI);
+ var isNewItem = false;
+ if( RDFCI.IndexOf(newResource) == -1){
+ RDFCI.AppendElement(newResource);
+ isNewItem = true;
+ }
- // Create instance List
- var RDFCI = RDFCUtils.MakeSeq(_dsCatalog, _rdfService.GetResource("http://www.ximfmail.com/catalog/instance_"+theme));
-
- // create definitions entries
- var instanceTag = themeTag[0].getElementsByTagName("instance");
- //alert(instanceTag.length + " instances in profile xml " + theme)
- var sValue="";
- var bHasSmtpInstance=false;
- for(var i = 0; i < instanceTag.length; i++){
- try{
- // default instance message, continue
- if(instanceTag[i].getAttribute("id") == "smtp"){
- bHasSmtpInstance = true;
- smtpInstance = instanceTag[i].getAttribute("name");
- smtpVersion = instanceTag[i].getAttribute("version");
- smtpXimfVersion = instanceTag[i].getAttribute("ximfVersion");
- try{
- smtpInstanceLabel = instanceTag[i].getAttribute("label");
- }catch(ex){}
- if(!smtpInstanceLabel) smtpInstanceLabel = smtpInstance;
- continue;
- }
- }catch(e){}
- // append resource element to sequence
- var newURI = "http://www.ximfmail.com/catalog/instance_"+theme +"/"+instanceTag[i].getAttribute("name");
- var newResource = _rdfService.GetResource(newURI);
- var isNewItem = false;
-
- if( RDFCI.IndexOf(newResource) == -1){
- RDFCI.AppendElement(newResource);
- isNewItem = true;
- }
+ // append ximfVersion of instance
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#ximfVersion"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("ximfVersion")), true);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#ximfVersion"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#ximfVersion")));
- // append ximfVersion of instance
- if(isNewItem){
- _dsCatalog.Assert(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#ximfVersion"),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("ximfVersion")), true);
- }else{
- _dsCatalog.Change(newResource,
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#ximfVersion"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#ximfVersion")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("ximfVersion")));
- }
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("ximfVersion")), true);
+
+ }
+
+ // append name of instance
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("name")), true);
+ }else{
+ /*
+ _dsCatalog.Change(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#instance")),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("name")));
+ */
+
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#instance")));
- // append name of instance
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("name")), true);
+ }
+
+ // append label of instance
+ try{
+ var instLabel = instanceTag[i].getAttribute("label");
+ if(!instLabel) instLabel = instanceTag[i].getAttribute("name");
+ //gConsole.logStringMessage("instLabel" + instLabel);
if(isNewItem){
_dsCatalog.Assert(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("name")), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#instance")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("name")));
- }
-
- // append label of instance
- try{
- var instLabel = instanceTag[i].getAttribute("label");
- if(!instLabel) instLabel = instanceTag[i].getAttribute("name");
- //gConsole.logStringMessage("instLabel" + instLabel);
- if(isNewItem){
- _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#instanceLabel"),
+ _rdfService.GetLiteral(instLabel), true);
+ }else{
+ _dsCatalog.Unassert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#instanceLabel"),
- _rdfService.GetLiteral(instLabel), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#instanceLabel"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#instanceLabel")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("instanceLabel")));
- }
- }catch(ex){}
-
- // append version of instance
- if(isNewItem){
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#instanceLabel")));
+
_dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#instanceLabel"),
+ _rdfService.GetLiteral(instLabel), true);
+ }
+ }catch(ex){}
+
+ // append version of instance
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#version"),
_rdfService.GetLiteral(instanceTag[i].getAttribute("version")), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#version"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#version")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("version")));
- }
- // append id of instance
- try{
- if(isNewItem){
- _dsCatalog.Assert(newResource,
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#version"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#version")));
+
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#version"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("version")), true);
+
+ }
+ // append id of instance
+ try{
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#id"),
_rdfService.GetLiteral(instanceTag[i].getAttribute("id")), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#id"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#id")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("id")));
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#id"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#id")));
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#id"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("id")), true);
}
-
- // schema path value
- try{
- var schemaElt = instanceTag[i].getElementsByTagName("schema");
- sValue="";
- if(schemaElt){
- sValue = schemaElt[0].textContent;
- }
- if(isNewItem){
- _dsCatalog.Assert(newResource,
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
+
+ // schema path value
+ try{
+ var schemaElt = instanceTag[i].getElementsByTagName("schema");
+ sValue="";
+ if(schemaElt){
+ sValue = schemaElt[0].textContent;
+ }
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#pathSchema"),
_rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
- }else{
- _dsCatalog.Change(newResource,
+ }else{
+ _dsCatalog.Unassert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#pathSchema"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#pathSchema")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue));
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
- }
-
- try{
- // ihm path value
- var ihmElt = instanceTag[i].getElementsByTagName("ihm");
- sValue="";
- if(ihmElt){
- sValue = ihmElt[0].textContent;
- }
- if(isNewItem){
- _dsCatalog.Assert(newResource,
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#pathSchema")));
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathSchema"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }
+
+ try{
+ // ihm path value
+ var ihmElt = instanceTag[i].getElementsByTagName("ihm");
+ sValue="";
+ if(ihmElt){
+ sValue = ihmElt[0].textContent;
+ }
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#pathIhm"),
_rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#pathIhm"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#pathIhm")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue));
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathIhm"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#pathIhm")));
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathIhm"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
}
- try{
- // rules path value
- var rulesDico = instanceTag[i].getElementsByTagName("rule");
- sValue="";
- if(rulesDico){
- sValue = rulesDico[0].textContent;
- }
- if(isNewItem){
- _dsCatalog.Assert(newResource,
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }
+
+ try{
+ // rules path value
+ var rulesDico = instanceTag[i].getElementsByTagName("rule");
+ sValue="";
+ if(rulesDico){
+ sValue = rulesDico[0].textContent;
+ }
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#pathRules"),
_rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#pathRules"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#pathRules")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue));
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathRules"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#pathRules")));
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathRules"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }
+
+ try{
+ // dictionary path value
+ var ihmDico = instanceTag[i].getElementsByTagName("dictionary");
+ sValue="";
+ if(ihmDico){
+ sValue = ihmDico[0].textContent;
}
-
- try{
- // dictionary path value
- var ihmDico = instanceTag[i].getElementsByTagName("dictionary");
- sValue="";
- if(ihmDico){
- sValue = ihmDico[0].textContent;
- }
- if(isNewItem){
- _dsCatalog.Assert(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#pathDictionary"),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#pathDictionary"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#pathDictionary")),
- _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue));
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
- }
-
if(isNewItem){
_dsCatalog.Assert(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#theme"),
- _rdfService.GetLiteral(theme), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#theme"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#theme")),
- _rdfService.GetLiteral(theme));
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathDictionary"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathDictionary"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#pathDictionary")));
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#pathDictionary"),
+ _rdfService.GetLiteral(instanceTag[i].getAttribute("directory")+sValue), true);
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }
+
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#theme"),
+ _rdfService.GetLiteral(theme), true);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#theme"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#theme")));
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#theme"),
+ _rdfService.GetLiteral(theme), true);
+ }
+
+ try{
+ // aclLevel of instance to hide/unhide it on account
+ sValue="true";
+ var iAclLevel = -1;
+ var acltag = instanceTag[i].getElementsByTagName("acl");
+ if(acltag.length>0)iAclLevel = acltag[0].textContent;
+ if(aclLevel){
+ if(parseInt(iAclLevel, 10) > parseInt(aclLevel, 10)) sValue = "false";
+ }else{
+ if(parseInt(iAclLevel, 10) > parseInt(getTarget(uriThemeDefinition,"http://www.ximfmail.com/RDF#defaultacl"), 10))sValue = "false";
}
- try{
- // aclLevel of instance to hide/unhide it on account
- sValue="true";
- var iAclLevel = -1;
- var acltag = instanceTag[i].getElementsByTagName("acl");
- if(acltag.length>0)iAclLevel = acltag[0].textContent;
- if(aclLevel){
- if(parseInt(iAclLevel, 10) > parseInt(aclLevel, 10)) sValue = "false";
- }else{
- if(parseInt(iAclLevel, 10) > parseInt(this.getTarget(uriThemeDefinition,"http://www.ximfmail.com/RDF#defaultacl"), 10))sValue = "false";
- }
-
- if(isNewItem){
- _dsCatalog.Assert(newResource,
+ if(isNewItem){
+ _dsCatalog.Assert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#active"),
+ _rdfService.GetLiteral(sValue), true);
+ }else{
+ _dsCatalog.Unassert(newResource,
+ _rdfService.GetResource("http://www.ximfmail.com/RDF#active"),
+ _rdfService.GetLiteral(getTarget(newURI,"http://www.ximfmail.com/RDF#active")));
+ _dsCatalog.Assert(newResource,
_rdfService.GetResource("http://www.ximfmail.com/RDF#active"),
_rdfService.GetLiteral(sValue), true);
- }else{
- _dsCatalog.Change(newResource,
- _rdfService.GetResource("http://www.ximfmail.com/RDF#active"),
- _rdfService.GetLiteral(this.getTarget(newURI,"http://www.ximfmail.com/RDF#active")),
- _rdfService.GetLiteral(sValue));
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
- }
- }
- // insert smtp entry
- if(bHasSmtpInstance){
- var smtpURI = "http://www.ximfmail.com/catalog/instance_"+theme +"/smtp";
- var smtpResource = _rdfService.GetResource(smtpURI);
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] \n " + e + "\nfile : " + e.fileName+"\nline : "+e.lineNumber);
+ }
+ }
+ // insert smtp entry
+ if(bHasSmtpInstance){
+ var smtpURI = "http://www.ximfmail.com/catalog/instance_"+theme +"/smtp";
+ var smtpResource = _rdfService.GetResource(smtpURI);
+ if( RDFCI.IndexOf(smtpResource) == -1){
RDFCI.AppendElement(smtpResource);
_dsCatalog.Assert(smtpResource,_rdfService.GetResource("http://www.ximfmail.com/RDF#ximfVersion"), _rdfService.GetLiteral(smtpXimfVersion), true);
_dsCatalog.Assert(smtpResource,_rdfService.GetResource("http://www.ximfmail.com/RDF#instance"),_rdfService.GetLiteral(smtpInstance), true);
_dsCatalog.Assert(smtpResource,_rdfService.GetResource("http://www.ximfmail.com/RDF#pathDictionary"),_rdfService.GetLiteral(smtpInstance), true);
_dsCatalog.Assert(smtpResource,_rdfService.GetResource("http://www.ximfmail.com/RDF#theme"),_rdfService.GetLiteral(smtpInstance), true);
_dsCatalog.Assert(smtpResource, _rdfService.GetResource("http://www.ximfmail.com/RDF#active"), _rdfService.GetLiteral("true"), true);
- // append label of instance
- try{
- _dsCatalog.Assert(smtpResource,_rdfService.GetResource("http://www.ximfmail.com/RDF#instanceLabel"),_rdfService.GetLiteral(smtpInstanceLabel), true);
- }catch(ex){}
- }
- // save datas to file DBG
- //_dsCatalog.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
- //var rdfXimfCatalogPath = getFilePathInProfile("extensions/{A627B834-BD9F-4b3f-9AF5-347B5A570402}/chrome/content/theme/ximfCatalogBck.rdf");
- //_dsCatalog.FlushTo("file:///" + rdfXimfCatalogPath);
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] - " + RDFC.GetCount() + " XIMF instances have been saved");
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
- }
- };
- XimfCatalog.prototype.RemoveSeqCatalog = function(seqNode){
- try{
- // create RDF resources
-
- //var seqNode = _rdfService.GetResource("http://www.ximfmail.com/catalog");
- var rSeqCatalog = null;
- try{
- rSeqCatalog = _rdfCUtils.MakeSeq(_dsCatalog, seqNode);
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ // append label of instance
+ try{
+ _dsCatalog.Assert(smtpResource,_rdfService.GetResource("http://www.ximfmail.com/RDF#instanceLabel"),_rdfService.GetLiteral(smtpInstanceLabel), true);
+ }catch(ex){}
}
-
-
-
- if(rSeqCatalog){
- /*
- var numEntri = rSeqCatalog.GetCount();
- for (var indexCur = numEntri; indexCur >0; indexCur--){
- rSeqCatalog.RemoveElementAt(indexCur,true);
- alert("remove " + rSeqCatalog)
- }
- */
-
- var tseq = rSeqCatalog.GetElements();
- alert(seqNode.ValueUTF8+"\nnb elements to remove = " + rSeqCatalog.GetCount())
- var uriResource = "";
- while (tseq.hasMoreElements()){
- var element = tseq.getNext();
- if (element instanceof Components.interfaces.nsIRDFResource){
- uriResource = element.ValueUTF8;
- alert("remove " + uriResource)
- var resource = _rdfService.GetResource(uriResource);
- rSeqCatalog.RemoveElementAt(rSeqCatalog.IndexOf(resource),true);
- }else{
- alert("remove " + uriResource)
- }
- }
- alert("nb elements = " + rSeqCatalog.GetCount())
- }
- }catch(e){
- alert(e)
- gConsole.logStringMessage("[ximfmail - XimfCatalog - RemoveSeqCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
- }
- };
-
- XimfCatalog.prototype.getNameInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#instance");
- };
-
- XimfCatalog.prototype.getLabelInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#instanceLabel");
- };
-
- XimfCatalog.prototype.getVersionInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#ximfVersion");
- };
-
- XimfCatalog.prototype.getDefinitonInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#theme");
- };
-
- XimfCatalog.prototype.getSchemaInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#pathSchema");
- };
-
- XimfCatalog.prototype.getDictionaryInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#pathDictionary");
- };
-
- XimfCatalog.prototype.getIDInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#id");
- };
-
- XimfCatalog.prototype.getIhmInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#pathIhm");
- };
-
- XimfCatalog.prototype.getRulesInstance = function(instance){
- return this.getTarget(instance,"http://www.ximfmail.com/RDF#pathRules");
- };
-
+ }
+ // save datas to file DBG
+ //_dsCatalog.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
+ //var rdfXimfCatalogPath = getFilePathInProfile("extensions/{A627B834-BD9F-4b3f-9AF5-347B5A570402}/chrome/content/theme/ximfCatalogBck.rdf");
+ //_dsCatalog.FlushTo("file:///" + rdfXimfCatalogPath);
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:AppendInstance] executed "+TRACE_DATE());
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
+ }
+
+ /*
+ * read informations from catalog
+ */
+ function getTarget(instance,predicate){
+ try{
+ var resource = _rdfService.GetResource(instance);
+ var targets = _dsCatalog.ArcLabelsOut(resource);
+ while (targets.hasMoreElements()){
+ var newpredicate = targets.getNext();
+ if (newpredicate instanceof Components.interfaces.nsIRDFResource){
+ var target = _dsCatalog.GetTarget(resource, newpredicate, true);
+ if (target instanceof Components.interfaces.nsIRDFLiteral){
+ //alert("getTarget\n"+newpredicate.Value + " : \n\r" + target.Value);
+ if(newpredicate.Value == predicate)
+ return target.Value;
+ }
+ }
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+ e.lineNumber);
+ }
+ return null;
+ }
+
+ function init(){
+ //
+ Create();
- XimfCatalog.prototype.getInstanceUri = function(ximfDefUri,ximfName,ximfVersion){
- try{
- /// get container of instance resources of current definition
- var RDFCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].createInstance(Components.interfaces.nsIRDFContainerUtils);
- //alert("getInstanceUri - ximfDefUri = " + ximfDefUri)
- var rs_seqInstance = _rdfService.GetResource(ximfDefUri);
- var containerInstances = RDFCUtils.MakeSeq(_dsCatalog, rs_seqInstance);
- var children = containerInstances.GetElements();
- while (children.hasMoreElements()){
- // search uri instance with ximfVersion and ximfName
- var child = children.getNext();
- if (child instanceof Components.interfaces.nsIRDFResource){
- var instance_resource = child.Value;
- //alert("instance_resource = "+instance_resource);
- var thisName = this.getNameInstance(instance_resource);
- var thisVersion = this.getVersionInstance(instance_resource);
- //alert("<"+thisName+"><"+thisVersion+">\n<"+ximfName+"><"+ximfVersion+">")
- if(thisName && thisVersion){
- thisName = String_trim(thisName).toLowerCase();
- if(thisName == String_trim(ximfName).toLowerCase()){
- /*
- if(thisVersion == ximfVersion){
- //alert("instance path found >>"+instance_resource);
- return instance_resource;
- }*/
- return instance_resource;
- }
- }
- }
- /*
- DEBUG loop : list of predicats
- var resource = _rdfService.GetResource(instance_resource);
- var targets = _dsCatalog.ArcLabelsOut(resource);
- while (targets.hasMoreElements()){
- var newpredicate = targets.getNext();
- if (newpredicate instanceof Components.interfaces.nsIRDFResource){
- alert("Resource is: " + newpredicate.Value);
- }else if (newpredicate instanceof Components.interfaces.nsIRDFLiteral){
- alert("Literal is: " + newpredicate.Value);
- }
- }*/
- }
-
- // search for instance in others definitions of catalog
- var completeCatalog = _rdfService.GetResource("http://www.ximfmail.com/catalog");
- var containerDefinitions = RDFCUtils.MakeSeq(_dsCatalog, completeCatalog);
- var children = containerDefinitions.GetElements();
- while (children.hasMoreElements()){
- try{
+ // singleton pattern here
+ return{
+ publicProperty : "test",
+ /*
+ * get datasource object
+ */
+ getDSCatalog : function(){
+ return _dsCatalog;
+ },
+ /*
+ *
+ */
+ rebuild : function(aclLevel){
+ Create(true,aclLevel);
+ gConsole.logStringMessage("[ximfmail - XimfCatalog.rebuild ] rebuild operation executed");
+ },
+ /*
+ * create catalog with profile xml informations
+ */
+ registerXimfmailProfileNode : function(domProfile,aclLevel){
+ AppendInstance(domProfile,aclLevel);
+ gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] registerXimfmailProfileNode operation executed");
+ },
+ RemoveSeqCatalog : function(seqNode){
+ try{
+ // create RDF resources
+
+ //var seqNode = _rdfService.GetResource("http://www.ximfmail.com/catalog");
+ var rSeqCatalog = null;
+ try{
+ rSeqCatalog = _rdfCUtils.MakeSeq(_dsCatalog, seqNode);
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog.registerXimfmailProfileNode ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ }
+ if(rSeqCatalog){
+ /*
+ var numEntri = rSeqCatalog.GetCount();
+ for (var indexCur = numEntri; indexCur >0; indexCur--){
+ rSeqCatalog.RemoveElementAt(indexCur,true);
+ alert("remove " + rSeqCatalog)
+ }
+ */
+
+ var tseq = rSeqCatalog.GetElements();
+ alert(seqNode.ValueUTF8+"\nnb elements to remove = " + rSeqCatalog.GetCount())
+ var uriResource = "";
+ while (tseq.hasMoreElements()){
+ var element = tseq.getNext();
+ if (element instanceof Components.interfaces.nsIRDFResource){
+ uriResource = element.ValueUTF8;
+ alert("remove " + uriResource)
+ var resource = _rdfService.GetResource(uriResource);
+ rSeqCatalog.RemoveElementAt(rSeqCatalog.IndexOf(resource),true);
+ }else{
+ alert("remove " + uriResource)
+ }
+ }
+ alert("nb elements = " + rSeqCatalog.GetCount())
+ }
+ }catch(e){
+ alert(e)
+ gConsole.logStringMessage("[ximfmail - XimfCatalog - RemoveSeqCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ }
+ },
+ getNameInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#instance");
+ },
+ getLabelInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#instanceLabel");
+ },
+ getVersionInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#ximfVersion");
+ },
+ getDefinitonInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#theme");
+ },
+ getSchemaInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#pathSchema");
+ },
+ getDictionaryInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#pathDictionary");
+ },
+ getIDInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#id");
+ },
+ getIhmInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#pathIhm");
+ },
+ getRulesInstance : function(instance){
+ return getTarget(instance,"http://www.ximfmail.com/RDF#pathRules");
+ },
+ getInstanceUri : function(ximfDefUri,ximfName,ximfVersion){
+ try{
+ gConsole.logStringMessage("[ximfmail - XimfCatalog:getInstanceUri ] ximfDefUri = "+ximfDefUri+" - ximfName = "+ximfName+" - ximfVersion = " + ximfVersion );
+ /// get container of instance resources of current definition
+ var RDFCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].createInstance(Components.interfaces.nsIRDFContainerUtils);
+ //alert("getInstanceUri - ximfDefUri = " + ximfDefUri)
+ var rs_seqInstance = _rdfService.GetResource(ximfDefUri);
+ var containerInstances = RDFCUtils.MakeSeq(_dsCatalog, rs_seqInstance);
+ var children = containerInstances.GetElements();
+ while (children.hasMoreElements()){
// search uri instance with ximfVersion and ximfName
var child = children.getNext();
if (child instanceof Components.interfaces.nsIRDFResource){
- var def_resource = child.ValueUTF8;
- // get uri of definition container
- var seqUriInstance = this.getTarget(def_resource,"http://www.ximfmail.com/RDF#refSeq");
- if(seqUriInstance != ximfDefUri){
+ var instance_resource = child.Value;
+ //alert("instance_resource = "+instance_resource);
+ //var thisName = this.getNameInstance(instance_resource);
+ var thisName = getTarget(instance_resource,"http://www.ximfmail.com/RDF#instance")
+ //var thisVersion = this.getVersionInstance(instance_resource);
+ var thisVersion = getTarget(instance_resource,"http://www.ximfmail.com/RDF#ximfVersion");
+ //alert("<"+thisName+"><"+thisVersion+">\n<"+ximfName+"><"+ximfVersion+">")
+ if(thisName && thisVersion){
+ thisName = String_trim(thisName).toLowerCase();
+ if(thisName == String_trim(ximfName).toLowerCase()){
+ /*
+ if(thisVersion == ximfVersion){
+ //alert("instance path found >>"+instance_resource);
+ return instance_resource;
+ }*/
+ return instance_resource;
+ }
+ }
+ }
+ /*
+ DEBUG loop : list of predicats
+ var resource = _rdfService.GetResource(instance_resource);
+ var targets = _dsCatalog.ArcLabelsOut(resource);
+ while (targets.hasMoreElements()){
+ var newpredicate = targets.getNext();
+ if (newpredicate instanceof Components.interfaces.nsIRDFResource){
+ alert("Resource is: " + newpredicate.Value);
+ }else if (newpredicate instanceof Components.interfaces.nsIRDFLiteral){
+ alert("Literal is: " + newpredicate.Value);
+ }
+ }*/
+ }
+
+ // search for instance in others definitions of catalog
+ var completeCatalog = _rdfService.GetResource("http://www.ximfmail.com/catalog");
+ var containerDefinitions = RDFCUtils.MakeSeq(_dsCatalog, completeCatalog);
+ var children = containerDefinitions.GetElements();
+ while (children.hasMoreElements()){
+ try{
+ // search uri instance with ximfVersion and ximfName
+ var child = children.getNext();
+ if (child instanceof Components.interfaces.nsIRDFResource){
+ var def_resource = child.ValueUTF8;
+ // get uri of definition container
+ var seqUriInstance = getTarget(def_resource,"http://www.ximfmail.com/RDF#refSeq");
+ if(seqUriInstance != ximfDefUri){
+ var rs_seqInstance2 = _rdfService.GetResource(seqUriInstance);
+ var containerInstances2 = RDFCUtils.MakeSeq(_dsCatalog, rs_seqInstance2);
+ var children2 = containerInstances2.GetElements();
+ //alert("inspect uri in :\n" + def_resource+"\nref:\n"+ximfDefUri+"\n elments count = " + containerInstances2.GetCount())
+ while (children2.hasMoreElements()){
+ // search uri instance with ximfVersion and ximfName
+ var child2 = children2.getNext();
+ if (child2 instanceof Components.interfaces.nsIRDFResource){
+ var instance_resource2 = child2.ValueUTF8;
+ //var thisName2 = this.getNameInstance(instance_resource2);
+ var thisName2 = getTarget(instance_resource2,"http://www.ximfmail.com/RDF#instance")
+
+ if(thisName2){
+ thisName2 = String_trim(thisName2).toLowerCase();
+ if(thisName2 == String_trim(ximfName).toLowerCase()){
+ //alert("instance_resource matched = "+instance_resource2);
+ return instance_resource2;
+ }
+ }
+ }
+ }
+ }
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog - getInstanceUri] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ }
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog - getInstanceUri] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ }
+ return null;
+ },
+ // array of instances of one definition
+ getInstanceList : function(){
+ var arrayInstancesUri = [];
+ try{
+ // search for instance in others definitions of catalog
+ var RDFCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].createInstance(Components.interfaces.nsIRDFContainerUtils);
+ var completeCatalog = _rdfService.GetResource("http://www.ximfmail.com/catalog");
+ var containerDefinitions = RDFCUtils.MakeSeq(_dsCatalog, completeCatalog);
+ var children = containerDefinitions.GetElements();
+ while (children.hasMoreElements()){
+ try{
+ // search uri instance with ximfVersion and ximfName
+ var child = children.getNext();
+ if (child instanceof Components.interfaces.nsIRDFResource){
+ var def_resource = child.ValueUTF8;
+ // get uri of definition container
+ var seqUriInstance = getTarget(def_resource,"http://www.ximfmail.com/RDF#refSeq");
+ //arrayInstancesUri.push(seqUriInstance);
+
var rs_seqInstance2 = _rdfService.GetResource(seqUriInstance);
var containerInstances2 = RDFCUtils.MakeSeq(_dsCatalog, rs_seqInstance2);
var children2 = containerInstances2.GetElements();
while (children2.hasMoreElements()){
// search uri instance with ximfVersion and ximfName
var child2 = children2.getNext();
- if (child2 instanceof Components.interfaces.nsIRDFResource){
- var instance_resource2 = child2.ValueUTF8;
- var thisName2 = this.getNameInstance(instance_resource2);
- if(thisName2){
- thisName2 = String_trim(thisName2).toLowerCase();
- if(thisName2 == String_trim(ximfName).toLowerCase()){
- //alert("instance_resource matched = "+instance_resource2);
- return instance_resource2;
- }
- }
- }
- }
- }
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog - getInstanceUri] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
- }
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog - getInstanceUri] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
- }
- return null;
- }
-
- // array of instances of one definition
- XimfCatalog.prototype.getInstanceList = function(){
- var arrayInstancesUri = [];
- try{
- // search for instance in others definitions of catalog
- var RDFCUtils = Components.classes["@mozilla.org/rdf/container-utils;1"].createInstance(Components.interfaces.nsIRDFContainerUtils);
- var completeCatalog = _rdfService.GetResource("http://www.ximfmail.com/catalog");
- var containerDefinitions = RDFCUtils.MakeSeq(_dsCatalog, completeCatalog);
- var children = containerDefinitions.GetElements();
- while (children.hasMoreElements()){
- try{
- // search uri instance with ximfVersion and ximfName
- var child = children.getNext();
- if (child instanceof Components.interfaces.nsIRDFResource){
- var def_resource = child.ValueUTF8;
- // get uri of definition container
- var seqUriInstance = this.getTarget(def_resource,"http://www.ximfmail.com/RDF#refSeq");
- //arrayInstancesUri.push(seqUriInstance);
-
- var rs_seqInstance2 = _rdfService.GetResource(seqUriInstance);
- var containerInstances2 = RDFCUtils.MakeSeq(_dsCatalog, rs_seqInstance2);
- var children2 = containerInstances2.GetElements();
- //alert("inspect uri in :\n" + def_resource+"\nref:\n"+ximfDefUri+"\n elments count = " + containerInstances2.GetCount())
- while (children2.hasMoreElements()){
- // search uri instance with ximfVersion and ximfName
- var child2 = children2.getNext();
- if (child2 instanceof Components.interfaces.nsIRDFResource){
- var instance_resource2 = child2.ValueUTF8;
- arrayInstancesUri.push(instance_resource2);
- }
- }
-
- }
- }catch(e){
- gConsole.logStringMessage("[ximfmail - XimfCatalog - getInstanceUri] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
- }
+ if (child2 instanceof Components.interfaces.nsIRDFResource){
+ var instance_resource2 = child2.ValueUTF8;
+ arrayInstancesUri.push(instance_resource2);
+ }
+ }
+
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - XimfCatalog - getInstanceUri] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
+ }
+ }
+ }catch(e){
+ // alert("[XimfCatalog]error instance loading...." + e);
+ gConsole.logStringMessage("[ximfmail - XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
}
- }catch(e){
-// alert("[XimfCatalog]error instance loading...." + e);
- gConsole.logStringMessage("[ximfmail - XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+
+ return arrayInstancesUri;
+ }
+ }; // end init() singleton
+ }
+ return{
+ getInstance : function(){
+ if(!instantiated){
+ instantiated = init();
}
-
- return arrayInstancesUri;
- };
-
- XimfCatalog.initialized = true;
+ return instantiated;
+ }
}
-}
\ No newline at end of file
+
+})();
\ No newline at end of file
RDFC_data = _rdfCUtils.MakeSeq(_dsCatalog, seqNode);\r
\r
}catch(e){\r
- gConsole.logStringMessage("[ximfmail - XimfTreeData.registerXimfmailProfileNode ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ gConsole.logStringMessage("[ximfmail - CreateRdfDatasSource ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
} \r
\r
var treeTag = baseTag[0].getElementsByTagName("ximf:tree"); \r
xDataSource._refDataSource = datasUri;\r
return xDataSource; \r
}catch(e){ \r
- gConsole.logStringMessage("[ximfmail - XimfTreeData.CreateRdfDatasSource ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
+ gConsole.logStringMessage("[ximfmail - CreateRdfDatasSource ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);\r
} \r
}\r
\r
\r
var arrayCols = arrayDatas[i];\r
for(var j = 0; j < arrayCols.length; ++j){\r
+ var valData = arrayCols[j];\r
+ if (valData == "")\r
+ valData = " ";\r
// append description element\r
_dsCatalog.Assert(_rdfService.GetResource(newURI), \r
_rdfService.GetResource("http://www.ximfmail.com/RDF#column"+j), \r
- _rdfService.GetLiteral(arrayCols[j]), \r
+ _rdfService.GetLiteral(valData), \r
true\r
); \r
}\r
_dsCatalog = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);\r
//_dsCatalog = _rdfService.GetDataSource("rdf:ximfTree"); \r
}\r
- \r
- \r
//_dsCatalog = Components.classes["@mozilla.org/rdf/datasource;1?name=in-memory-datasource"].createInstance(Components.interfaces.nsIRDFDataSource);\r
\r
if(!_rdfCUtils)\r
// GLOBALS
//var relativeXimfCatalogPath = "ximf/ximfmail/chrome/content/theme/ximfCatalog.rdf";
var gConsole = Components.classes["@mozilla.org/consoleservice;1"].getService(Components.interfaces.nsIConsoleService);
-var gJSLoader = Components.classes["@mozilla.org/moz/jssubscript-loader;1"].createInstance(Components.interfaces.mozIJSSubScriptLoader);
-var gXimfCatalog = null;
-
-try{
- gJSLoader.loadSubScript("chrome://ximfmail/content/ximfCatalog.js");
- gXimfCatalog = new XimfCatalog();
-}catch(e){
- gConsole.logStringMessage("[ximfmail - Load XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+function TRACE_DATE(){
+ var ladate=new Date();
+ var h=ladate.getHours();
+ if (h<10) {h = "0" + h}
+ var m=ladate.getMinutes();
+ if (m<10) {m = "0" + m}
+ var s=ladate.getSeconds();
+ if (s<10) {s = "0" + s};
+ return "\nDATE > "+ladate.getDate()+"/"+(ladate.getMonth()+1)+"/"+ladate.getFullYear()+" "+h+":"+m+":"+s+":"+ladate.getMilliseconds();
}
+
/*
* Load informations of ximf extensions in RDF memory
*/
+var gXimfCatalog = null;
function CreateXimfmailCatalog(aclLevel){
- try{
- if(!gXimfCatalog) gXimfCatalog = new XimfCatalog();
- var extensionPath = getFilePathInProfile("extensions/");
- var extensionList = getExtensionsList();
- var sCompletePath;
- var dir = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);
-
- // search for themes extensions
- for(i = 0; i<extensionList.length; i++){
- sCompletePath = getFilePathInProfile("extensions/" + extensionList[i].id + "/chrome/content/ximfmail-profile.xml");
- dir.initWithPath( sCompletePath );
- if(dir.exists()){
- // get xml profile
- var xmlDoc = GetXmlDocument(sCompletePath);
- gXimfCatalog.registerXimfmailProfileNode(xmlDoc.documentElement,aclLevel);
- dump(sCompletePath + " : " + extensionList[i].name);
- //alert(sCompletePath + " : " + extensionList[i].name);
- }
- }
+ try{
+ if(!gXimfCatalog) gXimfCatalog = XimfCatalog.getInstance();
}catch(e){
- gConsole.logStringMessage("[ximfmail - Create XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ gConsole.logStringMessage("[ximfmail - Create XimfCatalog ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
}
}
//log array values
}catch(e){
- gConsole.logStringMessage("[ximfmail - CreateRulesArray ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ gConsole.logStringMessage("[ximfmail - CreateRulesArray ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+e.lineNumber);
}
return tabHeaders;
//get year
new_date += parts[3];
//get time, adjust time GMT and LocaleTime
- var cdat = new Date();
+ var cdat = new Date();
cdat.setUTCFullYear(parseInt("20"+parts[3], 10));
cdat.setUTCMonth(parseInt(month, 10));
cdat.setUTCDate(parseInt(parts[1], 10));
}
var prompts = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
prompts.alert(window,title, message);
+}
+
+/*
+ * return value of array {[key][value],[key][value],...}
+ * @param key :
+ * @param array :
+ */
+function GetValueFromArrayWithInsensitiveKey(key, array){
+ var value = null;
+ try{
+ value = array[key];
+ if(value == null){
+ // try to get value of array with insensitive case key
+ for(akey in array){
+ if(akey.toLowerCase() == key.toLowerCase()){
+ value = array[akey];
+ //alert("GetValueFromArrayWithInsensitiveKey - value as insensitive case founded : " +akey+" : "+ value)
+ break;
+ }
+ }
+ }
+ }catch(e){
+ gConsole.logStringMessage("[ximfmail - GetValueFromArrayWithInsensitiveKey ] \n " + e + "\nfile : " + Error().fileName+"\nline : "+Error().lineNumber);
+ value=null;
+ }
+ return value;
}
\ No newline at end of file
</xsl:if> \r
<xsl:element name="checkbox">\r
<xsl:attribute name="id"><xsl:value-of select="$_id"/></xsl:attribute> \r
+ <xsl:attribute name="class">ximfCheckbox</xsl:attribute>\r
<xsl:attribute name="disabled">false</xsl:attribute>\r
<xsl:attribute name="ximfconcatid"><xsl:value-of select="$_newConcat"/></xsl:attribute>\r
<xsl:attribute name="label">\r
<xsl:for-each select="$_refString"> \r
<richlistitem ximfenable="true"> \r
<xsl:element name="checkbox">\r
- <xsl:attribute name="class">ximCheckbox</xsl:attribute>\r
+ <xsl:attribute name="class">ximfCheckbox</xsl:attribute>\r
<xsl:attribute name="disabled">false</xsl:attribute>\r
<xsl:attribute name="id">\r
<xsl:call-template name="GetUNID">\r
<xsl:template match="/"> \r
<xsl:for-each select="/ximf:instance/ximf:rule/ximf:secureHeaders"> \r
<ximf:signed_headers id="{generate-id(.)}">\r
- <ximf:headers identity="XIMF_BASIC"> \r
+ <ximf:headers identity="XIMF_BASIC">\r
<xsl:if test="@canonalgo">\r
<xsl:attribute name="canonalgo"><xsl:value-of select="@canonalgo" /></xsl:attribute>\r
</xsl:if> \r
<xsl:template match="/"> \r
<xsl:for-each select="/ximf:instance/ximf:ihm/ximf:treeRcv"> \r
<xsl:for-each select="ximf:headerRef">\r
- <splitter class="tree-splitter" ximfheadtree="1"/> \r
+ <!-- <splitter class="tree-splitter" ximfheadtree="1"/> --> \r
<xsl:call-template name="CreateCol">\r
<xsl:with-param name="headerRef" select="." />\r
+ <xsl:with-param name="indexNode" select="position()" /> \r
</xsl:call-template>\r
</xsl:for-each>\r
</xsl:for-each> \r
\r
<xsl:template name="CreateCol">\r
<xsl:param name="headerRef" select="" />\r
+ <xsl:param name="indexNode" select="" /> \r
<xsl:for-each select="/ximf:instance/ximf:header[$headerRef=@id]">\r
<xsl:element name="treecol"> \r
<xsl:attribute name="id"><xsl:value-of select="@headerName"/></xsl:attribute>\r
+ <xsl:attribute name="ordinal"><xsl:value-of select="100+$indexNode"/></xsl:attribute>\r
<xsl:attribute name="label">\r
<xsl:call-template name="getInternational">\r
<xsl:with-param name="ilk" select="@ilk" /> \r
<xsl:with-param name="ilk" select="@ilk" /> \r
</xsl:call-template> \r
</xsl:attribute> \r
- <xsl:attribute name="persist">hidden ordinal width</xsl:attribute> \r
- <xsl:attribute name="flex">1</xsl:attribute>\r
- <xsl:attribute name="hidden">false</xsl:attribute>\r
- <xsl:attribute name="ximfheadtree">1</xsl:attribute> \r
+ <xsl:attribute name="persist">hidden ordinal width</xsl:attribute>\r
+ <xsl:attribute name="currentView">unthreaded</xsl:attribute>\r
+ <xsl:attribute name="flex">1</xsl:attribute> \r
+ <xsl:attribute name="ximfheadtree">1</xsl:attribute> \r
</xsl:element>\r
</xsl:for-each>\r
</xsl:template>\r
+++ /dev/null
-<?xml version="1.0"?>
-<RDF:RDF xmlns:NS1="http://www.ximfmail.com/RDF#"
- xmlns:NC="http://home.netscape.com/NC-rdf#"
- xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-
-</RDF:RDF>
\ No newline at end of file
+
@import url("chrome://global/skin");
datepicker{
ximfaddress{
-moz-binding: url("chrome://ximfmail/content/ximfaddress/ximfaddress.xml#ximfaddress");
}
-\r
-\r
-\r
-/* Ximfmail Panel custom*/ \r
-#ximfmailComposeMessagePanel richlistbox{\r
- -moz-appearance: none;\r
- background-color: inherit;\r
- border: none;\r
-}\r
-\r
-#ximfmailComposeMessagePanel richlistitem textbox{\r
- -moz-appearance: none;\r
- background-color: #ffffff;\r
- color: #000000;\r
- border: none;\r
-}\r
-\r
-richlistitem[ximfenable="true"]:hover,\r
-richlistitem[ximfenable="true"][selected="true"]{ \r
- background-color: #0a246a;\r
-}\r
-\r
-\r
-checkbox[ximfchild='true'] *\r
-{ \r
- color:#b20000; \r
-}\r
-\r
-richlistitem[ximfenable="true"]:hover checkbox[disabled='false'],\r
-richlistitem[ximfenable="true"]:hover menuitem,\r
-richlistitem[ximfenable="true"]:hover button,\r
-richlistitem[ximfenable="true"][selected="true"] checkbox[disabled='false'],\r
-richlistitem[ximfenable="true"][selected="true"] menuitem, \r
-richlistitem[ximfenable="true"][selected="true"] button{\r
- color: #ffffff;\r
-}\r
-\r
-richlistitem[ximfenable="false"][selected="true"],\r
-richlistitem[ximfenable="false"][selected="true"] *\r
-{\r
- background-color:inherit; \r
- color: inherit;\r
-}\r
+
+
+
+/* Ximfmail Panel custom*/
+#ximfmailComposeMessagePanel richlistbox{
+ -moz-appearance: none;
+ background-color: inherit;
+ border: none;
+}
+
+#ximfmailComposeMessagePanel richlistitem textbox{
+ -moz-appearance: none;
+ background-color: #ffffff;
+ color: #000000;
+ border: none;
+}
+
+richlistitem[ximfenable="true"]:hover,
+richlistitem[ximfenable="true"][selected="true"]{
+ background-color: #0a246a;
+}
+
+
+checkbox[ximfchild='true'] *
+{
+ color:#b20000;
+}
+
+richlistitem[ximfenable="true"]:hover checkbox[disabled='false'],
+richlistitem[ximfenable="true"]:hover menuitem,
+richlistitem[ximfenable="true"]:hover button,
+richlistitem[ximfenable="true"][selected="true"] checkbox[disabled='false'],
+richlistitem[ximfenable="true"][selected="true"] menuitem,
+richlistitem[ximfenable="true"][selected="true"] button{
+ color: #ffffff;
+}
+
+richlistitem[ximfenable="false"][selected="true"],
+richlistitem[ximfenable="false"][selected="true"] *
+{
+ background-color:inherit;
+ color: inherit;
+}
#ximfmailComposeMessagePanel,
#ximfmailMailPanel{
padding:5px !important;
background-image : url("chrome://ximfmail/content/resource/bottom_bg.jpg");
}
-\r
+
.ximfmailFocusBar{
min-height:20px;
max-height:20px;
list-style-image:url('chrome://ximfmail/content/resource/list_over.png');
}
+/*
+.ximfCheckbox > image{
+ -moz-appearance: none;
+ margin: 0px;
+ border: 0px none transparent;
+ background-color: transparent;
+}
+*/
/* display ximf headers*/
#ximfmailMailHeadersTablist label.ximfDisplay,
.ximfDetail:hover,active{
list-style-image : url("chrome://ximfmail/content/resource/detail_text_over.png");
}
-\r
+
#ximfmail-dialog-hdrInfo{
min-width:500px;
max-width:500px;
-}\r
-\r
-#ximfheaderName{\r
- font-variant:small-caps;\r
- font-weight:bold;\r
-}\r
-\r
-#ximfheaderValue{\r
- color:#b20000; \r
+}
+
+#ximfheaderName{
+ font-variant:small-caps;
+ font-weight:bold;
+}
+
+#ximfheaderValue{
+ color:#b20000;
}
#signedHdrIcon[signed="ximfalert"]{
list-style-image : url("chrome://ximfmail/content/resource/hdr_sign_alert.png");
visibility: visible;
-}
\ No newline at end of file
+}
+
+#ximfHeadBox{width:100%;}
+.ximfImgCategory,#ximfCategoryClassificationLabelImg,#ximfSecurityClassificationLabelImg{margin-left: 2px;margin-top: 2px;}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8" standalone="no"?><RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#">\r
<Description about="urn:mozilla:install-manifest">\r
<em:name>XIMFMail</em:name>\r
- <em:version>0.6.4</em:version>\r
+ <em:version>0.8.2</em:version>\r
<em:id>{A627B834-BD9F-4b3f-9AF5-347B5A570402}</em:id>\r
<em:description>Xtend Internet Message Format engine</em:description>\r
\r
ximfmail.jar:
% content ximfmail %content/kernel/ xpcnativewrappers=yes
% content theme_ximfmail chrome/content/theme/ xpcnativewrappers=yes
-% locale ximfmail fr %locale/fr/
+% locale ximfmail fr %locale/fr-FR/
% locale ximfmail us %locale/en-US/
% skin ximfmail classic/1.0 %/skin/classic/
% overlay chrome://messenger/content/messenger.xul chrome://ximfmail/content/messenger-ov-ximfmail.xul
content/kernel/resource/icon-ximfmail.png (chrome/content/kernel/resource/icon-ximfmail.png)
content/kernel/resource/detail_text.png (chrome/content/kernel/resource/detail_text.png)
content/kernel/resource/detail_text_over.png (chrome/content/kernel/resource/detail_text_over.png)
- locale/fr/datepicker.dtd (chrome/locale/fr/datepicker.dtd)
+ locale/fr-FR/datepicker.dtd (chrome/locale/fr-FR/datepicker.dtd)
locale/en-US/datepicker.dtd (chrome/locale/en-US/datepicker.dtd)
- locale/fr/ximfmail.dtd (chrome/locale/fr/ximfmail.dtd)
- locale/fr/ximfmail.properties (chrome/locale/fr/ximfmail.properties)
- locale/fr/am-ximfmail.properties (chrome/locale/fr/am-ximfmail.properties)
+ locale/fr-FR/ximfmail.dtd (chrome/locale/fr-FR/ximfmail.dtd)
+ locale/fr-FR/ximfmail.properties (chrome/locale/fr-FR/ximfmail.properties)
+ locale/fr-FR/am-ximfmail.properties (chrome/locale/fr-FR/am-ximfmail.properties)
locale/en-US/ximfmail.dtd (chrome/locale/en-US/ximfmail.dtd)
locale/en-US/ximfmail.properties (chrome/locale/en-US/ximfmail.properties)
locale/en-US/am-ximfmail.properties (chrome/locale/en-US/am-ximfmail.properties)