Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add the /subscribers page. Fix minor issues. All pages still need improvement. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | email-alerts |
Files: | files | file ages | folders |
SHA3-256: |
e015c10306d40a306c55d5f956df2cac |
User & Date: | drh 2018-06-21 21:02:08.384 |
Context
2018-06-21
| ||
22:37 | Continuing refinement of the web pages for handling email subscriptions. ... (check-in: 84d0d853 user: drh tags: email-alerts) | |
21:02 | Add the /subscribers page. Fix minor issues. All pages still need improvement. ... (check-in: e015c103 user: drh tags: email-alerts) | |
19:51 | Further progress toward get email subscription webpages working. ... (check-in: adf068fa user: drh tags: email-alerts) | |
Changes
Changes to src/db.c.
︙ | ︙ | |||
308 309 310 311 312 313 314 315 316 317 318 319 320 321 | pStmt->pPrev = 0; if( db.pAllStmt ) db.pAllStmt->pPrev = pStmt; db.pAllStmt = pStmt; va_end(ap); } return rc; } /* ** Return the index of a bind parameter */ static int paramIdx(Stmt *pStmt, const char *zParamName){ int i = sqlite3_bind_parameter_index(pStmt->pStmt, zParamName); if( i==0 ){ | > > > > > > > > > > > > > > > > > > > > > | 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 | pStmt->pPrev = 0; if( db.pAllStmt ) db.pAllStmt->pPrev = pStmt; db.pAllStmt = pStmt; va_end(ap); } return rc; } /* Prepare a statement using text placed inside a Blob ** using blob_append_sql(). */ int db_prepare_blob(Stmt *pStmt, Blob *pSql){ int rc; char *zSql; pStmt->sql = *pSql; blob_init(pSql, 0, 0); zSql = blob_sql_text(&pStmt->sql); db.nPrepare++; rc = sqlite3_prepare_v3(g.db, zSql, -1, 0, &pStmt->pStmt, 0); if( rc!=0 ){ db_err("%s\n%s", sqlite3_errmsg(g.db), zSql); } pStmt->pNext = pStmt->pPrev = 0; pStmt->nStep = 0; pStmt->rc = rc; return rc; } /* ** Return the index of a bind parameter */ static int paramIdx(Stmt *pStmt, const char *zParamName){ int i = sqlite3_bind_parameter_index(pStmt->pStmt, zParamName); if( i==0 ){ |
︙ | ︙ |
Changes to src/email.c.
︙ | ︙ | |||
111 112 113 114 115 116 117 118 119 120 121 122 123 124 | login_check_credentials(); if( !g.perm.Setup ){ login_needed(0); return; } db_begin_transaction(); style_header("Email Notification Setup"); @ <form action="%R/setup_email" method="post"><div> @ <input type="submit" name="submit" value="Apply Changes" /><hr> login_insert_csrf_secret(); multiple_choice_attribute("Email Send Method","email-send-method", "esm", "off", count(azSendMethods)/2, azSendMethods); @ <p>How to send email. The "Pipe to a command" | > | 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | login_check_credentials(); if( !g.perm.Setup ){ login_needed(0); return; } db_begin_transaction(); style_submenu_element("Subscriber List", "%R/subscribers"); style_header("Email Notification Setup"); @ <form action="%R/setup_email" method="post"><div> @ <input type="submit" name="submit" value="Apply Changes" /><hr> login_insert_csrf_secret(); multiple_choice_attribute("Email Send Method","email-send-method", "esm", "off", count(azSendMethods)/2, azSendMethods); @ <p>How to send email. The "Pipe to a command" |
︙ | ︙ | |||
659 660 661 662 663 664 665 | if( eErr==3 ){ @ <td><span class="loginError">← %h(zErr)</span></td> } @ </tr> } @ <tr> @ <td class="form_label">Options:</td> | | | | | | | | | 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 | if( eErr==3 ){ @ <td><span class="loginError">← %h(zErr)</span></td> } @ </tr> } @ <tr> @ <td class="form_label">Options:</td> @ <td><label><input type="checkbox" name="sa" %s(PCK("sa"))> \ @ Announcements</label><br> @ <label><input type="checkbox" name="sc" %s(PCK("sc"))> \ @ Check-ins</label><br> @ <label><input type="checkbox" name="st" %s(PCK("st"))> \ @ Ticket changes</label><br> @ <label><input type="checkbox" name="sw" %s(PCK("sw"))> \ @ Wiki</label><br> @ <label><input type="checkbox" name="di" %s(PCK("di"))> \ @ Daily digest only</label><br> if( g.perm.Admin ){ @ <label><input type="checkbox" name="vi" %s(PCK("vi"))> \ @ Verified</label><br> @ <label><input type="checkbox" name="dnc" %s(PCK("dnc"))> \ @ Do not call</label><br> } @ </td> @ </tr> @ <tr> @ <td></td> @ <td><input type="submit" name="submit" value="Submit"></td> |
︙ | ︙ | |||
858 859 860 861 862 863 864 | @ Ticket changes</label><br> @ <label><input type="checkbox" name="sw" %s(sw?"checked":"")>\ @ Wiki</label><br> @ <label><input type="checkbox" name="sdigest" %s(sdigest?"checked":"")>\ @ Daily digest only</label><br> if( g.perm.Admin ){ @ <label><input type="checkbox" name="sdonotcall" \ | | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 | @ Ticket changes</label><br> @ <label><input type="checkbox" name="sw" %s(sw?"checked":"")>\ @ Wiki</label><br> @ <label><input type="checkbox" name="sdigest" %s(sdigest?"checked":"")>\ @ Daily digest only</label><br> if( g.perm.Admin ){ @ <label><input type="checkbox" name="sdonotcall" \ @ %s(sdonotcall?"checked":"")> Do not call</label><br> @ <label><input type="checkbox" name="sverified" \ @ %s(sverified?"checked":"")>\ @ Verified</label><br> } @ <label><input type="checkbox" name="dodelete"> @ Unsubscribe</label> \ if( eErr==9 ){ @ <span class="loginError">← %h(zErr)</span>\ } @ <br> @ </td></tr> @ <tr> @ <td></td> @ <td><input type="submit" name="submit" value="Submit"> @ <input type="submit" name="delete" value="Unsubscribe"> @ </tr> @ </table> @ </form> fossil_free(zErr); db_finalize(&q); style_footer(); } /* ** WEBPAGE: subscribers ** ** This page, accessible to administrators only, ** shows a list of email notification email addresses with ** links to facilities for editing. */ void subscriber_list_page(void){ Blob sql; Stmt q; login_check_credentials(); if( !g.perm.Admin ){ fossil_redirect_home(); return; } style_header("Subscriber List"); blob_init(&sql, 0, 0); blob_append_sql(&sql, "SELECT hex(subscriberCode)," " semail," " ssub," " suname," " sverified" " FROM subscriber" ); db_prepare_blob(&q, &sql); @ <table> while( db_step(&q)==SQLITE_ROW ){ @ <tr> @ <td><a href='%R/alerts/%s(db_column_text(&q,0))'>\ @ %h(db_column_text(&q,1))</a></td> @ <td>%h(db_column_text(&q,3))</td> @ <td>%h(db_column_text(&q,4))</td> @ <td>%s(db_column_int(&q,5)?"":"unverified")</td> @ </tr> } @ </table> db_finalize(&q); style_footer(); } |