2
0
mirror of https://github.com/ACSPRI/queXS synced 2024-04-02 12:12:16 +00:00

new Sample import page

changed from bs-switch to bs-toggle,  added file input filter and restriction
This commit is contained in:
Alex
2015-03-23 11:29:45 +03:00
parent f4be897763
commit ab22e06703
2 changed files with 158 additions and 190 deletions

View File

@@ -1,187 +1,155 @@
<?php <?php
/** /**
* Import a sample from a Headered CSV file * Import a sample from a Headered CSV file
* */
*
* This file is part of queXS /**
* * Configuration file
* queXS is free software; you can redistribute it and/or modify */
* it under the terms of the GNU General Public License as published by include ("../config.inc.php");
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version. /**
* * XHTML functions
* queXS is distributed in the hope that it will be useful, */
* but WITHOUT ANY WARRANTY; without even the implied warranty of include ("../functions/functions.xhtml.php");
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details. /**
* * Sample import functions
* You should have received a copy of the GNU General Public License */
* along with queXS; if not, write to the Free Software include("../functions/functions.import.php");
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
* $css = array(
* "../include/bootstrap-3.3.2/css/bootstrap.min.css",
* @author Adam Zammit <adam.zammit@deakin.edu.au> "../include/bootstrap-3.3.2/css/bootstrap-theme.min.css",
* @copyright Deakin University 2007,2008 "../include/font-awesome-4.3.0/css/font-awesome.css",
* @package queXS "../include/bootstrap-toggle/css/bootstrap-toggle.min.css",
* @subpackage admin "../css/custom.css"
* @link http://www.deakin.edu.au/dcarf/ queXS was writen for DCARF - Deakin Computer Assisted Research Facility );
* @license http://opensource.org/licenses/gpl-2.0.php The GNU General Public License (GPL) Version 2 $js_head = array(
* "../js/jquery-2.1.3.min.js",
*/ "../include/bootstrap-3.3.2/js/bootstrap.min.js",
"../include/bootstrap-toggle/js/bootstrap-toggle.min.js",
/** );
* Configuration file $js_foot = array(
*/ "../js/bootstrap-filestyle.min.js",
include ("../config.inc.php"); "../js/custom.js"
);
/**
* XHTML functions if (isset($_POST['import_form']))
*/ {
include ("../functions/functions.xhtml.php"); //form has been submitted
$subtitle = T_("Validating and uploading");
/** xhtml_head(T_("Import sample") . ":",true,$css,$js_head,false,false,false,$subtitle);
* Sample import functions echo "<a href='?' class='btn btn-default pull-left' ><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>";
*/
include("../functions/functions.import.php");
//verify each GET field is unique (except import_form)
$css = array( $sfields = array();
"../include/bootstrap-3.3.2/css/bootstrap.min.css", foreach($_POST as $getv => $val)
"../include/bootstrap-3.3.2/css/bootstrap-theme.min.css", //clean up?
"../include/font-awesome-4.3.0/css/font-awesome.css", $sfields[$getv] = $val;
"../css/bootstrap-switch.min.css",
"../css/custom.css" $error = verify_fields($sfields);
);
$js_head = array( $description = $_POST['description'];
"../js/jquery-2.1.3.min.js",
"../include/bootstrap-3.3.2/js/bootstrap.min.js", if ($error == "")
"../js/bootstrap-switch.min.js" { //verified so upload
); if (import_file($_POST['filename'],$description,$sfields))
$js_foot = array( {
"../js/bootstrap-filestyle.min.js", print "<div class='well text-primary col-md-offset-2'><p>" . T_("Successfully imported sample") . "&emsp;<h3>$description</h3></p></div>";
"../js/custom.js" }
); else
{
if (isset($_POST['import_form'])) print -"<div class='alert alert-danger col-md-offset-2'><p>" . T_("Error importing file. Please try again") . "</p></div>";
{ }
//form has been submitted }
$subtitle = T_("Validating and uploading"); else
xhtml_head(T_("Import sample") . ":",true,$css,$js_head,false,false,false,$subtitle); print "<div class='alert alert-danger col-md-offset-2'><p>" . T_("Error:") . " $error </p><p>" . T_("Please check imported file, go back in your browser and fix the problem") . "</p></div>";
echo "<a href='?' class='btn btn-default pull-left' ><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>";
//verifiy that exactly one primary phone number is selected
//upload to database
//verify each GET field is unique (except import_form)
$sfields = array(); xhtml_foot($js_foot);
foreach($_POST as $getv => $val)
//clean up? }
$sfields[$getv] = $val; else if (isset($_POST['import_file']))
{
$error = verify_fields($sfields); //file has been submitted
$subtitle = T_("Select columns to import");
$description = $_POST['description']; xhtml_head(T_("Import sample") . ":",true,$css,$js_head,false,false,false,$subtitle);
echo "<a href='' onclick='history.back();return false;' class='btn btn-default pull-left' ><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>";
if ($error == "")
{ //verified so upload
if (import_file($_POST['filename'],$description,$sfields)) print "<form action='' method='post' class='col-md-10 form-group col-md-offset-1'>";
{
print "<div class='well text-primary col-md-offset-2'><p>" . T_("Successfully imported sample") . "&emsp;<h3>$description</h3></p></div>"; $tmpfname = tempnam(TEMPORARY_DIRECTORY, "FOO");
} move_uploaded_file($_FILES['file']['tmp_name'],$tmpfname);
else
{ display_table(get_first_row($tmpfname));
print -"<div class='alert alert-danger col-md-offset-2'><p>" . T_("Error importing file. Please try again") . "</p></div>";
} ?>
} <input type="hidden" name="description" value="<?php if (isset($_POST['description'])) print($_POST['description']); ?>"/>
else <input type="hidden" name="filename" value="<?php echo $tmpfname; ?>"/>
print "<div class='alert alert-danger col-md-offset-2'><p>" . T_("Error:") . " $error </p><p>" . T_("Please go back in your browser and fix the problem") . "</p></div>"; <div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
//verifiy that exactly one primary phone number is selected <div class="col-md-4">
//upload to database <button id="submit" type="submit" name="import_form" class="btn btn-primary"><i class="fa fa-plus-square-o fa-lg"></i>&emsp;<?php echo T_("Add sample"); ?></button>
</div>
xhtml_foot($js_foot); </div>
} </form>
else if (isset($_POST['import_file']))
{
//file has been submitted <?php
$subtitle = T_("Select columns to import"); xhtml_foot($js_foot);
xhtml_head(T_("Import sample") . ":",true,$css,$js_head,false,false,false,$subtitle); }
echo "<a href='' onclick='history.back();return false;' class='btn btn-default pull-left' ><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>"; else
{
//need to supply file to upload
print "<form action='' method='post' class='col-md-10 form-group col-md-offset-1'>"; $subtitle = T_("Select file to upload");
xhtml_head(T_("Import sample") .":",true,$css,$js_head,false,false,false,$subtitle);
$tmpfname = tempnam(TEMPORARY_DIRECTORY, "FOO"); echo "<a href='' onclick='history.back();return false;' class='btn btn-default'><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>";
move_uploaded_file($_FILES['file']['tmp_name'],$tmpfname);
$ua = $_SERVER['HTTP_USER_AGENT'];
display_table(get_first_row($tmpfname)); if (preg_match('/Firefox/i', $ua)) $csv= "text/csv"; else $csv= ".csv";
//print "ua=" . $_SERVER['HTTP_USER_AGENT'];
?>
?> <form class="form-horizontal col-sm-12 " enctype="multipart/form-data" action="" method="post">
<p><input type="hidden" name="description" value="<?php if (isset($_POST['description'])) print($_POST['description']); ?>"/></p> <fieldset>
<input type="hidden" name="filename" value="<?php echo $tmpfname; ?>"/>
<div class="form-group"> <input type="hidden" name="MAX_FILE_SIZE" value="1000000000" />
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4"> <!-- File Button -->
<button id="submit" type="submit" name="import_form" class="btn btn-primary"><i class="fa fa-plus-square-o fa-lg"></i>&emsp;<?php echo T_("Add sample"); ?></button> <div class="form-group">
</div>
</div> <label class="col-md-4 control-label" for="file"><?php echo T_("Choose the CSV sample file to upload:"); ?></label>
<div class="col-md-4">
</form> <input id="file" name="file" class="filestyle" data-buttonBefore="true" data-iconName="fa fa-folder-open fa-lg text-primary " data-buttonText="<?php echo T_("Select file"); ?>" type="file" accept="<?php echo $csv; ?>" />
</div>
<script type="text/javascript"> </div>
$('[switch="yes"]').bootstrapSwitch()
</script> <!-- Text input-->
<div class="form-group">
<?php <label class="col-md-4 control-label" for="description"><?php echo T_("Sample description :"); ?></label>
xhtml_foot($js_foot); <div class="col-md-4">
} <input id="description" name="description" type="text" placeholder="<?php echo T_("Enter new sample name..."); ?>" class="form-control input-md">
else </div>
{ </div>
//need to supply file to upload
$subtitle = T_("Select file to upload"); <!-- Button -->
xhtml_head(T_("Import sample") .":",true,$css,$js_head,false,false,false,$subtitle); <div class="form-group">
echo "<a href='' onclick='history.back();return false;' class='btn btn-default'><i class='fa fa-chevron-left fa-lg text-primary'></i>&emsp;" . T_("Go back") . "</a>"; <label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
$ua = $_SERVER['HTTP_USER_AGENT']; <button id="submit" type="submit" name="import_file" class="btn btn-primary"><i class="fa fa-plus-square-o fa-lg"></i>&emsp;<?php echo T_("Add sample"); ?></button>
if (preg_match('/Firefox/i', $ua)) $csv= "text/csv"; else $csv= ".csv"; </div>
//print "ua=" . $_SERVER['HTTP_USER_AGENT']; </div>
?>
</fieldset>
<form class="form-horizontal col-sm-12 " enctype="multipart/form-data" action="" method="post"> </form>
<fieldset>
<?php
<input type="hidden" name="MAX_FILE_SIZE" value="1000000000" /> xhtml_foot($js_foot);
}
<!-- File Button --> ?>
<div class="form-group">
<label class="col-md-4 control-label" for="file"><?php echo T_("Choose the CSV sample file to upload:"); ?></label>
<div class="col-md-4">
<input id="file" name="file" class="filestyle" data-buttonBefore="true" data-iconName="fa fa-folder-open fa-lg text-primary " data-buttonText="<?php echo T_("Select file"); ?>" type="file" accept="<?php echo $csv; ?>" />
</div>
</div>
<!-- Text input-->
<div class="form-group">
<label class="col-md-4 control-label" for="description"><?php echo T_("Sample description :"); ?></label>
<div class="col-md-4">
<input id="description" name="description" type="text" placeholder="<?php echo T_("Enter new sample name..."); ?>" class="form-control input-md">
</div>
</div>
<!-- Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="submit"></label>
<div class="col-md-4">
<button id="submit" type="submit" name="import_file" class="btn btn-primary"><i class="fa fa-plus-square-o fa-lg"></i>&emsp;<?php echo T_("Add sample"); ?></button>
</div>
</div>
</fieldset>
</form>
<?php
xhtml_foot($js_foot);
}
?>

View File

@@ -86,7 +86,7 @@ function verify_fields($fields)
{ {
if (array_key_exists($fields["n_$val"], $names)) if (array_key_exists($fields["n_$val"], $names))
{ {
return T_("Duplicate name"); return T_("Duplicate column name") . ":&emsp;<b>" . $fields["n_$val"] . "</b>";
} }
else else
{ {
@@ -141,7 +141,7 @@ function display_table($data)
if (empty($val)) $val = "samp_$row"; if (empty($val)) $val = "samp_$row";
print "<tr><td>$value</td> print "<tr><td>$value</td>
<td><input type=\"checkbox\" name=\"i_$row\" checked=\"$checked\" switch=\"yes\" data-size=\"small\" data-on-text=\"" . TQ_("Yes") . "\" data-off-text=" . TQ_("No") . " /></td> <td class='text-center'><input type=\"checkbox\" name=\"i_$row\" checked=\"$checked\" data-toggle=\"toggle\" data-size=\"small\" data-on=\"" . TQ_("Yes") . "\" data-off=" . TQ_("No") . " /></td>
<td><input type=\"text\" value=\"$val\" name=\"n_$row\" class=\"form-control\" /></td> <td><input type=\"text\" value=\"$val\" name=\"n_$row\" class=\"form-control\" /></td>
<td>"; <td>";
print "<select name=\"t_$row\" class=\"form-control\">"; print "<select name=\"t_$row\" class=\"form-control\">";
@@ -153,7 +153,7 @@ function display_table($data)
$selected = ""; $selected = "";
} }
print "</select></td>"; print "</select></td>";
print "<td>&emsp;<input type=\"checkbox\" name=\"a_$row\" switch=\"yes\" data-size=\"small\" data-on-text=\"" . TQ_("Yes") . "\" data-off-text=" . TQ_("No") . " /></td>"; print "<td class=\"text-center\"><input type=\"checkbox\" name=\"a_$row\" data-toggle=\"toggle\" data-size=\"small\" data-on=\"" . TQ_("Yes") . "\" data-off=" . TQ_("No") . " /></td>";
print "</tr>"; print "</tr>";
$row++; $row++;
} }