This is just some static backup of the original site, don't expect every link to work!

source: chrome/content/v_identity/vI_upgrade.js @ 9cedc0

ng_0.9
Last change on this file since 9cedc0 was 9cedc0, checked in by rene <rene@…>, 11 years ago

compatibility for conversation plugin

  • Property mode set to 100644
File size: 8.9 KB
Line 
1/* ***** BEGIN LICENSE BLOCK *****
2    This program is free software; you can redistribute it and/or modify
3    it under the terms of the GNU General Public License as published by
4    the Free Software Foundation; either version 2 of the License, or
5    (at your option) any later version.
6
7    This program is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10    GNU General Public License for more details.
11
12    You should have received a copy of the GNU General Public License
13    along with this program; if not, write to the Free Software
14    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
15
16    The Original Code is the Virtual Identity Extension.
17
18    The Initial Developer of the Original Code is Rene Ejury.
19    Portions created by the Initial Developer are Copyright (C) 2007
20    the Initial Developer. All Rights Reserved.
21
22    Contributor(s):
23 * ***** END LICENSE BLOCK ***** */
24
25virtualIdentityExtension.ns(function() { with (virtualIdentityExtension.LIB) {
26var upgrade = {
27    preferences : Components.classes["@mozilla.org/preferences-service;1"]
28            .getService(Components.interfaces.nsIPrefService)
29            .getBranch("extensions.virtualIdentity."),
30           
31    versionChecker : Components.classes["@mozilla.org/xpcom/version-comparator;1"]
32            .getService(Components.interfaces.nsIVersionComparator),
33   
34    rdfDatasource : null,
35
36    init : function() {
37        upgrade.__initRequirements();
38        document.documentElement.getButton("cancel").setAttribute("hidden", "true")
39    },
40
41    clean : function() {
42        if (upgrade.rdfDatasource) upgrade.rdfDatasource.clean();
43    },
44
45    __initRequirements : function() {
46        vI.notificationBar.dump("") // this initialises the debug-area
47        upgrade.rdfDatasource = new vI.rdfDatasource("virtualIdentity.rdf", true);
48    },
49   
50    // this function checks for the chance to ugrade without shoing the complete wizard
51    // if so, perform the upgrade and return true
52    // by default the wizard is not shown if it is a one-version-forward upgrade
53    quick_upgrade : function(currentVersion) {
54        // seamonkey doesn't have a extensionmanager, so read version of extension from hidden version-label
55        if (!currentVersion) return false;
56        currentVersion = currentVersion.split(/\./);
57        var nextVersion = currentVersion[0] + "." + currentVersion[1] + "."
58        if (currentVersion[2].match(/pre/))
59            nextVersion += parseInt(currentVersion[2])
60        else nextVersion += parseInt(currentVersion[2]) + 1
61           
62        let window = Cc['@mozilla.org/appshell/window-mediator;1']
63            .getService(Ci.nsIWindowMediator)
64            .getMostRecentWindow("mail:3pane");
65        var extVersion = window.virtualIdentityExtension.extensionVersion;
66       
67        // don't show the dialog if we do a one-step upgrade
68        if (upgrade.versionChecker.compare(extVersion, nextVersion) <= 0) {
69            vI.notificationBar.dump("starting quick_upgrade.\n")
70            upgrade.__initRequirements();
71            upgrade.__upgrade();
72            return true;
73        }
74        return false;
75    },
76
77    prepare : function(elem) {
78        document.documentElement.getButton('back').setAttribute('hidden','true');
79        document.documentElement.getButton('next').focus();
80        var pageid = elem.getAttribute("pageid");
81        var browser = document.getElementById('virtualIdentityExtension_TextBox.' + pageid)
82        if (browser) 
83            browser.outputString =
84                    document.getElementById('virtualIdentityExtension_TextBoxBundle').getString('vident.' + pageid);
85    },
86   
87    __upgrade : function() {
88        if (upgrade.rdfDatasource.extUpgradeRequired()) upgrade.extUpgrade();
89       
90        vI.account.cleanupSystem();
91    },         
92
93    upgrade : function() {
94        vI.notificationBar.dump("starting upgrade.\n\n")
95        document.getElementById("upgradeWizard").setAttribute("canAdvance", "false")
96        document.documentElement.getButton('next').setAttribute('disabled','true');
97       
98        upgrade.__upgrade();
99   
100        vI.notificationBar.dump("\n\nupgrade finished.\n");
101       
102        document.documentElement.getButton('next').setAttribute('disabled','false');
103        document.getElementById("upgradeWizard").setAttribute("canAdvance", "true")
104    },
105   
106    extUpgrade : function() {
107        var currentVersion = upgrade.rdfDatasource.getCurrentExtFileVersion();
108        vI.notificationBar.dump("checking for previous version, found " + 
109            currentVersion + "\nextension-upgrade required.\n")
110        switch (currentVersion) {
111            case null:
112                // no break
113            default:
114                upgrade.__transferMovedUserPrefs(currentVersion);
115                upgrade.__removeObsoleteUserPrefs(currentVersion);
116                upgrade.__removeExtraAddedHeaders(currentVersion);
117        }
118        upgrade.rdfDatasource.storeExtVersion();
119        vI.notificationBar.dump("extension-upgrade to " + upgrade.rdfDatasource.getCurrentExtFileVersion() + " done.\n\n");
120    },
121   
122    __removeExtraAddedHeaders : function(currentVersion) {
123        var prefroot = Components.classes["@mozilla.org/preferences-service;1"]
124            .getService(Components.interfaces.nsIPrefService)
125            .getBranch(null);
126       
127        vI.notificationBar.dump("extension-upgrade __removeExtraAddedHeaders " + currentVersion + "\n");
128        if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.6.9") < 0) && 
129                prefroot.getCharPref("mailnews.headers.extraExpandedHeaders") != "") {
130            // clean extraExpandedHeaders once, because the whole header-saving and restoring was broken too long
131            vI.notificationBar.dump("cleaning extraExpandedHeaders\n");
132            prefroot.setCharPref("mailnews.headers.extraExpandedHeaders", "")
133            vI.notificationBar.dump("cleaned extraExpandedHeaders\n");
134        }
135        vI.notificationBar.dump("extension-upgrade __removeExtraAddedHeaders done.\n\n");
136    },
137   
138    __transferMovedUserPrefs : function(currentVersion) {
139        // transfer renamed preferences
140        var transferPrefs = [   { version : "0.5.3",
141                    prefs : Array({ sourcePref : "smart_reply_ask", targetPref : "idSelection_ask" },
142                        { sourcePref : "smart_reply_ask_always", targetPref : "idSelection_ask_always" },
143                        { sourcePref : "smart_reply_autocreate", targetPref : "idSelection_autocreate" },
144                        { sourcePref : "smart_timestamp", targetPref : "autoTimestamp" },
145                        { sourcePref : "storage_prefer_smart_reply", targetPref : "idSelection_storage_prefer_smart_reply" },
146                        { sourcePref : "storage_ignore_smart_reply", targetPref : "idSelection_storage_ignore_smart_reply" }) }];
147        // remove obsolete preference-tree virtualIdentity
148        for (var i = 0; i < transferPrefs.length; i++) {
149            // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
150            if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, transferPrefs[i].version) < 0)) {
151                // remove any obsolete preferences under extensions.virtualIdentity
152                vI.notificationBar.dump("transfer changed preferences of pre-" + transferPrefs[i].version + " release:\n")
153                for each (transferPref in transferPrefs[i].prefs) {
154                    try {   upgrade.preferences.setBoolPref(transferPref.targetPref, 
155                            upgrade.preferences.getBoolPref(transferPref.sourcePref));
156                        upgrade.preferences.clearUserPref(transferPref.sourcePref);
157                        vI.notificationBar.dump(".") 
158                    }
159                    catch (e) { };
160                }
161                vI.notificationBar.dump("done.\n")
162            }
163        }
164    },
165   
166    __removeObsoleteUserPrefs : function(currentVersion) {
167        var obsoletePrefs = [   { version : "0.5.0",
168                    prefs : Array("aBook_use", "aBook_storedefault", "aBook_dont_update_multiple",
169                    "aBook_show_switch", "aBook_warn_update", "aBook_use_for_smart_reply",
170                    "aBook_prefer_smart_reply", "aBook_ignore_smart_reply", "aBook_warn_vI_replace",
171                    "aBook_use_non_vI", "aBook_notification", "storeVIdentity", "experimental",
172                    "storage_use_for_smart_reply") },
173                    { version : "0.5.3", prefs : Array("storage_use_for_smart_reply") },
174                    { version : "0.5.6", prefs : Array("copyEnigmailSettings") } ];
175        // remove obsolete preference-tree virtualIdentity
176        for (var i = 0; i < obsoletePrefs.length; i++) {
177            // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
178            if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, obsoletePrefs[i].version) < 0)) {
179                // remove any obsolete preferences under extensions.virtualIdentity
180                vI.notificationBar.dump("removing obsolete preferences of pre-" + obsoletePrefs[i].version + " release:\n")
181                for each (pref in obsoletePrefs[i].prefs) {
182                    try { upgrade.preferences.clearUserPref(pref); vI.notificationBar.dump(".") }
183                    catch (e) { };
184                }
185                vI.notificationBar.dump("done.\n")
186            }
187        }
188    },
189
190    openURL : function(aURL) {
191            var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
192            var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
193
194            uri.spec = aURL;
195            protocolSvc.loadUrl(uri);
196        }
197}
198vI.upgrade = upgrade;
199// start init only if wizard is shown, so it is done in vI_upgrade.xul
200// window.addEventListener('load', upgrade.init, true);
201}});
Note: See TracBrowser for help on using the repository browser.