diff options
author | June McEnroe <june@causal.agency> | 2020-07-09 19:21:28 -0400 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-07-09 19:21:28 -0400 |
commit | 87f73ddbc05b38113cb501aad4480490f6604704 (patch) | |
tree | 7629d2d6557f20daa75d38a006f643d25b19fd78 | |
parent | Split code and add breadcrumb nav (diff) | |
download | scooper-87f73ddbc05b38113cb501aad4480490f6604704.tar.gz scooper-87f73ddbc05b38113cb501aad4480490f6604704.zip |
Add search forms
-rw-r--r-- | contexts.c | 1 | ||||
-rw-r--r-- | html.c | 54 | ||||
-rw-r--r-- | networks.c | 1 | ||||
-rw-r--r-- | server.h | 3 |
4 files changed, 59 insertions, 0 deletions
diff --git a/contexts.c b/contexts.c index 7adfa34..c75202a 100644 --- a/contexts.c +++ b/contexts.c @@ -41,6 +41,7 @@ enum kcgi_err pageContexts(struct kreq *req) { || khtml_open(&html, req, KHTML_PRETTY) || htmlHead(&html, network) || htmlNav(&html, network, NULL) + || htmlSearch(&html, network, NULL) || khtml_elem(&html, KELEM_UL); if (error) return error; diff --git a/html.c b/html.c index ad80b6f..59ecc30 100644 --- a/html.c +++ b/html.c @@ -89,3 +89,57 @@ htmlNav(struct khtmlreq *html, const char *network, const char *context) { return khtml_closeelem(html, 2); } + +enum kcgi_err +htmlSearch(struct khtmlreq *html, const char *network, const char *context) { + char label[256]; + snprintf( + label, sizeof(label), "Search%s%s", + (network ? " " : ""), (context ? context : network ? network : "") + ); + + enum kcgi_err error = 0 + || khtml_attr( + html, KELEM_FORM, + KATTR_METHOD, "get", + KATTR_ACTION, Pages[Search], + KATTR__MAX + ) + || khtml_attr( + html, KELEM_INPUT, + KATTR_TYPE, "search", + KATTR_NAME, Keys[Query].name, + KATTR__MAX + ) + || khtml_attr( + html, KELEM_INPUT, + KATTR_TYPE, "submit", + KATTR_VALUE, label, + KATTR__MAX + ); + if (error) return error; + + if (network) { + error = khtml_attr( + html, KELEM_INPUT, + KATTR_TYPE, "hidden", + KATTR_NAME, Keys[Network].name, + KATTR_VALUE, network, + KATTR__MAX + ); + if (error) return error; + } + + if (context) { + error = khtml_attr( + html, KELEM_INPUT, + KATTR_TYPE, "hidden", + KATTR_NAME, Keys[Context].name, + KATTR_VALUE, context, + KATTR__MAX + ); + if (error) return error; + } + + return khtml_closeelem(html, 1); +} diff --git a/networks.c b/networks.c index 15ca95d..a81722c 100644 --- a/networks.c +++ b/networks.c @@ -37,6 +37,7 @@ enum kcgi_err pageNetworks(struct kreq *req) { || khtml_open(&html, req, KHTML_PRETTY) || htmlHead(&html, "Networks") || htmlNav(&html, NULL, NULL) + || htmlSearch(&html, NULL, NULL) || khtml_elem(&html, KELEM_UL); if (error) return error; diff --git a/server.h b/server.h index 80eb5bb..9b665d7 100644 --- a/server.h +++ b/server.h @@ -127,3 +127,6 @@ enum kcgi_err htmlHead(struct khtmlreq *html, const char *title); enum kcgi_err htmlNav( struct khtmlreq *html, const char *network, const char *context ); +enum kcgi_err htmlSearch( + struct khtmlreq *html, const char *network, const char *context +); |