update JSDoc and re-published to https://privatebin.info/jsdoc/
This commit is contained in:
parent
ee43557a4f
commit
5bf25f227e
3 changed files with 148 additions and 134 deletions
246
js/privatebin.js
246
js/privatebin.js
|
@ -36,6 +36,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* static Helper methods
|
||||
*
|
||||
* @name Helper
|
||||
* @class
|
||||
*/
|
||||
var Helper = (function () {
|
||||
|
@ -45,6 +46,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* character to HTML entity lookup table
|
||||
*
|
||||
* @see {@link https://github.com/janl/mustache.js/blob/master/mustache.js#L60}
|
||||
* @name Helper.entityMap
|
||||
* @private
|
||||
* @enum {Object}
|
||||
* @readonly
|
||||
|
@ -63,6 +65,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* cache for script location
|
||||
*
|
||||
* @name Helper.baseUri
|
||||
* @private
|
||||
* @enum {string|null}
|
||||
*/
|
||||
|
@ -299,7 +302,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* resets state, used for unit testing
|
||||
*
|
||||
* @name Model.reset
|
||||
* @name Helper.reset
|
||||
* @function
|
||||
*/
|
||||
me.reset = function()
|
||||
|
@ -313,6 +316,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* internationalization module
|
||||
*
|
||||
* @name I18n
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -323,6 +327,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* const for string of loaded language
|
||||
*
|
||||
* @name I18n.languageLoadedEvent
|
||||
* @private
|
||||
* @prop {string}
|
||||
* @readonly
|
||||
|
@ -332,6 +337,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* supported languages, minus the built in 'en'
|
||||
*
|
||||
* @name I18n.supportedLanguages
|
||||
* @private
|
||||
* @prop {string[]}
|
||||
* @readonly
|
||||
|
@ -341,6 +347,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* built in language
|
||||
*
|
||||
* @name I18n.language
|
||||
* @private
|
||||
* @prop {string|null}
|
||||
*/
|
||||
|
@ -349,15 +356,14 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* translation cache
|
||||
*
|
||||
* @name I18n.translations
|
||||
* @private
|
||||
* @enum {Object}
|
||||
*/
|
||||
var translations = {};
|
||||
|
||||
/**
|
||||
* translate a string, alias for I18n.translate()
|
||||
*
|
||||
* for a full description see me.translate
|
||||
* translate a string, alias for I18n.translate
|
||||
*
|
||||
* @name I18n._
|
||||
* @function
|
||||
|
@ -553,6 +559,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* handles everything related to en/decryption
|
||||
*
|
||||
* @name CryptTool
|
||||
* @class
|
||||
*/
|
||||
var CryptTool = (function () {
|
||||
|
@ -561,7 +568,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* compress a message (deflate compression), returns base64 encoded data
|
||||
*
|
||||
* @name cryptToolcompress
|
||||
* @name CryptTool.compress
|
||||
* @function
|
||||
* @private
|
||||
* @param {string} message
|
||||
|
@ -575,7 +582,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* decompress a message compressed with cryptToolcompress()
|
||||
*
|
||||
* @name cryptTooldecompress
|
||||
* @name CryptTool.decompress
|
||||
* @function
|
||||
* @private
|
||||
* @param {string} data - base64 data
|
||||
|
@ -638,9 +645,9 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
}
|
||||
|
||||
/**
|
||||
* checks whether the crypt tool is ready.
|
||||
* checks whether the crypt tool has collected enough entropy
|
||||
*
|
||||
* @name CryptTool.isReady
|
||||
* @name CryptTool.isEntropyReady
|
||||
* @function
|
||||
* @return {bool}
|
||||
*/
|
||||
|
@ -650,9 +657,9 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
}
|
||||
|
||||
/**
|
||||
* checks whether the crypt tool is ready.
|
||||
* add a listener function, triggered when enough entropy is available
|
||||
*
|
||||
* @name CryptTool.isReady
|
||||
* @name CryptTool.addEntropySeedListener
|
||||
* @function
|
||||
* @param {function} func
|
||||
*/
|
||||
|
@ -673,29 +680,13 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
return sjcl.codec.base64.fromBits(sjcl.random.randomWords(8, 0), 0);
|
||||
}
|
||||
|
||||
/**
|
||||
* initialize crypt tool
|
||||
*
|
||||
* @name CryptTool.init
|
||||
* @function
|
||||
*/
|
||||
me.init = function()
|
||||
{
|
||||
// will fail earlier as sjcl is already passed as a parameter
|
||||
// if (typeof sjcl !== 'object') {
|
||||
// Alert.showError(
|
||||
// I18n._('The library %s is not available.', 'sjcl') +
|
||||
// I18n._('Messages cannot be decrypted or encrypted.')
|
||||
// );
|
||||
// }
|
||||
}
|
||||
|
||||
return me;
|
||||
})();
|
||||
|
||||
/**
|
||||
* (Model) Data source (aka MVC)
|
||||
*
|
||||
* @name Model
|
||||
* @class
|
||||
*/
|
||||
var Model = (function () {
|
||||
|
@ -857,6 +848,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* everything directly UI-related, which fits nowhere else
|
||||
*
|
||||
* @name UiHelper
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -869,6 +861,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* currently this does only handle redirects to the home page.
|
||||
*
|
||||
* @name UiHelper.historyChange
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
|
@ -902,8 +895,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* checks whether the element is currently visible in the viewport (so
|
||||
* the user can actually see it)
|
||||
*
|
||||
* THanks to https://stackoverflow.com/a/40658647
|
||||
*
|
||||
* @see {@link https://stackoverflow.com/a/40658647}
|
||||
* @name UiHelper.isVisible
|
||||
* @function
|
||||
* @param {jQuery} $element The link hash to move to.
|
||||
|
@ -922,9 +914,9 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* scrolls to a specific element
|
||||
*
|
||||
* Based on code by @hanoo: https://stackoverflow.com/questions/4198041/jquery-smooth-scroll-to-an-anchor#answer-12714767
|
||||
*
|
||||
* @see {@link https://stackoverflow.com/questions/4198041/jquery-smooth-scroll-to-an-anchor#answer-12714767}
|
||||
* @name UiHelper.scrollTo
|
||||
* @function
|
||||
* @param {jQuery} $element The link hash to move to.
|
||||
* @param {(number|string)} animationDuration passed to jQuery .animate, when set to 0 the animation is skipped
|
||||
* @param {string} animationEffect passed to jQuery .animate
|
||||
|
@ -992,6 +984,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* Alert/error manager
|
||||
*
|
||||
* @name Alert
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -1023,6 +1016,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* forwards a request to the i18n module and shows the element
|
||||
*
|
||||
* @name Alert.handleNotification
|
||||
* @private
|
||||
* @function
|
||||
* @param {int} id - id of notification
|
||||
|
@ -1260,6 +1254,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* handles paste status/result
|
||||
*
|
||||
* @name PasteStatus
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -1275,6 +1270,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* forward to URL shortener
|
||||
*
|
||||
* @name PasteStatus.sendToShortener
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
|
@ -1291,7 +1287,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* This is necessary as browsers will not reload the page when it is
|
||||
* already loaded (which is fake as it is set via history.pushState()).
|
||||
*
|
||||
* @name Controller.pasteLinkClick
|
||||
* @name PasteStatus.pasteLinkClick
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
|
@ -1391,7 +1387,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* preloads jQuery elements
|
||||
*
|
||||
* @name Alert.init
|
||||
* @name PasteStatus.init
|
||||
* @function
|
||||
*/
|
||||
me.init = function()
|
||||
|
@ -1411,6 +1407,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* password prompt
|
||||
*
|
||||
* @name Prompt
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -1424,10 +1421,31 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
|
||||
var password = '';
|
||||
|
||||
/**
|
||||
* submit a password in the modal dialog
|
||||
*
|
||||
* @name Prompt.submitPasswordModal
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
function submitPasswordModal(event)
|
||||
{
|
||||
event.preventDefault();
|
||||
|
||||
// get input
|
||||
password = $passwordDecrypt.val();
|
||||
|
||||
// hide modal
|
||||
$passwordModal.modal('hide');
|
||||
|
||||
PasteDecrypter.run();
|
||||
}
|
||||
|
||||
/**
|
||||
* ask the user for the password and set it
|
||||
*
|
||||
* @name Prompt.requestPassword()
|
||||
* @name Prompt.requestPassword
|
||||
* @function
|
||||
*/
|
||||
me.requestPassword = function()
|
||||
|
@ -1469,33 +1487,12 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
return password;
|
||||
}
|
||||
|
||||
/**
|
||||
* submit a password in the modal dialog
|
||||
*
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
function submitPasswordModal(event)
|
||||
{
|
||||
event.preventDefault();
|
||||
|
||||
// get input
|
||||
password = $passwordDecrypt.val();
|
||||
|
||||
// hide modal
|
||||
$passwordModal.modal('hide');
|
||||
|
||||
PasteDecrypter.run();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* init status manager
|
||||
*
|
||||
* preloads jQuery elements
|
||||
*
|
||||
* @name Controller.init
|
||||
* @name Prompt.init
|
||||
* @function
|
||||
*/
|
||||
me.init = function()
|
||||
|
@ -1522,6 +1519,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* Note that the actual preview is handled by PasteViewer.
|
||||
*
|
||||
* @name Editor
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -1735,6 +1733,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* (view) Parse and show paste.
|
||||
*
|
||||
* @name PasteViewer
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -1755,6 +1754,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* apply the set format on paste and displays it
|
||||
*
|
||||
* @name PasteViewer.parsePaste
|
||||
* @private
|
||||
* @function
|
||||
*/
|
||||
|
@ -1809,6 +1809,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* displays the paste
|
||||
*
|
||||
* @name PasteViewer.showPaste
|
||||
* @private
|
||||
* @function
|
||||
*/
|
||||
|
@ -1860,7 +1861,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* returns the current format
|
||||
*
|
||||
* @name PasteViewer.setFormat
|
||||
* @name PasteViewer.getFormat
|
||||
* @function
|
||||
* @return {string}
|
||||
*/
|
||||
|
@ -1951,7 +1952,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* preloads jQuery elements
|
||||
*
|
||||
* @name Editor.init
|
||||
* @name PasteViewer.init
|
||||
* @function
|
||||
*/
|
||||
me.init = function()
|
||||
|
@ -1985,6 +1986,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* (view) Show attachment and preview if possible
|
||||
*
|
||||
* @name AttachmentViewer
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -2065,9 +2067,9 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* hides the attachment
|
||||
*
|
||||
* This will not hide the preview {@see me.hideAttachmentPreview}
|
||||
* nor will it hide the attachment link if it was moved somewhere
|
||||
* else {@see moveAttachmentTo}.
|
||||
* This will not hide the preview (see AttachmentViewer.hideAttachmentPreview
|
||||
* for that) nor will it hide the attachment link if it was moved somewhere
|
||||
* else (see AttachmentViewer.moveAttachmentTo).
|
||||
*
|
||||
* @name AttachmentViewer.hideAttachment
|
||||
* @function
|
||||
|
@ -2119,7 +2121,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* It is advisable to hide the attachment afterwards (AttachmentViewer.hideAttachment)
|
||||
*
|
||||
* @name AttachmentViewer.setClonedAttachment
|
||||
* @name AttachmentViewer.moveAttachmentTo
|
||||
* @function
|
||||
* @param {jQuery} $element - the wrapper/container element where this should be moved to
|
||||
* @param {string} label - the text to show (%s will be replaced with the file name), will automatically be translated
|
||||
|
@ -2154,6 +2156,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* (view) Shows discussion thread and handles replies
|
||||
*
|
||||
* @name DiscussionViewer
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -2174,6 +2177,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* initializes the templates
|
||||
*
|
||||
* @name DiscussionViewer.initTemplates
|
||||
* @private
|
||||
* @function
|
||||
*/
|
||||
|
@ -2188,6 +2192,35 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
$commentTail = Model.getTemplate('commenttail');
|
||||
}
|
||||
|
||||
/**
|
||||
* open the comment entry when clicking the "Reply" button of a comment
|
||||
*
|
||||
* @name DiscussionViewer.openReply
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
function openReply(event)
|
||||
{
|
||||
var $source = $(event.target);
|
||||
|
||||
// clear input
|
||||
$replyMessage.val('');
|
||||
$replyNickname.val('');
|
||||
|
||||
// get comment id from source element
|
||||
replyCommentId = $source.parent().prop('id').split('_')[1];
|
||||
|
||||
// move to correct position
|
||||
$source.after($reply);
|
||||
|
||||
// show
|
||||
$reply.removeClass('hidden');
|
||||
$replyMessage.focus();
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* custom handler for displaying notifications in own status message area
|
||||
*
|
||||
|
@ -2221,34 +2254,6 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
return $replyStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* open the comment entry when clicking the "Reply" button of a comment
|
||||
*
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
function openReply(event)
|
||||
{
|
||||
var $source = $(event.target);
|
||||
|
||||
// clear input
|
||||
$replyMessage.val('');
|
||||
$replyNickname.val('');
|
||||
|
||||
// get comment id from source element
|
||||
replyCommentId = $source.parent().prop('id').split('_')[1];
|
||||
|
||||
// move to correct position
|
||||
$source.after($reply);
|
||||
|
||||
// show
|
||||
$reply.removeClass('hidden');
|
||||
$replyMessage.focus();
|
||||
|
||||
event.preventDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* adds another comment
|
||||
*
|
||||
|
@ -2439,6 +2444,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* Manage top (navigation) bar
|
||||
*
|
||||
* @name TopNav
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -2472,6 +2478,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* set the expiration on bootstrap templates in dropdown
|
||||
*
|
||||
* @name TopNav.updateExpiration
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
|
@ -2491,6 +2498,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* set the format on bootstrap templates in dropdown
|
||||
*
|
||||
* @name TopNav.updateFormat
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
|
@ -2516,6 +2524,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* when "burn after reading" is checked, disable discussion
|
||||
*
|
||||
* @name TopNav.changeBurnAfterReading
|
||||
* @private
|
||||
* @function
|
||||
*/
|
||||
function changeBurnAfterReading()
|
||||
|
@ -2535,6 +2544,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* when discussion is checked, disable "burn after reading"
|
||||
*
|
||||
* @name TopNav.changeOpenDiscussion
|
||||
* @private
|
||||
* @function
|
||||
*/
|
||||
function changeOpenDiscussion()
|
||||
|
@ -2554,6 +2564,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* return raw text
|
||||
*
|
||||
* @name TopNav.rawText
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
|
@ -2588,6 +2599,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
* saves the language in a cookie and reloads the page
|
||||
*
|
||||
* @name TopNav.setLanguage
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
*/
|
||||
|
@ -2600,6 +2612,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* hides all messages and creates a new paste
|
||||
*
|
||||
* @name TopNav.clickNewPaste
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
|
@ -2613,6 +2626,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* removes the existing attachment
|
||||
*
|
||||
* @name TopNav.removeAttachment
|
||||
* @private
|
||||
* @function
|
||||
* @param {Event} event
|
||||
|
@ -2633,17 +2647,6 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
event.preventDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads the default options for creating a paste.
|
||||
*
|
||||
* @name TopNav.loadDefaults
|
||||
* @function
|
||||
*/
|
||||
me.loadDefaults = function()
|
||||
{
|
||||
// @TODO
|
||||
}
|
||||
|
||||
/**
|
||||
* Shows all elements belonging to viwing an existing pastes
|
||||
*
|
||||
|
@ -2940,7 +2943,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
$burnAfterReading.change(changeBurnAfterReading);
|
||||
$openDiscussionOption.change(changeOpenDiscussion);
|
||||
$newButton.click(clickNewPaste);
|
||||
$sendButton.click(PasteEncrypter.submitPaste);
|
||||
$sendButton.click(PasteEncrypter.sendPaste);
|
||||
$cloneButton.click(Controller.clonePaste);
|
||||
$rawTextButton.click(rawText);
|
||||
$fileRemoveButton.click(removeAttachment);
|
||||
|
@ -2955,8 +2958,6 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
|
||||
// get default value from template or fall back to set value
|
||||
pasteExpiration = Model.getExpirationDefault() || pasteExpiration;
|
||||
|
||||
me.loadDefaults();
|
||||
}
|
||||
|
||||
return me;
|
||||
|
@ -2965,6 +2966,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* Responsible for AJAX requests, transparently handles encryption…
|
||||
*
|
||||
* @name Uploader
|
||||
* @class
|
||||
*/
|
||||
var Uploader = (function () {
|
||||
|
@ -2980,6 +2982,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* public variable ('constant') for errors to prevent magic numbers
|
||||
*
|
||||
* @name Uploader.error
|
||||
* @readonly
|
||||
* @enum {Object}
|
||||
*/
|
||||
|
@ -2993,6 +2996,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* ajaxHeaders to send in AJAX requests
|
||||
*
|
||||
* @name Uploader.ajaxHeaders
|
||||
* @private
|
||||
* @readonly
|
||||
* @enum {Object}
|
||||
|
@ -3002,6 +3006,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* called after successful upload
|
||||
*
|
||||
* @name Uploader.checkCryptParameters
|
||||
* @private
|
||||
* @function
|
||||
* @throws {string}
|
||||
|
@ -3034,6 +3039,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* called after successful upload
|
||||
*
|
||||
* @name Uploader.success
|
||||
* @private
|
||||
* @function
|
||||
* @param {int} status
|
||||
|
@ -3053,6 +3059,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* called after a upload failure
|
||||
*
|
||||
* @name Uploader.fail
|
||||
* @private
|
||||
* @function
|
||||
* @param {int} status - internal code
|
||||
|
@ -3267,7 +3274,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* Does upload, encryption is done transparently by Uploader.
|
||||
*
|
||||
* @name state
|
||||
* @name PasteEncrypter
|
||||
* @class
|
||||
*/
|
||||
var PasteEncrypter = (function () {
|
||||
|
@ -3278,6 +3285,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* checks whether there is a suitable amount of entrophy
|
||||
*
|
||||
* @name PasteEncrypter.checkRequirements
|
||||
* @private
|
||||
* @function
|
||||
* @param {function} retryCallback - the callback to execute to retry the upload
|
||||
|
@ -3305,6 +3313,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* called after successful paste upload
|
||||
*
|
||||
* @name PasteEncrypter.showCreatedPaste
|
||||
* @private
|
||||
* @function
|
||||
* @param {int} status
|
||||
|
@ -3329,13 +3338,14 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
Editor.hide();
|
||||
|
||||
// parse and show text
|
||||
// (preparation already done in me.submitPaste())
|
||||
// (preparation already done in me.sendPaste())
|
||||
PasteViewer.run();
|
||||
}
|
||||
|
||||
/**
|
||||
* called after successful comment upload
|
||||
*
|
||||
* @name PasteEncrypter.showUploadedComment
|
||||
* @private
|
||||
* @function
|
||||
* @param {int} status
|
||||
|
@ -3357,6 +3367,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* adds attachments to the Uploader
|
||||
*
|
||||
* @name PasteEncrypter.encryptAttachments
|
||||
* @private
|
||||
* @function
|
||||
* @param {File|null|undefined} file - optional, falls back to cloned attachment
|
||||
|
@ -3476,10 +3487,10 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* sends a new paste to server
|
||||
*
|
||||
* @name PasteEncrypter.submitPaste
|
||||
* @name PasteEncrypter.sendPaste
|
||||
* @function
|
||||
*/
|
||||
me.submitPaste = function()
|
||||
me.sendPaste = function()
|
||||
{
|
||||
// hide previous (error) messages
|
||||
Controller.hideStatusMessages();
|
||||
|
@ -3506,7 +3517,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
|
||||
// check entropy
|
||||
if (!checkRequirements(function () {
|
||||
me.submitPaste();
|
||||
me.sendPaste();
|
||||
})) {
|
||||
return; // to prevent multiple executions
|
||||
}
|
||||
|
@ -3570,7 +3581,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
*
|
||||
* Only decryption, no download.
|
||||
*
|
||||
* @name state
|
||||
* @name PasteDecrypter
|
||||
* @class
|
||||
*/
|
||||
var PasteDecrypter = (function () {
|
||||
|
@ -3579,13 +3590,14 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* decrypt data or prompts for password in cvase of failure
|
||||
*
|
||||
* @name PasteDecrypter.decryptOrPromptPassword
|
||||
* @private
|
||||
* @function
|
||||
* @param {string} key
|
||||
* @param {string} password - optional, may be an empty string
|
||||
* @param {string} cipherdata
|
||||
* @throws {string}
|
||||
* @return {false|string} - false, when unsuccessful or string (decrypted data)
|
||||
* @return {false|string} false, when unsuccessful or string (decrypted data)
|
||||
*/
|
||||
function decryptOrPromptPassword(key, password, cipherdata)
|
||||
{
|
||||
|
@ -3619,13 +3631,14 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* decrypt the actual paste text
|
||||
*
|
||||
* @name PasteDecrypter.decryptOrPromptPassword
|
||||
* @private
|
||||
* @function
|
||||
* @param {object} paste - paste data in object form
|
||||
* @param {string} key
|
||||
* @param {string} password
|
||||
* @param {bool} ignoreError - ignore decryption errors iof set to true
|
||||
* @return {bool} - whether action was successful
|
||||
* @return {bool} whether action was successful
|
||||
* @throws {string}
|
||||
*/
|
||||
function decryptPaste(paste, key, password, ignoreError)
|
||||
|
@ -3656,12 +3669,13 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* decrypts any attachment
|
||||
*
|
||||
* @name PasteDecrypter.decryptAttachment
|
||||
* @private
|
||||
* @function
|
||||
* @param {object} paste - paste data in object form
|
||||
* @param {string} key
|
||||
* @param {string} password
|
||||
* @return {bool} - whether action was successful
|
||||
* @return {bool} whether action was successful
|
||||
* @throws {string}
|
||||
*/
|
||||
function decryptAttachment(paste, key, password)
|
||||
|
@ -3698,12 +3712,13 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* decrypts all comments and shows them
|
||||
*
|
||||
* @name PasteDecrypter.decryptComments
|
||||
* @private
|
||||
* @function
|
||||
* @param {object} paste - paste data in object form
|
||||
* @param {string} key
|
||||
* @param {string} password
|
||||
* @return {bool} - whether action was successful
|
||||
* @return {bool} whether action was successful
|
||||
*/
|
||||
function decryptComments(paste, key, password)
|
||||
{
|
||||
|
@ -3802,6 +3817,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
/**
|
||||
* (controller) main PrivateBin logic
|
||||
*
|
||||
* @name Controller
|
||||
* @param {object} window
|
||||
* @param {object} document
|
||||
* @class
|
||||
|
@ -3840,7 +3856,6 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
Editor.show();
|
||||
Editor.focusInput();
|
||||
|
||||
TopNav.loadDefaults();
|
||||
TopNav.showCreateButtons();
|
||||
Alert.hideLoading();
|
||||
}
|
||||
|
@ -3991,7 +4006,6 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
|
|||
Model.init();
|
||||
|
||||
AttachmentViewer.init();
|
||||
CryptTool.init();
|
||||
DiscussionViewer.init();
|
||||
Editor.init();
|
||||
PasteDecrypter.init();
|
||||
|
|
|
@ -69,7 +69,7 @@ if ($MARKDOWN):
|
|||
<?php
|
||||
endif;
|
||||
?>
|
||||
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-hGJxoiUhU8ByJ5Q8QsnfUzrb202C8og2STIg8P/y+ZgEo7zUOZSSRvH9JT6p9TnEmgulqaLOZ16sQBBpLaTdpQ==" crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-GOaX9dYEiAHPJo3ce3YLGURq41BlQGBEeCVbeZ6EpDqKDaJDdPgNf5eYrRSAmEF+ZgkVbv3j5H6gbY5kDDSlcQ==" crossorigin="anonymous"></script>
|
||||
<!--[if lt IE 10]>
|
||||
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
|
||||
<![endif]-->
|
||||
|
|
|
@ -47,7 +47,7 @@ if ($MARKDOWN):
|
|||
<?php
|
||||
endif;
|
||||
?>
|
||||
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-hGJxoiUhU8ByJ5Q8QsnfUzrb202C8og2STIg8P/y+ZgEo7zUOZSSRvH9JT6p9TnEmgulqaLOZ16sQBBpLaTdpQ==" crossorigin="anonymous"></script>
|
||||
<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-GOaX9dYEiAHPJo3ce3YLGURq41BlQGBEeCVbeZ6EpDqKDaJDdPgNf5eYrRSAmEF+ZgkVbv3j5H6gbY5kDDSlcQ==" crossorigin="anonymous"></script>
|
||||
<!--[if lt IE 10]>
|
||||
<style type="text/css">body {padding-left:60px;padding-right:60px;} #ienotice {display:block;} #oldienotice {display:block;}</style>
|
||||
<![endif]-->
|
||||
|
|
Loading…
Reference in a new issue