Skip to content

Commit

Permalink
Merge pull request #367 from micw/feature-optionen-fuer-kunden-ausble…
Browse files Browse the repository at this point in the history
…nden

Feature: Panel setting to hide certain menu items and traffic charts from customers
  • Loading branch information
d00p committed Jul 25, 2016
2 parents 6589653 + 54e2f83 commit 4a3b64b
Show file tree
Hide file tree
Showing 11 changed files with 99 additions and 20 deletions.
24 changes: 24 additions & 0 deletions actions/admin/settings/100.panel.php
Expand Up @@ -227,6 +227,30 @@
'default' => false,
'save_method' => 'storeSettingField',
),
'panel_customer_hide_options' => array(
'label' => $lng['serversettings']['panel_customer_hide_options'],
'settinggroup' => 'panel',
'varname' => 'customer_hide_options',
'type' => 'option',
'default' => '',
'option_mode' => 'multiple',
'option_options' => array(
'email' => $lng['menue']['email']['email'],
'mysql' => $lng['menue']['mysql']['mysql'],
'domains' => $lng['menue']['domains']['domains'],
'ftp' => $lng['menue']['ftp']['ftp'],
'extras' => $lng['menue']['extras']['extras'],
'extras.directoryprotection' => $lng['menue']['extras']['extras']." / ".$lng['menue']['extras']['directoryprotection'],
'extras.pathoptions' => $lng['menue']['extras']['extras']." / ".$lng['menue']['extras']['pathoptions'],
'extras.logger' => $lng['menue']['extras']['extras']." / ".$lng['menue']['logger']['logger'],
'extras.backup' => $lng['menue']['extras']['extras']." / ".$lng['menue']['extras']['backup'],
'traffic' => $lng['menue']['traffic']['traffic'],
'traffic.http' => $lng['menue']['traffic']['traffic']." / HTTP",
'traffic.ftp' => $lng['menue']['traffic']['traffic']." / FTP",
'traffic.mail' => $lng['menue']['traffic']['traffic']." / Mail",
),
'save_method' => 'storeSettingField',
),
),
),
),
Expand Down
2 changes: 1 addition & 1 deletion install/froxlor.sql
Expand Up @@ -561,7 +561,7 @@ INSERT INTO `panel_settings` (`settinggroup`, `varname`, `value`) VALUES
('panel', 'password_special_char_required', '0'),
('panel', 'password_special_char', '!?<>§$%+#=@'),
('panel', 'version', '0.9.37-rc1'),
('panel', 'db_version', '201607140');
('panel', 'db_version', '201607210');


DROP TABLE IF EXISTS `panel_tasks`;
Expand Down
9 changes: 9 additions & 0 deletions install/updates/froxlor/0.9/update_0.9.inc.php
Expand Up @@ -3402,3 +3402,12 @@

updateToVersion('0.9.37-rc1');
}

if (isDatabaseVersion('201607140')) {

showUpdateStep("Adding new setting to hide certain options in customer panel");
Settings::AddNew("panel.customer_hide_options", "");
lastStepStatus(0);

updateToDbVersion('201607210');
}
17 changes: 17 additions & 0 deletions lib/classes/settings/class.Settings.php
Expand Up @@ -124,6 +124,23 @@ public function pGet($setting = null) {
return $result;
}

/**
* tests if a setting-value that i s a comma separated list contains an entry
*
* @param string $setting a group and a varname separated by a dot (group.varname)
* @param string $entry the entry that is expected to be in the list
*
* @return boolean true, if the list contains $entry
*/
public function pIsInList($setting = null, $entry = null) {
$s=Settings::Get($setting);
if ($s==null) {
return false;
}
$slist = explode(",",$s);
return in_array($entry, $slist);
}

