NobGit
public nobgit read

NobMail

Based on mailcow: dockerized

Languages

Repository composition by tracked source files.

PHP
PHP 49% JavaScript 35% HTML 9% CSS 4% Shell 2% Python 1% Lua 0% Perl 0% Ruby 0% SCSS 0%
Create file Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git

Commit

[Web] Minor fixes

04bd2166
andryyy <[email protected]> 5 years ago
data/web/edit.php              | 12 ++++++------
 data/web/inc/functions.inc.php | 11 ++++-------
 data/web/user.php              | 39 ++++++++++++++++++---------------------
 3 files changed, 28 insertions(+), 34 deletions(-)

Diff

diff --cc data/web/edit.php
index e3b863c5,141f5100..6087a7c6
--- a/data/web/edit.php
+++ b/data/web/edit.php
@@@ -256,216 -256,184 +256,216 @@@ if (isset($_SESSION['mailcow_cc_role'])
          $rlyhosts = relayhost('get');
          if (!empty($result)) {
          ?>
 -          <h4><?=$lang['edit']['domain'];?></h4>
 -          <form data-id="editdomain" class="form-horizontal" role="form" method="post">
 -            <input type="hidden" value="0" name="active">
 -            <input type="hidden" value="0" name="backupmx">
 -            <input type="hidden" value="0" name="gal">
 -            <input type="hidden" value="0" name="relay_all_recipients">
 -            <input type="hidden" value="0" name="relay_unknown_only">
 -            <div class="form-group" data-acl="<?=$_SESSION['acl']['domain_desc'];?>">
 -              <label class="control-label col-sm-2" for="description"><?=$lang['edit']['description'];?></label>
 -              <div class="col-sm-10">
 -                <input type="text" class="form-control" name="description" value="<?=htmlspecialchars($result['description']);?>">
 +          <ul class="nav nav-tabs">
 +            <li class="active"><a data-toggle="tab" href="#dedit"><?=$lang['edit']['domain'];?></a></li>
 +            <li><a data-toggle="tab" href="#dratelimit"><?=$lang['edit']['ratelimit'];?></a></li>
 +            <li><a data-toggle="tab" href="#dspamfilter"><?=$lang['edit']['spam_filter'];?></a></li>
 +          </ul>
 +          <hr>
 +          <div class="tab-content">
 +            <div id="dedit" class="tab-pane in active">
 +            <form data-id="editdomain" class="form-horizontal" role="form" method="post">
 +              <input type="hidden" value="0" name="active">
 +              <input type="hidden" value="0" name="backupmx">
 +              <input type="hidden" value="0" name="gal">
 +              <input type="hidden" value="0" name="xmpp">
 +              <input type="hidden" value="0" name="relay_all_recipients">
 +              <input type="hidden" value="0" name="relay_unknown_only">
 +              <div class="form-group" data-acl="<?=$_SESSION['acl']['domain_desc'];?>">
 +                <label class="control-label col-sm-2" for="description"><?=$lang['edit']['description'];?></label>
 +                <div class="col-sm-10">
 +                  <input type="text" class="form-control" name="description" value="<?=htmlspecialchars($result['description']);?>">
 +                </div>
                </div>
 -            </div>
 -            <?php
 -            if ($_SESSION['mailcow_cc_role'] == "admin") {
 -            ?>
 -            <div class="form-group">
 -              <label class="control-label col-sm-2" for="aliases"><?=$lang['edit']['max_aliases'];?></label>
 -              <div class="col-sm-10">
 -                <input type="number" class="form-control" name="aliases" value="<?=intval($result['max_num_aliases_for_domain']);?>">
 +              <?php
 +              if ($_SESSION['mailcow_cc_role'] == "admin") {
 +              ?>
 +              <div class="form-group">
 +                <label class="control-label col-sm-2" for="aliases"><?=$lang['edit']['max_aliases'];?></label>
 +                <div class="col-sm-10">
 +                  <input type="number" class="form-control" name="aliases" value="<?=intval($result['max_num_aliases_for_domain']);?>">
 +                </div>
                </div>
 -            </div>
 -            <div class="form-group">
 -              <label class="control-label col-sm-2" for="mailboxes"><?=$lang['edit']['max_mailboxes'];?></label>
 -              <div class="col-sm-10">
 -                <input type="number" class="form-control" name="mailboxes" value="<?=intval($result['max_num_mboxes_for_domain']);?>">
 +              <div class="form-group">
 +                <label class="control-label col-sm-2" for="mailboxes"><?=$lang['edit']['max_mailboxes'];?></label>
 +                <div class="col-sm-10">
 +                  <input type="number" class="form-control" name="mailboxes" value="<?=intval($result['max_num_mboxes_for_domain']);?>">
 +                </div>
                </div>
 -            </div>
 -            <div class="form-group">
 -                <label class="control-label col-sm-2" for="defquota"><?=$lang['edit']['mailbox_quota_def'];?></label>
 +              <div class="form-group">
 +                  <label class="control-label col-sm-2" for="defquota"><?=$lang['edit']['mailbox_quota_def'];?></label>
 +                  <div class="col-sm-10">
 +                      <input type="number" class="form-control" name="defquota" value="<?=intval($result['def_quota_for_mbox'] / 1048576);?>">
 +                  </div>
 +              </div>
 +              <div class="form-group">
 +                <label class="control-label col-sm-2" for="maxquota"><?=$lang['edit']['max_quota'];?></label>
                  <div class="col-sm-10">
 -                    <input type="number" class="form-control" name="defquota" value="<?=intval($result['def_quota_for_mbox'] / 1048576);?>">
 +                  <input type="number" class="form-control" name="maxquota" value="<?=intval($result['max_quota_for_mbox'] / 1048576);?>">
                  </div>
 -            </div>
 -            <div class="form-group">
 -              <label class="control-label col-sm-2" for="maxquota"><?=$lang['edit']['max_quota'];?></label>
 -              <div class="col-sm-10">
 -                <input type="number" class="form-control" name="maxquota" value="<?=intval($result['max_quota_for_mbox'] / 1048576);?>">
                </div>
 -            </div>
 -            <div class="form-group">
 -              <label class="control-label col-sm-2" for="quota"><?=$lang['edit']['domain_quota'];?></label>
 -              <div class="col-sm-10">
 -                <input type="number" class="form-control" name="quota" value="<?=intval($result['max_quota_for_domain'] / 1048576);?>">
 +              <div class="form-group">
 +                <label class="control-label col-sm-2" for="quota"><?=$lang['edit']['domain_quota'];?></label>
 +                <div class="col-sm-10">
 +                  <input type="number" class="form-control" name="quota" value="<?=intval($result['max_quota_for_domain'] / 1048576);?>">
 +                </div>
                </div>
 -            </div>
 -            <div class="form-group">
 -              <label class="control-label col-sm-2" for="quota"><?=$lang['edit']['relayhost'];?></label>
 -              <div class="col-sm-10">
 -                <select data-live-search="true" name="relayhost" class="form-control">
 -                  <?php
 -                  foreach ($rlyhosts as $rlyhost) {
 -                  ?>
 -                  <option value="<?=$rlyhost['id'];?>" <?=($result['relayhost'] == $rlyhost['id']) ? 'selected' : null;?>>ID <?=$rlyhost['id'];?>: <?=$rlyhost['hostname'];?> (<?=$rlyhost['username'];?>)</option>
 -                  <?php
 -                  }
 -                  ?>
 -                  <option value="" <?=($result['relayhost'] == "0") ? 'selected' : null;?>>None</option>
 -                </select>
 +              <div class="form-group">
 +                <label class="control-label col-sm-2" for="quota"><?=$lang['edit']['relayhost'];?></label>
 +                <div class="col-sm-10">
 +                  <select data-live-search="true" name="relayhost" class="form-control">
 +                    <?php
 +                    foreach ($rlyhosts as $rlyhost) {
 +                    ?>
 +                    <option value="<?=$rlyhost['id'];?>" <?=($result['relayhost'] == $rlyhost['id']) ? 'selected' : null;?>>ID <?=$rlyhost['id'];?>: <?=$rlyhost['hostname'];?> (<?=$rlyhost['username'];?>)</option>
 +                    <?php
 +                    }
 +                    ?>
 +                    <option value="" <?=($result['relayhost'] == "0") ? 'selected' : null;?>>None</option>
 +                  </select>
 +                </div>
                </div>
 -            </div>
 -            <div class="form-group">
 -              <label class="control-label col-sm-2"><?=$lang['edit']['backup_mx_options'];?></label>
 -              <div class="col-sm-10">
 -                <div class="checkbox">
 -                  <label><input type="checkbox" value="1" name="backupmx" <?=(isset($result['backupmx']) && $result['backupmx']=="1") ? "checked" : null;?>> <?=$lang['edit']['relay_domain'];?></label>
 -                  <br>
 -                  <label><input type="checkbox" value="1" name="relay_all_recipients" <?=(isset($result['relay_all_recipients']) && $result['relay_all_recipients']=="1") ? "checked" : null;?>> <?=$lang['edit']['relay_all'];?></label>
 -                  <p><?=$lang['edit']['relay_all_info'];?></p>
 -                  <label><input type="checkbox" value="1" name="relay_unknown_only" <?=(isset($result['relay_unknown_only']) && $result['relay_unknown_only']=="1") ? "checked" : null;?>> <?=$lang['edit']['relay_unknown_only'];?></label>
 -                  <br>
 -                  <p><?=$lang['edit']['relay_transport_info'];?></p>
 -                  <hr style="margin:25px 0px 0px 0px">
 +              <div class="form-group">
 +                <label class="control-label col-sm-2"><?=$lang['edit']['backup_mx_options'];?></label>
 +                <div class="col-sm-10">
 +                  <div class="checkbox">
 +                    <label><input type="checkbox" value="1" name="backupmx" <?=(isset($result['backupmx']) && $result['backupmx']=="1") ? "checked" : null;?>> <?=$lang['edit']['relay_domain'];?></label>
 +                    <br>
 +                    <label><input type="checkbox" value="1" name="relay_all_recipients" <?=(isset($result['relay_all_recipients']) && $result['relay_all_recipients']=="1") ? "checked" : null;?>> <?=$lang['edit']['relay_all'];?></label>
 +                    <p><?=$lang['edit']['relay_all_info'];?></p>
 +                    <label><input type="checkbox" value="1" name="relay_unknown_only" <?=(isset($result['relay_unknown_only']) && $result['relay_unknown_only']=="1") ? "checked" : null;?>> <?=$lang['edit']['relay_unknown_only'];?></label>
 +                    <br>
 +                    <p><?=$lang['edit']['relay_transport_info'];?></p>
 +                    <hr style="margin:25px 0px 0px 0px">
 +                  </div>
                  </div>
                </div>
 -            </div>
 -            <?php
 -            }
 -            ?>
 -            <div class="form-group">
 -              <div class="col-sm-offset-2 col-sm-10">
 -                <div class="checkbox">
 -                  <label><input type="checkbox" value="1" name="gal" <?=(isset($result['gal']) && $result['gal']=="1") ? "checked" : null;?>> <?=$lang['edit']['gal'];?></label>
 -                  <small class="help-block"><?=$lang['edit']['gal_info'];?></small>
 +              <?php
 +              }
 +              ?>
 +              <div class="form-group">
 +                <div class="col-sm-offset-2 col-sm-10">
 +                  <div class="checkbox">
 +                    <label><input type="checkbox" value="1" name="gal" <?=(isset($result['gal']) && $result['gal']=="1") ? "checked" : null;?>> <?=$lang['edit']['gal'];?></label>
 +                    <small class="help-block"><?=$lang['edit']['gal_info'];?></small>
 +                  </div>
                  </div>
                </div>
 -            </div>
 -            <div class="form-group">
 -              <div class="col-sm-offset-2 col-sm-10">
 -                <div class="checkbox">
 -                  <label><input type="checkbox" value="1" name="active" <?=(isset($result['active']) && $result['active']=="1") ? "checked" : null;?> <?=($_SESSION['mailcow_cc_role'] == "admin") ? null : "disabled";?>> <?=$lang['edit']['active'];?></label>
 +              <hr>
 +              <div class="form-group" data-acl="<?=$_SESSION['acl']['xmpp_mailbox_access'];?>">
 +                <div class="col-sm-offset-2 col-sm-10">
 +                  <div class="checkbox">
 +                    <label><input type="checkbox" value="1" name="xmpp" <?=(isset($result['xmpp']) && $result['xmpp']=="1") ? "checked" : null;?>> <?=$lang['edit']['xmpp'];?></label>
 +                    <small class="help-block"><?=$lang['edit']['xmpp_info'];?></small>
 +                  </div>
                  </div>
                </div>
 -            </div>
 -            <div class="form-group">
 -              <div class="col-sm-offset-2 col-sm-10">
 -                <button class="btn btn-success" data-action="edit_selected" data-id="editdomain" data-item="<?=$domain;?>" data-api-url='edit/domain' data-api-attr='{}' href="#"><?=$lang['admin']['save'];?></button>
 +              <div class="form-group" data-acl="<?=$_SESSION['acl']['xmpp_prefix'];?>">
 +                <label class="control-label col-sm-2" for="xmpp_prefix"><?=$lang['edit']['xmpp_prefix'];?></label>
 +                <div class="col-md-3">
 +                  <div class="input-group">
 +                    <input type="text" class="form-control" name="xmpp_prefix" value="<?=htmlspecialchars($result['xmpp_prefix'], ENT_QUOTES, 'UTF-8');?>" required>
 +                    <span class="input-group-addon">.<?=htmlspecialchars($domain, ENT_QUOTES, 'UTF-8');?></span>
 +                  </div>
 +                  <small class="help-block"><?=sprintf($lang['edit']['xmpp_prefix_info'], getenv('MAILCOW_HOSTNAME'));?></small>
 +                </div>
 +              </div>
 +              <hr>
 +              <div class="form-group">
 +                <div class="col-sm-offset-2 col-sm-10">
 +                  <div class="checkbox">
 +                    <label><input type="checkbox" value="1" name="active" <?=(isset($result['active']) && $result['active']=="1") ? "checked" : null;?> <?=($_SESSION['mailcow_cc_role'] == "admin") ? null : "disabled";?>> <?=$lang['edit']['active'];?></label>
 +                  </div>
 +                </div>
 +              </div>
 +              <div class="form-group">
 +                <div class="col-sm-offset-2 col-sm-10">
 +                  <button class="btn btn-success" data-action="edit_selected" data-id="editdomain" data-item="<?=$domain;?>" data-api-url='edit/domain' data-api-attr='{}' href="#"><?=$lang['admin']['save'];?></button>
 +                </div>
 +              </div>
 +            </form>
 +            <?php
 +            if (!empty($dkim = dkim('details', $domain))) {
 +            ?>
 +            <hr>
 +            <div class="row">
 +              <div class="col-xs-2">
 +                <p>Domain: <strong><?=htmlspecialchars($result['domain_name']);?></strong> (<?=$dkim['dkim_selector'];?>._domainkey)</p>
 +              </div>
 +              <div class="col-xs-10">
 +                <pre><?=$dkim['dkim_txt'];?></pre>
                </div>
              </div>
 -          </form>
 -          <?php
 -          if (!empty($dkim = dkim('details', $domain))) {
 -          ?>
 -          <hr>
 -          <div class="row">
 -            <div class="col-xs-2">
 -              <p>Domain: <strong><?=htmlspecialchars($result['domain_name']);?></strong> (<?=$dkim['dkim_selector'];?>._domainkey)</p>
 -            </div>
 -            <div class="col-xs-10">
 -              <pre><?=$dkim['dkim_txt'];?></pre>
 -            </div>
 -          </div>
 -          <?php
 -          }
 -          ?>
 -      <hr>
 -      <form data-id="domratelimit" class="form-inline well" method="post">
 -        <div class="form-group">
 -          <label class="control-label"><?=$lang['acl']['ratelimit'];?></label>
 -          <input name="rl_value" type="number" value="<?=(!empty($rl['value'])) ? $rl['value'] : null;?>" autocomplete="off" class="form-control" placeholder="disabled">
 -        </div>
 -        <div class="form-group">
 -          <select name="rl_frame" class="form-control">
 -            <option value="s" <?=(isset($rl['frame']) && $rl['frame'] == 's') ? 'selected' : null;?>>msgs / second</option>
 -            <option value="m" <?=(isset($rl['frame']) && $rl['frame'] == 'm') ? 'selected' : null;?>>msgs / minute</option>
 -            <option value="h" <?=(isset($rl['frame']) && $rl['frame'] == 'h') ? 'selected' : null;?>>msgs / hour</option>
 -            <option value="d" <?=(isset($rl['frame']) && $rl['frame'] == 'd') ? 'selected' : null;?>>msgs / day</option>
 -          </select>
 -        </div>
 -        <div class="form-group">
 -          <button data-acl="<?=$_SESSION['acl']['ratelimit'];?>" class="btn btn-default" data-action="edit_selected" data-id="domratelimit" data-item="<?=$domain;?>" data-api-url='edit/rl-domain' data-api-attr='{}' href="#"><?=$lang['admin']['save'];?></button>
 -        </div>
 -      </form>
 -      <hr>
 -      <div class="row">
 -        <div class="col-sm-6">
 -          <h4><?=$lang['user']['spamfilter_wl'];?></h4>
 -          <p><?=$lang['user']['spamfilter_wl_desc'];?></p>
 -          <form class="form-inline" data-id="add_wl_policy_domain">
 -            <div class="input-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 -              <input type="text" class="form-control" name="object_from" placeholder="*@example.org" required>
 -              <span class="input-group-btn">
 -                <button class="btn btn-default" data-action="add_item" data-id="add_wl_policy_domain" data-api-url='add/domain-policy' data-api-attr='{"domain":"<?= $domain; ?>","object_list":"wl"}' href="#"><?=$lang['user']['spamfilter_table_add'];?></button>
 -              </span>
 -            </div>
 -          </form>
 -          <div class="mass-actions-user">
 -            <div class="btn-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 -              <a class="btn btn-sm btn-default" id="toggle_multi_select_all" data-id="policy_wl_domain" href="#"><span class="glyphicon glyphicon-check" aria-hidden="true"></span> <?=$lang['mailbox']['toggle_all'];?></a>
 -              <a class="btn btn-sm btn-danger" data-action="delete_selected" data-id="policy_wl_domain" data-api-url='delete/domain-policy' href="#"><?=$lang['mailbox']['remove'];?></a></li>
 -            </div>
 -          </div>
 -          <div class="table-responsive">
 -            <table class="table table-striped table-condensed" id="wl_policy_domain_table"></table>
 -          </div>
 -        </div>
 -        <div class="col-sm-6">
 -          <h4><?=$lang['user']['spamfilter_bl'];?></h4>
 -          <p><?=$lang['user']['spamfilter_bl_desc'];?></p>
 -          <form class="form-inline" data-id="add_bl_policy_domain">
 -            <div class="input-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 -              <input type="text" class="form-control" name="object_from" placeholder="*@example.org" required>
 -              <span class="input-group-btn">
 -                <button class="btn btn-default" data-action="add_item" data-id="add_bl_policy_domain" data-api-url='add/domain-policy' data-api-attr='{"domain":"<?= $domain; ?>","object_list":"bl"}' href="#"><?=$lang['user']['spamfilter_table_add'];?></button>
 -              </span>
 +            <?php
 +            }
 +            ?>
              </div>
 -          </form>
 -          <div class="mass-actions-user">
 -            <div class="btn-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 -              <a class="btn btn-sm btn-default" id="toggle_multi_select_all" data-id="policy_bl_domain" href="#"><span class="glyphicon glyphicon-check" aria-hidden="true"></span> <?=$lang['mailbox']['toggle_all'];?></a>
 -              <a class="btn btn-sm btn-danger" data-action="delete_selected" data-id="policy_bl_domain" data-api-url='delete/domain-policy' href="#"><?=$lang['mailbox']['remove'];?></a></li>
 +            <div id="dratelimit" class="tab-pane">
 +              <form data-id="domratelimit" class="form-inline well" method="post">
 +                <div class="form-group">
 +                  <label class="control-label"><?=$lang['edit']['ratelimit'];?></label>
 +                  <input name="rl_value" type="number" value="<?=(!empty($rl['value'])) ? $rl['value'] : null;?>" autocomplete="off" class="form-control" placeholder="disabled">
 +                </div>
 +                <div class="form-group">
 +                  <select name="rl_frame" class="form-control">
 +                    <option value="s" <?=(isset($rl['frame']) && $rl['frame'] == 's') ? 'selected' : null;?>>msgs / second</option>
 +                    <option value="m" <?=(isset($rl['frame']) && $rl['frame'] == 'm') ? 'selected' : null;?>>msgs / minute</option>
 +                    <option value="h" <?=(isset($rl['frame']) && $rl['frame'] == 'h') ? 'selected' : null;?>>msgs / hour</option>
 +                    <option value="d" <?=(isset($rl['frame']) && $rl['frame'] == 'd') ? 'selected' : null;?>>msgs / day</option>
 +                  </select>
 +                </div>
 +                <div class="form-group">
 +                  <button data-acl="<?=$_SESSION['acl']['ratelimit'];?>" class="btn btn-default" data-action="edit_selected" data-id="domratelimit" data-item="<?=$domain;?>" data-api-url='edit/rl-domain' data-api-attr='{}' href="#"><?=$lang['admin']['save'];?></button>
 +                </div>
 +              </form>
 +            </div>
 +            <div id="dspamfilter" class="tab-pane">
 +              <div class="row">
 +                <div class="col-sm-6">
 +                  <h4><?=$lang['user']['spamfilter_wl'];?></h4>
 +                  <p><?=$lang['user']['spamfilter_wl_desc'];?></p>
-                   <div class="table-responsive">
-                     <table class="table table-striped table-condensed" id="wl_policy_domain_table"></table>
-                   </div>
 +                  <div class="mass-actions-user">
 +                    <div class="btn-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 +                      <a class="btn btn-sm btn-default" id="toggle_multi_select_all" data-id="policy_wl_domain" href="#"><span class="glyphicon glyphicon-check" aria-hidden="true"></span> <?=$lang['mailbox']['toggle_all'];?></a>
 +                      <a class="btn btn-sm btn-danger" data-action="delete_selected" data-id="policy_wl_domain" data-api-url='delete/domain-policy' href="#"><?=$lang['mailbox']['remove'];?></a></li>
 +                    </div>
 +                  </div>
 +                  <form class="form-inline" data-id="add_wl_policy_domain">
 +                    <div class="input-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 +                      <input type="text" class="form-control" name="object_from" placeholder="*@example.org" required>
 +                      <span class="input-group-btn">
 +                        <button class="btn btn-default" data-action="add_item" data-id="add_wl_policy_domain" data-api-url='add/domain-policy' data-api-attr='{"domain":"<?= $domain; ?>","object_list":"wl"}' href="#"><?=$lang['user']['spamfilter_table_add'];?></button>
 +                      </span>
 +                    </div>
 +                  </form>
++                  <div class="table-responsive">
++                    <table class="table table-striped table-condensed" id="wl_policy_domain_table"></table>
++                  </div>
 +                </div>
 +                <div class="col-sm-6">
 +                  <h4><?=$lang['user']['spamfilter_bl'];?></h4>
 +                  <p><?=$lang['user']['spamfilter_bl_desc'];?></p>
-                   <div class="table-responsive">
-                     <table class="table table-striped table-condensed" id="bl_policy_domain_table"></table>
-                   </div>
 +                  <div class="mass-actions-user">
 +                    <div class="btn-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 +                      <a class="btn btn-sm btn-default" id="toggle_multi_select_all" data-id="policy_bl_domain" href="#"><span class="glyphicon glyphicon-check" aria-hidden="true"></span> <?=$lang['mailbox']['toggle_all'];?></a>
 +                      <a class="btn btn-sm btn-danger" data-action="delete_selected" data-id="policy_bl_domain" data-api-url='delete/domain-policy' href="#"><?=$lang['mailbox']['remove'];?></a></li>
 +                    </div>
 +                  </div>
 +                  <form class="form-inline" data-id="add_bl_policy_domain">
 +                    <div class="input-group" data-acl="<?=$_SESSION['acl']['spam_policy'];?>">
 +                      <input type="text" class="form-control" name="object_from" placeholder="*@example.org" required>
 +                      <span class="input-group-btn">
 +                        <button class="btn btn-default" data-action="add_item" data-id="add_bl_policy_domain" data-api-url='add/domain-policy' data-api-attr='{"domain":"<?= $domain; ?>","object_list":"bl"}' href="#"><?=$lang['user']['spamfilter_table_add'];?></button>
 +                      </span>
 +                    </div>
 +                  </form>
++                  <div class="table-responsive">
++                    <table class="table table-striped table-condensed" id="bl_policy_domain_table"></table>
++                  </div>
 +                </div>
 +              </div>
              </div>
            </div>
 -          <div class="table-responsive">
 -            <table class="table table-striped table-condensed" id="bl_policy_domain_table"></table>
 -          </div>
 -        </div>
 -      </div>
            <?php
          }
          else {
diff --cc data/web/inc/functions.inc.php
index 36bd3e9e,36bd3e9e..db2b3dfd
--- a/data/web/inc/functions.inc.php
+++ b/data/web/inc/functions.inc.php
@@@ -453,7 -453,7 +453,7 @@@ function generate_tlsa_digest($hostname
      return 'Error: Cannot read peer certificate';
    }
  }
--function alertbox_log_parser($_data){
++function alertbox_log_parser($_data) {
    global $lang;
    if (isset($_data['return'])) {
      foreach ($_data['return'] as $return) {
@@@ -483,11 -483,11 +483,10 @@@
    }
    return false;
  }
--function verify_salted_hash($hash, $password, $algo, $salt_length)
--{
++function verify_salted_hash($hash, $password, $algo, $salt_length) {
    // Decode hash
    $dhash = base64_decode($hash);
--  // Get first 20 bytes of binary which equals a SSHA hash
++  // Get first n bytes of binary which equals a SSHA hash
    $ohash = substr($dhash, 0, $salt_length);
    // Remove SSHA hash from decoded hash to get original salt string
    $osalt = str_replace($ohash, '', $dhash);
@@@ -497,9 -497,9 +496,7 @@@
    }
    return false;
  }
--
--function verify_hash($hash, $password)
--{
++function verify_hash($hash, $password) {
    if (preg_match('/^{(.+)}(.+)/i', $hash, $hash_array)) {
      $scheme = strtoupper($hash_array[1]);
      $hash = $hash_array[2];