diff --git a/_templates/todo.html b/_templates/todo.html new file mode 100644 index 0000000000000000000000000000000000000000..7f2609b97c7d991cd2795e8e351983cab335a4d6 --- /dev/null +++ b/_templates/todo.html @@ -0,0 +1,49 @@ +<a role="button" data-bs-toggle="modal" data-bs-target="#todoModal" href="#" id="modalfortodoitems"> + <button type="button" class="btn btn-danger">Outstanding todo items</button> +</a> + +<div class="modal fade" id="todoModal" aria-labelledby="todoModalLabel" aria-hidden="true"> + <div class="modal-dialog modal-lg modal-dialog-centered"> + <div class="modal-content"> + <div class="modal-header"> + <h5 class="modal-title m-0 text-dark" id="todoModalLabel">Outstanding todo items</h5> + <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> + </div> + <div class="modal-body"> + <ul class="list-group list-group-flush" id="todolist"> + <!-- Auto generated for page --> + </ul> + </div> + </div> + </div> +</div> + +<script> + + document.body.appendChild(document.getElementById('todoModal')); + var modalfortodoitems = document.getElementById('modalfortodoitems'); + var modalfortodoitemsparent = modalfortodoitems.parentNode; + var todoItems = document.getElementsByClassName('admonition-todo'); + var todolist = document.getElementById('todolist') + + if(todoItems.length == 0) { + modalfortodoitemsparent.remove(); + } else { + for (var i = 0; i < todoItems.length; ++i) { + var todoItem = document.createElement('li'); + var link = document.createElement('a'); + link.textContent = todoItems[i].getElementsByTagName('p')[1].innerHTML; + link.href = '#' + todoItems[i].id; + link.addEventListener('click', function() { + // Use Bootstrap's modal method to hide the modal + const todoModal = document.getElementById('todoModal'); + const modal = bootstrap.Modal.getInstance(todoModal); + modal.hide(); + }); + todoItem.appendChild(link); + todoItem.classList.add('list-group-item'); + todolist.appendChild(todoItem); + } + } + +</script> \ No newline at end of file diff --git a/conf.py b/conf.py index 2f746d6821b510b29c8405f8b8078dcbd1f13263..2e0f7f2a7b2e3f8bbfd61131593c68a0e6e5e0b3 100644 --- a/conf.py +++ b/conf.py @@ -222,7 +222,7 @@ html_theme_options = { "footer_end": ["last-updated"], # "content_footer_items": ["last-updated"], "secondary_sidebar_items": { - "**": ["page-toc", "edit-this-page", "sourcelink","pdf", "feedback", "forum", "license-terms", "message", "oshw"] + "**": ["todo", "page-toc", "edit-this-page", "sourcelink","pdf", "feedback", "forum", "license-terms", "message", "oshw"] }, } diff --git a/requirements.txt b/requirements.txt index fc7b2d5cd837574aefc7f8266322781cce7d6bc1..0f24296d2da78f0da0e67aa7bd3a0abf6882928a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -20,7 +20,7 @@ snowballstemmer==2.2.0 Sphinx==7.2.6 sphinx-autobuild==2021.3.14 sphinx-copybutton==0.5.2 -pydata-sphinx-theme==0.15.2 +pydata-sphinx-theme==0.15.4 sphinx-serve==1.0.1 sphinx-tabs==3.4.4 sphinx_design==0.5.0