From: Florian Forster Date: Mon, 21 Jun 2010 09:01:59 +0000 (+0200) Subject: "search json" action: Move the JSON callback method into an own action. X-Git-Tag: v4.0.0~214 X-Git-Url: https://git.tokkee.org/?p=collection4.git;a=commitdiff_plain;h=30478870f2afaf991ee19ab7b4c22d3ddcd7b8cd "search json" action: Move the JSON callback method into an own action. --- diff --git a/share/collection.js b/share/collection.js index de79a99..026d434 100644 --- a/share/collection.js +++ b/share/collection.js @@ -29,7 +29,7 @@ $(document).ready(function() { { var term = $("#search-input").val (); $.getJSON ("collection.fcgi", - { "action": "list_graphs", "format": "json", "search": term}, + { "action": "search_json", "q": term}, function(data) { var i; diff --git a/src/Makefile.am b/src/Makefile.am index ac11e9f..a77f669 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -17,6 +17,7 @@ collection_fcgi_SOURCES = main.c \ oconfig.c oconfig.h aux_types.h scanner.l parser.y \ action_graph.c action_graph.h \ action_list_graphs.c action_list_graphs.h \ + action_search_json.c action_search_json.h \ common.c common.h \ filesystem.c filesystem.h \ graph_types.h \ diff --git a/src/action_list_graphs.c b/src/action_list_graphs.c index a236517..922308b 100644 --- a/src/action_list_graphs.c +++ b/src/action_list_graphs.c @@ -23,118 +23,6 @@ struct callback_data_s }; typedef struct callback_data_s callback_data_t; -static int json_begin_graph (graph_config_t *cfg) /* {{{ */ -{ - char desc[1024]; - - if (cfg == NULL) - return (EINVAL); - - graph_get_title (cfg, desc, sizeof (desc)); - - printf ("{\"title\":\"%s\",\"instances\":[", desc); - - return (0); -} /* }}} int json_begin_graph */ - -static int json_end_graph (void) /* {{{ */ -{ - printf ("]}"); - - return (0); -} /* }}} int json_end_graph */ - -static int json_print_instance (graph_config_t *cfg, /* {{{ */ - graph_instance_t *inst) -{ - char params[1024]; - char desc[1024]; - - if ((cfg == NULL) || (inst == NULL)) - return (EINVAL); - - memset (desc, 0, sizeof (desc)); - inst_describe (cfg, inst, desc, sizeof (desc)); - - memset (params, 0, sizeof (params)); - inst_get_params (cfg, inst, params, sizeof (params)); - - printf ("{\"description\":\"%s\",\"params\":\"%s\"}", - desc, params); - - return (0); -} /* }}} int json_print_instance */ - -static int print_graph_inst_json (graph_config_t *cfg, /* {{{ */ - graph_instance_t *inst, - void *user_data) -{ - callback_data_t *data = user_data; - - if (data->cfg != cfg) - { - if (!data->first) - { - json_end_graph (); - printf (",\n"); - } - json_begin_graph (cfg); - - data->cfg = cfg; - data->first = 0; - } - else /* if (not first instance) */ - { - printf (",\n"); - } - - json_print_instance (cfg, inst); - - if (data->limit > 0) - data->limit--; - - if (data->limit == 0) - return (1); - - return (0); -} /* }}} int print_graph_inst_json */ - -static int list_graphs_json (const char *term) /* {{{ */ -{ - callback_data_t data; - - time_t now; - char time_buffer[128]; - int status; - - printf ("Content-Type: application/json\n"); - - now = time (NULL); - status = time_to_rfc1123 (now + 300, time_buffer, sizeof (time_buffer)); - if (status == 0) - printf ("Expires: %s\n" - "Cache-Control: public\n", - time_buffer); - printf ("\n"); - - data.cfg = NULL; - data.limit = RESULT_LIMIT; - data.first = 1; - - printf ("[\n"); - if (term == NULL) - gl_instance_get_all (print_graph_inst_json, /* user_data = */ &data); - else - gl_search (term, print_graph_inst_json, /* user_data = */ &data); - - if (!data.first) - json_end_graph (); - - printf ("\n]"); - - return (0); -} /* }}} int list_graphs_json */ - static int print_graph_inst_html (graph_config_t *cfg, /* {{{ */ graph_instance_t *inst, void *user_data) @@ -190,6 +78,14 @@ static int print_search_result (void *user_data) /* {{{ */ page_data_t *pg_data = user_data; callback_data_t cb_data = { NULL, /* limit = */ RESULT_LIMIT, /* first = */ 1 }; + if (pg_data->search_term != NULL) + { + char *search_term_html = html_escape (pg_data->search_term); + printf ("

Search results for "%s"

\n", + search_term_html); + free (search_term_html); + } + printf ("