Fix AJAX rendering of query results
This commit is contained in:
parent
ebe2cb6eda
commit
4c56f3e678
@ -135,6 +135,8 @@ class Query extends xmlTemplate {
|
|||||||
$bases = get_request('base','REQUEST',false,null);
|
$bases = get_request('base','REQUEST',false,null);
|
||||||
$query['filter'] = get_request('filter','REQUEST',false,'objectClass=*');
|
$query['filter'] = get_request('filter','REQUEST',false,'objectClass=*');
|
||||||
$query['scope'] = get_request('scope','REQUEST',false,'sub');
|
$query['scope'] = get_request('scope','REQUEST',false,'sub');
|
||||||
|
$query['size_limit'] = get_request('size_limit','REQUEST',false,$_SESSION[APPCONFIG]->getValue('search','size_limit'));
|
||||||
|
$query['format'] = get_request('format','REQUEST',false,$_SESSION[APPCONFIG]->getValue('search','display'));
|
||||||
$attrs = get_request('display_attrs','REQUEST');
|
$attrs = get_request('display_attrs','REQUEST');
|
||||||
|
|
||||||
$attrs = preg_replace('/\s+/','',$attrs);
|
$attrs = preg_replace('/\s+/','',$attrs);
|
||||||
|
@ -262,30 +262,29 @@ function hideall(key,except) {
|
|||||||
|
|
||||||
$this->drawBaseTabs();
|
$this->drawBaseTabs();
|
||||||
$ado = $this->template->getAttrDisplayOrder();
|
$ado = $this->template->getAttrDisplayOrder();
|
||||||
|
$counter = 0;
|
||||||
|
|
||||||
switch(get_request('format','REQUEST',false,'table')) {
|
foreach ($this->template->results as $base => $results) {
|
||||||
case 'list':
|
$counter++;
|
||||||
|
|
||||||
$counter = 0;
|
if (! $show = get_request('show','REQUEST'))
|
||||||
|
$show = ($counter === 1 ? $this->getAjaxRef($base) : null);
|
||||||
|
|
||||||
foreach ($this->template->results as $base => $results) {
|
printf('<div id="DN%s" style="display: %s">',
|
||||||
if (! $show = get_request('show','REQUEST'))
|
$this->getAjaxRef($base), ($show == $this->getAjaxRef($base) ? '' : 'none'));
|
||||||
$show = ($counter++ === 0 ? $this->getAjaxRef($base) : null);
|
|
||||||
|
|
||||||
printf('<div id="DN%s" style="display: %s">',
|
echo '<table class="result_box" border=0 width=100%>';
|
||||||
$this->getAjaxRef($base),
|
echo '<tr><td>';
|
||||||
($show == $this->getAjaxRef($base) ? '' : 'none'));
|
echo '<br/>';
|
||||||
|
echo '<br/>';
|
||||||
|
|
||||||
echo '<table class="result_box" border=0 width=100%>';
|
$this->drawResultsTable($base,count($results));
|
||||||
echo '<tr><td>';
|
|
||||||
echo '<br/>';
|
|
||||||
echo '<br/>';
|
|
||||||
|
|
||||||
$this->drawResultsTable($base,count($results));
|
echo '<br/>';
|
||||||
|
echo '<br/>';
|
||||||
echo '<br/>';
|
|
||||||
echo '<br/>';
|
|
||||||
|
|
||||||
|
switch(get_request('format','REQUEST',false,$_SESSION[APPCONFIG]->getValue('search','display'))) {
|
||||||
|
case 'list':
|
||||||
foreach ($results as $dn => $dndetails) {
|
foreach ($results as $dn => $dndetails) {
|
||||||
$dndetails = array_change_key_case($dndetails);
|
$dndetails = array_change_key_case($dndetails);
|
||||||
|
|
||||||
@ -338,45 +337,17 @@ function hideall(key,except) {
|
|||||||
echo '<br/>';
|
echo '<br/>';
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '</td></tr>';
|
break;
|
||||||
echo '</table>';
|
|
||||||
echo '</div>';
|
|
||||||
|
|
||||||
echo "\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'table':
|
|
||||||
|
|
||||||
# Display the results.
|
# Display the results.
|
||||||
$counter = 0;
|
case 'table':
|
||||||
foreach ($this->template->results as $base => $results) {
|
|
||||||
if (! $show = get_request('show','REQUEST'))
|
|
||||||
$show = ($counter++ === 0 ? $this->getAjaxRef($base) : null);
|
|
||||||
|
|
||||||
printf('<div id="DN%s" style="display: %s">',
|
|
||||||
$this->getAjaxRef($base),
|
|
||||||
($show == $this->getAjaxRef($base) ? '' : 'none'));
|
|
||||||
|
|
||||||
echo '<table class="result_box" border=0 width=100%>';
|
|
||||||
echo '<tr><td>';
|
|
||||||
echo '<br/>';
|
|
||||||
echo '<br/>';
|
|
||||||
|
|
||||||
$this->drawResultsTable($base,count($results));
|
|
||||||
|
|
||||||
echo '<br/>';
|
|
||||||
echo '<br/>';
|
|
||||||
|
|
||||||
if (! $results) {
|
if (! $results) {
|
||||||
echo _('Search returned no results');
|
echo _('Search returned no results');
|
||||||
echo '</td></tr></table>';
|
|
||||||
echo '</div>';
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '<form action="cmd.php" method="post" name="massform">';
|
printf('<form action="cmd.php" method="post" id="massform_%s">',$counter);
|
||||||
printf('<input type="hidden" name="server_id" value="%s" />',$server->getIndex());
|
printf('<input type="hidden" name="server_id" value="%s" />',$server->getIndex());
|
||||||
|
|
||||||
foreach ($this->template->resultsdata[$base]['attrs'] as $attr)
|
foreach ($this->template->resultsdata[$base]['attrs'] as $attr)
|
||||||
@ -399,20 +370,20 @@ function hideall(key,except) {
|
|||||||
echo '</thead>';
|
echo '</thead>';
|
||||||
|
|
||||||
echo '<tbody class="scroll">';
|
echo '<tbody class="scroll">';
|
||||||
$counter = 0;
|
$j = 0;
|
||||||
foreach ($results as $dn => $dndetails) {
|
foreach ($results as $dn => $dndetails) {
|
||||||
$counter++;
|
$j++;
|
||||||
$dndetails = array_change_key_case($dndetails);
|
$dndetails = array_change_key_case($dndetails);
|
||||||
|
|
||||||
# Temporarily set our DN, for rendering that leverages our DN (eg: JpegPhoto)
|
# Temporarily set our DN, for rendering that leverages our DN (eg: JpegPhoto)
|
||||||
$this->template->setDN($dn);
|
$this->template->setDN($dn);
|
||||||
|
|
||||||
printf('<tr class="%s" id="tr_ma%s" onClick="var cb=document.getElementById(\'ma%s\'); cb.checked=!cb.checked;">',
|
printf('<tr class="%s" id="tr_ma_%s_%s" onClick="var cb=document.getElementById(\'ma_%s_%s\'); cb.checked=!cb.checked;">',
|
||||||
$counter%2 ? 'odd' : 'even',$counter,$counter);
|
$j%2 ? 'even' : 'odd',$j,$counter,$j,$counter);
|
||||||
|
|
||||||
# Is mass action enabled.
|
# Is mass action enabled.
|
||||||
if ($_SESSION[APPCONFIG]->getValue('mass','enabled'))
|
if ($_SESSION[APPCONFIG]->getValue('mass','enabled'))
|
||||||
printf('<td><input type="checkbox" id="ma%s" name="dn[]" value="%s" onclick="this.checked=!this.checked;" /></td>',$counter,$dn);
|
printf('<td><input type="checkbox" id="ma_%s_%s" name="dn[]" value="%s" onclick="this.checked=!this.checked;" /></td>',$j,$counter,$dn);
|
||||||
|
|
||||||
$href = sprintf('cmd=template_engine&server_id=%s&dn=%s',$server->getIndex(),rawurlencode($dn));
|
$href = sprintf('cmd=template_engine&server_id=%s&dn=%s',$server->getIndex(),rawurlencode($dn));
|
||||||
printf('<td class="icon"><a href="cmd.php?%s"><img src="%s/%s" alt="icon" /></a></td>',
|
printf('<td class="icon"><a href="cmd.php?%s"><img src="%s/%s" alt="icon" /></a></td>',
|
||||||
@ -454,12 +425,14 @@ function hideall(key,except) {
|
|||||||
|
|
||||||
# Is mass action enabled.
|
# Is mass action enabled.
|
||||||
if ($_SESSION[APPCONFIG]->getValue('mass','enabled')) {
|
if ($_SESSION[APPCONFIG]->getValue('mass','enabled')) {
|
||||||
printf('<tr class="%s">',++$counter%2 ? 'odd' : 'even',$counter);
|
printf('<tr class="%s">',++$j%2 ? 'odd' : 'even');
|
||||||
echo '<td><input type="checkbox" name="allbox" value="1" onclick="CheckAll(1);" /></td>';
|
printf('<td><input type="checkbox" name="allbox" value="1" onclick="CheckAll(1,%s);" /></td>',$counter);
|
||||||
printf('<td colspan=%s>',2+count(explode(',',$ado)));
|
printf('<td colspan=%s>',2+count(explode(',',$ado)));
|
||||||
echo '<select name="cmd" onChange="if (this.value) submit();" style="font-size: 12px">';
|
echo '<select name="cmd" onChange="if (this.value) submit();" style="font-size: 12px">';
|
||||||
|
|
||||||
foreach ($mass_actions as $action => $display)
|
foreach ($mass_actions as $action => $display)
|
||||||
printf('<option value="%s">%s</option>',$display,$action);
|
printf('<option value="%s">%s</option>',$display,$action);
|
||||||
|
|
||||||
echo '</select>';
|
echo '</select>';
|
||||||
echo '</td>';
|
echo '</td>';
|
||||||
echo '</tr>';
|
echo '</tr>';
|
||||||
@ -468,19 +441,30 @@ function hideall(key,except) {
|
|||||||
echo '</tbody>';
|
echo '</tbody>';
|
||||||
echo '</table>';
|
echo '</table>';
|
||||||
echo '</form>';
|
echo '</form>';
|
||||||
echo '</td></tr>';
|
|
||||||
echo '</table>';
|
|
||||||
echo '</div>';
|
|
||||||
echo "\n\n";
|
echo "\n\n";
|
||||||
|
|
||||||
echo '<script type="text/javascript" language="javascript">'."\n";
|
break;
|
||||||
echo "
|
|
||||||
function CheckAll(setbgcolor) {
|
default:
|
||||||
var deon=0;
|
printf('Have ID [%s], run this query for page [%s]',$this->template_id,$this->page);
|
||||||
for (var i=0;i<document.massform.elements.length;i++) {
|
}
|
||||||
var e = document.massform.elements[i];
|
|
||||||
|
echo '</td></tr>';
|
||||||
|
echo '</table>';
|
||||||
|
echo '</div>';
|
||||||
|
echo "\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (get_request('format','REQUEST',false,'table') == 'table') {
|
||||||
|
echo '<script type="text/javascript" language="javascript">'."\n";
|
||||||
|
echo "
|
||||||
|
function CheckAll(setbgcolor,form) {
|
||||||
|
htmlform = document.getElementById('massform_'+form);
|
||||||
|
|
||||||
|
for (var i=0;i<htmlform.elements.length;i++) {
|
||||||
|
var e = htmlform.elements[i];
|
||||||
if (e.type == 'checkbox' && e.name != 'allbox') {
|
if (e.type == 'checkbox' && e.name != 'allbox') {
|
||||||
e.checked = document.massform.allbox.checked;
|
e.checked = htmlform.allbox.checked;
|
||||||
if (!document.layers && setbgcolor) {
|
if (!document.layers && setbgcolor) {
|
||||||
var tr = document.getElementById('tr_'+e.id);
|
var tr = document.getElementById('tr_'+e.id);
|
||||||
if (e.checked) {
|
if (e.checked) {
|
||||||
@ -494,14 +478,8 @@ var deon=0;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
echo '</script>';
|
echo '</script>';
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
printf('Have ID [%s], run this query for page [%s]',$this->template_id,$this->page);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function drawSubTitle($subtitle=null) {
|
public function drawSubTitle($subtitle=null) {
|
||||||
@ -596,13 +574,17 @@ var deon=0;
|
|||||||
foreach (array('list','table') as $f) {
|
foreach (array('list','table') as $f) {
|
||||||
echo ' ';
|
echo ' ';
|
||||||
|
|
||||||
if (get_request('format','REQUEST') == $f) {
|
if (get_request('format','REQUEST',false,$_SESSION[APPCONFIG]->getValue('search','display')) == $f) {
|
||||||
printf('<b>%s</b>',_($f));
|
printf('<b>%s</b>',_($f));
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$query_string = array_to_query_string($_GET,array('format','cmd'));
|
$query_string = htmlspecialchars(sprintf('%s&format=%s&show=%s&focusbase=%s',array_to_query_string($_GET,array('format','meth')),$f,$this->getAjaxRef($base),$base));
|
||||||
$query_string .= sprintf('&format=%s&show=%s',$f,$this->getAjaxRef($base));
|
|
||||||
printf('<a href="cmd.php?cmd=query_engine&%s">%s</a>',htmlspecialchars($query_string),_($f));
|
if (isAjaxEnabled())
|
||||||
|
printf('<a href="cmd.php?%s" onclick="return displayAJ(\'BODY\',\'%s\',\'%s\');">%s</a>',
|
||||||
|
$query_string,$query_string,_('Loading Search'),_($f));
|
||||||
|
else
|
||||||
|
printf('<a href="cmd.php?%s">%s</a>',$query_string,_($f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1327,7 +1327,7 @@ class TemplateRender extends PageRender {
|
|||||||
|
|
||||||
if (DEBUGTMP) printf('<font size=-2>%s</font><br />',__METHOD__);
|
if (DEBUGTMP) printf('<font size=-2>%s</font><br />',__METHOD__);
|
||||||
|
|
||||||
$href = sprintf('cmd=query_engine&server_id=%s&filter=%s&base=%s&scope=one&query=none',
|
$href = sprintf('cmd=query_engine&server_id=%s&filter=%s&base=%s&scope=one&query=none&size_limit=0',
|
||||||
$this->getServerID(),rawurlencode('objectClass=*'),rawurlencode($this->template->getDN()));
|
$this->getServerID(),rawurlencode('objectClass=*'),rawurlencode($this->template->getDN()));
|
||||||
|
|
||||||
if (isAjaxEnabled())
|
if (isAjaxEnabled())
|
||||||
|
Loading…
Reference in New Issue
Block a user