/** --- BEGIN COPYRIGHT BLOCK --- * This Program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation; version 2 of the License. * * This Program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple * Place, Suite 330, Boston, MA 02111-1307 USA. * * In addition, as a special exception, Red Hat, Inc. gives You the additional * right to link the code of this Program with code not covered under the GNU * General Public License ("Non-GPL Code") and to distribute linked combinations * including the two, subject to the limitations in this paragraph. Non-GPL Code * permitted under this exception must only link to the code of this Program * through those well defined interfaces identified in the file named EXCEPTION * found in the source code files (the "Approved Interfaces"). The files of * Non-GPL Code may instantiate templates or use macros or inline functions from * the Approved Interfaces without causing the resulting work to be covered by * the GNU General Public License. Only Red Hat, Inc. may make changes or * additions to the list of Approved Interfaces. You must obey the GNU General * Public License in all respects for all of the Program code and other code used * in conjunction with the Program except the Non-GPL Code covered by this * exception. If you modify this file, you may extend this exception to your * version of the file, but you are not obligated to do so. If you do not wish to * provide this exception without modification, you must delete this exception * statement from your version and license this file solely under the GPL without * exception. * * * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission. * Copyright (C) 2005 Red Hat, Inc. * All rights reserved. --- END COPYRIGHT BLOCK --- */ /* * newentry.c -- CGI program to generate newentry form -- HTTP gateway */ #include "dsgw.h" #include "dbtdsgw.h" static void emit_file(char* filename, dsgwnewtype* entType); #if 0 /* unused */ static void unquote_emits(char* s) { dsgw_quotation_end(); dsgw_emits (s); dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE); } static void quote_emit_file(char* filename) { dsgw_quotation_begin (QUOTATION_JAVASCRIPT_MULTILINE); emit_file (filename, NULL); dsgw_quotation_end(); } #endif static void emit_file (char* filename, dsgwnewtype* entType) { auto FILE* html = dsgw_open_html_file( filename, DSGW_ERROPT_EXIT ); auto char line[ BIG_LINE ]; auto int argc; auto char **argv; char *deleteme = NULL; while ( dsgw_next_html_line( html, line )) { if ( dsgw_parse_line( line, &argc, &argv, 0, dsgw_simple_cond_is_true, NULL )) { if ( dsgw_directive_is( line, DRCT_HEAD )) { dsgw_head_begin(); dsgw_emits ("\n"); } else if ( dsgw_directive_is( line, "DS_NEWENTRY_SCRIPT" )) { dsgw_emits ("\n"); } else if ( dsgw_directive_is( line, "DS_NEWENTRY_TYPE_BODY" )) { dsgw_emitf ("\n", dsgw_html_body_colors ); } else if ( dsgw_directive_is( line, "DS_NEWENTRY_TYPE_FORM" )) { dsgw_form_begin ("typeForm", NULL); dsgw_emits ("\n"); } else if ( dsgw_directive_is( line, "DS_NEWENTRY_TYPE_SELECT" )) { auto dsgwnewtype* ntp; dsgw_emits ("\n" ); } else if ( dsgw_directive_is( line, "DS_NEWENTRY_NAME_BODY" )) { dsgw_emits ("dsnt_loccount) { dsgw_emits ("parent.locationChange(document.nameForm);"); } dsgw_emitf ("document.nameForm.entryname.focus()\" %s>\n", dsgw_html_body_colors ); dsgw_emit_alertForm(); } else if ( dsgw_directive_is( line, "DS_NEWENTRY_NAME_FORM" )) { dsgw_form_begin ("nameForm", "action=\"" DSGW_URLPREFIX_CGI_HTTP "newentry\"" " target=NewEntryWindow" " onSubmit=\"return parent.submitNameForm(this)\""); dsgw_emits ("\n"); if (entType) { if (entType->dsnt_rdnattr) { dsgw_emitf ("\n", entType->dsnt_rdnattr); } if (entType->dsnt_template) { dsgw_emitf ("\n", entType->dsnt_template); } } } else if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_BEGIN" )) { if ( ! (entType && entType->dsnt_loccount)) { while ( dsgw_next_html_line( html, line )) { if ( dsgw_parse_line( line, &argc, &argv, 1, dsgw_simple_cond_is_true, NULL )) { if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_END" )) { break; } } } } } else if ( dsgw_directive_is( line, "DS_NEWENTRY_LOCATION_SELECT" )) { dsgw_emits ("