/**
* update a setting / set a new value
*
Expand Down
14 changes: 11 additions & 3 deletions lib/navigation/00.froxlor.main.php
Expand Up @@ -48,11 +48,12 @@
'email' => array (
'url' => 'customer_email.php',
'label' => $lng['menue']['email']['email'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','email') ),
'elements' => array (
array (
'url' => 'customer_email.php?page=emails',
'label' => $lng['menue']['email']['emails'],
'required_resources' => 'emails',
'required_resources' => 'emails'
),
array (
'url' => 'customer_email.php?page=emails&action=add',
Expand All @@ -71,6 +72,7 @@
'mysql' => array (
'url' => 'customer_mysql.php',
'label' => $lng['menue']['mysql']['mysql'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','mysql') ),
'elements' => array (
array (
'url' => 'customer_mysql.php?page=mysqls',
Expand All @@ -89,6 +91,7 @@
'domains' => array (
'url' => 'customer_domains.php',
'label' => $lng['menue']['domains']['domains'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','domains') ),
'elements' => array (
array (
'url' => 'customer_domains.php?page=domains',
Expand All @@ -99,6 +102,7 @@
'ftp' => array (
'url' => 'customer_ftp.php',
'label' => $lng['menue']['ftp']['ftp'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','ftp') ),
'elements' => array (
array (
'url' => 'customer_ftp.php?page=accounts',
Expand All @@ -115,30 +119,34 @@
'extras' => array (
'url' => 'customer_extras.php',
'label' => $lng['menue']['extras']['extras'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','extras') ),
'elements' => array (
array (
'url' => 'customer_extras.php?page=htpasswds',
'label' => $lng['menue']['extras']['directoryprotection'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','extras.directoryprotection') ),
),
array (
'url' => 'customer_extras.php?page=htaccess',
'label' => $lng['menue']['extras']['pathoptions'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','extras.pathoptions') ),
),
array (
'url' => 'customer_logger.php?page=log',
'label' => $lng['menue']['logger']['logger'],
'show_element' => ( Settings::Get('logger.enabled') == true )
'show_element' => ( Settings::Get('logger.enabled') == true ) && ( !Settings::IsInList('panel.customer_hide_options','extras.logger') ),
),
array (
'url' => 'customer_extras.php?page=backup',
'label' => $lng['menue']['extras']['backup'],
'show_element' => ( Settings::Get('system.backupenabled') == true ),
'show_element' => ( Settings::Get('system.backupenabled') == true ) && ( !Settings::IsInList('panel.customer_hide_options','extras.backup') ),
),
),
),
'traffic' => array (
'url' => 'customer_traffic.php',
'label' => $lng['menue']['traffic']['traffic'],
'show_element' => ( !Settings::IsInList('panel.customer_hide_options','traffic') ),
'elements' => array (
array (
'url' => 'customer_traffic.php?page=current',
Expand Down
2 changes: 1 addition & 1 deletion lib/version.inc.php
Expand Up @@ -19,7 +19,7 @@
$version = '0.9.37-rc1';

// Database version (YYYYMMDDC where C is a daily counter)
$dbversion = '201607140';
$dbversion = '201607210';

// Distribution branding-tag (used for Debian etc.)
$branding = '';
5 changes: 5 additions & 0 deletions lng/english.lng.php
Expand Up @@ -2021,3 +2021,8 @@
$lng['error']['domain_nopunycode'] = 'You must not specify punycode (IDNA). The domain will automatically be converted';
$lng['admin']['dnsenabled'] = 'Enable DNS editor';
$lng['error']['dns_record_toolong'] = 'Records/labels can only be up to 63 characters';

// Added in froxlor 0.9.7-rc1
$lng['serversettings']['panel_customer_hide_options']['title'] = 'Hide menu items and traffic charts in customer panel';
$lng['serversettings']['panel_customer_hide_options']['description'] = 'Select items to hide in customer panel. To select multiple options, hold down CTRL while selecting.';

4 changes: 4 additions & 0 deletions lng/german.lng.php
Expand Up @@ -1674,3 +1674,7 @@
$lng['error']['domain_nopunycode'] = 'Die Eingabe von Punycode (IDNA) ist nicht notwendig. Die Domain wird automatisch konvertiert.';
$lng['admin']['dnsenabled'] = 'Zugriff auf DNS Editor';
$lng['error']['dns_record_toolong'] = 'Records/Labels können maximal 63 Zeichen lang sein';

// Added in froxlor 0.9.37-rc1
$lng['serversettings']['panel_customer_hide_options']['title'] = 'Menüpunkte und Traffic-Charts im Kundenbereich ausblenden';
$lng['serversettings']['panel_customer_hide_options']['description'] = 'Wählen Sie hier die gewünschten Menüpunkte und Traffic-Charts aus, welche im Kundenbereich ausgeblendet werden sollen. Für Mehrfachauswahl, halten Sie während der Auswahl STRG gedrückt.';
6 changes: 3 additions & 3 deletions templates/Sparkle/assets/js/traffic.js
Expand Up @@ -93,9 +93,9 @@ $(document).ready(function() {
};


$.plot('#ftpchart', ftpdata, options);
$.plot('#httpchart', httpdata, options);
$.plot('#mailchart', maildata, options);
$('#ftpchart').plot(ftpdata, options);
$('#httpchart').plot(httpdata, options);
$('#mailchart').plot(maildata, options);

$("<div id='tooltip'></div>").css({
position: "absolute",
Expand Down
18 changes: 12 additions & 6 deletions templates/Sparkle/customer/traffic/traffic.tpl
Expand Up @@ -37,12 +37,18 @@ $header
</form>

<div id="charts" class="hidden">
<h3>HTTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['http']})</h3>
<div id="httpchart" class="trafficchart"></div>
<h3>FTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['ftp']})</h3>
<div id="ftpchart" class="trafficchart"></div>
<h3>Mail {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['mail']})</h3>
<div id="mailchart" class="trafficchart"></div>
<if !Settings::IsInList('panel.customer_hide_options','traffic.http')>
<h3>HTTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['http']})</h3>
<div id="httpchart" class="trafficchart"></div>
</if>
<if !Settings::IsInList('panel.customer_hide_options','traffic.ftp')>
<h3>FTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['ftp']})</h3>
<div id="ftpchart" class="trafficchart"></div>
</if>
<if !Settings::IsInList('panel.customer_hide_options','traffic.mail')>
<h3>Mail {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['mail']})</h3>
<div id="mailchart" class="trafficchart"></div>
</if>
</div>
</article>
$footer
18 changes: 12 additions & 6 deletions templates/Sparkle/customer/traffic/traffic_details.tpl
Expand Up @@ -31,12 +31,18 @@ $header
</tbody>
</table>
<div id="charts" class="hidden">
<h3>HTTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['http']})</h3>
<div id="httpchart" class="trafficchart"></div>
<h3>FTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['ftp']})</h3>
<div id="ftpchart" class="trafficchart"></div>
<h3>Mail {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['mail']})</h3>
<div id="mailchart" class="trafficchart"></div>
<if !Settings::IsInList('panel.customer_hide_options','traffic.http')>
<h3>HTTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['http']})</h3>
<div id="httpchart" class="trafficchart"></div>
</if>
<if !Settings::IsInList('panel.customer_hide_options','traffic.ftp')>
<h3>FTP {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['ftp']})</h3>
<div id="ftpchart" class="trafficchart"></div>
</if>
<if !Settings::IsInList('panel.customer_hide_options','traffic.mail')>
<h3>Mail {$lng['admin']['traffic']} ({$lng['traffic']['months']['total']} {$traffic_complete['mail']})</h3>
<div id="mailchart" class="trafficchart"></div>
</if>
</div>
</article>
$footer

0 comments on commit 4a3b64b

Please sign in to comment.