-rw-r--r-- | frontend/beta/js/Clipperz/PM/DataModel/Record.js | 9 | ||||
-rw-r--r-- | frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js | 2 |
2 files changed, 5 insertions, 6 deletions
diff --git a/frontend/beta/js/Clipperz/PM/DataModel/Record.js b/frontend/beta/js/Clipperz/PM/DataModel/Record.js index d6ebb39..f89f79c 100644 --- a/frontend/beta/js/Clipperz/PM/DataModel/Record.js +++ b/frontend/beta/js/Clipperz/PM/DataModel/Record.js @@ -186,215 +186,214 @@ Clipperz.PM.DataModel.Record.prototype = MochiKit.Base.update(null, { return Clipperz.Base.serializeJSON(result); }, //------------------------------------------------------------------------- 'shouldLoadData': function() { return this._shouldLoadData; }, 'setShouldLoadData': function(aValue) { this._shouldLoadData = aValue; }, //------------------------------------------------------------------------- 'shouldDecryptData': function() { return this._shouldDecryptData; }, 'setShouldDecryptData': function(aValue) { this._shouldDecryptData = aValue; }, //------------------------------------------------------------------------- 'shouldProcessData': function() { return this._shouldProcessData; }, 'setShouldProcessData': function(aValue) { this._shouldProcessData = aValue; }, //------------------------------------------------------------------------- 'loadData': function() { var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.loadData - this: " + this); if (this.shouldLoadData()) { var deferredResult; deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'loadingRecordData'); deferredResult.addCallback(MochiKit.Base.method(this.user().connection(), 'message'), 'getRecordDetail', {reference: this.reference()}); deferredResult.addCallback(MochiKit.Base.method(this,'setServerData')); deferredResult.callback(); result = deferredResult; } else { result = MochiKit.Async.succeed(this.serverData()); } //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.loadData"); return result; }, //------------------------------------------------------------------------- 'decryptData': function(anEncryptedData) { var result; //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.decryptData - this: " + this + " (" + anEncryptedData + ")"); if (this.shouldDecryptData()) { var deferredResult; deferredResult = new MochiKit.Async.Deferred(); deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'notify', 'decryptingRecordData'); deferredResult.addCallback(Clipperz.PM.Crypto.deferredDecrypt, this.key(), anEncryptedData['data'], anEncryptedData['version']); deferredResult.addCallback(function(anEncryptedData, someDecryptedValues) { var result; result = anEncryptedData; result['data'] = someDecryptedValues; return result; }, anEncryptedData); deferredResult.addCallback(MochiKit.Base.method(this, 'setDecryptedData')); deferredResult.callback(); result = deferredResult; } else { result = MochiKit.Async.succeed(this.decryptedData()); } //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.decryptData"); return result; }, //------------------------------------------------------------------------- 'processData': function(someValues) { //MochiKit.Logging.logDebug(">>> [" + (new Date()).valueOf() + "] Record.processData"); //MochiKit.Logging.logDebug("--- Record.processData: " + Clipperz.Base.serializeJSON(someValues)); if (this.shouldProcessData()) { var currentVersionParameters; -console.log("Record.processData", someValues); this.processDataToExtractLegacyValues(someValues['data']); if (typeof(someValues['data']['notes']) != 'undefined') { this.setNotes(someValues['data']['notes']); } if (someValues['data']['currentVersionKey'] != null) { this.setCurrentVersionKey(someValues['data']['currentVersionKey']); } else { this.setCurrentVersionKey(this.key()); } -// community edition doesn't currently pass version -// information +// community edition doesn't currently pass version information if (someValues['versions'] == null) { currentVersionParameters = someValues['currentVersion']; } else { currentVersionParameters = someValues['versions'][someValues['currentVersion']]; } -console.log("Record.processData - this.currentVersionKey()", this.currentVersionKey()); -console.log("Record.processData - currentVersionParameters", currentVersionParameters); +//- currentVersionParameters = someValues['currentVersion']; +// currentVersionParameters = someValues['versions'][someValues['currentVersion']]; + currentVersionParameters['key'] = this.currentVersionKey(); this.setCurrentVersion(new Clipperz.PM.DataModel.RecordVersion(this, currentVersionParameters)); if (someValues['data']['directLogins'] != null) { var directLoginReference; for (directLoginReference in someValues['data']['directLogins']) { var directLogin; var directLoginParameters; directLoginParameters = someValues['data']['directLogins'][directLoginReference]; directLoginParameters.record = this; directLoginParameters.reference = directLoginReference; directLogin = new Clipperz.PM.DataModel.DirectLogin(directLoginParameters); this.addDirectLogin(directLogin, true); } } this.setShouldProcessData(false); } Clipperz.NotificationCenter.notify(this, 'recordDataReady'); //MochiKit.Logging.logDebug("<<< [" + (new Date()).valueOf() + "] Record.processData"); //MochiKit.Logging.logDebug("<<< Record.processData"); return this; }, //------------------------------------------------------------------------- 'processDataToExtractLegacyValues': function(someValues) { //MochiKit.Logging.logDebug(">>> Record.processDataToExtractLegacyValues"); if (someValues['data'] != null) { this.setNotes(someValues['data']); } if ( (typeof(someValues['loginFormData']) != "undefined") && (typeof(someValues['loginBindings'] != "undefined")) && (someValues['loginFormData'] != "") && (someValues['loginBindings'] != "") ) { var directLogin; directLogin = new Clipperz.PM.DataModel.DirectLogin({ record:this, label:this.label() + Clipperz.PM.Strings['newDirectLoginLabelSuffix'], reference:Clipperz.Crypto.SHA.sha256(new Clipperz.ByteArray(this.label() + someValues['loginFormData'] + someValues['loginBindings'])).toHexString().substring(2), formData:Clipperz.Base.evalJSON(someValues['loginFormData']), legacyBindingData:Clipperz.Base.evalJSON(someValues['loginBindings']), bookmarkletVersion:'0.1' }); this.addDirectLogin(directLogin, true); } //MochiKit.Logging.logDebug("<<< Record.processDataToExtractLegacyValues"); }, //------------------------------------------------------------------------- 'getReadyBeforeUpdatingVersionValues': function() { }, //------------------------------------------------------------------------- 'addNewField': function() { var newField; //MochiKit.Logging.logDebug(">>> Record.addNewField - " + this); this.getReadyBeforeUpdatingVersionValues(); newField = this.currentVersion().addNewField(); Clipperz.NotificationCenter.notify(this, 'recordUpdated'); //MochiKit.Logging.logDebug("<<< Record.addNewField"); return newField; }, //------------------------------------------------------------------------- 'removeField': function(aField) { this.getReadyBeforeUpdatingVersionValues(); this.currentVersion().removeField(aField); Clipperz.NotificationCenter.notify(this, 'recordUpdated'); }, 'removeEmptyFields': function() { MochiKit.Iter.forEach(MochiKit.Base.values(this.currentVersion().fields()), MochiKit.Base.bind(function(aField) { if (aField.isEmpty()) { this.removeField(aField); // this.currentVersion().removeField(aField); } }, this)); }, //------------------------------------------------------------------------- diff --git a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js index 299ebc7..ab1bb0f 100644 --- a/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js +++ b/frontend/beta/js/Clipperz/PM/Strings/Strings_en-US.js @@ -415,193 +415,193 @@ Clipperz.PM.Strings.Languages['en-us'] = { <p>JSON enables a “lossless” export of your cards. All the information will be preserved, including direct login configurations.</p>\ <p>This custom format it’s quite convenient if you need to move some of all of your cards to a different Clipperz account. Or if you want to restore a card that has been accidentally deleted.</p>\ <p>Click on the link below to start the export process.</p>", 'exportLinkLabel': "Export to JSON", 'exportDataInProgressDescription': "<h4>Exporting, please wait while your data are being processed …</h4>", 'exportDataDescription': "\ <h4>Instructions</h4>\ <p>Copy the text below to your favorite editor and save it. (e.g. “clipperz_export_20071217.json”)</p>", // Contacts panel 'contactsTabLabel': "Contacts", 'contactsTabTitle': "Contacts", //Tools panel - password generator 'passwordGeneratorTabLabel': "Password generator", 'bookmarkletTabLabel': "Bookmarklet", 'compactTabLabel': "Compact edition", 'httpAuthTabLabel': "HTTP authentication", 'passwordGeneratorTabTitle': "Password generator", 'bookmarkletTabTitle': "Bookmarklet", 'compactTabTitle': "Compact edition", 'httpAuthTabTitle': "HTTP authentication", // Tools panel - password generator - description 'paswordGeneratorTabDescription': "<p></p>", 'passwordGeneratorTabButtonLabel': "Generate password", // Tools panel - bookmarklet 'bookmarkletTabLabel': "Bookmarklet", 'bookmarkletTabTitle': "Bookmarklet", 'bookmarkletTabDescription': "\ <!-- FIX CSS DONE! --> \ <p>A bookmarklet is a simple “one-click” tool that can perform very useful tasks. It can be saved and used like a normal web page bookmark.</p>\ <p>The Clipperz bookmarklet will help you to quickly create new cards and new “direct logins” within existing cards.</p>\ <p><b>Please note that the bookmarklet does not include any information related to your account (e.g. your username or passphrase), the bookmarklet is a general tool containing the same code for every Clipperz user.</b></p>\ <h3>How to install the bookmarklet</h3>\ <h>Firefox, Camino, Opera, Safari</h5>\ <ol>\ <li><p>Make sure that the “Bookmarks Bar” is displayed by selecting “View > Toolbars > Bookmarks”, or similar menu items, from the browser menu.</p></li>\ <li><p>Drag and drop the “Add to Clipperz” link below to the bookmark bar.</p></li>\ </ol>\ \ <h5>Internet Explorer</h5>\ <ol>\ <li><p>Make sure that the “Links” toolbar is displayed by selecting “View > Toolbars > Links” from the browser menu.</p></li>\ <li><p>Right-click on the “Add to Clipperz” link below.</p></li>\ <li><p>Select “Add to favorites” from the contextual menu.</p></li>\ <li><p>Click “Yes” for any security message that pops up.</p></li>\ <li><p>Open the “Links” folder and click “OK”</p></li>\ </ol>", 'bookmarkletTabBookmarkletTitle': "Add to Clipperz", // Tools panel - bookmarklet - instructions 'bookmarkletTabInstructions': "\ <!-- FIX CSS DONE! --> \ <h3>How to create a new card inclusive of a “direct login” link to an online service</h3>\ <ol>\ <li><p>Open the web page where the login form is hosted. (this is the page where you usually enter your sign-in credentials)</p></li>\ <li><p>Launch the bookmarklet by clicking on it: a pop-up window will appear over the web page.</p></li>\ <li><p>Copy to the clipboard the content of the large text area within the pop-up. (ctrl-C)</p></li>\ <li><p>Enter your Clipperz account and click on the <b>Add new card</b> button.</p></li>\ <li><p>Select the “Direct login” template and paste the content of the clipboard to the large text area in the form. (ctrl-V)</p></li>\ <li><p>Press the <b>Create</b> button, complete and review the details, then click <b>Save</b>.</p></li>\ </ol>\ \ <h3>How to add a “direct login” link to an existing card</h3>\ <ol>\ <li><p>Same as above.</p></li>\ <li><p>Same as above.</p></li>\ <li><p>Same as above.</p></li>\ <li><p>Enter your Clipperz account and select the card containing the credentials for the web service you just visited and click the <b>Edit</b> button.</p></li>\ <li><p>Paste the content of the clipboard to the large text area in the “Direct logins” section. (ctrl-V)</p></li>\ <li><p>Press the <b>Add direct login</b> button, review the details and then click <b>Save</b>.</p></li>\ </ol>\ \ <p></p>\ <p>Further information about the bookmarklet are <a href=\"http://www.clipperz.com/support/user_guide/bookmarklet\" target=\"_blank\">available here</a>.</p>", // Tools panel - Compact - instructions 'compactTabDescription': "\ <!-- FIX CSS DONE! --> \ <p>Clipperz Compact is a special version of Clipperz designed to be opened in the Firefox sidebar.</p>\ <p>Its purpose is to keep your collection of “direct logins” always at hand. Read more <a href=\"http://www.clipperz.com/support/user_guide/clipperz_compact\", target=\"blank\">here</a></p>\ \ <h3>How to launch Clipperz Compact in the sidebar</h3>\ <ol>\ <li><p>Get Firefox! Sidebars are only available in Firefox and you need to switch to Firefox in order to enjoy the convenience of Clipperz Compact.</p></li>\ <li>\ <p>Add the following URL to Firefox bookmarks, or even better, drag it to the bookmark bar.</p>\ - <div id=\"compactLinkBox\"><a href=\"index.html?compact\" target=\"_search\">Clipperz Compact</a></div>\ + <div id=\"compactLinkBox\"><a href=\"./index.html?compact\" target=\"_search\">Clipperz Compact</a></div>\ </li>\ <li><p>Change the properties of the bookmark so that “load this bookmark in the sidebar” is checked.</p></li>\ </ol>\ \ <h5>Added bonus: Clipperz Compact works also in Opera’s panel.</h5>", // Tools panel - HTTP authentication - instructions 'httpAuthTabDescription': "\ <!-- FIX CSS DONE! --> \ <p>HTTP authentication is a method designed to allow a web browser to provide credentials – in the form of a username and password – including them in a website address (HTTP or HTTPS URL).</p>\ <p>Nowadays it is rarely used, but it can still be found on small, private websites. You can tell that a website is protected by HTTP authentication when the browser displays a pop-up window to enter username and password.</p>\ <p>Unfortunately the Clipperz bookmarklet does not work on websites that use HTTP authentication. However you can still create a “direct login”.</p>\ \ <h3>How to create a “direct login” for a website that uses HTTP authentication</h3>\ <ol>\ <li><p>Store website URL, username and password in a new card.</p></li>\ <li><p>Copy the configuration below and paste it to the large text area in the “Direct logins” section of the new card.</p></li>\ <li><p>Press the <b>Add direct login</b> button, bind URL, username and password fields and then click <b>Save</b>.</p></li>\ </ol>\ \ <h5><a href=\"http://support.microsoft.com/kb/834489\" target=\"_blank\">Warning: Internet Explorer does not support HTTP authentication.</a></h5>", // Direct logins block 'mainPanelDirectLoginBlockLabel': "Direct logins", 'directLinkReferenceShowButtonLabel': "show", // Direct logins - blank slate 'mainPanelDirectLoginBlockDescription': "\ <!-- FIX CSS DONE! --> \ <p>Add “direct logins” to sign in to your web accounts without typing usernames and passwords!</p>\ <p>“Direct logins” greatly enhance your password security since you can:</p>\ <ul>\ <li><p>conveniently adopt and enter complex passwords;</p></li>\ <li><p>never re-use the same and easy-to-guess password.</p></li>\ </ul>\ <p>Simple and quick configuration with the <b>Clipperz bookmarklet</b>.</p>\ <a href=\"http://www.clipperz.com/support/user_guide/direct_logins\" target=\"_blank\">Learn more about “direct logins”</a>", // Cards block 'mainPanelRecordsBlockLabel': "Cards", 'mainPanelAddRecordButtonLabel': "Add new card", 'mainPanelRemoveRecordButtonLabel': "Delete card", // Cards block - filter tabs 'mainPanelRecordFilterBlockAllLabel': "all", 'mainPanelRecordFilterBlockTagsLabel': "tags", 'mainPanelRecordFilterBlockSearchLabel': "search", // Cards block - blank slate 'recordDetailNoRecordAtAllTitle': "Welcome to Clipperz!", 'recordDetailNoRecordAtAllDescription': "\ <h5>Get started by adding cards to your account.</h5>\ <p>Cards are simple and flexible forms where you can store your passwords and any other confidential data.</p>\ <p>Cards could contain credentials for accessing a web site, the combination of your bicycle lock, details of your credit card, …</p>\ \ <h5>Don't forget the Clipperz bookmarklet!</h5>\ <p>Before you start, install the “Add to Clipperz” bookmarklet: it will make creating cards easier and more fun.</p>\ <p>Go to the “Tools” tab to discover how to install it and how it use it.</p>\ <p></p>\ <p>Then simply click the <b>\"Add new card\"</b> button and enjoy your Clipperz account.</p>\ <p></p>\ <a href=\"http://www.clipperz.com/support/user_guide/managing_cards\" target=\"_blank\">Learn more about creating and managing cards</a>", // Cards block - new card wizard - bookmarklet configuration 'newRecordWizardTitleBox': "\ <h5>Please select a template</h5>\ <p>Cards are simple and flexible forms where you can store passwords or any other confidential data.</p>\ <p>Start choosing one of the templates below. You can always customize your cards later by adding or removing fields.</p>", 'newRecordWizardBookmarkletConfigurationTitle': "Direct login", 'newRecordWizardBookmarkletConfigurationDescription': "\ <p>Paste below the configuration code generated by the Clipperz bookmarklet.</p>\ <p>A new card complete with a direct login to your web account will be created.</p>", 'newRecordWizardCreateButtonLabel': "Create", 'newRecordWizardCancelButtonLabel': "Cancel", // Create new card - Donation splash 'donateSplashPanelTitle': "Support Clipperz, make a donation today!", 'donateSplashPanelDescription': "\ <!-- FIX CSS DONE! --> \ <p>A few good reasons to make a donation:</p>\ <ul>\ <li><p>support the development of new features</p></li>\ <li><p>keep Clipperz free</p></li>\ <li><p>show appreciation for our hard work</p></li>\ </ul>\ <p>For any further information, please visit our <a href=\"http://www.clipperz.com/donations\" target=\"_blank\">Donations page</a>.</p>\ <p><b>Ready to donate?</b></p>", 'donateCloseButtonLabel': "Not yet", 'donateDonateButtonLabel': "Yes", // Card templates 'recordTemplates': { |