SF.net SVN: postfixadmin:[1773] trunk
Brought to you by:
christian_boltz,
gingerdog
From: <chr...@us...> - 2015-04-06 14:17:33
|
Revision: 1773 http://sourceforge.net/p/postfixadmin/code/1773 Author: christian_boltz Date: 2015-04-06 14:17:25 +0000 (Mon, 06 Apr 2015) Log Message: ----------- 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 Modified Paths: -------------- trunk/configs/menu.conf trunk/list-virtual.php trunk/model/PFAHandler.php trunk/templates/list-virtual_alias.tpl trunk/templates/list-virtual_alias_domain.tpl trunk/templates/list-virtual_mailbox.tpl trunk/templates/list.tpl Modified: trunk/configs/menu.conf =================================================================== --- trunk/configs/menu.conf 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/configs/menu.conf 2015-04-06 14:17:25 UTC (rev 1773) @@ -39,7 +39,7 @@ 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 Modified: trunk/list-virtual.php =================================================================== --- trunk/list-virtual.php 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/list-virtual.php 2015-04-06 14:17:25 UTC (rev 1773) @@ -38,7 +38,10 @@ 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 @@ # 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 + } + } } - # 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 + + if (count($search) > 0) { + $aliasdomain_data['struct']['target_domain']['linkto'] = 'target'; + } } # @@ -111,11 +134,12 @@ $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_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 @@ $this->limit = $aLimit; $this->page_size = $aPage_size; $this->pages = $aPages; - if ($aSearch == "") { + if (is_array($aSearch) && isset($aSearch['_']) && $aSearch['_'] != "") { + $this->search = "&search[_]=" . htmlentities($aSearch['_']); + } else { $this->search = ""; - } else { - $this->search = "&search=" . htmlentities($aSearch); } $this->url = ''; $this->fInit = false; @@ -408,6 +433,7 @@ 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', $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); Modified: trunk/model/PFAHandler.php =================================================================== --- trunk/model/PFAHandler.php 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/model/PFAHandler.php 2015-04-06 14:17:25 UTC (rev 1773) @@ -194,6 +194,7 @@ } $this->initMsg(); + $this->msg['id_field'] = $this->id_field; $this->msg['show_simple_search'] = count($this->searchfields) > 0; } Modified: trunk/templates/list-virtual_alias.tpl =================================================================== --- trunk/templates/list-virtual_alias.tpl 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/templates/list-virtual_alias.tpl 2015-04-06 14:17:25 UTC (rev 1773) @@ -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> Modified: trunk/templates/list-virtual_alias_domain.tpl =================================================================== --- trunk/templates/list-virtual_alias_domain.tpl 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/templates/list-virtual_alias_domain.tpl 2015-04-06 14:17:25 UTC (rev 1773) @@ -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> </td> - <td> </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&id={$item.alias_domain|escape:"url"}&active={if ($item.active==0)}1{else}0{/if}&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#}&edit={$item.alias_domain|escape:"url"}">{$PALANG.edit}</a></td> - <td><a href="{#url_delete#}?table=aliasdomain&delete={$item.alias_domain|escape:"url"}&token={$smarty.session.PFA_token|escape:"url"}" - onclick="return confirm ('{$PALANG.confirm}{$PALANG.pOverview_get_alias_domains}: {$item.alias_domain} -> {$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#}&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'} Modified: trunk/templates/list-virtual_mailbox.tpl =================================================================== --- trunk/templates/list-virtual_mailbox.tpl 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/templates/list-virtual_mailbox.tpl 2015-04-06 14:17:25 UTC (rev 1773) @@ -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> Modified: trunk/templates/list.tpl =================================================================== --- trunk/templates/list.tpl 2015-04-06 13:39:21 UTC (rev 1772) +++ trunk/templates/list.tpl 2015-04-06 14:17:25 UTC (rev 1773) @@ -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> *} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |