source@mandoc.bsd.lv
 help / color / mirror / Atom feed
From: schwarze@mdocml.bsd.lv
To: source@mdocml.bsd.lv
Subject: mdocml: Polish the search form using feedback from beck@ and others, in
Date: Sat, 12 Jul 2014 19:46:44 -0400 (EDT)	[thread overview]
Message-ID: <201407122346.s6CNkit1022102@krisdoz.my.domain> (raw)

Log Message:
-----------
Polish the search form using feedback from beck@ and others,
in particular introduce a section dropdown and an architecture dropdown.

Modified Files:
--------------
    mdocml:
        cgi.c

Revision Data
-------------
Index: cgi.c
===================================================================
RCS file: /usr/vhosts/mdocml.bsd.lv/cvs/mdocml/cgi.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -Lcgi.c -Lcgi.c -u -p -r1.67 -r1.68
--- cgi.c
+++ cgi.c
@@ -81,6 +81,39 @@ static	void		 resp_searchform(const stru
 static	const char	 *scriptname; /* CGI script name */
 static	const char	 *httphost; /* hostname used in the URIs */
 
+static	const char *const sec_numbers[] = {
+    "0", "1", "2", "3", "3p", "4", "5", "6", "7", "8", "9"
+};
+static	const char *const sec_names[] = {
+    "All Sections",
+    "1 - General Commands",
+    "2 - System Calls",
+    "3 - Subroutines",
+    "3p - Perl Subroutines",
+    "4 - Special Files",
+    "5 - File Formats",
+    "6 - Games",
+    "7 - Macros and Conventions",
+    "8 - Maintenance Commands",
+    "9 - Kernel Interface"
+};
+static	const int sec_MAX = sizeof(sec_names) / sizeof(char *);
+
+static	const char *const arch_names[] = {
+    "amd64",       "alpha",       "armish",      "armv7",
+    "aviion",      "hppa",        "hppa64",      "i386",
+    "ia64",        "landisk",     "loongson",    "luna88k",
+    "macppc",      "mips64",      "octeon",      "sgi",
+    "socppc",      "solbourne",   "sparc",       "sparc64",
+    "vax",         "zaurus",
+    "amiga",       "arc",         "arm32",       "atari",
+    "beagle",      "cats",        "hp300",       "mac68k",
+    "mvme68k",     "mvme88k",     "mvmeppc",     "palm",
+    "pc532",       "pegasos",     "pmax",        "powerpc",
+    "sun3",        "wgrisc",      "x68k"
+};
+static	const int arch_MAX = sizeof(arch_names) / sizeof(char *);
+
 /*
  * Print a character, escaping HTML along the way.
  * This will pass non-ASCII straight to output: be warned!
@@ -338,38 +371,65 @@ resp_searchform(const struct req *req)
 	printf("<DIV ID=\"mancgi\">\n"
 	       "<FORM ACTION=\"%s\" METHOD=\"get\">\n"
 	       "<FIELDSET>\n"
-	       "<LEGEND>Search Parameters</LEGEND>\n"
-	       "<INPUT TYPE=\"submit\" VALUE=\"Search\"> "
-	       "for manuals \n",
+	       "<LEGEND>Manual Page Search Parameters</LEGEND>\n",
 	       scriptname);
-	printf("<SELECT NAME=\"apropos\">\n"
-	       "<OPTION VALUE=\"0\"");
+
+	/* Write query input box. */
+
+	printf(	"<TABLE><TR><TD>\n"
+		"<INPUT TYPE=\"text\" NAME=\"query\" VALUE=\"");
+	if (NULL != req->q.expr)
+		html_print(req->q.expr);
+	puts("\" SIZE=\"40\">");
+
+	/* Write submission and reset buttons. */
+
+	printf(	"<INPUT TYPE=\"submit\" VALUE=\"Submit\">\n"
+		"<INPUT TYPE=\"reset\" VALUE=\"Reset\">\n");
+
+	/* Write show radio button */
+
+	printf(	"</TD><TD>\n"
+		"<INPUT TYPE=\"radio\" ");
 	if (req->q.equal)
-		printf(" SELECTED=\"selected\"");
-	printf(">named</OPTION>\n"
-	       "<OPTION VALUE=\"1\"");
-	if (0 == req->q.equal)
-		printf(" SELECTED=\"selected\"");
-	printf(">matching</OPTION>\n"
-	       "</SELECT>\n"
-	       "<INPUT TYPE=\"text\" NAME=\"query\" VALUE=\"");
-	html_print(req->q.expr ? req->q.expr : "");
-	printf("\">, section "
-	       "<INPUT TYPE=\"text\""
-	       " SIZE=\"4\" NAME=\"sec\" VALUE=\"");
-	html_print(req->q.sec ? req->q.sec : "");
-	printf("\">, arch "
-	       "<INPUT TYPE=\"text\""
-	       " SIZE=\"8\" NAME=\"arch\" VALUE=\"");
-	html_print(req->q.arch ? req->q.arch : "");
-	printf("\">");
+		printf("CHECKED ");
+	printf(	"NAME=\"apropos\" ID=\"show\" VALUE=\"0\">\n"
+		"<LABEL FOR=\"show\">Show named manual page</LABEL>\n");
+
+	/* Write section selector. */
+
+	printf(	"</TD></TR><TR><TD>\n"
+		"<SELECT NAME=\"sec\">");
+	for (i = 0; i < sec_MAX; i++) {
+		printf("<OPTION VALUE=\"%s\"", sec_numbers[i]);
+		if (NULL != req->q.sec &&
+		    0 == strcmp(sec_numbers[i], req->q.sec))
+			printf(" SELECTED");
+		printf(">%s</OPTION>\n", sec_names[i]);
+	}
+	puts("</SELECT>");
+
+	/* Write architecture selector. */
+
+	puts("<SELECT NAME=\"arch\">");
+	for (i = 0; i < arch_MAX; i++) {
+		printf("<OPTION VALUE=\"%s\"", arch_names[i]);
+		if (NULL != req->q.arch &&
+		    0 == strcmp(arch_names[i], req->q.arch))
+			printf(" SELECTED");
+		printf(">%s</OPTION>\n", arch_names[i]);
+	}
+	puts("</SELECT>");
+
+	/* Write manpath selector. */
+
 	if (req->psz > 1) {
-		puts(", in <SELECT NAME=\"manpath\">");
+		puts("<SELECT NAME=\"manpath\">");
 		for (i = 0; i < (int)req->psz; i++) {
 			printf("<OPTION ");
 			if (NULL == req->q.manpath ? 0 == i :
 			    0 == strcmp(req->q.manpath, req->p[i]))
-				printf("SELECTED=\"selected\" ");
+				printf("SELECTED ");
 			printf("VALUE=\"");
 			html_print(req->p[i]);
 			printf("\">");
@@ -378,8 +438,17 @@ resp_searchform(const struct req *req)
 		}
 		puts("</SELECT>");
 	}
-	puts("&mdash;\n"
-	     "<INPUT TYPE=\"reset\" VALUE=\"Reset\">\n"
+
+	/* Write search radio button */
+
+	printf(	"</TD><TD>\n"
+		"<INPUT TYPE=\"radio\" ");
+	if (0 == req->q.equal)
+		printf("CHECKED ");
+	printf(	"NAME=\"apropos\" ID=\"search\" VALUE=\"1\">\n"
+		"<LABEL FOR=\"search\">Search with apropos query</LABEL>\n");
+
+	puts("</TD></TR></TABLE>\n"
 	     "</FIELDSET>\n"
 	     "</FORM>\n"
 	     "</DIV>");
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

             reply	other threads:[~2014-07-12 23:46 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-12 23:46 schwarze [this message]
  -- strict thread matches above, loose matches on Subject: below --
2014-07-12 23:41 schwarze

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201407122346.s6CNkit1022102@krisdoz.my.domain \
    --to=schwarze@mdocml.bsd.lv \
    --cc=source@mdocml.bsd.lv \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).