| OLD | NEW |
| 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" | 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | 2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| 3 <html xmlns="http://www.w3.org/1999/xhtml"> | 3 <html xmlns="http://www.w3.org/1999/xhtml"> |
| 4 <head> | 4 <head> |
| 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | 5 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| 6 {% if reloadarg %} | 6 {% if reloadarg %} |
| 7 <meta http-equiv="refresh" content="{{ reloadarg }}" /> | 7 <meta http-equiv="refresh" content="{{ reloadarg }}" /> |
| 8 {% endif %} | 8 {% endif %} |
| 9 <title>{{ title }}</title> | 9 <title>{{ title }}</title> |
| 10 <link rel="stylesheet" href="default.css" type="text/css" /> | 10 <link rel="stylesheet" href="default.css" type="text/css" /> |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 71 // like in an empty table cell. | 71 // like in an empty table cell. |
| 72 function checkMouseLeave(element, event) { | 72 function checkMouseLeave(element, event) { |
| 73 if (element.contains && event.toElement) { | 73 if (element.contains && event.toElement) { |
| 74 return !element.contains(event.toElement); | 74 return !element.contains(event.toElement); |
| 75 } | 75 } |
| 76 else if (event.relatedTarget) { | 76 else if (event.relatedTarget) { |
| 77 return !containsDOM(element, event.relatedTarget); | 77 return !containsDOM(element, event.relatedTarget); |
| 78 } | 78 } |
| 79 } | 79 } |
| 80 | 80 |
| 81 // Returns the value of a GET parameter, or null if it does not exist. |
| 82 function readGetParameter(name) { |
| 83 var begin = name + '='; |
| 84 var data = location.search; |
| 85 if (data === '') { |
| 86 return null; |
| 87 } |
| 88 // Location starts with "?". |
| 89 data = data.substr(1); |
| 90 var parameters = data.split('&'); |
| 91 var foundElement = parameters.find( (parameter) => { |
| 92 return parameter.indexOf(begin) == 0; |
| 93 }); |
| 94 if (foundElement) { |
| 95 return decodeURIComponent(foundElement.substr(begin.length)); |
| 96 } |
| 97 return null; |
| 98 } |
| 99 |
| 81 // Creates a new cookie. | 100 // Creates a new cookie. |
| 82 function createCookie(name, value, day) { | 101 function createCookie(name, value, day) { |
| 83 var date = new Date(); | 102 var date = new Date(); |
| 84 date.setTime(date.getTime() + (day * 24 * 60 * 60 * 1000)); | 103 date.setTime(date.getTime() + (day * 24 * 60 * 60 * 1000)); |
| 85 var expires = "; expires=" + date.toGMTString(); | 104 var expires = "; expires=" + date.toGMTString(); |
| 86 document.cookie = name + "=" + value+expires + "; path=/"; | 105 document.cookie = name + "=" + value+expires + "; path=/"; |
| 87 } | 106 } |
| 88 | 107 |
| 89 // Returns the vaue of a cookie, or null if it does not exist. | 108 // Returns the value of a cookie, or null if it does not exist. |
| 90 function readCookie(name) { | 109 function readCookie(name) { |
| 91 var begin = name + "="; | 110 var begin = name + "="; |
| 92 var data = document.cookie.split(';'); | 111 var data = document.cookie.split(';'); |
| 93 for(var i = 0; i < data.length; i++) { | 112 for(var i = 0; i < data.length; i++) { |
| 94 var cookie = data[i]; | 113 var cookie = data[i]; |
| 95 while (cookie.charAt(0) == ' ') | 114 while (cookie.charAt(0) == ' ') |
| 96 cookie = cookie.substring(1, cookie.length); | 115 cookie = cookie.substring(1, cookie.length); |
| 97 if (cookie.indexOf(begin) == 0) | 116 if (cookie.indexOf(begin) == 0) |
| 98 return cookie.substring(begin.length, cookie.length); | 117 return cookie.substring(begin.length, cookie.length); |
| 99 } | 118 } |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 271 eraseCookie('merged') | 290 eraseCookie('merged') |
| 272 | 291 |
| 273 // Display the "merge" button. | 292 // Display the "merge" button. |
| 274 document.querySelectorAll('.merge')[0].style.display = 'inline' | 293 document.querySelectorAll('.merge')[0].style.display = 'inline' |
| 275 | 294 |
| 276 // Hide the "unmerge" button. | 295 // Hide the "unmerge" button. |
| 277 document.querySelectorAll('.unmerge')[0].style.display = 'none' | 296 document.querySelectorAll('.unmerge')[0].style.display = 'none' |
| 278 } | 297 } |
| 279 | 298 |
| 280 function SetupView() { | 299 function SetupView() { |
| 300 // Allow override cookies with Get parameters. |
| 301 var getMerged = readGetParameter('merged'); |
| 302 if (getMerged === 'true') { |
| 303 createCookie('merged', 'true', 30); |
| 304 } |
| 305 if (getMerged === 'false') { |
| 306 eraseCookie('merged'); |
| 307 } |
| 308 var getCollapsed = readGetParameter('collapsed'); |
| 309 if (getCollapsed === 'true') { |
| 310 createCookie('collapsed', 'true', 30); |
| 311 } |
| 312 if (getCollapsed === 'false') { |
| 313 eraseCookie('collapsed'); |
| 314 } |
| 315 |
| 281 if (readCookie('merged')) { | 316 if (readCookie('merged')) { |
| 282 merge(); | 317 merge(); |
| 283 } else if (readCookie('collapsed')) { | 318 } else if (readCookie('collapsed')) { |
| 284 collapse(); | 319 collapse(); |
| 285 } | 320 } |
| 286 } | 321 } |
| 287 | 322 |
| 288 document.addEventListener("DOMContentLoaded", SetupView, false); | 323 document.addEventListener("DOMContentLoaded", SetupView, false); |
| 289 | 324 |
| 290 // ]]> | 325 // ]]> |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 - <a href="{{ offsite_base }}/json/help">JSON API</a> | 363 - <a href="{{ offsite_base }}/json/help">JSON API</a> |
| 329 - <a href="{{ offsite_base }}/about">About</a> | 364 - <a href="{{ offsite_base }}/about">About</a> |
| 330 </div> | 365 </div> |
| 331 | 366 |
| 332 <hr /> | 367 <hr /> |
| 333 {% autoescape off %} | 368 {% autoescape off %} |
| 334 {{ content }} | 369 {{ content }} |
| 335 {% endautoescape %} | 370 {% endautoescape %} |
| 336 </body> | 371 </body> |
| 337 </html> | 372 </html> |
| OLD | NEW |