Fossil SCM

Add table sorting to the subscriber list.

drh 2018-08-08 13:47 trunk
Commit 988cf44ded4856e9ab453fbd3c8f097d247bfa44a27fb3e5c9a2db3fda8b3075
1 file changed +15 -9
+15 -9
--- src/email.c
+++ src/email.c
@@ -1731,11 +1731,11 @@
17311731
** modified.
17321732
*/
17331733
void subscriber_list_page(void){
17341734
Blob sql;
17351735
Stmt q;
1736
- double rNow;
1736
+ sqlite3_int64 iNow;
17371737
if( email_webpages_disabled() ) return;
17381738
login_check_credentials();
17391739
if( !g.perm.Admin ){
17401740
login_needed(0);
17411741
return;
@@ -1748,45 +1748,51 @@
17481748
" semail," /* 1 */
17491749
" ssub," /* 2 */
17501750
" suname," /* 3 */
17511751
" sverified," /* 4 */
17521752
" sdigest," /* 5 */
1753
- " date(sctime,'unixepoch')," /* 6 */
1754
- " julianday(mtime,'unixepoch')" /* 7 */
1753
+ " mtime," /* 6 */
1754
+ " date(sctime,'unixepoch')" /* 7 */
17551755
" FROM subscriber"
17561756
);
17571757
if( P("only")!=0 ){
17581758
blob_append_sql(&sql, " WHERE ssub LIKE '%%%q%%'", P("only"));
17591759
style_submenu_element("Show All","%R/subscribers");
17601760
}
1761
+ blob_append_sql(&sql," ORDER BY mtime DESC");
17611762
db_prepare_blob(&q, &sql);
1762
- rNow = db_double(0.0,"SELECT julianday('now')");
1763
- @ <table border="1">
1763
+ iNow = time(0);
1764
+ @ <table border='1' class='sortable' \
1765
+ @ data-init-sort='6' data-column-types='tttttKt'>
1766
+ @ <thead>
17641767
@ <tr>
17651768
@ <th>Email
17661769
@ <th>Events
17671770
@ <th>Digest-Only?
17681771
@ <th>User
17691772
@ <th>Verified?
17701773
@ <th>Last change
17711774
@ <th>Created
17721775
@ </tr>
1776
+ @ </thead><tbody>
17731777
while( db_step(&q)==SQLITE_ROW ){
1774
- double rAge = rNow - db_column_double(&q, 7);
1778
+ sqlite3_int64 iMtime = db_column_int64(&q, 6);
1779
+ double rAge = (iNow - iMtime)/86400.0;
17751780
@ <tr>
17761781
@ <td><a href='%R/alerts/%s(db_column_text(&q,0))'>\
17771782
@ %h(db_column_text(&q,1))</a></td>
17781783
@ <td>%h(db_column_text(&q,2))</td>
17791784
@ <td>%s(db_column_int(&q,5)?"digest":"")</td>
17801785
@ <td>%h(db_column_text(&q,3))</td>
17811786
@ <td>%s(db_column_int(&q,4)?"yes":"pending")</td>
1782
- @ <td>%z(human_readable_age(rAge))</td>
1783
- @ <td>%h(db_column_text(&q,6))</td>
1787
+ @ <td data-sortkey='%010llx(iMtime)'>%z(human_readable_age(rAge))</td>
1788
+ @ <td>%h(db_column_text(&q,7))</td>
17841789
@ </tr>
17851790
}
1786
- @ </table>
1791
+ @ </tbody></table>
17871792
db_finalize(&q);
1793
+ style_table_sorter();
17881794
style_footer();
17891795
}
17901796
17911797
#if LOCAL_INTERFACE
17921798
/*
17931799
--- src/email.c
+++ src/email.c
@@ -1731,11 +1731,11 @@
1731 ** modified.
1732 */
1733 void subscriber_list_page(void){
1734 Blob sql;
1735 Stmt q;
1736 double rNow;
1737 if( email_webpages_disabled() ) return;
1738 login_check_credentials();
1739 if( !g.perm.Admin ){
1740 login_needed(0);
1741 return;
@@ -1748,45 +1748,51 @@
1748 " semail," /* 1 */
1749 " ssub," /* 2 */
1750 " suname," /* 3 */
1751 " sverified," /* 4 */
1752 " sdigest," /* 5 */
1753 " date(sctime,'unixepoch')," /* 6 */
1754 " julianday(mtime,'unixepoch')" /* 7 */
1755 " FROM subscriber"
1756 );
1757 if( P("only")!=0 ){
1758 blob_append_sql(&sql, " WHERE ssub LIKE '%%%q%%'", P("only"));
1759 style_submenu_element("Show All","%R/subscribers");
1760 }
 
1761 db_prepare_blob(&q, &sql);
1762 rNow = db_double(0.0,"SELECT julianday('now')");
1763 @ <table border="1">
 
 
1764 @ <tr>
1765 @ <th>Email
1766 @ <th>Events
1767 @ <th>Digest-Only?
1768 @ <th>User
1769 @ <th>Verified?
1770 @ <th>Last change
1771 @ <th>Created
1772 @ </tr>
 
1773 while( db_step(&q)==SQLITE_ROW ){
1774 double rAge = rNow - db_column_double(&q, 7);
 
1775 @ <tr>
1776 @ <td><a href='%R/alerts/%s(db_column_text(&q,0))'>\
1777 @ %h(db_column_text(&q,1))</a></td>
1778 @ <td>%h(db_column_text(&q,2))</td>
1779 @ <td>%s(db_column_int(&q,5)?"digest":"")</td>
1780 @ <td>%h(db_column_text(&q,3))</td>
1781 @ <td>%s(db_column_int(&q,4)?"yes":"pending")</td>
1782 @ <td>%z(human_readable_age(rAge))</td>
1783 @ <td>%h(db_column_text(&q,6))</td>
1784 @ </tr>
1785 }
1786 @ </table>
1787 db_finalize(&q);
 
1788 style_footer();
1789 }
1790
1791 #if LOCAL_INTERFACE
1792 /*
1793
--- src/email.c
+++ src/email.c
@@ -1731,11 +1731,11 @@
1731 ** modified.
1732 */
1733 void subscriber_list_page(void){
1734 Blob sql;
1735 Stmt q;
1736 sqlite3_int64 iNow;
1737 if( email_webpages_disabled() ) return;
1738 login_check_credentials();
1739 if( !g.perm.Admin ){
1740 login_needed(0);
1741 return;
@@ -1748,45 +1748,51 @@
1748 " semail," /* 1 */
1749 " ssub," /* 2 */
1750 " suname," /* 3 */
1751 " sverified," /* 4 */
1752 " sdigest," /* 5 */
1753 " mtime," /* 6 */
1754 " date(sctime,'unixepoch')" /* 7 */
1755 " FROM subscriber"
1756 );
1757 if( P("only")!=0 ){
1758 blob_append_sql(&sql, " WHERE ssub LIKE '%%%q%%'", P("only"));
1759 style_submenu_element("Show All","%R/subscribers");
1760 }
1761 blob_append_sql(&sql," ORDER BY mtime DESC");
1762 db_prepare_blob(&q, &sql);
1763 iNow = time(0);
1764 @ <table border='1' class='sortable' \
1765 @ data-init-sort='6' data-column-types='tttttKt'>
1766 @ <thead>
1767 @ <tr>
1768 @ <th>Email
1769 @ <th>Events
1770 @ <th>Digest-Only?
1771 @ <th>User
1772 @ <th>Verified?
1773 @ <th>Last change
1774 @ <th>Created
1775 @ </tr>
1776 @ </thead><tbody>
1777 while( db_step(&q)==SQLITE_ROW ){
1778 sqlite3_int64 iMtime = db_column_int64(&q, 6);
1779 double rAge = (iNow - iMtime)/86400.0;
1780 @ <tr>
1781 @ <td><a href='%R/alerts/%s(db_column_text(&q,0))'>\
1782 @ %h(db_column_text(&q,1))</a></td>
1783 @ <td>%h(db_column_text(&q,2))</td>
1784 @ <td>%s(db_column_int(&q,5)?"digest":"")</td>
1785 @ <td>%h(db_column_text(&q,3))</td>
1786 @ <td>%s(db_column_int(&q,4)?"yes":"pending")</td>
1787 @ <td data-sortkey='%010llx(iMtime)'>%z(human_readable_age(rAge))</td>
1788 @ <td>%h(db_column_text(&q,7))</td>
1789 @ </tr>
1790 }
1791 @ </tbody></table>
1792 db_finalize(&q);
1793 style_table_sorter();
1794 style_footer();
1795 }
1796
1797 #if LOCAL_INTERFACE
1798 /*
1799

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button