Skip to content

Commit

Permalink
Implemented script import/export.
Browse files Browse the repository at this point in the history
  • Loading branch information
codebutler committed Oct 17, 2010
1 parent 9dccded commit 7fa4730
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 3 deletions.
42 changes: 42 additions & 0 deletions xpi/chrome/content/preferences/websitesPane.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ Components.utils.import('resource://firesheep/util/Observers.js');
Components.utils.import('resource://firesheep/util/underscore.js');
Components.utils.import('resource://firesheep/util/Utils.js');

const Cc = Components.classes;
const Ci = Components.interfaces;

function loadScripts () {
try {
_.each(Firesheep.builtinScripts, function (scriptText, scriptId) {
Expand Down Expand Up @@ -71,6 +74,41 @@ function editScript () {
}
}

function importScript () {
try {
var nsIFilePicker = Ci.nsIFilePicker;
var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
fp.init(window, "Select a File", nsIFilePicker.modeOpen);
fp.appendFilter("Firesheep Scripts","*.js");
if (fp.show() == nsIFilePicker.returnOK) {
var scriptId = Utils.generateUUID();
var scriptText = Utils.readAllText(fp.file);
Firesheep.config.saveScript(scriptId, scriptText);
}
} catch (e) {
alert(e);
}
}

function exportScript () {
try {
var item = document.getElementById("scriptsList").selectedItem;
if (item) {
var nsIFilePicker = Ci.nsIFilePicker;
var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
fp.init(window, "Select a File", nsIFilePicker.modeSave);
fp.appendFilter("Firesheep Scripts","*.js");
fp.defaultString = item.nameLabel.value + '.js';
if (fp.show() == nsIFilePicker.returnOK) {
var text = Firesheep.config.userScripts[item.value];
Utils.writeAllText(fp.file, text)
}
}
} catch (e) {
alert(e);
}
}

function observer (data) {
var list = document.getElementById("scriptsList");
switch (data.action) {
Expand Down Expand Up @@ -132,14 +170,18 @@ function onSelect()

var editButton = document.getElementById('editButton');
var removeButton = document.getElementById('removeButton');
var exportButton = document.getElementById('exportButton');

editButton.disabled = !item;
editButton.label = item.isUser ? 'Edit' : 'View';
exportButton.disabled = !(item && item.isUser);
removeButton.disabled = !(item && item.isUser);
}

function scriptTemplate(name) {
return "register({\n\
name: \"" + name + "\",\n\
domains: [ /* FIXME */ ],\n\
sessionCookieNames: [ /* FIXME */ ],\n\
identifyUser: function () {\n\
/* FIXME */\n\
Expand Down
4 changes: 2 additions & 2 deletions xpi/chrome/content/preferences/websitesPane.xul
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@
<button label="Edit" id="editButton" oncommand="editScript()" disabled="true" />
<button label="Remove" id="removeButton" oncommand="removeScript()" disabled="true" />
<spacer flex="1" />
<button label="Import" disabled="true" />
<button label="Export" disabled="true" />
<button label="Import" oncommand="importScript()" />
<button label="Export" id="exportButton" oncommand="exportScript()" disabled="true" />
</hbox>
</vbox>
</prefpane>
Expand Down
2 changes: 1 addition & 1 deletion xpi/modules/util/ScriptParser.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ var ScriptParser = {
if (!obj['sessionCookieNames'] && !obj.matchPacket)
missingFields.push('sessionCookieNames');
if (missingFields.length > 0)
errorText = 'Missing fields: ' + missingFields.push(',');
errorText = 'Missing fields: ' + missingFields.join(',');
} else {
errorText = "register() requires one object parameter.";
}
Expand Down

0 comments on commit 7fa4730

Please sign in to comment.