Files
EasySoft-ZenTaoPMS/module/search/view/buildform.html.php
wangchunsheng 1f9c3853db * code for task#782.
* code for task#795.
 * rewrite the datepicker logic.
2012-06-22 09:45:14 +00:00

282 lines
9.0 KiB
PHP

<?php
/**
* The buildform view of search module of ZenTaoPMS.
*
* @copyright Copyright 2009-2012 青岛易软天创网络科技有限公司 (QingDao Nature Easy Soft Network Technology Co,LTD www.cnezsoft.com)
* @license LGPL (http://www.gnu.org/licenses/lgpl.html)
* @author Chunsheng Wang <chunsheng@cnezsoft.com>
* @package search
* @version $Id$
* @link http://www.zentao.net
*/
?>
<?php include '../../common/view/alert.html.php';?>
<?php include '../../common/view/datepicker.html.php';?>
<style>
.helplink {display:none}
.button-s, .button-r, .button-c {padding:3px}
.select-1 {width:80%}
.text-2{margin-bottom:2px}
.select-2{margin-bottom:2px}
.date{width:104px}
</style>
<script language='Javascript'>
var params = <?php echo json_encode($fieldParams);?>;
var groupItems = <?php echo $config->search->groupItems;?>;
var setQueryTitle = '<?php echo $lang->search->setQueryTitle;?>';
var module = '<?php echo $module;?>';
var actionURL = '<?php echo $actionURL;?>';
/**
* When the value of the fields select changed, set the operator and value of the new field.
*
* @param string $fieldName
* @param int $fieldNO
* @access public
* @return void
*/
function setField(fieldName, fieldNO)
{
$('#operator' + fieldNO).val(params[fieldName]['operator']); // Set the operator according the param setting.
$('#valueBox' + fieldNO).html($('#box' + fieldName).children().clone());
$('#valueBox' + fieldNO).children().attr({name : 'value' + fieldNO, id : 'value' + fieldNO});
if(typeof(params[fieldName]['class']) != undefined && params[fieldName]['class'] == 'date')
{
$("#value" + fieldNO).datePicker({createButton:true, startDate:startDate})
$("#value" + fieldNO).addClass('date'); // Shortcut the width of the datepicker to make sure align with others.
}
}
/**
* Reset forms.
*
* @access public
* @return void
*/
function resetForm()
{
for(i = 1; i <= groupItems * 2; i ++)
{
$('#value' + i).val('');
}
}
/**
* Show more fields.
*
* @access public
* @return void
*/
function showmore()
{
for(i = 1; i <= groupItems * 2; i ++)
{
if(i != 1 && i != groupItems + 1 )
{
$('#searchbox' + i).removeClass('hidden');
}
}
$('#searchmore').addClass('hidden');
$('#searchlite').removeClass('hidden');
$('#formType').val('more');
}
/**
* Show lite search form.
*
* @access public
* @return void
*/
function showlite()
{
for(i = 1; i <= groupItems * 2; i ++)
{
if(i != 1 && i != groupItems + 1)
{
$('#value' + i).val('');
$('#searchbox' + i).addClass('hidden');
}
}
$('#searchmore').removeClass('hidden');
$('#searchlite').addClass('hidden');
$('#formType').val('lite');
}
/**
* Save the query.
*
* @access public
* @return void
*/
function saveQuery()
{
jPrompt(setQueryTitle, '', '', function(r)
{
if(!r) return;
saveQueryLink = createLink('search', 'saveQuery');
$.post(saveQueryLink, {title: r, module: module}, function(data)
{
if(data == 'success') location.reload();
});
});
}
/**
* Execute a query.
*
* @param int $queryID
* @access public
* @return void
*/
function executeQuery(queryID)
{
if(!queryID) return;
location.href = actionURL.replace('myQueryID', queryID);
}
/**
* Delete a query.
*
* @access public
* @return void
*/
function deleteQuery()
{
queryID = $('#queryID').val();
if(!queryID) return;
hiddenwin.location.href = createLink('search', 'deleteQuery', 'queryID=' + queryID);
}
</script>
<div class='hidden'>
<?php
/* Print every field as an html object, select or input. Thus when setFiled is called, copy it's html to build the search form. */
foreach($fieldParams as $fieldName => $param)
{
echo "<span id='box$fieldName'>";
if($param['control'] == 'select') echo html::select($fieldName, $param['values'], '', 'class=select-2');
if($param['control'] == 'input') echo html::input($fieldName, '', "class='text-2'");
echo '</span>';
}
?>
</div>
<form method='post' action='<?php echo $this->createLink('search', 'buildQuery');?>' target='hiddenwin' id='searchform'>
<table class='table-1'>
<tr valign='middle'>
<th width='10' class='bg-gray'><?php echo $lang->search->common;?></th>
<td class='a-right'>
<nobr>
<?php
$formSessionName = $module . 'Form';
$formSession = $this->session->$formSessionName;
$fieldNO = 1;
for($i = 1; $i <= $groupItems; $i ++)
{
$spanClass = $i == 1 ? 'inline' : 'hidden';
echo "<span id='searchbox$fieldNO' class='$spanClass'>";
/* Get params of current field. */
$currentField = $formSession["field$fieldNO"];
$param = $fieldParams[$currentField];
/* Print and or. */
if($i == 1) echo "<span id='searchgroup1'><strong>{$lang->search->group1}</strong></span>" . html::hidden("andOr$fieldNO", 'AND');
if($i > 1) echo "<br />" . html::select("andOr$fieldNO", $lang->search->andor, $formSession["andOr$fieldNO"]);
/* Print field. */
echo html::select("field$fieldNO", $searchFields, $formSession["field$fieldNO"], "onchange='setField(this.value, $fieldNO)'");
/* Print operator. */
echo html::select("operator$fieldNO", $lang->search->operators, $formSession["operator$fieldNO"]);
/* Print value. */
echo "<span id='valueBox$fieldNO'>";
if($param['control'] == 'select') echo html::select("value$fieldNO", $param['values'], $formSession["value$fieldNO"], 'class=select-2');
if($param['control'] == 'input')
{
$fieldName = $formSession["field$fieldNO"];
$extraClass = isset($param['class']) ? $param['class'] : '';
echo html::input("value$fieldNO", $formSession["value$fieldNO"], "class='text-2 $extraClass'");
}
echo '</span>';
$fieldNO ++;
echo '</span>';
}
?>
</nobr>
</td>
<td class='a-center' width='60'><nobr><?php echo html::select('groupAndOr', $lang->search->andor, $formSession['groupAndOr'])?></nobr></td>
<td class='a-right'>
<nobr>
<?php
for($i = 1; $i <= $groupItems; $i ++)
{
$spanClass = $i == 1 ? 'inline' : 'hidden';
echo "<span id='searchbox$fieldNO' class='$spanClass'>";
/* Get params of current field. */
$currentField = $formSession["field$fieldNO"];
$param = $fieldParams[$currentField];
/* Print and or. */
if($i == 1) echo "<span id='searchgroup2'><strong>{$lang->search->group2}</strong></span>" . html::hidden("andOr$fieldNO", 'AND');
if($i > 1) echo "<br />" . html::select("andOr$fieldNO", $lang->search->andor, $formSession["andOr$fieldNO"]);
/* Print field. */
echo html::select("field$fieldNO", $searchFields, $formSession["field$fieldNO"], "onchange='setField(this.value, $fieldNO)'");
/* Print operator. */
echo html::select("operator$fieldNO", $lang->search->operators, $formSession["operator$fieldNO"]);
/* Print value. */
echo "<span id='valueBox$fieldNO'>";
if($param['control'] == 'select') echo html::select("value$fieldNO", $param['values'], $formSession["value$fieldNO"], 'class=select-2');
if($param['control'] == 'input')
{
$fieldName = $formSession["field$fieldNO"];
$extraClass = isset($param['class']) ? $param['class'] : '';
echo html::input("value$fieldNO", $formSession["value$fieldNO"], "class='text-2 $extraClass'");
}
echo '</span>';
$fieldNO ++;
echo '</span>';
}
?>
</nobr>
</td>
<td width='100'>
<nobr>
<?php
echo html::hidden('module', $module);
echo html::hidden('actionURL', $actionURL);
echo html::hidden('groupItems', $groupItems);
echo html::submitButton($lang->search->common);
echo html::commonButton($lang->search->reset, 'onclick=resetForm();');
echo html::commonButton($lang->save, 'onclick=saveQuery()');
?>
</nobr>
</td>
<td width='250' class='a-center'>
<?php
echo html::select('queryID', $queries, $queryID, 'class=select-1 onchange=executeQuery(this.value)');
if(common::hasPriv('search', 'deleteQuery')) echo html::commonButton(' x ', 'onclick=deleteQuery();');
?>
</td>
<th width='10' class='bg-gray' style='cursor:pointer; padding:0'>
<span id='searchmore' onclick='showmore()' style='width:100%; height:100%'><?php echo $lang->search->more;?></span>
<span id='searchlite' onclick='showlite()' style='width:100%; height:100%' class='hidden'><?php echo $lang->search->lite;?></span>
<?php echo html::hidden('formType', 'lite');?>
</th>
</tr>
</table>
</form>
<script language='Javascript'>
<?php if(isset($formSession['formType'])) echo "show{$formSession['formType']}()";?>
</script>