mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 08:15:31 +00:00
bug 182274 - adds ui for selecting trash folder. r=bienvenu,sr=sspitzer
This commit is contained in:
parent
8af800d7da
commit
3c70a81202
@ -24,7 +24,7 @@
|
||||
biffEnd.label "minutes for new messages Check"
|
||||
-->
|
||||
<!ENTITY biffStart.label "Check for new messages every ">
|
||||
<!ENTITY biffStart.accesskey "k">
|
||||
<!ENTITY biffStart.accesskey "y">
|
||||
<!ENTITY biffEnd.label "minutes">
|
||||
<!ENTITY isSecure.label "Use secure connection (SSL)">
|
||||
<!ENTITY isSecure.accesskey "U">
|
||||
@ -55,10 +55,12 @@
|
||||
<!-- LOCALIZATION NOTE (popServerTitle.label) : do not translate "POP" in below line -->
|
||||
<!ENTITY popServerTitle.label "POP Server Information">
|
||||
<!ENTITY deleteMessagePrefix.label "When I delete a message:">
|
||||
<!ENTITY deleteMessagePrefix.accesskey "W">
|
||||
<!ENTITY modelMoveToTrash.label "Move it to the Trash folder">
|
||||
<!ENTITY modelMarkDeleted.label "Mark it as deleted">
|
||||
<!ENTITY modelMoveToTrash.label "Move it to this folder:">
|
||||
<!ENTITY modelMoveToTrash.accesskey "o">
|
||||
<!ENTITY modelMarkDeleted.label "Just mark it as deleted">
|
||||
<!ENTITY modelMarkDeleted.accesskey "k">
|
||||
<!ENTITY modelDeleteImmediately.label "Remove it immediately">
|
||||
<!ENTITY modelDeleteImmediately.accesskey "d">
|
||||
<!-- LOCALIZATION NOTE (expungeOnExit.label) : do not translate two of """ in below line -->
|
||||
<!ENTITY expungeOnExit.label "Clean up ("Expunge") Inbox on Exit">
|
||||
<!ENTITY expungeOnExit.accesskey "E">
|
||||
|
@ -26,6 +26,7 @@
|
||||
* racham@netscape.com
|
||||
* hwaara@chello.se
|
||||
* bienvenu@nventure.com
|
||||
* Matthew Willis <mattwillis@gmail.com>
|
||||
*
|
||||
* Alternatively, the contents of this file may be used under the terms of
|
||||
* either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
@ -53,6 +54,7 @@ function onInit()
|
||||
setupMailOnServerUI();
|
||||
setupFixedUI();
|
||||
setupNotifyUI();
|
||||
setupImapDeleteUI();
|
||||
}
|
||||
|
||||
function onPreInit(account, accountValues)
|
||||
@ -312,3 +314,72 @@ function BrowseForNewsrc()
|
||||
if (fp.show() != nsIFilePicker.returnCancel)
|
||||
newsrcTextBox.value = fp.file.path;
|
||||
}
|
||||
|
||||
function setupImapDeleteUI()
|
||||
{
|
||||
// read delete_model preference
|
||||
var deleteModel = document.getElementById("imap.deleteModel").getAttribute("value");
|
||||
selectImapDeleteModel(deleteModel)
|
||||
|
||||
// read trash_folder_name preference
|
||||
var trashFolderName = getTrashFolderName();
|
||||
var serverId = GetCurrentServerId();
|
||||
|
||||
// set folderPicker menulist
|
||||
document.getElementById("msgTrashFolderPicker").setAttribute("ref", serverId);
|
||||
var trashFolderUri = serverId+"/"+trashFolderName;
|
||||
SetFolderPicker(trashFolderUri,"msgTrashFolderPicker");
|
||||
}
|
||||
|
||||
function selectImapDeleteModel(choice)
|
||||
{
|
||||
// set deleteModel to selected mode
|
||||
document.getElementById("imap.deleteModel").setAttribute("value", choice);
|
||||
|
||||
switch (choice)
|
||||
{
|
||||
case "0" : // markDeleted
|
||||
// disable folderPicker
|
||||
document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
|
||||
break;
|
||||
case "1" : // moveToTrashFolder
|
||||
// enable folderPicker
|
||||
document.getElementById("msgTrashFolderPicker").removeAttribute("disabled");
|
||||
break;
|
||||
case "2" : // deleteImmediately
|
||||
// disable folderPicker
|
||||
document.getElementById("msgTrashFolderPicker").setAttribute("disabled", "true");
|
||||
break;
|
||||
default :
|
||||
dump("Error in enabling/disabling server.TrashFolderPicker\n");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Capture any menulist changes from folderPicker
|
||||
function folderPickerChange(radioItemId)
|
||||
{
|
||||
var trashFolderPickerUri = document.getElementById(radioItemId).getAttribute("uri");
|
||||
var trashFolderName = GetMsgFolderFromUri(trashFolderPickerUri, true);
|
||||
document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName.name);
|
||||
}
|
||||
|
||||
// Get trash_folder_name from prefs
|
||||
function getTrashFolderName()
|
||||
{
|
||||
var trashFolderName = document.getElementById("imap.trashFolderName").getAttribute("value");
|
||||
// if the preference hasn't been set, set it to a sane default
|
||||
if (!trashFolderName) {
|
||||
trashFolderName = "Trash";
|
||||
document.getElementById("imap.trashFolderName").setAttribute("value",trashFolderName);
|
||||
}
|
||||
return trashFolderName;
|
||||
}
|
||||
|
||||
// Get Current Server ID selected in the account tree
|
||||
function GetCurrentServerId()
|
||||
{
|
||||
var tree = window.parent.accounttree;
|
||||
var result = getServerIdAndPageIdFromTree(tree);
|
||||
return result.serverId;
|
||||
}
|
||||
|
@ -26,6 +26,7 @@
|
||||
Contributor(s):
|
||||
Håkan Waara <hwaara@chello.se>
|
||||
bienvenu@nventure.com
|
||||
Matthew Willis <mattwillis@gmail.com>
|
||||
|
||||
Alternatively, the contents of this file may be used under the terms of
|
||||
either of the GNU General Public License Version 2 or later (the "GPL"),
|
||||
@ -43,6 +44,8 @@
|
||||
|
||||
<?xml-stylesheet href="chrome://messenger/skin/accountManage.css" type="text/css"?>
|
||||
|
||||
<?xul-overlay href="chrome://messenger/content/msgFolderPickerOverlay.xul"?>
|
||||
|
||||
<!DOCTYPE page SYSTEM "chrome://messenger/locale/am-server-top.dtd" >
|
||||
|
||||
<page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
@ -52,6 +55,7 @@
|
||||
<script type="application/x-javascript" src="chrome://messenger/content/am-server.js"/>
|
||||
<script type="application/x-javascript" src="chrome://messenger/content/am-prefs.js"/>
|
||||
<script type="application/x-javascript" src="chrome://messenger/content/amUtils.js"/>
|
||||
<script type="application/x-javascript" src="chrome://messenger/content/widgetglue.js"/>
|
||||
<stringbundle id="bundle_messenger" src="chrome://messenger/locale/messenger.properties"/>
|
||||
|
||||
<broadcaster id="broadcaster_doBiff"/>
|
||||
@ -215,20 +219,49 @@
|
||||
</hbox>
|
||||
</vbox>
|
||||
<!-- IMAP -->
|
||||
<label hidden="true" wsm_persist="true" id="imap.trashFolderName"
|
||||
prefattribute="value"
|
||||
prefstring="mail.server.%serverkey%.trash_folder_name"/>
|
||||
|
||||
<hbox align="center" hidefor="pop3,nntp,movemail">
|
||||
<label value="&deleteMessagePrefix.label;" align="left"
|
||||
control="imap.deleteModel.box"/>
|
||||
</hbox>
|
||||
<hbox align="center" id="imap.deleteModel.box" hidefor="pop3,nntp,movemail">
|
||||
<label value="&deleteMessagePrefix.label;"
|
||||
accesskey="&deleteMessagePrefix.accesskey;"
|
||||
control="imap.deleteModel"/>/>
|
||||
<menulist wsm_persist="true" id="imap.deleteModel" prefstring="mail.server.%serverkey%.delete_model">
|
||||
<menupopup>
|
||||
<menuitem value="1" label="&modelMoveToTrash.label;"/>
|
||||
<menuitem value="0" label="&modelMarkDeleted.label;"/>
|
||||
<menuitem value="2" label="&modelDeleteImmediately.label;"/>
|
||||
</menupopup>
|
||||
</menulist>
|
||||
<spacer flex="1"/>
|
||||
<radiogroup wsm_persist="true" id="imap.deleteModel"
|
||||
prefstring="mail.server.%serverkey%.delete_model">
|
||||
<grid class="specialFolderPickerGrid">
|
||||
<columns>
|
||||
<column/>
|
||||
<column flex="1"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row align="center">
|
||||
<radio id="modelMoveToTrash"
|
||||
value="1" label="&modelMoveToTrash.label;"
|
||||
oncommand="selectImapDeleteModel(value)"
|
||||
accesskey="&modelMoveToTrash.accesskey;"/>
|
||||
<menulist id="msgTrashFolderPicker"
|
||||
oncommand="folderPickerChange('msgTrashFolderPicker')"/>
|
||||
</row>
|
||||
<row align="center">
|
||||
<radio id="modelMarkDeleted"
|
||||
value="0" label="&modelMarkDeleted.label;"
|
||||
oncommand="selectImapDeleteModel(value)"
|
||||
accesskey="&modelMarkDeleted.accesskey;"/>
|
||||
</row>
|
||||
<row align="center">
|
||||
<radio id="modelDeleteImmediately"
|
||||
value="2" label="&modelDeleteImmediately.label;"
|
||||
oncommand="selectImapDeleteModel(value)"
|
||||
accesskey="&modelDeleteImmediately.accesskey;"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</radiogroup>
|
||||
</hbox>
|
||||
|
||||
<!-- Advanced IMAP settings -->
|
||||
<hbox flex="1" hidefor="pop3,nntp,movemail" hidden="true">
|
||||
<checkbox hidden="true" wsm_persist="true" id="imap.dualUseFolders"
|
||||
prefattribute="value"
|
||||
|
@ -24,7 +24,7 @@
|
||||
biffEnd.label "minutes for new messages Check"
|
||||
-->
|
||||
<!ENTITY biffStart.label "Check for new messages every ">
|
||||
<!ENTITY biffStart.accesskey "k">
|
||||
<!ENTITY biffStart.accesskey "y">
|
||||
<!ENTITY biffEnd.label "minutes">
|
||||
<!ENTITY isSecure.label "Use secure connection (SSL)">
|
||||
<!ENTITY isSecure.accesskey "U">
|
||||
@ -55,10 +55,12 @@
|
||||
<!-- LOCALIZATION NOTE (popServerTitle.label) : do not translate "POP" in below line -->
|
||||
<!ENTITY popServerTitle.label "POP Server Information">
|
||||
<!ENTITY deleteMessagePrefix.label "When I delete a message:">
|
||||
<!ENTITY deleteMessagePrefix.accesskey "W">
|
||||
<!ENTITY modelMoveToTrash.label "Move it to the Trash folder">
|
||||
<!ENTITY modelMarkDeleted.label "Mark it as deleted">
|
||||
<!ENTITY modelMoveToTrash.label "Move it to this folder:">
|
||||
<!ENTITY modelMoveToTrash.accesskey "o">
|
||||
<!ENTITY modelMarkDeleted.label "Just mark it as deleted">
|
||||
<!ENTITY modelMarkDeleted.accesskey "k">
|
||||
<!ENTITY modelDeleteImmediately.label "Remove it immediately">
|
||||
<!ENTITY modelDeleteImmediately.accesskey "d">
|
||||
<!-- LOCALIZATION NOTE (expungeOnExit.label) : do not translate two of """ in below line -->
|
||||
<!ENTITY expungeOnExit.label "Clean up ("Expunge") Inbox on Exit">
|
||||
<!ENTITY expungeOnExit.accesskey "E">
|
||||
|
@ -104,14 +104,20 @@ function SetFolderPickerElement(uri, picker)
|
||||
dump("Can't find server for " + uri + "\n");
|
||||
serverName = "???";
|
||||
}
|
||||
|
||||
if (picker.id == "runFiltersFolder")
|
||||
|
||||
switch (picker) {
|
||||
case "runFiltersFolder":
|
||||
selectedValue = msgfolder.name;
|
||||
else {
|
||||
break;
|
||||
case "msgTrashFolderPicker":
|
||||
selectedValue = msgfolder.name;
|
||||
break;
|
||||
default:
|
||||
if (!gMessengerBundle)
|
||||
gMessengerBundle = document.getElementById("bundle_messenger");
|
||||
selectedValue = gMessengerBundle.getFormattedString("verboseFolderFormat",
|
||||
[msgfolder.name, serverName]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -634,4 +634,58 @@
|
||||
</template>
|
||||
<menupopup />
|
||||
</menulist>
|
||||
|
||||
<menulist id="msgTrashFolderPicker"
|
||||
containment="http://home.netscape.com/NC-rdf#child"
|
||||
sortResource="http://home.netscape.com/NC-rdf#FolderTreeName"
|
||||
sortDirection="ascending"
|
||||
datasources="rdf:msgaccountmanager rdf:mailnewsfolders">
|
||||
<template>
|
||||
<rule nc:NoSelect="false" iscontainer="true" isempty="false">
|
||||
<menupopup>
|
||||
<menu uri="..." class="folderMenuItem menu-iconic"
|
||||
label="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
oncommand="PickedMsgFolder(event.target,'msgTrashFolderPicker')"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
|
||||
<menupopup class="menulist-menupopup">
|
||||
<menuitem label="&filemessageschoosethis.label;"
|
||||
oncommand="PickedMsgFolder(event.target.parentNode.parentNode,'msgTrashFolderPicker')"/>
|
||||
<menuseparator/>
|
||||
</menupopup>
|
||||
</menu>
|
||||
</menupopup>
|
||||
</rule>
|
||||
<rule nc:NoSelect="true" iscontainer="true" isempty="false" >
|
||||
<menupopup>
|
||||
<menu uri="..." class="folderMenuItem menu-iconic"
|
||||
label="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
oncommand="PickedMsgFolder(event.target,'msgTrashFolderPicker')"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType">
|
||||
<menupopup class="menulist-menupopup"/>
|
||||
</menu>
|
||||
</menupopup>
|
||||
</rule>
|
||||
<rule nc:NoSelect="false">
|
||||
<menupopup>
|
||||
<menuitem uri="..." class="folderMenuItem menuitem-iconic"
|
||||
label="rdf:http://home.netscape.com/NC-rdf#Name"
|
||||
oncommand="PickedMsgFolder(event.target,'msgTrashFolderPicker')"
|
||||
SpecialFolder="rdf:http://home.netscape.com/NC-rdf#SpecialFolder"
|
||||
BiffState="rdf:http://home.netscape.com/NC-rdf#BiffState"
|
||||
IsServer="rdf:http://home.netscape.com/NC-rdf#IsServer"
|
||||
IsSecure="rdf:http://home.netscape.com/NC-rdf#IsSecure"
|
||||
ServerType="rdf:http://home.netscape.com/NC-rdf#ServerType"/>
|
||||
</menupopup>
|
||||
</rule>
|
||||
</template>
|
||||
<menupopup />
|
||||
</menulist>
|
||||
</overlay>
|
||||
|
Loading…
Reference in New Issue
Block a user