|
33 | 33 | {% endif %}
|
34 | 34 | {% if doc.folder %}
|
35 | 35 | <li class="nav-item">
|
36 |
| - <input type="checkbox" id="{{ doc.order }}"> |
| 36 | + <input type="checkbox" id="{{ doc.order }}" class="doc-folder" onclick="saveDocumentListExpansion()"> |
37 | 37 | <label for="{{ doc.order }}" class="nav-item">
|
38 |
| - <a class="nav-link"><span>{{ doc.bookmark | default: doc.title }}</span></a> |
| 38 | + <a class="nav-link"> |
| 39 | + <span>{{ doc.bookmark | default: doc.title }}</span> |
| 40 | + </a> |
39 | 41 | </label>
|
40 | 42 | <ul class="w-100">
|
41 | 43 | {% elsif doc.close %}
|
|
65 | 67 | </div>
|
66 | 68 | <!-- .sidebar-bottom -->
|
67 | 69 | </div>
|
| 70 | + |
| 71 | +<script> |
| 72 | + |
| 73 | +function saveDocumentListExpansion() { |
| 74 | + const checkboxes = $('.doc-folder'); |
| 75 | + const data = checkboxes.toArray().reduce((obj, cur) => (obj[cur.id] = cur.checked, obj), {}); |
| 76 | + const content = JSON.stringify(data); |
| 77 | + setCookie('expansion', content, 1); |
| 78 | +} |
| 79 | + |
| 80 | +function loadDocumentListExpansion() { |
| 81 | + const checkboxes = $('.doc-folder'); |
| 82 | + const byId = checkboxes.toArray().reduce((obj, cur) => (obj[cur.id] = cur, obj), {}); |
| 83 | + const cookie = getCookie('expansion'); |
| 84 | + if (!cookie) return; |
| 85 | + |
| 86 | + const data = JSON.parse(cookie); |
| 87 | + for (var key of Object.keys(data)) { |
| 88 | + var checkbox = byId[key]; |
| 89 | + var newState = data[key]; |
| 90 | + checkbox.checked = newState; |
| 91 | + } |
| 92 | +} |
| 93 | + |
| 94 | +function setCookie(cname, cvalue, exdays) { |
| 95 | + const d = new Date(); |
| 96 | + d.setTime(d.getTime() + (exdays*24*60*60*1000)); |
| 97 | + let expires = "expires="+ d.toUTCString(); |
| 98 | + document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; |
| 99 | +} |
| 100 | + |
| 101 | +function getCookie(cname) { |
| 102 | + let name = cname + "="; |
| 103 | + let decodedCookie = decodeURIComponent(document.cookie); |
| 104 | + let ca = decodedCookie.split(';'); |
| 105 | + for(let i = 0; i <ca.length; i++) { |
| 106 | + let c = ca[i]; |
| 107 | + while (c.charAt(0) == ' ') { |
| 108 | + c = c.substring(1); |
| 109 | + } |
| 110 | + if (c.indexOf(name) == 0) { |
| 111 | + return c.substring(name.length, c.length); |
| 112 | + } |
| 113 | + } |
| 114 | + return ""; |
| 115 | +} |
| 116 | + |
| 117 | +$(document).ready(loadDocumentListExpansion); |
| 118 | + |
| 119 | +</script> |
68 | 120 | <!-- #sidebar -->
|
| 121 | + |
0 commit comments