From 0d568de7b210821972996937b7008bd57f30a766 Mon Sep 17 00:00:00 2001 From: Deepak Khatri <lorforlinux@beagleboard.org> Date: Sat, 24 Aug 2024 15:25:53 +0530 Subject: [PATCH] Add a big red button to list outstanding todo items on any page --- _templates/todo.html | 49 ++++++++++++++++++++++++++++++++++++++++++++ conf.py | 2 +- requirements.txt | 2 +- 3 files changed, 51 insertions(+), 2 deletions(-) create mode 100644 _templates/todo.html diff --git a/_templates/todo.html b/_templates/todo.html new file mode 100644 index 00000000..7f2609b9 --- /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 2f746d68..2e0f7f2a 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 fc7b2d5c..0f24296d 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 -- GitLab