Fossil SCM
Apply <code>encodeURIComponent()</code> function to the generated regular expression before appending it to the hyperlink's prefix. This should handle some awkward characters within branch names. Spaces and commas are a noteworthy examples of characters that still should be avoided within branch names.
Commit
6281f24edb982bde829531dc7a51c033c9a5c888b0edb822917e4aedab457cc0
Parent
f5bcff6cbd2a2b3…
1 file changed
+10
-2
+10
-2
| --- src/fossil.page.brlist.js | ||
| +++ src/fossil.page.brlist.js | ||
| @@ -20,10 +20,12 @@ | ||
| 20 | 20 | var onChange = function( event ){ |
| 21 | 21 | var cbx = event.target; |
| 22 | 22 | var tr = cbx.parentElement.parentElement; |
| 23 | 23 | var tag = cbx.parentElement.children[0].innerText; |
| 24 | 24 | var re = anchor.href.substr(prefix.length); |
| 25 | + try{re = decodeURIComponent(re);} | |
| 26 | + catch{console.log("decodeURIComponent() failed for ",re);} | |
| 25 | 27 | var selected = ( re != "" ? re.split("|") : [] ); |
| 26 | 28 | if( cbx.checked ){ |
| 27 | 29 | selected.push(tag); |
| 28 | 30 | tr.classList.add('selected'); |
| 29 | 31 | } |
| @@ -36,11 +38,14 @@ | ||
| 36 | 38 | if( selected.length >= 1 ) |
| 37 | 39 | anchor.classList.add('selected'); |
| 38 | 40 | else |
| 39 | 41 | anchor.classList.remove('selected'); |
| 40 | 42 | |
| 41 | - anchor.href = prefix + selected.join("|"); | |
| 43 | + re = selected.join("|"); | |
| 44 | + try{re = encodeURIComponent(re);} | |
| 45 | + catch{console.log("encodeURIComponent() failed for ",re);} | |
| 46 | + anchor.href = prefix + re; | |
| 42 | 47 | anchor.innerHTML = "View " + selected.length + |
| 43 | 48 | ( selected.length > 1 ? " branches" : " branch" ); |
| 44 | 49 | // console.log("Link:",anchor.href); |
| 45 | 50 | } |
| 46 | 51 | |
| @@ -54,14 +59,17 @@ | ||
| 54 | 59 | cbx.parentElement.parentElement.classList.add('selected'); |
| 55 | 60 | } |
| 56 | 61 | }); |
| 57 | 62 | |
| 58 | 63 | if( stags.length != 0 ){ |
| 59 | - anchor.href = prefix + stags.join("|"); | |
| 64 | + var re = stags.join("|"); | |
| 65 | + try{re = encodeURIComponent(re);} | |
| 66 | + catch{console.log("encodeURIComponent() failed for ",re);} | |
| 67 | + anchor.href = prefix + re; | |
| 60 | 68 | if( stags.length >= 1 ) { |
| 61 | 69 | anchor.innerHTML = "View " + stags.length + |
| 62 | 70 | ( stags.length > 1 ? " branches" : " branch" ); |
| 63 | 71 | anchor.classList.add('selected'); |
| 64 | 72 | } |
| 65 | 73 | } |
| 66 | 74 | |
| 67 | 75 | }); // window.addEventListener( 'load' ... |
| 68 | 76 |
| --- src/fossil.page.brlist.js | |
| +++ src/fossil.page.brlist.js | |
| @@ -20,10 +20,12 @@ | |
| 20 | var onChange = function( event ){ |
| 21 | var cbx = event.target; |
| 22 | var tr = cbx.parentElement.parentElement; |
| 23 | var tag = cbx.parentElement.children[0].innerText; |
| 24 | var re = anchor.href.substr(prefix.length); |
| 25 | var selected = ( re != "" ? re.split("|") : [] ); |
| 26 | if( cbx.checked ){ |
| 27 | selected.push(tag); |
| 28 | tr.classList.add('selected'); |
| 29 | } |
| @@ -36,11 +38,14 @@ | |
| 36 | if( selected.length >= 1 ) |
| 37 | anchor.classList.add('selected'); |
| 38 | else |
| 39 | anchor.classList.remove('selected'); |
| 40 | |
| 41 | anchor.href = prefix + selected.join("|"); |
| 42 | anchor.innerHTML = "View " + selected.length + |
| 43 | ( selected.length > 1 ? " branches" : " branch" ); |
| 44 | // console.log("Link:",anchor.href); |
| 45 | } |
| 46 | |
| @@ -54,14 +59,17 @@ | |
| 54 | cbx.parentElement.parentElement.classList.add('selected'); |
| 55 | } |
| 56 | }); |
| 57 | |
| 58 | if( stags.length != 0 ){ |
| 59 | anchor.href = prefix + stags.join("|"); |
| 60 | if( stags.length >= 1 ) { |
| 61 | anchor.innerHTML = "View " + stags.length + |
| 62 | ( stags.length > 1 ? " branches" : " branch" ); |
| 63 | anchor.classList.add('selected'); |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | }); // window.addEventListener( 'load' ... |
| 68 |
| --- src/fossil.page.brlist.js | |
| +++ src/fossil.page.brlist.js | |
| @@ -20,10 +20,12 @@ | |
| 20 | var onChange = function( event ){ |
| 21 | var cbx = event.target; |
| 22 | var tr = cbx.parentElement.parentElement; |
| 23 | var tag = cbx.parentElement.children[0].innerText; |
| 24 | var re = anchor.href.substr(prefix.length); |
| 25 | try{re = decodeURIComponent(re);} |
| 26 | catch{console.log("decodeURIComponent() failed for ",re);} |
| 27 | var selected = ( re != "" ? re.split("|") : [] ); |
| 28 | if( cbx.checked ){ |
| 29 | selected.push(tag); |
| 30 | tr.classList.add('selected'); |
| 31 | } |
| @@ -36,11 +38,14 @@ | |
| 38 | if( selected.length >= 1 ) |
| 39 | anchor.classList.add('selected'); |
| 40 | else |
| 41 | anchor.classList.remove('selected'); |
| 42 | |
| 43 | re = selected.join("|"); |
| 44 | try{re = encodeURIComponent(re);} |
| 45 | catch{console.log("encodeURIComponent() failed for ",re);} |
| 46 | anchor.href = prefix + re; |
| 47 | anchor.innerHTML = "View " + selected.length + |
| 48 | ( selected.length > 1 ? " branches" : " branch" ); |
| 49 | // console.log("Link:",anchor.href); |
| 50 | } |
| 51 | |
| @@ -54,14 +59,17 @@ | |
| 59 | cbx.parentElement.parentElement.classList.add('selected'); |
| 60 | } |
| 61 | }); |
| 62 | |
| 63 | if( stags.length != 0 ){ |
| 64 | var re = stags.join("|"); |
| 65 | try{re = encodeURIComponent(re);} |
| 66 | catch{console.log("encodeURIComponent() failed for ",re);} |
| 67 | anchor.href = prefix + re; |
| 68 | if( stags.length >= 1 ) { |
| 69 | anchor.innerHTML = "View " + stags.length + |
| 70 | ( stags.length > 1 ? " branches" : " branch" ); |
| 71 | anchor.classList.add('selected'); |
| 72 | } |
| 73 | } |
| 74 | |
| 75 | }); // window.addEventListener( 'load' ... |
| 76 |