\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
// 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
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.ReplyToSender: \r
case nsIMsgCompType.ForwardInline: \r
case nsIMsgCompType.ForwardAsAttachment: \r
- //alert("typeMsg = " + args.type + "\nUri of message : " + args.originalMsgURI);\r
- gJSLoader.loadSubScript("chrome://ximfmail/content/messageAnalyser-ximfmail.js");\r
- \r
- var msgAnalyser = new XimfMessageAnalyser();\r
- \r
- // search for template XIMF \r
- if( args){ \r
- msgAnalyser.setOriginalURI(args.originalMsgURI); \r
+ var uriMsg = null;\r
+ if( args){\r
+ uriMsg = args.originalMsgURI; \r
}else{\r
- if(gMsgCompose) msgAnalyser.setOriginalURI(gMsgCompose.originalMsgURI); \r
+ if(gMsgCompose) uriMsg = gMsgCompose.originalMsgURI; \r
}\r
- msgAnalyser.createXimfHdrArray(); \r
- \r
- // get instance of message \r
- var uriXimfInstance = msgAnalyser.hasXimfHeaders(current_definition);\r
- if(uriXimfInstance){ \r
- currentInstance = uriXimfInstance;\r
- LoadXimfmailPanel(currentInstance);\r
- ComputeWithForm(msgAnalyser); \r
- }else{ \r
- $("#ximfmailComposeMessageHeadersTablist").empty();\r
- $("#ximfmailComposeMessageTitle").attr("value","");\r
- $("#isUsingXimfail").attr("hidden","false"); \r
- gXimfHdrs=null; \r
- //remove ximf events ...\r
- HideSendMessageElements(true);\r
- $("#addressingWidget").unbind("command",SpecialXimfRule_CheckAddress); \r
- ReloadSecurityAccess(); \r
- } \r
+ XimfmailGetMessage(uriMsg,XimfmailParseAndUpdateComposeMesssage); \r
break;\r
default : \r
- LoadXimfmailPanel(currentInstance); \r
+ LoadXimfmailPanel(currentInstance);\r
break;\r
}\r
}catch(e){\r
//gConsole.logStringMessage("DBG [ximfmail - messengerCompose - XimfmailStartup ] \n XIMF instance : "+ currentInstance + "\n XIMF definition : " + current_definition);\r
}\r
\r
+/*\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
+ $("#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