mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-25 09:57:32 +09:00
Issue #1258 - Part 1: Import mailnews, ldap, and mork from comm-esr52.9.1
This commit is contained in:
parent
23e0d82436
commit
e400f4130a
1564 changed files with 510348 additions and 0 deletions
58
mailnews/compose/content/askSendFormat.js
Normal file
58
mailnews/compose/content/askSendFormat.js
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
var gParam = null;
|
||||
|
||||
/**
|
||||
* This dialog should be opened with arguments like e.g.
|
||||
* {action: nsIMsgCompSendFormat.AskUser, convertible: nsIMsgCompConvertible.Yes}
|
||||
*/
|
||||
function Startup()
|
||||
{
|
||||
gParam = window.arguments[0];
|
||||
|
||||
const msgCompSendFormat = Components.interfaces.nsIMsgCompSendFormat;
|
||||
const msgCompConvertible = Components.interfaces.nsIMsgCompConvertible;
|
||||
|
||||
var bundle = document.getElementById("askSendFormatStringBundle");
|
||||
|
||||
// If the user hits the close box, we will abort.
|
||||
gParam.abort = true;
|
||||
|
||||
// Set the question label
|
||||
var mailSendFormatExplanation = document.getElementById("mailSendFormatExplanation");
|
||||
var icon = document.getElementById("convertDefault");
|
||||
|
||||
switch (gParam.convertible)
|
||||
{
|
||||
case msgCompConvertible.Altering:
|
||||
mailSendFormatExplanation.textContent = bundle.getString("convertibleAltering");
|
||||
icon.className = "question-icon";
|
||||
break;
|
||||
case msgCompConvertible.No:
|
||||
mailSendFormatExplanation.textContent = bundle.getString("convertibleNo");
|
||||
icon.className = "alert-icon";
|
||||
break;
|
||||
default: // msgCompConvertible.Yes
|
||||
mailSendFormatExplanation.textContent = bundle.getString("convertibleYes");
|
||||
// XXX change this to use class message-icon once bug 512173 is fixed
|
||||
icon.className = "question-icon";
|
||||
break;
|
||||
}
|
||||
|
||||
// Set the default radio array value and recommendation.
|
||||
var group = document.getElementById("mailDefaultHTMLAction");
|
||||
if (gParam.action != msgCompSendFormat.AskUser)
|
||||
{
|
||||
group.value = gParam.action;
|
||||
group.selectedItem.label += " " + bundle.getString("recommended");
|
||||
}
|
||||
}
|
||||
|
||||
function Send()
|
||||
{
|
||||
// gParam.action should be an integer for when it is returned to MsgComposeCommands.js
|
||||
gParam.action = parseInt(document.getElementById("mailDefaultHTMLAction").value);
|
||||
gParam.abort = false;
|
||||
}
|
||||
46
mailnews/compose/content/askSendFormat.xul
Normal file
46
mailnews/compose/content/askSendFormat.xul
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE dialog SYSTEM "chrome://messenger/locale/messengercompose/askSendFormat.dtd">
|
||||
|
||||
<dialog id="askSendFormat"
|
||||
title="&windowTitle.label;"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
buttonpack="center"
|
||||
onload="Startup();"
|
||||
ondialogaccept="Send();"
|
||||
buttonlabelaccept="&send.label;"
|
||||
buttonaccesskeyaccept="&send.accesskey;"
|
||||
style="width: 75ch;">
|
||||
|
||||
<script type="application/javascript"
|
||||
src="chrome://messenger/content/messengercompose/askSendFormat.js"/>
|
||||
|
||||
<stringbundle id="askSendFormatStringBundle"
|
||||
src="chrome://messenger/locale/messengercompose/askSendFormat.properties"/>
|
||||
|
||||
<separator class="thin"/>
|
||||
<hbox>
|
||||
<separator orient="vertical"/>
|
||||
<vbox id="askImageBox">
|
||||
<image id="convertDefault"/>
|
||||
</vbox>
|
||||
<separator orient="vertical"/>
|
||||
<vbox flex="1">
|
||||
<description>&recipient.label;</description>
|
||||
<description id="mailSendFormatExplanation"/>
|
||||
<description>&question.label;</description>
|
||||
<separator/>
|
||||
<radiogroup id="mailDefaultHTMLAction">
|
||||
<radio value="3" label="&plainTextAndHtml.label;" accesskey="&plainTextAndHtml.accesskey;"/>
|
||||
<radio value="1" selected="true"
|
||||
label="&plainTextOnly.label;" accesskey="&plainTextOnly.accesskey;"/>
|
||||
<radio value="2" label="&htmlOnly.label;" accesskey="&htmlOnly.accesskey;"/>
|
||||
</radiogroup>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</dialog>
|
||||
157
mailnews/compose/content/mailComposeEditorOverlay.xul
Normal file
157
mailnews/compose/content/mailComposeEditorOverlay.xul
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<!DOCTYPE window SYSTEM "chrome://messenger/locale/messengercompose/mailComposeEditorOverlay.dtd" >
|
||||
|
||||
<overlay id="mailComposeEditorOverlay"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<script type="application/javascript">
|
||||
<![CDATA[
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var gMsgCompProcessLink = false;
|
||||
var gMsgCompInputElement = null;
|
||||
var gMsgCompPrevInputValue = null;
|
||||
var gMsgCompPrevMozDoNotSendAttribute;
|
||||
var gMsgCompAttachSourceElement = null;
|
||||
|
||||
function OnLoadOverlay()
|
||||
{
|
||||
gMsgCompAttachSourceElement = document.getElementById("AttachSourceToMail");
|
||||
var editor = GetCurrentEditor();
|
||||
if (gMsgCompAttachSourceElement && editor &&
|
||||
(editor.flags & Components.interfaces.nsIPlaintextEditor.eEditorMailMask))
|
||||
{
|
||||
SetRelativeCheckbox = function() { SetAttachCheckbox();};
|
||||
//initialize the AttachSourceToMail checkbox
|
||||
gMsgCompAttachSourceElement.hidden = false;
|
||||
|
||||
switch (document.documentElement.id)
|
||||
{
|
||||
case "imageDlg":
|
||||
gMsgCompInputElement = gDialog.srcInput;
|
||||
gMsgCompProcessLink = false;
|
||||
break;
|
||||
case "linkDlg" :
|
||||
gMsgCompInputElement = gDialog.hrefInput;
|
||||
gMsgCompProcessLink = true;
|
||||
break;
|
||||
}
|
||||
if (gMsgCompInputElement)
|
||||
{
|
||||
SetAttachCheckbox();
|
||||
gMsgCompPrevMozDoNotSendAttribute = globalElement.getAttribute("moz-do-not-send")
|
||||
}
|
||||
}
|
||||
}
|
||||
addEventListener("load", OnLoadOverlay, false);
|
||||
|
||||
function OnAcceptOverlay()
|
||||
{
|
||||
// Auto-convert file URLs to data URLs. If we're in the link properties
|
||||
// dialog convert only when requested - for the image dialog do it always.
|
||||
if (/^file:/i.test(gMsgCompInputElement.value.trim()) &&
|
||||
(gMsgCompAttachSourceElement.checked || !gMsgCompProcessLink)) {
|
||||
var dataURI = GenerateDataURL(gMsgCompInputElement.value.trim());
|
||||
gMsgCompInputElement.value = dataURI;
|
||||
gMsgCompAttachSourceElement.checked = true;
|
||||
}
|
||||
DoAttachSourceCheckbox();
|
||||
}
|
||||
addEventListener("dialogaccept", OnAcceptOverlay, false);
|
||||
|
||||
function SetAttachCheckbox()
|
||||
{
|
||||
var resetCheckbox = false;
|
||||
var mozDoNotSend = globalElement.getAttribute("moz-do-not-send");
|
||||
|
||||
//In case somebody played with the advanced property and changed the moz-do-not-send attribute
|
||||
if (mozDoNotSend != gMsgCompPrevMozDoNotSendAttribute)
|
||||
{
|
||||
gMsgCompPrevMozDoNotSendAttribute = mozDoNotSend;
|
||||
resetCheckbox = true;
|
||||
}
|
||||
|
||||
// Has the URL changed
|
||||
if (gMsgCompInputElement && gMsgCompInputElement.value != gMsgCompPrevInputValue)
|
||||
{
|
||||
gMsgCompPrevInputValue = gMsgCompInputElement.value;
|
||||
resetCheckbox = true;
|
||||
}
|
||||
|
||||
if (gMsgCompInputElement && resetCheckbox)
|
||||
{
|
||||
// Here is the rule about how to set the checkbox Attach Source To Message:
|
||||
// If the attribute "moz-do-not-send" has not been set, we look at the scheme of the URL
|
||||
// and at some preference to decide what is the best for the user.
|
||||
// If it is set to "false", the checkbox is checked, otherwise unchecked.
|
||||
var attach = false;
|
||||
if (mozDoNotSend == null)
|
||||
{
|
||||
// We haven't yet set the "moz-do-not-send" attribute.
|
||||
var inputValue = gMsgCompInputElement.value.trim();
|
||||
if (/^(file|data):/i.test(inputValue)) {
|
||||
// For files or data URLs, default to attach them.
|
||||
attach = true;
|
||||
} else if (!gMsgCompProcessLink && // Implies image dialogue.
|
||||
/^https?:/i.test(inputValue)) {
|
||||
// For images loaded via http(s) we default to the preference value.
|
||||
attach = Services.prefs.getBoolPref("mail.compose.attach_http_images");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
attach = (mozDoNotSend == "false");
|
||||
}
|
||||
|
||||
gMsgCompAttachSourceElement.checked = attach;
|
||||
}
|
||||
}
|
||||
|
||||
function DoAttachSourceCheckbox()
|
||||
{
|
||||
gMsgCompPrevMozDoNotSendAttribute = (!gMsgCompAttachSourceElement.checked).toString();
|
||||
globalElement.setAttribute("moz-do-not-send", gMsgCompPrevMozDoNotSendAttribute);
|
||||
}
|
||||
|
||||
function GenerateDataURL(url) {
|
||||
var file = Services.io.newURI(url, null, null)
|
||||
.QueryInterface(Components.interfaces.nsIFileURL).file;
|
||||
var contentType = Components.classes["@mozilla.org/mime;1"]
|
||||
.getService(Components.interfaces.nsIMIMEService)
|
||||
.getTypeFromFile(file);
|
||||
var inputStream = Components.classes["@mozilla.org/network/file-input-stream;1"]
|
||||
.createInstance(Components.interfaces.nsIFileInputStream);
|
||||
inputStream.init(file, 0x01, 0o600, 0);
|
||||
var stream = Components.classes["@mozilla.org/binaryinputstream;1"]
|
||||
.createInstance(Components.interfaces.nsIBinaryInputStream);
|
||||
stream.setInputStream(inputStream);
|
||||
let data = "";
|
||||
while (stream.available() > 0) {
|
||||
data += stream.readBytes(stream.available());
|
||||
}
|
||||
let encoded = btoa(data);
|
||||
stream.close();
|
||||
return "data:" + contentType +
|
||||
";filename=" + encodeURIComponent(file.leafName) +
|
||||
";base64," + encoded;
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
|
||||
<hbox id="MakeRelativeHbox">
|
||||
<checkbox id="AttachSourceToMail" hidden="true"
|
||||
label="&attachImageSource.label;" accesskey="&attachImageSource.accesskey;"
|
||||
insertafter="MakeRelativeCheckbox" oncommand="DoAttachSourceCheckbox()"/>
|
||||
</hbox>
|
||||
|
||||
<groupbox id="LinkURLBox">
|
||||
<checkbox id="AttachSourceToMail" hidden="true"
|
||||
label="&attachLinkSource.label;" accesskey="&attachLinkSource.accesskey;"
|
||||
insertafter="LinkLocationBox" oncommand="DoAttachSourceCheckbox()"/>
|
||||
</groupbox>
|
||||
|
||||
</overlay>
|
||||
22
mailnews/compose/content/menulistCompactBindings.xml
Normal file
22
mailnews/compose/content/menulistCompactBindings.xml
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<bindings id="menulistCompactBindings"
|
||||
xmlns="http://www.mozilla.org/xbl"
|
||||
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
xmlns:xbl="http://www.mozilla.org/xbl">
|
||||
|
||||
<binding id="menulist-compact" display="xul:menu"
|
||||
extends="chrome://global/content/bindings/menulist.xml#menulist">
|
||||
<content sizetopopup="false">
|
||||
<xul:hbox class="menulist-label-box" flex="1">
|
||||
<xul:image class="menulist-icon" xbl:inherits="src"/>
|
||||
<xul:label class="menulist-label" xbl:inherits="value=label,crop,accesskey" crop="right" flex="1"/>
|
||||
</xul:hbox>
|
||||
<children includes="menupopup"/>
|
||||
</content>
|
||||
</binding>
|
||||
|
||||
</bindings>
|
||||
171
mailnews/compose/content/sendProgress.js
Normal file
171
mailnews/compose/content/sendProgress.js
Normal file
|
|
@ -0,0 +1,171 @@
|
|||
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
var nsIMsgCompDeliverMode = Components.interfaces.nsIMsgCompDeliverMode;
|
||||
|
||||
// dialog is just an array we'll use to store various properties from the dialog document...
|
||||
var dialog;
|
||||
|
||||
// the msgProgress is a nsIMsgProgress object
|
||||
var msgProgress = null;
|
||||
|
||||
// random global variables...
|
||||
var itsASaveOperation = false;
|
||||
var gSendProgressStringBundle;
|
||||
|
||||
// all progress notifications are done through the nsIWebProgressListener implementation...
|
||||
var progressListener = {
|
||||
onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus)
|
||||
{
|
||||
if (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_START)
|
||||
{
|
||||
// Put progress meter in undetermined mode.
|
||||
dialog.progress.setAttribute("mode", "undetermined");
|
||||
}
|
||||
|
||||
if (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP)
|
||||
{
|
||||
// we are done sending/saving the message...
|
||||
// Indicate completion in status area.
|
||||
var msg;
|
||||
if (itsASaveOperation)
|
||||
msg = gSendProgressStringBundle.getString("messageSaved");
|
||||
else
|
||||
msg = gSendProgressStringBundle.getString("messageSent");
|
||||
dialog.status.setAttribute("value", msg);
|
||||
|
||||
// Put progress meter at 100%.
|
||||
dialog.progress.setAttribute("value", 100);
|
||||
dialog.progress.setAttribute("mode", "normal");
|
||||
var percentMsg = gSendProgressStringBundle.getFormattedString("percentMsg", [100]);
|
||||
dialog.progressText.setAttribute("value", percentMsg);
|
||||
|
||||
window.close();
|
||||
}
|
||||
},
|
||||
|
||||
onProgressChange: function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress)
|
||||
{
|
||||
// Calculate percentage.
|
||||
var percent;
|
||||
if (aMaxTotalProgress > 0)
|
||||
{
|
||||
percent = Math.round(aCurTotalProgress / aMaxTotalProgress * 100);
|
||||
if (percent > 100)
|
||||
percent = 100;
|
||||
|
||||
dialog.progress.removeAttribute("mode");
|
||||
|
||||
// Advance progress meter.
|
||||
dialog.progress.setAttribute("value", percent);
|
||||
|
||||
// Update percentage label on progress meter.
|
||||
var percentMsg = gSendProgressStringBundle.getFormattedString("percentMsg", [percent]);
|
||||
dialog.progressText.setAttribute("value", percentMsg);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Progress meter should be barber-pole in this case.
|
||||
dialog.progress.setAttribute("mode", "undetermined");
|
||||
// Update percentage label on progress meter.
|
||||
dialog.progressText.setAttribute("value", "");
|
||||
}
|
||||
},
|
||||
|
||||
onLocationChange: function(aWebProgress, aRequest, aLocation, aFlags)
|
||||
{
|
||||
// we can ignore this notification
|
||||
},
|
||||
|
||||
onStatusChange: function(aWebProgress, aRequest, aStatus, aMessage)
|
||||
{
|
||||
if (aMessage != "")
|
||||
dialog.status.setAttribute("value", aMessage);
|
||||
},
|
||||
|
||||
onSecurityChange: function(aWebProgress, aRequest, state)
|
||||
{
|
||||
// we can ignore this notification
|
||||
},
|
||||
|
||||
QueryInterface : function(iid)
|
||||
{
|
||||
if (iid.equals(Components.interfaces.nsIWebProgressListener) ||
|
||||
iid.equals(Components.interfaces.nsISupportsWeakReference) ||
|
||||
iid.equals(Components.interfaces.nsISupports))
|
||||
return this;
|
||||
|
||||
throw Components.results.NS_NOINTERFACE;
|
||||
}
|
||||
};
|
||||
|
||||
function onLoad()
|
||||
{
|
||||
// Set global variables.
|
||||
let subject = "";
|
||||
gSendProgressStringBundle = document.getElementById("sendProgressStringBundle");
|
||||
|
||||
msgProgress = window.arguments[0];
|
||||
if (!msgProgress)
|
||||
{
|
||||
Components.utils.reportError("Invalid argument to sendProgress.xul.");
|
||||
window.close();
|
||||
return;
|
||||
}
|
||||
|
||||
if (window.arguments[1])
|
||||
{
|
||||
let progressParams = window.arguments[1].QueryInterface(Components.interfaces.nsIMsgComposeProgressParams);
|
||||
if (progressParams)
|
||||
{
|
||||
itsASaveOperation = (progressParams.deliveryMode != nsIMsgCompDeliverMode.Now);
|
||||
subject = progressParams.subject;
|
||||
}
|
||||
}
|
||||
|
||||
if (subject) {
|
||||
let title = itsASaveOperation ? "titleSaveMsgSubject" : "titleSendMsgSubject";
|
||||
document.title = gSendProgressStringBundle.getFormattedString(title, [subject]);
|
||||
} else {
|
||||
let title = itsASaveOperation ? "titleSaveMsg" : "titleSendMsg";
|
||||
document.title = gSendProgressStringBundle.getString(title);
|
||||
}
|
||||
|
||||
dialog = {};
|
||||
dialog.status = document.getElementById("dialog.status");
|
||||
dialog.progress = document.getElementById("dialog.progress");
|
||||
dialog.progressText = document.getElementById("dialog.progressText");
|
||||
|
||||
// set our web progress listener on the helper app launcher
|
||||
msgProgress.registerListener(progressListener);
|
||||
}
|
||||
|
||||
function onUnload()
|
||||
{
|
||||
if (msgProgress)
|
||||
{
|
||||
try
|
||||
{
|
||||
msgProgress.unregisterListener(progressListener);
|
||||
msgProgress = null;
|
||||
} catch (e) {}
|
||||
}
|
||||
}
|
||||
|
||||
// If the user presses cancel, tell the app launcher and close the dialog...
|
||||
function onCancel()
|
||||
{
|
||||
// Cancel app launcher.
|
||||
try
|
||||
{
|
||||
msgProgress.processCanceledByUser = true;
|
||||
} catch (e)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// don't Close up dialog by returning false, the backend will close the dialog when everything will be aborted.
|
||||
return false;
|
||||
}
|
||||
50
mailnews/compose/content/sendProgress.xul
Normal file
50
mailnews/compose/content/sendProgress.xul
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0"?>
|
||||
|
||||
<!-- This Source Code Form is subject to the terms of the Mozilla Public
|
||||
- License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
- file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
|
||||
|
||||
<?xml-stylesheet href="chrome://messenger/skin/dialogs.css" type="text/css"?>
|
||||
|
||||
<!DOCTYPE dialog SYSTEM "chrome://messenger/locale/messengercompose/sendProgress.dtd">
|
||||
|
||||
<dialog id="sendProgress"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
title="&sendDialog.title;"
|
||||
style="width: 56ch;"
|
||||
onload="onLoad();"
|
||||
onunload="onUnload();"
|
||||
buttons="cancel"
|
||||
ondialogcancel="return onCancel();">
|
||||
|
||||
<script type="application/javascript"
|
||||
src="chrome://messenger/content/messengercompose/sendProgress.js"/>
|
||||
<stringbundle id="sendProgressStringBundle"
|
||||
src="chrome://messenger/locale/messengercompose/sendProgress.properties"/>
|
||||
|
||||
<grid flex="1">
|
||||
<columns>
|
||||
<column/>
|
||||
<column flex="1"/>
|
||||
</columns>
|
||||
|
||||
<rows>
|
||||
<row>
|
||||
<hbox pack="end">
|
||||
<label value="&status.label;"/>
|
||||
</hbox>
|
||||
<label id="dialog.status" crop="center"/>
|
||||
</row>
|
||||
<row class="thin-separator">
|
||||
<hbox pack="end">
|
||||
<label value="&progress.label;"/>
|
||||
</hbox>
|
||||
<progressmeter id="dialog.progress" mode="normal" value="0"/>
|
||||
<hbox pack="end">
|
||||
<label id="dialog.progressText"/>
|
||||
</hbox>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
||||
</dialog>
|
||||
Loading…
Add table
Add a link
Reference in a new issue