461 lines
15 KiB
PHP
Executable File
461 lines
15 KiB
PHP
Executable File
<?php
|
||
/*********************************************************
|
||
程序说明:
|
||
功能说明:本程序实现参数编辑模板代码的产生,保存,预览
|
||
|
||
调用关系:调用: connectdb.inc,inc/header.inc
|
||
被调用:
|
||
|
||
变量说明:
|
||
|
||
返回值:无
|
||
|
||
作者:
|
||
|
||
修改注释:
|
||
NO.1
|
||
姓名:
|
||
时间:
|
||
修改说明:
|
||
*********************************************************/
|
||
require("../../inc/header.inc");
|
||
$DEBUG = 0;
|
||
|
||
$pubDb = 'OMC_PUB';
|
||
$sysConfTable = 'OMC_PUB.sysConf';
|
||
$sysSubsConfTable = 'OMC_PUB.sysSubsConf';
|
||
|
||
if(!isset($sysTypeNo)){
|
||
$sysTypeSql ="SELECT sysTypeNo
|
||
FROM $sysConfTable
|
||
WHERE needSubscriberConf ='1' ORDER BY sysTypeNo LIMIT 0,1
|
||
";
|
||
if($DEBUG) echo "<br>$sysTypeSql";
|
||
$sysTypeResult = mysqli_query($pubConn,$sysTypeSql);
|
||
$sysTypeRows = @mysqli_fetch_array($sysTypeResult);
|
||
$sysTypeNo = $sysTypeRows[sysTypeNo];
|
||
if($DEBUG) echo "<br>sysTypeNo=$sysTypeNo";
|
||
}
|
||
|
||
function omcGetObjDb($sysTypeNo){
|
||
$dbName = 'OBJ_'.$sysTypeNo;
|
||
return($dbName);
|
||
}
|
||
|
||
$objDb=omcGetObjDb($sysTypeNo);
|
||
if($DEBUG) echo "<br>objDb=$objDb";
|
||
if($DEBUG) echo "<br>dataTypeNo=$dataTypeNo";
|
||
$dataTypeNo=isset($dataTypeNo)?$dataTypeNo:0;
|
||
if($DEBUG) echo "<br>dataTypeNo=$dataTypeNo";
|
||
$paramConfTable = 'subsParamConf_'.$dataTypeNo;
|
||
if($DEBUG) echo "<br>paramConfTable=$paramConfTable";
|
||
$maxLevelNum = 10;
|
||
|
||
if($DEBUG) echo "<br>$paramConfTable<br>";
|
||
|
||
//----------------------
|
||
//选择语言版本
|
||
if($language == 'eng'){
|
||
$objNameField = name_2;
|
||
$objSetField = setTemplate_2 ; //语种2
|
||
}else{
|
||
$objNameField = name_1;
|
||
$objSetField = setTemplate_1 ; //语种1(默认语种)
|
||
}
|
||
//-----------------------
|
||
|
||
/*****************************保存一个新的参数编辑模板*****************************/
|
||
if($save){
|
||
if($DEBUG) echo "<br>keyId = $keyId";
|
||
if($keyId > 0){
|
||
$saveSql = "UPDATE $paramConfTable
|
||
SET $objSetField = '$codeArea'
|
||
WHERE keyId='$keyId'
|
||
";
|
||
$saveResult = mysqli_query($pubConn,$saveSql);
|
||
}else{
|
||
echo "<br>Error: keyId == NULL";
|
||
exit();
|
||
}
|
||
if($DEBUG) echo "<br>$saveSql";
|
||
echo mysqli_error($pubConn);
|
||
if($saveResult){
|
||
//更新备份文件
|
||
$csvFileName = '/usr/local/apache/htdocs/db_backup/other/'.$objDb.'.'.$paramConfTable.'.csv';
|
||
@unlink($csvFileName);
|
||
$csvFileUpdateSql=" SELECT *
|
||
INTO OUTFILE '$csvFileName'
|
||
FIELDS TERMINATED BY ','
|
||
LINES TERMINATED BY '\n'
|
||
FROM $paramConfTable
|
||
";
|
||
$csvFileUpdateResult = mysqli_query($pubConn ,$csvFileUpdateSql);
|
||
echo mysqli_error($pubConn);
|
||
echo "<script LANGUAGE=\"JavaScript\">";
|
||
echo "alert('";
|
||
echo "$strEditSuccess";
|
||
echo "')";
|
||
echo "</script>";
|
||
}else{
|
||
echo "<script LANGUAGE=\"JavaScript\">";
|
||
echo "alert('";
|
||
echo "$strEditFailure";
|
||
echo "')";
|
||
echo "</script>";
|
||
}
|
||
}
|
||
?>
|
||
<?php
|
||
/*****************************显示一个对象的编辑模板*****************************/
|
||
?>
|
||
<body bgcolor="#E6E6E6">
|
||
|
||
<script LANGUAGE="JavaScript">
|
||
function chgSysType(){
|
||
var baseUrl,urlAdd,url;
|
||
baseUrl='<?php echo"$PHP_SELF?";?>';
|
||
urlAdd=document.confForm.dataList.options[document.confForm.dataList.selectedIndex].value;
|
||
url=baseUrl+urlAdd;
|
||
window.location=url;
|
||
}
|
||
function chgObj(){
|
||
var baseUrl,urlAdd,url;
|
||
baseUrl='<?php echo"$PHP_SELF?sysTypeNo=$sysTypeNo&dataTypeNo=$dataTypeNo&keyId=";?>';
|
||
urlAdd=document.confForm.keyId.options[document.confForm.keyId.selectedIndex].value;
|
||
url = baseUrl+urlAdd;
|
||
window.location=url;
|
||
}
|
||
function getOffset(){
|
||
var offsetStr;
|
||
var bgnOffset,endOffset;
|
||
var bgnByte = document.confForm.bgnByte.options[document.confForm.bgnByte.selectedIndex].value;
|
||
var bgnBit = document.confForm.bgnBit.options[document.confForm.bgnBit.selectedIndex].value;
|
||
var endByte = document.confForm.endByte.options[document.confForm.endByte.selectedIndex].value;
|
||
var endBit = document.confForm.endBit.options[document.confForm.endBit.selectedIndex].value;
|
||
|
||
if(bgnBit >= 0){
|
||
bgnOffset = bgnByte+"."+bgnBit;
|
||
}else{
|
||
bgnOffset = bgnByte;
|
||
}
|
||
|
||
if(endBit >= 0){
|
||
endOffset = endByte+"."+endBit;
|
||
}else{
|
||
endOffset = endByte;
|
||
}
|
||
offsetStr = bgnOffset+"-"+endOffset;
|
||
return(offsetStr);
|
||
}
|
||
|
||
function addInputField()
|
||
{
|
||
var objName = document.confForm.objName.value;
|
||
var unitName = document.confForm.unitName.value;
|
||
var offsetStr = getOffset();
|
||
var unitDef = document.confForm.inputEditCode.options[document.confForm.inputEditCode.selectedIndex].value;
|
||
|
||
if(document.confForm.codeArea.value.length <= 0){
|
||
document.confForm.codeArea.value += objName;
|
||
}
|
||
if(unitName.length <= 0){
|
||
unitName += "unitName";
|
||
}
|
||
document.confForm.codeArea.value += "\n[unit]"+unitName+"[u]"+offsetStr+"[u]input";
|
||
document.confForm.codeArea.value += "\n[v]"+unitDef;
|
||
}
|
||
|
||
function addSelecArea()
|
||
{
|
||
var objName = document.confForm.objName.value;
|
||
var unitName = document.confForm.unitName.value;
|
||
var offsetStr = getOffset();
|
||
var unitDef = document.confForm.inputEditCode.options[document.confForm.inputEditCode.selectedIndex].value;
|
||
var optNum = document.confForm.optNum.value;
|
||
|
||
if(document.confForm.codeArea.value.length <= 0){
|
||
document.confForm.codeArea.value += objName;
|
||
}
|
||
if(unitName.length <= 0){
|
||
unitName += "unitName";
|
||
}
|
||
document.confForm.codeArea.value += "\n[unit]"+unitName+"[u]"+offsetStr+"[u]select";
|
||
for(i=0;i<optNum;i++){
|
||
document.confForm.codeArea.value += "\n[v]DecValue[opt]MenuName";
|
||
}
|
||
}
|
||
|
||
|
||
function preview(sysTypeNo,objKeyId,initValue){
|
||
URL="../../subscriberManage/pubSubsManage/paramEdit.php?TEST=1&sysTypeNo="+sysTypeNo+"&keyId="+objKeyId+"&setValue="+initValue;
|
||
var msgWindow = open(URL, 'newWin', 'toolbar=no,directories=no,menubar=no,scrollbars=yes,resizable=yes,status=yes,width=400,height=350');
|
||
msgWindow.focus();
|
||
}
|
||
|
||
|
||
</script>
|
||
<?php
|
||
echo "\n<script language=\"javascript\" src=\"../../inc/expand.js\" > </script>";
|
||
?>
|
||
<form method="POST" name="confForm" action="<?php echo"$PHP_SELF";?>" >
|
||
<table border="1" width="100%" cellpadding="2" cellspacing="0" bordercolor="#666666" bordercolordark="#FFFFFF" bgcolor="#E6E6E6" >
|
||
<tr bgcolor="#E6E6E6">
|
||
<td width="100%" colspan="2" align="center">
|
||
<font size=3><b><?php echo "Subscriber Parameter's GUI Edit Design"; ?></b></font>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width="20%">
|
||
<?php echo $strSelectDeviceType; ?>
|
||
</td>
|
||
<td width="80%">
|
||
<select size="1" name="dataList" onChange="javascript:chgSysType()">
|
||
<?php
|
||
//显示选择设备类型下拉菜单
|
||
$sysTypeSql ="SELECT $sysConfTable.sysTypeNo,menuName,dataTypeNo
|
||
FROM $sysConfTable,$sysSubsConfTable
|
||
WHERE needSubscriberConf > '0'
|
||
AND $sysConfTable.sysTypeNo=$sysSubsConfTable.sysTypeNo
|
||
ORDER BY $sysConfTable.sysTypeNo
|
||
";
|
||
if($DEBUG) echo "<br>sysTypeSql=$sysTypeSql";
|
||
$sysTypeResult = mysqli_query($pubConn,$sysTypeSql);
|
||
$sysTypeRows = @mysqli_fetch_array($sysTypeResult);
|
||
do{
|
||
echo "<option value=\"sysTypeNo=$sysTypeRows[sysTypeNo]&dataTypeNo=$sysTypeRows[dataTypeNo]\" ";
|
||
if($sysTypeRows[sysTypeNo] == $sysTypeNo && $sysTypeRows[dataTypeNo] ==$dataTypeNo){
|
||
echo"selected";
|
||
}
|
||
echo ">";
|
||
echo "$sysTypeRows[menuName]";
|
||
echo "</option>";
|
||
}while($sysTypeRows = mysqli_fetch_array($sysTypeResult));
|
||
?>
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td>
|
||
<?php echo $strSelectParaType; ?>
|
||
</td>
|
||
<td>
|
||
|
||
<select size="1" name="keyId" onChange="javascript:chgObj()">
|
||
<?php
|
||
$orderBy = '';
|
||
for($i=1;$i<=$maxLevelNum;$i++){
|
||
if($i < $maxLevelNum){
|
||
$tempStr = ' level_'.$i.',';
|
||
}else{
|
||
$tempStr = ' level_'.$i;
|
||
}
|
||
$orderBy .= $tempStr;
|
||
}
|
||
|
||
$objSql = "SELECT * FROM $paramConfTable
|
||
ORDER BY $orderBy
|
||
";
|
||
if($DEBUG) echo "<br>objSql=$objSql";
|
||
$objResult = mysqli_query($pubConn ,$objSql);
|
||
|
||
//显示选择参数类型下拉菜单
|
||
echo"<option value=\"new\">---------------Please Chose--------------</option>";
|
||
while($objRows = mysqli_fetch_array($objResult)){
|
||
echo "<option value=\"$objRows[keyId]\" ";
|
||
if($objRows[keyId] == $keyId && $keyId > 0){
|
||
echo "selected";
|
||
}
|
||
echo ">";
|
||
$spaceStr = '';
|
||
$oidStr='';
|
||
for($i= $maxLevelNum; $i>=1; $i--){
|
||
$levelEndId = 'level_'.$i;
|
||
if($objRows[$levelEndId] > 0){
|
||
for($j=1;$j<=$i;$j++){
|
||
$spaceStr .='  ';
|
||
$levelBgnId = 'level_'.$j;
|
||
$oidStr .=$objRows[$levelBgnId].'.';
|
||
}
|
||
$spaceStr .='|--';
|
||
break;
|
||
}
|
||
}
|
||
echo "$spaceStr $oidStr $objRows[$objNameField]";
|
||
echo"</option>";
|
||
}
|
||
?>
|
||
</select>
|
||
<?php
|
||
if($DEBUG) echo "<br>selected Id = $keyId";
|
||
if($DEBUG) echo "<br>objSql = $objSql";
|
||
if($DEBUG) echo mysqli_error($pubConn);
|
||
?>
|
||
</td>
|
||
</tr>
|
||
<?php
|
||
$objSql = "SELECT $objNameField,$objSetField,length,initValue,valueType FROM $paramConfTable WHERE keyId = '$keyId'";
|
||
$objResult = mysqli_query($pubConn ,$objSql);
|
||
$objRows = @mysqli_fetch_array($objResult);
|
||
$length = $objRows[length];
|
||
$objName = $objRows[$objNameField];
|
||
$initValue = $objRows[initValue];
|
||
$valueType = $objRows[valueType];
|
||
if($DEBUG) echo "<br>valueType=$valueType";
|
||
?>
|
||
<tr bgcolor="#E6E6E6">
|
||
<td colspan="2" width="100%">
|
||
<font size=2><b>Design Area</b></font>
|
||
<?php if($DEBUG) echo "<br>objSql=$objSql<br>";?>
|
||
<?php echo mysqli_error($pubConn);?>
|
||
</td>
|
||
</tr>
|
||
<?php //------参数名----------- ?>
|
||
<tr>
|
||
<td>Name</td>
|
||
<td><input type="text" name="objName" size="40" value="<?php echo "$objName";?>"></td>
|
||
</tr>
|
||
<?php //------参数偏移量----------- ?>
|
||
<tr>
|
||
<td>offset</td>
|
||
<td>
|
||
From <select size="1" name="bgnByte">
|
||
<?php
|
||
if($valueType == '2'){
|
||
echo "<option value=\"0\">0</option>";
|
||
}else{
|
||
for($i=0;$i<$length;$i++){
|
||
$i = (strlen($i) < 2)?'0'.$i:$i;
|
||
echo "<option value=\"$i\">$i</option>";
|
||
}
|
||
}
|
||
?>
|
||
</select>
|
||
byte
|
||
<select size="1" name="bgnBit"><option value="0">0</option>
|
||
<option value="1">1</option><option value="2">2</option>
|
||
<option value="3">3</option><option value="4">4</option>
|
||
<option value="5">5</option><option value="6">6</option>
|
||
<option value="7">7</option>
|
||
</select>bit
|
||
To<select size="1" name="endByte">
|
||
<?php
|
||
if($valueType == '2'){
|
||
$i=$length - 1;
|
||
echo "<option value=\"$i\">$i</option>";
|
||
}else{
|
||
for($i=0;$i<$length;$i++){
|
||
$i = (strlen($i) < 2)?'0'.$i:$i;
|
||
echo "<option value=\"$i\">$i</option>";
|
||
}
|
||
}
|
||
?>
|
||
</select>byte
|
||
<select size="1" name="endBit"><option value="7">7</option>
|
||
<option value="6">6</option><option value="5">5</option>
|
||
<option value="4">4</option><option value="3">3</option>
|
||
<option value="2">2</option><option value="1">1</option>
|
||
<option value="0">0</option>
|
||
</select>bit
|
||
<?php
|
||
switch($valueType){
|
||
case '2':
|
||
echo "(Value Type : Integer)";
|
||
break;
|
||
case '3':
|
||
echo "(Value Type : Asc String)";
|
||
break;
|
||
case '4':
|
||
echo "(Value Type : Hex String)";
|
||
break;
|
||
default:
|
||
break;
|
||
}
|
||
?>
|
||
</td>
|
||
</tr>
|
||
<?php //------单元编辑名----------- ?>
|
||
<tr>
|
||
<td>Unit Name</td>
|
||
<td><input type="text" name="unitName" size="30">
|
||
<!--
|
||
Type:<select size="1" name="unitType">
|
||
<option value="others">others</option>
|
||
<option value="telNum">Telephone number</option>
|
||
<option value="ipAddr">IP address</option>
|
||
</select>(need if oct string)
|
||
-->
|
||
</td>
|
||
</tr>
|
||
<?php //------输入框----------- ?>
|
||
<tr>
|
||
<td>Input Field</td>
|
||
<td> mode:
|
||
<select size="1" name="inputEditCode">
|
||
<?php
|
||
switch($valueType){
|
||
case '2':
|
||
echo "<option value=\"keepDec-high-0\">Keep Dec and high fill '0'</option>";
|
||
//echo "<option value=\"toHex-high-0\">To Hex and high fill '0'</option>";
|
||
break;
|
||
case '3':
|
||
echo "<option value=\"keepAsc-low-F\">Keep AscII and low fill F</option>";
|
||
break;
|
||
case '4':
|
||
echo "<option value=\"toDec-high-0\">Turn to Dec and high fill '0'</option>";
|
||
echo "<option value=\"keepHex-high-0\">Keep Hex and high fill '0'</option>";
|
||
echo "<option value=\"keepHex-low-E\">Keep Hex and low fill 'E'</option>";
|
||
echo "<option value=\"keepHex-low-F\">Keep Hex and low fill 'F'</option>";
|
||
echo "<option value=\"toAsc-low-0\">Turn to AscII and low fill 0</option>";
|
||
break;
|
||
default:
|
||
echo "<option value=\"keepHex-high-0\">Error:Unknown value type!!</option>";
|
||
break;
|
||
}
|
||
|
||
|
||
if($valueType == '4'){
|
||
|
||
}elseif($valueType == '2'){
|
||
|
||
|
||
}else{
|
||
|
||
}
|
||
?>
|
||
</select>
|
||
<input type="button" value="Add input field" name="B2" onclick="javascript:addInputField()"></td>
|
||
</tr>
|
||
<?php //------下拉菜单----------- ?>
|
||
<tr>
|
||
<td>Put down Menu</td>
|
||
<td>Option number:
|
||
<input type="text" name="optNum" size="5">
|
||
<input type="button" value="ok" name="B7" onclick="javascript:addSelecArea()">
|
||
Please change "decValue" and "menuName"
|
||
</td>
|
||
</tr>
|
||
<tr bgcolor="#E6E6E6">
|
||
<td colspan="2" width="100%"><font size=2><b>Created Code</b></font></td>
|
||
</tr>
|
||
<?php //------编辑代码----------- ?>
|
||
<tr>
|
||
<td colspan="2" width="100%"><textarea rows="10" name="codeArea" cols="75"><?php echo "$objRows[$objSetField]"?></textarea></td>
|
||
</tr>
|
||
</table>
|
||
<br>
|
||
<input type="submit" value="Save" name="save">
|
||
<input type="Reset" value="Reset" >
|
||
<input type="button" value="Preview" onclick="javascript:preview(<?php echo "'$sysTypeNo','$keyId','$initValue'";?>)">
|
||
<input type="hidden" value="<?php echo $sysTypeNo; ?>" name="sysTypeNo">
|
||
<input type="hidden" value="<?php echo $dataTypeNo; ?>" name="dataTypeNo">
|
||
</form>
|
||
<hr>
|
||
说明:
|
||
<br>1.一个参数值由多个值组成,于是可分成多个编辑单元,以便用户编辑。
|
||
<br>2.每个编辑单元,可制定不同的编辑方式(输入框或下拉菜单)。
|
||
<br>3.当使用下拉菜单时,需要替换代码区中的"[v]DecValue[opt]MenuName"中的DecValue(十进制值)和MenuName(菜单名)。
|
||
<br>4.如果某段数值预留不用,请用"[unit]reserved[u]bgnOffset-endOffset[u]select"标示。
|
||
<br>5.请注意,不能删除语法标签[unit],[u],[v],[opt],[remark],同时也不要在说明中使用这些标签。
|
||
<br>6.生成的编辑代码保存后,可点击"Preview"来查看是否正确。
|
||
</body>
|
||
</html>
|