]> git.phdru.name Git - m_librarian.git/blobdiff - m_librarian/web/views/list_books.tmpl
Feat(web/views/list_books): Toggle checkboxes for all books
[m_librarian.git] / m_librarian / web / views / list_books.tmpl
index 5822ce20e1f752287d034f8d45adba6fa5885886..3fa406a1a351a92b60f3c8bb4df4f80cf09ea6f7 100644 (file)
@@ -1,22 +1,63 @@
 #encoding utf-8
 #import cgi
+#from m_librarian.translations import translations
 #extends views.layout
 #attr $title = 'Список книг'
 #def body
 <h1>$title</h1>
 
+<script type="text/javascript" language="Javascript">
+<!--
+function toggleBooks(selector, value) {
+  cboxes = document.querySelectorAll(selector);
+  for (var i = 0; i < cboxes.length; i++) {
+    cboxes[i].checked = value;
+  }
+}
+
+function toggleAll(value) {
+  toggleBooks('input[type=checkbox]', value);
+}
+
+function toggleAuthor(name, value) {
+  toggleBooks('input[type=checkbox][name^=' + name + ']', value);
+}
+
+function toggleSeries(name, value) {
+  toggleBooks('input[type=checkbox][name^=' + name + '_book]', value);
+}
+// -->
+</script>
+
 #if $books_by_author
   <form action="/download/" method="POST" style="height: 80%">
   <table style="width: 100%; height: 90%">
-  #set $series = None
+  <tr>
+  <td><input type=checkbox name="_toggleAll"
+  onClick="toggleAll(this.checked)"></td>
+  #set $_ = $getattr($translations, 'ugettext', None) or $translations.gettext
+  #for $column in $columns
+    <td style="text-align: center">$cgi.escape($_($column))</td>
+  #end for
+  </tr>
   #set $columns1 = $len($columns)+1
-  #for $author in $sorted($books_by_author)
+  #for $anum, $author in $enumerate($sorted($books_by_author))
+    #set $series = None
+    #set $snum = 0
     #set $books = $books_by_author[$author]
+  <tr>
+  <td><input type=checkbox name="a${anum+1}_"
+  onClick="toggleAuthor(this.name, this.checked)"></td>
+  <td colspan="${columns1-1}"><b>$author</b></td>
+  </tr>
     #for $book in $books
     #if $book.series != $series
     #set $series = $book.series
+    #set $snum += 1
   <tr>
-  <td colspan="$columns1"><b>
+  <td><input type=checkbox name="a${anum+1}_s${snum}"
+  onClick="toggleSeries(this.name, this.checked)"></td>
+  <td colspan="${columns1-1}"><b>
   $author — <i>
   #if $book.series
 $cgi.escape($series, 1)#slurp
@@ -27,9 +68,14 @@ $cgi.escape($series, 1)#slurp
   </tr>
     #end if
   <tr>
-  <td><input type=checkbox name=books value="$book.id"></td>
+  <td><input type=checkbox name="a${anum+1}_s${snum}_books" value="$book.id"></td>
   #for $column in $columns
-  <td>$cgi.escape(unicode($getattr($book, $column) or ''))</td>
+  #if $column in ('ser_no', 'size')
+  #set $style = ' style="text-align: right; width: 5ex"'
+  #else
+  #set $style = ''
+  #end if
+  <td$style>$cgi.escape(unicode($getattr($book, $column) or ''))</td>
   #end for
   </tr>
     #end for