migrate search input field to use search[_], and use list.tpl for alias domains

User-visible changes:
- alias domain list can be downloaded as CSV
- no more search highlighting for alias domains

list-virtual.php:
- expect $search to be an array
- change alias domain handling to use list.php instead of
  list-virtual_alias_domain.tpl, and move some logic from the template
  to list-virtual.php. (The template file is kept as list.tpl wrapper.)
- adopt mailbox and alias search to $search[_]
- adopt pagebrowser to $search[_]

list-virtual_alias_domain.tpl:
- replace custom output generation with {include 'list.php'} and some
  variable assignments

PFAHandler.php:
- add $this->id_field to $this->msg (avoids another smarty template
  variable)

configs/menu.conf:
- change input name to search[_]

list-virtual_alias.tpl, list-virtual_mailbox.tpl:
- adopt to $search[_] by setting $search in a backwards-compatible way

list.tpl:
- add special handling for aliasdomain.target_domain linking



git-svn-id: https://svn.code.sf.net/p/postfixadmin/code/trunk@1773 a1433add-5e2c-0410-b055-b7f2511e0802
pull/2/head
Christian Boltz 9 years ago
parent cc598d0f3f
commit 8043515fdf

@ -39,7 +39,7 @@ tr_hilightoff = <tr class="hilightoff" onmouseover="className='hilighton';" onmo
url_delete = delete.php
url_search = list-virtual.php
form_search = <form name="search" method="post" action="list-virtual.php"><input name="search" size="10" /></form>
form_search = <form name="search" method="post" action="list-virtual.php"><input name="search[_]" size="10" /></form>
[adminlistadmin]
url_edit_admin = edit.php?table=admin

