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 @ c135ae

ng_0.8 0.8.9
Last change on this file since c135ae was 570ecf, checked in by rene <rene@…>, 11 years ago

additional fixes

  • Property mode set to 100644
File size: 8.8 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        var extVersion = document.getElementById("extVersion").getAttribute("value");
62               
63        // don't show the dialog if we do a one-step upgrade
64        if (upgrade.versionChecker.compare(extVersion, nextVersion) <= 0) {
65            vI.notificationBar.dump("starting quick_upgrade.\n")
66            upgrade.__initRequirements();
67            upgrade.__upgrade();
68            return true;
69        }
70        return false;
71    },
72
73    prepare : function(elem) {
74        document.documentElement.getButton('back').setAttribute('hidden','true');
75        document.documentElement.getButton('next').focus();
76        var pageid = elem.getAttribute("pageid");
77        var browser = document.getElementById('virtualIdentityExtension_TextBox.' + pageid)
78        if (browser) 
79            browser.outputString =
80                    document.getElementById('virtualIdentityExtension_TextBoxBundle').getString('vident.' + pageid);
81    },
82   
83    __upgrade : function() {
84        if (upgrade.rdfDatasource.extUpgradeRequired()) upgrade.extUpgrade();
85       
86        vI.account.cleanupSystem();
87    },         
88
89    upgrade : function() {
90        vI.notificationBar.dump("starting upgrade.\n\n")
91        document.getElementById("upgradeWizard").setAttribute("canAdvance", "false")
92        document.documentElement.getButton('next').setAttribute('disabled','true');
93       
94        upgrade.__upgrade();
95   
96        vI.notificationBar.dump("\n\nupgrade finished.\n");
97       
98        document.documentElement.getButton('next').setAttribute('disabled','false');
99        document.getElementById("upgradeWizard").setAttribute("canAdvance", "true")
100    },
101   
102    extUpgrade : function() {
103        var currentVersion = upgrade.rdfDatasource.getCurrentExtFileVersion();
104        vI.notificationBar.dump("checking for previous version, found " + 
105            currentVersion + "\nextension-upgrade required.\n")
106        switch (currentVersion) {
107            case null:
108                // no break
109            default:
110                upgrade.__transferMovedUserPrefs(currentVersion);
111                upgrade.__removeObsoleteUserPrefs(currentVersion);
112                upgrade.__removeExtraAddedHeaders(currentVersion);
113        }
114        upgrade.rdfDatasource.storeExtVersion();
115        vI.notificationBar.dump("extension-upgrade to " + upgrade.rdfDatasource.getCurrentExtFileVersion() + " done.\n\n");
116    },
117   
118    __removeExtraAddedHeaders : function(currentVersion) {
119        var prefroot = Components.classes["@mozilla.org/preferences-service;1"]
120            .getService(Components.interfaces.nsIPrefService)
121            .getBranch(null);
122       
123        vI.notificationBar.dump("extension-upgrade __removeExtraAddedHeaders " + currentVersion + "\n");
124        if ((!currentVersion || upgrade.versionChecker.compare(currentVersion, "0.6.9") < 0) && 
125                prefroot.getCharPref("mailnews.headers.extraExpandedHeaders") != "") {
126            // clean extraExpandedHeaders once, because the whole header-saving and restoring was broken too long
127            vI.notificationBar.dump("cleaning extraExpandedHeaders\n");
128            prefroot.setCharPref("mailnews.headers.extraExpandedHeaders", "")
129            vI.notificationBar.dump("cleaned extraExpandedHeaders\n");
130        }
131        vI.notificationBar.dump("extension-upgrade __removeExtraAddedHeaders done.\n\n");
132    },
133   
134    __transferMovedUserPrefs : function(currentVersion) {
135        // transfer renamed preferences
136        var transferPrefs = [   { version : "0.5.3",
137                    prefs : Array({ sourcePref : "smart_reply_ask", targetPref : "idSelection_ask" },
138                        { sourcePref : "smart_reply_ask_always", targetPref : "idSelection_ask_always" },
139                        { sourcePref : "smart_reply_autocreate", targetPref : "idSelection_autocreate" },
140                        { sourcePref : "smart_timestamp", targetPref : "autoTimestamp" },
141                        { sourcePref : "storage_prefer_smart_reply", targetPref : "idSelection_storage_prefer_smart_reply" },
142                        { sourcePref : "storage_ignore_smart_reply", targetPref : "idSelection_storage_ignore_smart_reply" }) }];
143        // remove obsolete preference-tree virtualIdentity
144        for (var i = 0; i < transferPrefs.length; i++) {
145            // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
146            if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, transferPrefs[i].version) < 0)) {
147                // remove any obsolete preferences under extensions.virtualIdentity
148                vI.notificationBar.dump("transfer changed preferences of pre-" + transferPrefs[i].version + " release:\n")
149                for each (transferPref in transferPrefs[i].prefs) {
150                    try {   upgrade.preferences.setBoolPref(transferPref.targetPref, 
151                            upgrade.preferences.getBoolPref(transferPref.sourcePref));
152                        upgrade.preferences.clearUserPref(transferPref.sourcePref);
153                        vI.notificationBar.dump(".") 
154                    }
155                    catch (e) { };
156                }
157                vI.notificationBar.dump("done.\n")
158            }
159        }
160    },
161   
162    __removeObsoleteUserPrefs : function(currentVersion) {
163        var obsoletePrefs = [   { version : "0.5.0",
164                    prefs : Array("aBook_use", "aBook_storedefault", "aBook_dont_update_multiple",
165                    "aBook_show_switch", "aBook_warn_update", "aBook_use_for_smart_reply",
166                    "aBook_prefer_smart_reply", "aBook_ignore_smart_reply", "aBook_warn_vI_replace",
167                    "aBook_use_non_vI", "aBook_notification", "storeVIdentity", "experimental",
168                    "storage_use_for_smart_reply") },
169                    { version : "0.5.3", prefs : Array("storage_use_for_smart_reply") },
170                    { version : "0.5.6", prefs : Array("copyEnigmailSettings") } ];
171        // remove obsolete preference-tree virtualIdentity
172        for (var i = 0; i < obsoletePrefs.length; i++) {
173            // if former version of extension was at least 0.5.0, start with WizardPage 0.5.2
174            if (!currentVersion || (upgrade.versionChecker.compare(currentVersion, obsoletePrefs[i].version) < 0)) {
175                // remove any obsolete preferences under extensions.virtualIdentity
176                vI.notificationBar.dump("removing obsolete preferences of pre-" + obsoletePrefs[i].version + " release:\n")
177                for each (pref in obsoletePrefs[i].prefs) {
178                    try { upgrade.preferences.clearUserPref(pref); vI.notificationBar.dump(".") }
179                    catch (e) { };
180                }
181                vI.notificationBar.dump("done.\n")
182            }
183        }
184    },
185
186    openURL : function(aURL) {
187            var uri = Components.classes["@mozilla.org/network/standard-url;1"].createInstance(Components.interfaces.nsIURI);
188            var protocolSvc = Components.classes["@mozilla.org/uriloader/external-protocol-service;1"].getService(Components.interfaces.nsIExternalProtocolService);
189
190            uri.spec = aURL;
191            protocolSvc.loadUrl(uri);
192        }
193}
194vI.upgrade = upgrade;
195// start init only if wizard is shown, so it is done in vI_upgrade.xul
196// window.addEventListener('load', upgrade.init, true);
197}});
Note: See TracBrowser for help on using the repository browser.