diff --git a/CHANGELOG.md b/CHANGELOG.md index c1288331..4bdaea33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # PrivateBin version history ## 2.0.0 (not yet released) +* CHANGED: Remove page template (#265) * FIXED: Name mismatches in attached files (#1584) ## 1.7.8 (2025-06-30) diff --git a/bin/configuration-test-generator b/bin/configuration-test-generator index d81c3302..9b3de8f9 100755 --- a/bin/configuration-test-generator +++ b/bin/configuration-test-generator @@ -164,14 +164,14 @@ new ConfigurationTestGenerator(array( ), 'main/template' => array( array( - 'setting' => 'page', + 'setting' => 'bootstrap5', 'tests' => array( array( 'type' => 'MatchesRegularExpression', 'args' => array( - '#]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#', + '#]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap5/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#', '$content', - 'outputs "page" stylesheet correctly', + 'outputs "bootstrap5" stylesheet correctly', ), ), array( 'type' => 'DoesNotMatchRegularExpression', @@ -189,9 +189,9 @@ new ConfigurationTestGenerator(array( array( 'type' => 'DoesNotMatchRegularExpression', 'args' => array( - '#]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#', + '#]+type="text/css"[^>]+rel="stylesheet"[^>]+href="css/bootstrap5/privatebin\.css\\?\d[\d\.]+\d+"[^>]*/>#', '$content', - 'removes "page" stylesheet correctly', + 'removes "bootstrap5" stylesheet correctly', ), ), array( 'type' => 'MatchesRegularExpression', diff --git a/cfg/conf.sample.php b/cfg/conf.sample.php index 66727cb2..fd4b43a0 100644 --- a/cfg/conf.sample.php +++ b/cfg/conf.sample.php @@ -48,17 +48,15 @@ sizelimit = 10485760 templateselection = false ; List of available for selection templates when "templateselection" option is enabled +availabletemplates[] = "bootstrap5" availabletemplates[] = "bootstrap" availabletemplates[] = "bootstrap-page" availabletemplates[] = "bootstrap-dark" availabletemplates[] = "bootstrap-dark-page" availabletemplates[] = "bootstrap-compact" availabletemplates[] = "bootstrap-compact-page" -availabletemplates[] = "bootstrap5" -availabletemplates[] = "page" ; set the template your installs defaults to, defaults to "bootstrap" (tpl/bootstrap.php), also -; available are "page" (tpl/page.php), the classic ZeroBin style and several ; bootstrap variants: "bootstrap-dark", "bootstrap-compact", "bootstrap-page", ; which can be combined with "-dark" and "-compact" for "bootstrap-dark-page", ; "bootstrap-compact-page" and finally "bootstrap5" (tpl/bootstrap5.php) - previews at: @@ -108,8 +106,6 @@ languageselection = false ; scripts or run your site behind certain DDoS-protection services. ; Check the documentation at https://content-security-policy.com/ ; Notes: -; - If you use any bootstrap theme, you can remove the allow-popups from the -; sandbox restrictions. ; - If you use the bootstrap5 theme, you must change default-src to 'self' to ; enable display of the svg icons ; - By default this disallows to load images from third-party servers, e.g. when @@ -126,7 +122,7 @@ languageselection = false ; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:" ; ; The recommended and default used CSP is: -; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads" +; cspheader = "default-src 'none'; base-uri 'self'; form-action 'none'; manifest-src 'self'; connect-src * blob:; script-src 'self' 'wasm-unsafe-eval'; style-src 'self'; font-src 'self'; frame-ancestors 'none'; frame-src blob:; img-src 'self' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads" ; stay compatible with PrivateBin Alpha 0.19, less secure ; if enabled will use base64.js version 1.7 instead of 2.1.9 and sha1 instead of diff --git a/css/privatebin.css b/css/privatebin.css deleted file mode 100644 index 243b1e87..00000000 --- a/css/privatebin.css +++ /dev/null @@ -1,460 +0,0 @@ -/** - * PrivateBin - * - * Cascading style sheets for page template. - * - * @link https://github.com/PrivateBin/PrivateBin - * @copyright 2012 Sébastien SAUVAGE (sebsauvage.net) - * @license https://www.opensource.org/licenses/zlib-license.php The zlib/libpng License - */ - -@import url("common.css"); - -/* CSS Reset from YUI 3.4.1 (build 4118) - Copyright 2011 Yahoo! Inc. All rights reserved. -Licensed under the BSD License. - http://yuilibrary.com/license/ */ -html{color:#000;background:#fff}body,div,dl,dt,dd,ul,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit}input,textarea,select{font-size:100%;}legend{color:#000} - -html { - background-color: #455463; - color: #fff; - min-height: 100%; - background-image: linear-gradient(bottom, #0f1823 0, #455463 100%); - background-image: -o-linear-gradient(bottom, #0f1823 0, #455463 100%); - background-image: -moz-linear-gradient(bottom, #0f1823 0, #455463 100%); - background-image: -webkit-linear-gradient(bottom, #0f1823 0, #455463 100%); - background-image: -ms-linear-gradient(bottom, #0f1823 0, #455463 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #0f1823), color-stop(1, #455463)); -} - -body { - font-family: Helvetica, Arial, sans-serif; - font-size: 0.9em; - margin-bottom: 15px; - padding-left: 60px; - padding-right: 60px; -} - -a { color: #0f388f; cursor:pointer; } - -h1.title { - font-size: 3.5em; - font-weight: bold; - color: #000; - position: relative; - display: inline; - cursor: pointer; -} - -h1.title:before { - content: attr(title); - position: absolute; - color: rgba(255,255,255,0.15); - top: 1px; - left: 1px; - cursor: pointer; -} - -h2.title { - color: #000; - font-size: 1em; - display: inline; - font-style: italic; - font-weight: bold; - position: relative; - bottom: 8px; -} - -h3.title { - color: #94a3b4; - font-size: 0.7em; - display: inline; - margin-top: 10px; - position: relative; - bottom: 8px; -} - -#aboutbox { - color: #94a3b4; - padding: 4px 8px 4px 16px; - position: relative; - top: 10px; - border-left: 2px solid #94a3b4; - float: right; - width: 60%; -} - -#aboutbox a { color: #94a3b4; } - -#message, #cleartext, #prettymessage, #attachment, .replymessage { - position: relative; - clear: both; - color: #000; - background-color: #fff; - font-size: 9pt; - border: 1px solid #28343F; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - -o-box-sizing: border-box; - width: 100%; -} - -#message, .replymessage { - padding: 5px; - white-space: pre-wrap; - font-family: Consolas, "Lucida Console", "DejaVu Sans Mono", Monaco, monospace; - resize: vertical; -} - -#status { - clear: both; - padding: 5px 10px; -} - -#pasteresult { - background-color: #1F2833; - color: #fff; - padding: 4px 12px; - clear: both; - -moz-box-shadow: inset 0 2px 2px #000; - -webkit-box-shadow: inset 0 2px 2px #000; - box-shadow: inset 0 2px 2px #000; -} - -#pasteresult a { color: #fff; } - -#pasteresult button { margin-left: 11px; } - -#message, #plaintext, #prettymessage, #toolbar, #status { margin-bottom: 5px; } - -#copyhint { color: #666; font-size: 0.85em } - -button, .button { - color: #fff; - background-color: #323b47; - background-repeat: no-repeat; - background-position: center left; - padding: 4px 8px; - font-size: 1em; - margin-right: 5px; - display: inline-block; - background-image: linear-gradient(bottom, #323b47 0, #51606e 100%); - background-image: -o-linear-gradient(bottom, #323b47 0, #51606e 100%); - background-image: -moz-linear-gradient(bottom, #323b47 0, #51606e 100%); - background-image: -webkit-linear-gradient(bottom, #323b47 0, #51606e 100%); - background-image: -ms-linear-gradient(bottom, #323b47 0, #51606e 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #323b47), color-stop(1, #51606e)); - border: 1px solid #28343F; - -moz-box-shadow: inset 0 1px 2px #647384; - -webkit-box-shadow: inset 0 1px 2px #647384; - box-shadow: inset 0 1px 2px #647384; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} - -button:hover { - background-image: linear-gradient(bottom, #424b57 0%, #61707e 100%); - background-image: -o-linear-gradient(bottom, #424b57 0%, #61707e 100%); - background-image: -moz-linear-gradient(bottom, #424b57 0%, #61707e 100%); - background-image: -webkit-linear-gradient(bottom, #424b57 0%, #61707e 100%); - background-image: -ms-linear-gradient(bottom, #424b57 0%, #61707e 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #424b57), color-stop(1, #61707e)); -} - -button:active { - background-image: linear-gradient(bottom, #51606e 0, #323b47 100%); - background-image: -o-linear-gradient(bottom, #51606e 0, #323b47 100%); - background-image: -moz-linear-gradient(bottom, #51606e 0, #323b47 100%); - background-image: -webkit-linear-gradient(bottom, #51606e 0, #323b47 100%); - background-image: -ms-linear-gradient(bottom, #51606e 0, #323b47 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #51606e), color-stop(1, #323b47)); - position:relative; - top:1px; -} - -button:disabled, .buttondisabled { - background: #ccc; - color: #888; - top: 0; -} - -button img { - margin-right: 8px; - position: relative; - top: 2px; -} - -.button { - background-color: #414d5a; - padding: 6px 8px; - margin: 0 5px 0 0; - position: relative; - bottom: 1px; /* WTF ? Why is this shifted by 1 pixel ? */ -} - -.button select { - color: #eee; - background: transparent; - border: none; -} - - -.button select option { - color:#eee; - background: #414d5a; -} - -#rawtextbutton img { - padding: 1px 0 1px 0; -} - -#downloadtextbutton img { - padding: 1px 0 1px 0; -} - -#remainingtime, #password { - color: #94a3b4; - display: inline; - font-size: 0.85em; -} - -#newbutton { - float: right; - margin-left: 0; - margin-right: 0; - margin-bottom: 5px; - display: inline; -} - -input { - color: #777; - font-size: 1em; - padding: 6px; - border: 1px solid #28343f; -} - -.blink { - text-decoration: blink; - font-size: 0.8em; - color: #a4b3c4; -} - -.foryoureyesonly { - color: #ff0 !important; - font-size: 1em !important; - font-weight: bold !important; -} - -#attachmentPreview, .nonworking { - background-color: #fff; - color: #000; - width: 100%; - text-align: center; - font-weight: bold; - font-size: 10pt; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - padding: 5px 0; -} - -.hidden { display: none !important; } - -#ienotice { - background-color: #7e98af; - color: #000; - font-size: 0.85em; - padding: 3px 5px; - text-align: center; - -webkit-border-radius: 4px; - -moz-border-radius: 4px; - border-radius: 4px; - display: none; -} - -#ienotice a { color: #000; } - -#oldnotice, #httpnotice { display: none; } - -#errormessage, .errorMessage { - background-color: #f77 !important; - color:#ff0; -} - -.small { - font-size: 80%; -} - -/* --- discussion related CSS ------- */ - -#discussion { /* Discussion container */ - margin-top: 20px; - width: 100%; - margin-left: -30px; - min-width: 200px; -} - -h4.title { - font-size: 1.2em; - color: #94a3b4; - font-style: italic; - font-weight: bold; - position: relative; - margin-left: 30px; -} - -.comment /* One single reply */ -{ - background-color: #ceced6; - color: #000; - white-space: pre-wrap; - font-family: Consolas,"Lucida Console","DejaVu Sans Mono",Monaco,monospace; - font-size: 9pt; - border-left: 1px solid #859AAE; - border-top: 1px solid #859AAE; - padding: 5px 0px 5px 5px; - margin-left: 30px; - -moz-box-shadow: -3px -3px 5px rgba(0,0,0,0.15); - -webkit-box-shadow: -3px -3px 5px rgba(0,0,0,0.15); - box-shadow: -3px -3px 5px rgba(0,0,0,0.15); - min-width: 200px; - overflow: auto; -} - -.reply { margin: 5px 0 0 30px; } - -#replystatus { - display: inline; - padding: 1px 7px; - font-family: Arial, Helvetica, sans-serif; -} - -.comment button { - color: #446; - background-color: #aab; - background-repeat: no-repeat; - background-position: center left; - padding: 0 2px; - font-size: 0.73em; - margin: 3px 5px 3px 0; - display: inline; - background-image: linear-gradient(bottom, #aab 0, #ccc 100%); - background-image: -o-linear-gradient(bottom, #aab 0, #ccc 100%); - background-image: -moz-linear-gradient(bottom, #aab 0, #ccc 100%); - background-image: -webkit-linear-gradient(bottom, #aab 0, #ccc 100%); - background-image: -ms-linear-gradient(bottom, #aab 0, #ccc 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #aab), color-stop(1, #ccc)); - border: 1px solid #ccd; - -moz-box-shadow: inset 0 1px 2px #ddd; - -webkit-box-shadow: inset 0 1px 2px #fff; - box-shadow: inset 0 1px 2px #eee; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; - -moz-background-clip: padding; - -webkit-background-clip: padding-box; - background-clip: padding-box; -} - -.comment button:hover { - background-image: linear-gradient(bottom, #ccd 0, #fff 100%); - background-image: -o-linear-gradient(bottom, #ccd 0, #fff 100%); - background-image: -moz-linear-gradient(bottom, #ccd 0, #fff 100%); - background-image: -webkit-linear-gradient(bottom, #ccd 0, #fff 100%); - background-image: -ms-linear-gradient(bottom, #ccd 0, #fff 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #ccd), color-stop(1, #fff)); -} - -.comment button:active { - background-image: linear-gradient(bottom, #fff 0, #889 100%); - background-image: -o-linear-gradient(bottom, #fff 0, #889 100%); - background-image: -moz-linear-gradient(bottom, #fff 0, #889 100%); - background-image: -webkit-linear-gradient(bottom, #fff 0, #889 100%); - background-image: -ms-linear-gradient(bottom, #fff 0, #889 100%); - background-image: -webkit-gradient(linear, left bottom, left top, color-stop(0, #fff), color-stop(1, #889)); - position:relative; - top:1px; -} - -.comment input { padding: 2px; } - -#replymessage { margin-top: 5px; } - -.commentmeta { - color: #fff; - background-color: #8ea0b2; - margin-bottom: 3px; - padding: 0 0 0 3px; -} - -.commentdate { color: #bfcede; } - -img.vizhash { - width: 16px; - height: 16px; - position: relative; - top: 2px; - left: -3px; -} - -#prettyprint { - color: #000000; - font-size: 1.2em; -} - -#prettyprint.prettyprinted { - overflow: auto; -} - -#cleartext { - padding: 10px; -} - -#cleartext * { - margin-bottom: 10px; -} - -#cleartext ol { - list-style: auto; - margin-left: 15px; -} - -#cleartext ul { - list-style: disc; - margin-left: 15px; -} - -#cleartext h1, #cleartext h2, #cleartext h3, #cleartext h4, #cleartext h5, #cleartext h6 { - font-weight: bold; -} - -#cleartext h1 { - font-size: 2em; -} - -#cleartext h2 { - font-size: 1.5em; -} - -#cleartext h3 { - font-size: 1.2em; -} - -/* right-to-left overrides */ -html[dir="rtl"] #aboutbox, html[dir="rtl"] #deletelink, html[dir="rtl"] #newbutton { - float: left; -} - -html[dir="rtl"] button, html[dir="rtl"] .button, html[dir="rtl"] button img { - margin-left: 5px; - margin-right: inherit; -} - -html[dir="rtl"] button img { - margin-left: 8px; -} diff --git a/js/privatebin.js b/js/privatebin.js index 9044362c..000dc232 100644 --- a/js/privatebin.js +++ b/js/privatebin.js @@ -2319,26 +2319,19 @@ jQuery.PrivateBin = (function($, RawDeflate) { me.requestLoadConfirmation = function() { const $loadconfirmmodal = $('#loadconfirmmodal'); - if ($loadconfirmmodal.length > 0) { - const $loadconfirmOpenNow = $loadconfirmmodal.find('#loadconfirm-open-now'); - $loadconfirmOpenNow.off('click.loadPaste'); - $loadconfirmOpenNow.on('click.loadPaste', PasteDecrypter.run); - const $loadconfirmClose = $loadconfirmmodal.find('.close'); - $loadconfirmClose.off('click.close'); - $loadconfirmClose.on('click.close', Controller.newPaste); - if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION) { - (new bootstrap.Modal($loadconfirmmodal[0])).show(); - } else { - $loadconfirmmodal.modal('show'); - } + + const $loadconfirmOpenNow = $loadconfirmmodal.find('#loadconfirm-open-now'); + $loadconfirmOpenNow.off('click.loadPaste'); + $loadconfirmOpenNow.on('click.loadPaste', PasteDecrypter.run); + + const $loadconfirmClose = $loadconfirmmodal.find('.close'); + $loadconfirmClose.off('click.close'); + $loadconfirmClose.on('click.close', Controller.newPaste); + + if (typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION) { + (new bootstrap.Modal($loadconfirmmodal[0])).show(); } else { - if (window.confirm( - I18n._('This secret message can only be displayed once. Would you like to see it now?') - )) { - PasteDecrypter.run(); - } else { - Controller.newPaste(); - } + $loadconfirmmodal.modal('show'); } } @@ -2360,15 +2353,6 @@ jQuery.PrivateBin = (function($, RawDeflate) { return; } - // fallback to old method for page template - password = prompt(I18n._('Please enter the password for this paste:'), ''); - if (password === null) { - throw 'password prompt canceled'; - } - if (password.length === 0) { - // recurse… - return me.requestPassword(); - } PasteDecrypter.run(); }; @@ -4193,59 +4177,42 @@ jQuery.PrivateBin = (function($, RawDeflate) { expirationDateRoundedToSecond.setUTCSeconds(0); const $emailconfirmmodal = $('#emailconfirmmodal'); - if ($emailconfirmmodal.length > 0) { - if (expirationDate !== null) { - const $emailconfirmTimezoneCurrent = $emailconfirmmodal.find('#emailconfirm-timezone-current'); - const $emailconfirmTimezoneUtc = $emailconfirmmodal.find('#emailconfirm-timezone-utc'); - let localeConfiguration = { dateStyle: 'long', timeStyle: 'long' }; - const bootstrap5EmailConfirmModal = typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION ? - new bootstrap.Modal($emailconfirmmodal[0]) : null; + if (expirationDate !== null) { + const $emailconfirmTimezoneCurrent = $emailconfirmmodal.find('#emailconfirm-timezone-current'); + const $emailconfirmTimezoneUtc = $emailconfirmmodal.find('#emailconfirm-timezone-utc'); + let localeConfiguration = { dateStyle: 'long', timeStyle: 'long' }; + const bootstrap5EmailConfirmModal = typeof bootstrap !== 'undefined' && bootstrap.Tooltip.VERSION ? + new bootstrap.Modal($emailconfirmmodal[0]) : null; - function sendEmailAndHideModal() { - const emailBody = templateEmailBody( - // we don't use Date.prototype.toUTCString() because we would like to avoid GMT - expirationDateRoundedToSecond.toLocaleString( - [], localeConfiguration - ), isBurnafterreading - ); - if (bootstrap5EmailConfirmModal) { - bootstrap5EmailConfirmModal.hide(); - } else { - $emailconfirmmodal.modal('hide'); - } - triggerEmailSend(emailBody); - }; - - $emailconfirmTimezoneCurrent.off('click.sendEmailCurrentTimezone'); - $emailconfirmTimezoneCurrent.on('click.sendEmailCurrentTimezone', sendEmailAndHideModal); - $emailconfirmTimezoneUtc.off('click.sendEmailUtcTimezone'); - $emailconfirmTimezoneUtc.on('click.sendEmailUtcTimezone', () => { - localeConfiguration.timeZone = 'UTC'; - sendEmailAndHideModal(); - }); + function sendEmailAndHideModal() { + const emailBody = templateEmailBody( + // we don't use Date.prototype.toUTCString() because we would like to avoid GMT + expirationDateRoundedToSecond.toLocaleString( + [], localeConfiguration + ), isBurnafterreading + ); if (bootstrap5EmailConfirmModal) { - bootstrap5EmailConfirmModal.show(); + bootstrap5EmailConfirmModal.hide(); } else { - $emailconfirmmodal.modal('show'); + $emailconfirmmodal.modal('hide'); } + triggerEmailSend(emailBody); + }; + + $emailconfirmTimezoneCurrent.off('click.sendEmailCurrentTimezone'); + $emailconfirmTimezoneCurrent.on('click.sendEmailCurrentTimezone', sendEmailAndHideModal); + $emailconfirmTimezoneUtc.off('click.sendEmailUtcTimezone'); + $emailconfirmTimezoneUtc.on('click.sendEmailUtcTimezone', () => { + localeConfiguration.timeZone = 'UTC'; + sendEmailAndHideModal(); + }); + if (bootstrap5EmailConfirmModal) { + bootstrap5EmailConfirmModal.show(); } else { - triggerEmailSend(templateEmailBody(null, isBurnafterreading)); + $emailconfirmmodal.modal('show'); } } else { - let emailBody = ''; - if (expirationDate !== null) { - const expirationDateString = window.confirm( - I18n._('Recipient may become aware of your timezone, convert time to UTC?') - ) ? expirationDateRoundedToSecond.toLocaleString( - undefined, - // we don't use Date.prototype.toUTCString() because we would like to avoid GMT - { timeZone: 'UTC', dateStyle: 'long', timeStyle: 'long' } - ) : expirationDateRoundedToSecond.toLocaleString(); - emailBody = templateEmailBody(expirationDateString, isBurnafterreading); - } else { - emailBody = templateEmailBody(null, isBurnafterreading); - } - triggerEmailSend(emailBody); + triggerEmailSend(templateEmailBody(null, isBurnafterreading)); } } @@ -4728,13 +4695,9 @@ jQuery.PrivateBin = (function($, RawDeflate) { // bootstrap template drop down $('#language ul.dropdown-menu li a').click(setLanguage); - // page template drop down - $('#language select').change(setLanguage); // bootstrap template drop down $('#template ul.dropdown-menu li a').click(setTemplate); - // page template drop down - $('#template select').change(setTemplate); // bind events $burnAfterReading.change(changeBurnAfterReading); diff --git a/js/test/Prompt.js b/js/test/Prompt.js index c854501c..afcb9866 100644 --- a/js/test/Prompt.js +++ b/js/test/Prompt.js @@ -2,8 +2,6 @@ require('../common'); describe('Prompt', function () { - // TODO: this does not test the prompt() fallback, since that isn't available - // in nodejs -> replace the prompt in the "page" template with a modal describe('requestPassword & getPassword', function () { this.timeout(30000); diff --git a/lib/Configuration.php b/lib/Configuration.php index 7fe46deb..31b2920a 100644 --- a/lib/Configuration.php +++ b/lib/Configuration.php @@ -55,7 +55,6 @@ class Configuration 'bootstrap-dark-page', 'bootstrap-compact', 'bootstrap-compact-page', - 'page', ), 'info' => 'More information on the project page.', 'notice' => '', @@ -65,7 +64,7 @@ class Configuration 'qrcode' => true, 'email' => true, 'icon' => 'identicon', - 'cspheader' => 'default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'wasm-unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; frame-src blob:; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads', + 'cspheader' => 'default-src \'none\'; base-uri \'self\'; form-action \'none\'; manifest-src \'self\'; connect-src * blob:; script-src \'self\' \'wasm-unsafe-eval\'; style-src \'self\'; font-src \'self\'; frame-ancestors \'none\'; frame-src blob:; img-src \'self\' data: blob:; media-src blob:; object-src blob:; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads', 'zerobincompatibility' => false, 'httpwarning' => true, 'compression' => 'zlib', @@ -119,7 +118,7 @@ class Configuration 'js/kjua-0.9.0.js' => 'sha512-CVn7af+vTMBd9RjoS4QM5fpLFEOtBCoB0zPtaqIDC7sF4F8qgUSRFQQpIyEDGsr6yrjbuOLzdf20tkHHmpaqwQ==', 'js/legacy.js' => 'sha512-UxW/TOZKon83n6dk/09GsYKIyeO5LeBHokxyIq+r7KFS5KMBeIB/EM7NrkVYIezwZBaovnyNtY2d9tKFicRlXg==', 'js/prettify.js' => 'sha512-puO0Ogy++IoA2Pb9IjSxV1n4+kQkKXYAEUtVzfZpQepyDPyXk8hokiYDS7ybMogYlyyEIwMLpZqVhCkARQWLMg==', - 'js/privatebin.js' => 'sha512-1skkc9HjWmYB1SEYFnSBrvgV6m1eH04muo4WFTzOIhRY8RqNHbxZNM368VaNaKC3zPdTsEzBeawtryN+gMRd2Q==', + 'js/privatebin.js' => 'sha512-lP3oQM8eZ6HNCUUZC2HvmNTO3RRNw7WPCCWbVVr0e9DHvgprYr6tYtDYzmWdpD6rzjHOgekHhFMO8LIO9ufyug==', 'js/purify-3.2.6.js' => 'sha512-zqwL4OoBLFx89QPewkz4Lz5CSA2ktU+f31fuECkF0iK3Id5qd3Zpq5dMby8KwHjIEpsUgOqwF58cnmcaNem0EA==', 'js/rawinflate-0.3.js' => 'sha512-g8uelGgJW9A/Z1tB6Izxab++oj5kdD7B4qC7DHwZkB6DGMXKyzx7v5mvap2HXueI2IIn08YlRYM56jwWdm2ucQ==', 'js/showdown-2.1.0.js' => 'sha512-WYXZgkTR0u/Y9SVIA4nTTOih0kXMEd8RRV6MLFdL6YU8ymhR528NLlYQt1nlJQbYz4EW+ZsS0fx1awhiQJme1Q==', diff --git a/lib/Controller.php b/lib/Controller.php index 2b07eb73..7cc7362e 100644 --- a/lib/Controller.php +++ b/lib/Controller.php @@ -442,7 +442,7 @@ class Controller $metacspheader = str_replace( array( 'frame-ancestors \'none\'; ', - '; sandbox allow-same-origin allow-scripts allow-forms allow-popups allow-modals allow-downloads', + '; sandbox allow-same-origin allow-scripts allow-forms allow-modals allow-downloads', ), '', $this->_conf->getKey('cspheader') diff --git a/tpl/page.php b/tpl/page.php deleted file mode 100644 index 2f2c8ba9..00000000 --- a/tpl/page.php +++ /dev/null @@ -1,340 +0,0 @@ - -> -
- - - - -