@ -38,7 +38,10 @@ if (safesession('list-virtual:domain') != $fDomain) {
unset($_SESSION['list-virtual:limit']);
}
$fDisplay = (int) safepost('limit', safeget('limit', safesession('list-virtual:limit')));
$search = safepost('search', safeget('search', '')); # not remembered in the session
$search = safepost('search', safeget('search', array())); # not remembered in the session
if (!is_array($search)) {
die(Config::Lang('invalid_parameter'));
}
if (count($list_domains) == 0) {
if (authentication_has_role('global-admin')) {
@ -85,23 +88,43 @@ $_SESSION['list-virtual:limit'] = $fDisplay;
#
if (Config::bool('alias_domain')) {
if ($search == "") {
$handler = new AliasdomainHandler(0, $admin_username);
$aliasdomain_data = array(
'struct' => $handler->getStruct(),
'msg' => $handler->getMsg(),
'formconf' => $handler->webformConfig(),
);
$aliasdomain_data['msg']['show_simple_search'] = False; # hide search box
$aliasdomain_data['msg']['can_create'] = 1;
# hide create button if all domains (of this admin) are already used as alias domains
$handler->getList("");
if ( count($handler->result()) + 1 >= count($list_domains) ) $aliasdomain_data['msg']['can_create'] = 0; # all domains (of this admin) are already alias domains
# get the really requested list
if (count($search) == 0) {
$list_param = "alias_domain='$fDomain' OR target_domain='$fDomain'";
} else {
$list_param = "alias_domain LIKE '%$search%' OR target_domain LIKE '%$search%'";
$list_param = $search;
}
$handler = new AliasdomainHandler(0, $admin_username);
$handler->getList($list_param);
$tAliasDomains = $handler->result();
$can_create_alias_domain = 1;
foreach ($tAliasDomains as $row) {
if ($row['alias_domain'] == $fDomain) $can_create_alias_domain = 0; # domain is already an alias domain
if ($row['alias_domain'] == $fDomain) {
$aliasdomain_data['struct']['target_domain']['linkto'] = 'target';
if (count($search) == 0) {
$aliasdomain_data['struct']['alias_domain']['linkto'] = '';
$aliasdomain_data['msg']['can_create'] = 0; # domain is already an alias domain
}
}
}
if (count($search) > 0) {
$aliasdomain_data['struct']['target_domain']['linkto'] = 'target';
}
# set $can_create_alias_domain = 0 if all domains (of this admin) are already used as alias domains
$handler->getList("");
if ( count($handler->result()) + 1 >= count($list_domains) ) $can_create_alias_domain = 0; # all domains (of this admin) are already alias domains
}
#
@ -111,11 +134,12 @@ if (Config::bool('alias_domain')) {
$table_alias = table_by_key('alias');
$table_mailbox = table_by_key('mailbox');
if ($search == "") {
if (count($search) == 0 || !isset($search['_'])) {
$list_param = "domain='$fDomain'";
$sql_domain = " $table_alias.domain='$fDomain' ";
} else {
$list_param = "(address LIKE '%$search%' OR goto LIKE '%$search%')";
$searchterm = escape_string($search['_']);
$list_param = "(address LIKE '%$searchterm%' OR goto LIKE '%$searchterm%')";
$sql_domain = db_in_clause("$table_alias.domain", $list_domains);
}
@ -140,13 +164,14 @@ $sql_where = " WHERE ";
$sql_order = " ORDER BY $table_mailbox.username ";
$sql_limit = " LIMIT $page_size OFFSET $fDisplay";
if ($search == "") {
if (count($search) == 0 || !isset($search['_'])) {
$sql_where .= " $table_mailbox.domain='$fDomain' ";
} else {
$searchterm = escape_string($search['_']);
$sql_where .= db_in_clause("$table_mailbox.domain", $list_domains) . " ";
$sql_where .= " AND ( $table_mailbox.username LIKE '%$search%' OR $table_mailbox.name LIKE '%$search%' ";
$sql_where .= " AND ( $table_mailbox.username LIKE '%$searchterm%' OR $table_mailbox.name LIKE '%$searchterm%' ";
if ($display_mailbox_aliases) {
$sql_where .= " OR $table_alias.goto LIKE '%$search%' ";
$sql_where .= " OR $table_alias.goto LIKE '%$searchterm%' ";
}
$sql_where .= " ) "; # $search is already escaped
}
@ -311,10 +336,10 @@ class cNav_bar
$this->limit = $aLimit;
$this->page_size = $aPage_size;
$this->pages = $aPages;
if ($aSearch == "") {
$this->search = "";
if (is_array($aSearch) && isset($aSearch['_']) && $aSearch['_'] != "") {
$this->search = "&search[_]=" . htmlentities($aSearch['_']);
} else {
$this->search = "&search=" . htmlentities($aSearch);
$this->search = "";
}
$this->url = '';
$this->fInit = false;
@ -408,6 +433,7 @@ $fDomain = htmlentities($fDomain, ENT_QUOTES);
if(empty($_GET['domain'])) {
$_GET['domain'] = '';
}
$smarty->assign ('admin_list', array());
$smarty->assign ('select_options', select_options ($list_domains, array ($fDomain)), false);
$smarty->assign ('nav_bar_alias', array ('top' => $nav_bar_alias->display_top (), 'bottom' => $nav_bar_alias->display_bottom ()), false);
$smarty->assign ('nav_bar_mailbox', array ('top' => $nav_bar_mailbox->display_top (), 'bottom' => $nav_bar_mailbox->display_bottom ()), false);
@ -425,7 +451,8 @@ $smarty->assign ('tDisplay_next_show', $tDisplay_next_show);
$smarty->assign ('tDisplay_next', $tDisplay_next);
$smarty->assign ('tAliasDomains', $tAliasDomains);
$smarty->assign ('can_create_alias_domain', $can_create_alias_domain);
$smarty->assign ('aliasdomain_data', $aliasdomain_data);
$smarty->assign ('tAlias', $tAlias);
$smarty->assign ('gen_show_status', $gen_show_status, false);
$smarty->assign ('check_alias_owner', $check_alias_owner);

@ -194,6 +194,7 @@ abstract class PFAHandler {
}
$this->initMsg();
$this->msg['id_field'] = $this->id_field;
$this->msg['show_simple_search'] = count($this->searchfields) > 0;
}

@ -1,3 +1,9 @@
{if isset($search._)}
{assign var="search" value=$search._}
{else}
{assign var="search" value=''}
{/if}
{#tr_header#}
{if $CONF.show_status===YES}
<td></td>

@ -1,46 +1,9 @@
{*** Domain Aliases ***}
<table id="alias_domain_table">
<tr>
<th colspan="6">{$PALANG.pOverview_alias_domain_title}</th>
</tr>
{if $tAliasDomains|@count>0}
{if $tAliasDomains|@count>0} {* -> HAT alias-domains *}
{#tr_header#}
<td>{$PALANG.pOverview_alias_address}</td>
<td>{$PALANG.to}</td>
<td>{$PALANG.last_modified}</td>
<td>{$PALANG.active}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
{foreach from=$tAliasDomains item=item}
{#tr_hilightoff#}
<td>{if $item.alias_domain != $fDomain}<a href="{$smarty.config.url_list_virtual}?domain={$item.alias_domain|escape:"url"}">{/if}
{if $search eq ""}
{$item.alias_domain}
{else}
{$item.alias_domain|replace:$search:"<span class='searchresult'>$search</span>"}
{/if}
{if $item.alias_domain != $fDomain}</a>{/if}</td>
<td>{if $item.target_domain != $fDomain}<a href="{$smarty.config.url_list_virtual}?domain={$item.target_domain|escape:"url"}">{/if}
{if $search eq ""}
{$item.target_domain}
{else}
{$item.target_domain|replace:$search:"<span class='searchresult'>$search</span>"}
{/if}
{if $item.target_domain != $fDomain}</a>{/if}</td>
<td>{$item.modified}</td>
<td><a href="{#url_editactive#}aliasdomain&amp;id={$item.alias_domain|escape:"url"}&amp;active={if ($item.active==0)}1{else}0{/if}&amp;token={$smarty.session.PFA_token|escape:"url"}">{if $item.active==1}{$PALANG.YES}{else}{$PALANG.NO}{/if}</a></td>
<td><a href="{#url_create_alias_domain#}&amp;edit={$item.alias_domain|escape:"url"}">{$PALANG.edit}</a></td>
<td><a href="{#url_delete#}?table=aliasdomain&amp;delete={$item.alias_domain|escape:"url"}&amp;token={$smarty.session.PFA_token|escape:"url"}"
onclick="return confirm ('{$PALANG.confirm}{$PALANG.pOverview_get_alias_domains}: {$item.alias_domain} -&gt; {$item.target_domain}');">{$PALANG.del}</a></td>
</tr>
{/foreach}
{/if}
{/if}
</table>
{if $can_create_alias_domain}
<br/>
<br /><a href="{#url_create_alias_domain#}&amp;target_domain={$fDomain|escape:"url"}" class="button">{$PALANG.add_alias_domain}</a><br />
{/if}
{assign var="table" value='aliasdomain'}
{assign var="struct" value=$aliasdomain_data.struct}
{assign var="msg" value=$aliasdomain_data.msg}
{assign var="id_field" value=$msg.id_field}
{assign var="formconf" value=$aliasdomain_data.formconf}
{assign var="items" value=$tAliasDomains}
{include 'list.tpl'}

@ -1,3 +1,9 @@
{if isset($search._)}
{assign var="search" value=$search._}
{else}
{assign var="search" value=''}
{/if}
{#tr_header#}
{if $CONF.show_status===YES}<td></td>{/if}
<td>{$PALANG.pOverview_mailbox_username}</td>

@ -58,6 +58,8 @@
<td>
{if $table == 'foo' && $key == 'bar'}
Special handling (td content) for {$table} / {$key}
{elseif $table == 'aliasdomain' && $key == 'target_domain' && $struct.target_domain.linkto == 'target'}
<a href="list-virtual.php?domain={$item.target_domain|escape:"url"}">{$item.target_domain}</a>
{* {elseif $table == 'domain' && $key == 'domain'}
<a href="list.php?table=domain&domain={$item.domain|escape:"url"}">{$item.domain}</a>
*}

Loading…
Cancel
Save