Просмотр исходного кода

Merge branch 'historyupdate'

Conflicts:
	tpl/bootstrap.php
	tpl/page.php

And update SRI.

@elrido also did not properly merge this branch. Doing it now…
rugk 9 лет назад
Родитель
Сommit
e483d60eed
4 измененных файлов с 38 добавлено и 12 удалено
  1. 27 0
      js/privatebin.js
  2. 9 10
      js/test.js
  3. 1 1
      tpl/bootstrap.php
  4. 1 1
      tpl/page.php

+ 27 - 0
js/privatebin.js

@@ -1125,6 +1125,7 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
                             deleteUrl = helper.scriptLocation() + '?pasteid=' + data.id + '&deletetoken=' + data.deletetoken;
                         controller.showStatus('');
                         controller.errorMessage.addClass('hidden');
+                        // show new URL in browser bar
                         history.pushState({type: 'newpaste'}, document.title, url);
 
                         $('#pastelink').html(
@@ -1133,6 +1134,11 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
                                 url, url
                             ) + controller.shortenUrl(url)
                         );
+                        // save newly created element
+                        controller.pasteUrl = $('#pasteurl');
+                        // and add click event
+                        controller.pasteUrl.click($.proxy(controller.pasteLinkClick, controller));
+
                         var shortenButton = $('#shortenbutton');
                         if (shortenButton) {
                             shortenButton.click($.proxy(controller.sendToShortener, controller));
@@ -1532,6 +1538,25 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
             }
         },
 
+        /**
+         * Forces opening the paste if the link does not do this automatically.
+         *
+         * 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
+         * @function
+         * @param  {Event} event
+         */
+        pasteLinkClick: function(event)
+        {
+            // check if location is (already) shown in URL bar
+            if (window.location.href === this.pasteUrl.attr('href')) {
+                // if so we need to load link by reloading the site
+                this.reloadPage(event);
+            }
+        },
+
         /**
          * create a new paste
          *
@@ -1733,6 +1758,8 @@ jQuery.PrivateBin = function($, sjcl, Base64, RawDeflate) {
             this.passwordForm = $('#passwordform');
             this.passwordDecrypt = $('#passworddecrypt');
             this.pasteResult = $('#pasteresult');
+            // this.pasteUrl is saved in sendDataContinue() if/after it is
+            // actually created
             this.prettyMessage = $('#prettymessage');
             this.prettyPrint = $('#prettyprint');
             this.preview = $('#preview');

+ 9 - 10
js/test.js

@@ -91,14 +91,14 @@ describe('helper', function () {
             jsc.array(jsc.elements(queryString)),
             'string',
             function (schema, address, query, fragment) {
-                var query = query.join(''),
+                var queryString = query.join(''),
                     clean = jsdom('', {
                         url: schema.join('') + '://' + address.join('') +
-                             '/?' + query + '#' + fragment
+                             '/?' + queryString + '#' + fragment
                     }),
                     result = $.PrivateBin.helper.pasteId();
                 clean();
-                return query === result;
+                return queryString === result;
             }
         );
     });
@@ -111,14 +111,14 @@ describe('helper', function () {
             jsc.array(jsc.elements(queryString)),
             jsc.array(jsc.elements(base64String)),
             function (schema, address, query, fragment) {
-                var fragment = fragment.join(''),
+                var fragmentString = fragment.join(''),
                     clean = jsdom('', {
                         url: schema.join('') + '://' + address.join('') +
-                             '/?' + query.join('') + '#' + fragment
+                             '/?' + query.join('') + '#' + fragmentString
                     }),
                     result = $.PrivateBin.helper.pageKey();
                 clean();
-                return fragment === result;
+                return fragmentString === result;
             }
         );
         jsc.property(
@@ -129,14 +129,14 @@ describe('helper', function () {
             jsc.array(jsc.elements(base64String)),
             jsc.array(jsc.elements(queryString)),
             function (schema, address, query, fragment, trail) {
-                var fragment = fragment.join(''),
+                var fragmentString = fragment.join(''),
                     clean = jsdom('', {
                         url: schema.join('') + '://' + address.join('') + '/?' +
-                             query.join('') + '#' + fragment + '&' + trail.join('')
+                             query.join('') + '#' + fragmentString + '&' + trail.join('')
                     }),
                     result = $.PrivateBin.helper.pageKey();
                 clean();
-                return fragment === result;
+                return fragmentString === result;
             }
         );
     });
@@ -156,4 +156,3 @@ describe('helper', function () {
         );
     });
 });
-

+ 1 - 1
tpl/bootstrap.php

@@ -69,7 +69,7 @@ if ($MARKDOWN):
 <?php
 endif;
 ?>
-		<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-U3vFk3jjVZbBFNUfv20uP9Qef6aGt3MbbiXGqHvH/ngJhGEWZKXQc6MhVNlHD2taiz3mm2PhtRbh8bwm9UmrKA==" crossorigin="anonymous"></script>
+		<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-oojW5CP3H92XSLVeiMzHPgDrhxptPF8XzaQQrGp9SbGlBM9nDSlYMNtE2vH7wwXjYX+iL58pUCct29uEQtMvNw==" 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]-->

+ 1 - 1
tpl/page.php

@@ -47,7 +47,7 @@ if ($MARKDOWN):
 <?php
 endif;
 ?>
-		<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-U3vFk3jjVZbBFNUfv20uP9Qef6aGt3MbbiXGqHvH/ngJhGEWZKXQc6MhVNlHD2taiz3mm2PhtRbh8bwm9UmrKA==" crossorigin="anonymous"></script>
+		<script type="text/javascript" src="js/privatebin.js?<?php echo rawurlencode($VERSION); ?>" integrity="sha512-oojW5CP3H92XSLVeiMzHPgDrhxptPF8XzaQQrGp9SbGlBM9nDSlYMNtE2vH7wwXjYX+iL58pUCct29uEQtMvNw==" 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]-->