#!/usr/bin/perl
#  Copyright 2001-2024 Leslie Richardson

#  This file is part of Open Admin for Schools.

# metaFieldName - edit meta table for field names of the field1..field16 only.
# Designed for end users, not admins.


my %lex = ('Main' => 'Main',
	   'Update' => 'Update',
	   'Metadata' => 'Metadata',
	   'Edit' => 'Edit',
	   'Field Name' => 'Field Name',
	   'Record(s) Updated' => 'Record(s) updated',
	   'Error' => 'Error',

	   );

$self = 'metaFieldName.pl';

use DBI;
use CGI;

# Read config variables
eval require "../../etc/admin.conf";
if ( $@ ) {
    print $lex{Error}. ": $@<br>\n";
    die $lex{Error}. ": $@\n";
}

my $q = new CGI;
print $q->header( -charset, $charset );
my %arr = $q->Vars;

my $dsn = "DBI:$dbtype:$dbase";
my $dbh = DBI->connect($dsn,$user,$password);


my $title = "$lex{Edit} Extra Field Names 1..16 in Student Records";

print qq{$doctype\n<html><head><title>$title</title>
<link rel="stylesheet" href="$css" type="text/css">
<style type="text/css">tr.bg { background-color:#06D;color:#FFF; }</style>
</head><body>\n};

print qq{[ <a href="$homepage">$lex{Main}</a> ]\n};


if ( not $arr{page} ) { # load 16 field names in form.
    showStartPage();
}

if ( $arr{page} == 1 ) { # write the updates
    delete $arr{page};
    updateTable();
}


#----------------
sub showStartPage { # 
#----------------


    # Load the 16 field names
    my %names;
    my $sth = $dbh->prepare("select fieldid, fieldname from meta where fieldid like 'field%'
      and tableid = 'student'");
    $sth->execute;
    if ($DBI::errstr){ print $DBI::errstr; die $DBI::errstr;}
    while ( my ($id,$name) = $sth->fetchrow ) {
	$names{$id} = $name;
    }
	
    
    # section header
    print qq{<h1>$title</h1>\n};

    print qq{<form action="$self" method="post">\n};
    print qq{<input type="hidden" name="page" value="1">\n};

    print qq{<h3>Update Field Names based on your use of that extra field</h3>\n};

    print qq{<input type="submit" value="$lex{Update}">\n};
    print qq{<table border="1" cellpadding="3" cellspacing="0">\n};

    
    print qq{<tr><th>Field</th><th>$lex{'Field Name'}</th></tr>\n};

    for my $idx (1..16) {
	my $fieldid = 'field'.$idx;
	print qq{<tr><td>$fieldid</td>};
	print qq{<td><input type="text" name="$fieldid" value="$names{$fieldid}" style="width:30ch;"></td></tr>\n};
    }

    
    print qq{</table><input type="submit" value="$lex{Update}">\n};
    print qq{</form></body></html>};

    exit;

}


#--------------
sub updateTable { # write updates to meta table.
#--------------

    # foreach my $key ( sort keys %arr ) { print qq{K:$key VAL:$arr{$key}<br>\n}; }

    foreach my $fieldid ( keys %arr ) {

	my $name = $arr{$fieldid};

	print qq{FLDID:$fieldid  NAME:$name<br>\n};

	# Update the field
	my $sth = $dbh->prepare("update meta set fieldname = ? where fieldid = ?");
	$sth->execute( $name, $fieldid );
	if ( $DBI::errstr ){ print $DBI::errstr; die $DBI::errstr; }

    }


    print qq{<p>$lex{'Record(s) Updated'}</p>\n};
    print qq{</body></html>\n};

    exit;

} # End of Update Table
