Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Dirk Dankhoff
ISPConfig 3
Commits
c71060dc
Commit
c71060dc
authored
Jul 07, 2010
by
tbrehm
Browse files
Implemented: FS#556 - See limits in control panel
Implemented: FS#951 - Dashboard module
parent
1ac4ff4c
Changes
9
Hide whitespace changes
Inline
Side-by-side
interface/web/dashboard/dashboard.php
View file @
c71060dc
...
...
@@ -99,27 +99,44 @@ if($_SESSION["s"]["user"]["typ"] == 'admin') {
$app
->
tpl
->
setloop
(
'info'
,
$info
);
/*
* Show all modules, the user is allowed to use
*/
$modules
=
explode
(
','
,
$_SESSION
[
's'
][
'user'
][
'modules'
]);
$mod
=
array
();
if
(
is_array
(
$modules
))
{
foreach
(
$modules
as
$mt
)
{
if
(
is_file
(
'../'
.
$mt
.
'/lib/module.conf.php'
))
{
if
(
!
preg_match
(
"/^[a-z]
{
2,20
}
$/i"
,
$mt
))
die
(
'module name contains unallowed chars.'
);
include_once
(
'../'
.
$mt
.
'/lib/module.conf.php'
);
/* We don't want to show the dashboard */
if
(
$mt
!=
'dashboard'
)
{
$mod
[]
=
array
(
'modules_title'
=>
$app
->
lng
(
$module
[
'title'
]),
'modules_startpage'
=>
$module
[
'startpage'
],
'modules_name'
=>
$module
[
'name'
]);
}
}
/* Load the dashlets*/
$dashlet_list
=
array
();
$handle
=
@
opendir
(
ISPC_WEB_PATH
.
'/dashboard/dashlets'
);
while
(
$file
=
@
readdir
(
$handle
))
{
if
(
$file
!=
'.'
&&
$file
!=
'..'
&&
!
is_dir
(
$file
))
{
$dashlet_name
=
substr
(
$file
,
0
,
-
4
);
$dashlet_class
=
'dashlet_'
.
$dashlet_name
;
include_once
(
ISPC_WEB_PATH
.
'/dashboard/dashlets/'
.
$file
);
$dashlet_list
[
$dashlet_name
]
=
new
$dashlet_class
;
}
}
/* Which dashlets in which column */
/******************************************************************************/
$leftcol_dashlets
=
array
(
'modules'
);
$rightcol_dashlets
=
array
(
'limits'
);
/******************************************************************************/
$app
->
tpl
->
setloop
(
'modules'
,
$mod
);
/* Fill the left column */
$leftcol
=
array
();
foreach
(
$leftcol_dashlets
as
$name
)
{
if
(
isset
(
$dashlet_list
[
$name
]))
{
$leftcol
[][
'content'
]
=
$dashlet_list
[
$name
]
->
show
();
}
}
$app
->
tpl
->
setloop
(
'leftcol'
,
$leftcol
);
/* Fill the right columnn */
$rightcol
=
array
();
foreach
(
$rightcol_dashlets
as
$name
)
{
if
(
isset
(
$dashlet_list
[
$name
]))
{
$rightcol
[][
'content'
]
=
$dashlet_list
[
$name
]
->
show
();
}
}
$app
->
tpl
->
setloop
(
'rightcol'
,
$rightcol
);
//* Do Output
$app
->
tpl
->
pparse
();
...
...
interface/web/dashboard/dashlets/limits.php
0 → 100644
View file @
c71060dc
<?php
class
dashlet_limits
{
function
show
()
{
global
$app
,
$conf
;
$limits
=
array
();
/* Limits to be shown*/
$limits
[]
=
array
(
'field'
=>
'limit_maildomain'
,
'db_table'
=>
'mail_domain'
,
'db_where'
=>
''
);
$limits
[]
=
array
(
'field'
=>
'limit_mailbox'
,
'db_table'
=>
'mail_user'
,
'db_where'
=>
''
);
$limits
[]
=
array
(
'field'
=>
'limit_mailalias'
,
'db_table'
=>
'mail_forwarding'
,
'db_where'
=>
"type = 'alias'"
);
$limits
[]
=
array
(
'field'
=>
'limit_mailaliasdomain'
,
'db_table'
=>
'mail_forwarding'
,
'db_where'
=>
"type = 'aliasdomain'"
);
$limits
[]
=
array
(
'field'
=>
'limit_mailforward'
,
'db_table'
=>
'mail_forwarding'
,
'db_where'
=>
"type = 'forward'"
);
$limits
[]
=
array
(
'field'
=>
'limit_mailcatchall'
,
'db_table'
=>
'mail_forwarding'
,
'db_where'
=>
"type = 'catchall'"
);
$limits
[]
=
array
(
'field'
=>
'limit_mailrouting'
,
'db_table'
=>
'mail_transport'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_mailfilter'
,
'db_table'
=>
'mail_user_filter'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_fetchmail'
,
'db_table'
=>
'mail_get'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_spamfilter_wblist'
,
'db_table'
=>
'spamfilter_wblist'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_spamfilter_user'
,
'db_table'
=>
'spamfilter_users'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_spamfilter_policy'
,
'db_table'
=>
'spamfilter_policy'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_web_domain'
,
'db_table'
=>
'web_domain'
,
'db_where'
=>
"type = 'vhost'"
);
$limits
[]
=
array
(
'field'
=>
'limit_web_subdomain'
,
'db_table'
=>
'web_domain'
,
'db_where'
=>
"type = 'subdomain'"
);
$limits
[]
=
array
(
'field'
=>
'limit_web_aliasdomain'
,
'db_table'
=>
'web_domain'
,
'db_where'
=>
"type = 'aliasdomain'"
);
$limits
[]
=
array
(
'field'
=>
'limit_ftp_user'
,
'db_table'
=>
'ftp_user'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_shell_user'
,
'db_table'
=>
'shell_user'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_dns_zone'
,
'db_table'
=>
'dns_soa'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_dns_record'
,
'db_table'
=>
'dns_rr'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_database'
,
'db_table'
=>
'web_database'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_cron'
,
'db_table'
=>
'cron'
,
'db_where'
=>
""
);
$limits
[]
=
array
(
'field'
=>
'limit_client'
,
'db_table'
=>
'client'
,
'db_where'
=>
""
);
//* Loading Template
$app
->
uses
(
'tpl,tform'
);
$tpl
=
new
tpl
;
$tpl
->
newTemplate
(
"dashlets/templates/limits.htm"
);
$lng_file
=
'lib/lang/'
.
$_SESSION
[
's'
][
'language'
]
.
'_dashlet_limits.lng'
;
include
(
$lng_file
);
$tpl
->
setVar
(
$wb
);
if
(
$app
->
auth
->
is_admin
())
{
$user_is_admin
=
1
;
}
else
{
$user_is_admin
=
0
;
}
$tpl
->
setVar
(
'is_admin'
,
$user_is_admin
);
if
(
$user_is_admin
==
0
)
{
$client_group_id
=
$_SESSION
[
"s"
][
"user"
][
"default_group"
];
$client
=
$app
->
db
->
queryOneRecord
(
"SELECT * FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid =
$client_group_id
"
);
$rows
=
array
();
foreach
(
$limits
as
$limit
)
{
$field
=
$limit
[
'field'
];
if
(
$client
[
$field
]
!=
0
)
{
$value
=
(
$client
[
$field
]
==
'-1'
)
?
$wb
[
'unlimited_txt'
]
:
$client
[
$field
];
$rows
[]
=
array
(
'field'
=>
$field
,
'field_txt'
=>
$wb
[
$field
.
'_txt'
],
'value'
=>
$value
,
'usage'
=>
$this
->
_get_limit_usage
(
$limit
));
}
}
$tpl
->
setLoop
(
'rows'
,
$rows
);
}
return
$tpl
->
grab
();
}
function
_get_limit_usage
(
$limit
)
{
global
$app
;
$sql
=
"SELECT count(sys_userid) as number FROM "
.
$limit
[
'db_table'
]
.
" WHERE "
;
if
(
$limit
[
'db_where'
]
!=
''
)
$sql
.
=
$limit
[
'db_where'
]
.
" AND "
;
$sql
.
=
$app
->
tform
->
getAuthSQL
(
'r'
);
$rec
=
$app
->
db
->
queryOneRecord
(
$sql
);
return
$rec
[
'number'
];
}
}
?>
\ No newline at end of file
interface/web/dashboard/dashlets/modules.php
0 → 100644
View file @
c71060dc
<?php
class
dashlet_modules
{
function
show
()
{
global
$app
,
$conf
;
//* Loading Template
$app
->
uses
(
'tpl'
);
$tpl
=
new
tpl
;
$tpl
->
newTemplate
(
"dashlets/templates/modules.htm"
);
$lng_file
=
'lib/lang/'
.
$_SESSION
[
's'
][
'language'
]
.
'_dashlet_modules.lng'
;
include
(
$lng_file
);
$tpl
->
setVar
(
$wb
);
/*
* Show all modules, the user is allowed to use
*/
$modules
=
explode
(
','
,
$_SESSION
[
's'
][
'user'
][
'modules'
]);
$mod
=
array
();
if
(
is_array
(
$modules
))
{
foreach
(
$modules
as
$mt
)
{
if
(
is_file
(
'../'
.
$mt
.
'/lib/module.conf.php'
))
{
if
(
!
preg_match
(
"/^[a-z]
{
2,20
}
$/i"
,
$mt
))
die
(
'module name contains unallowed chars.'
);
include_once
(
'../'
.
$mt
.
'/lib/module.conf.php'
);
/* We don't want to show the dashboard */
if
(
$mt
!=
'dashboard'
)
{
$mod
[]
=
array
(
'modules_title'
=>
$app
->
lng
(
$module
[
'title'
]),
'modules_startpage'
=>
$module
[
'startpage'
],
'modules_name'
=>
$module
[
'name'
]);
}
}
}
$tpl
->
setloop
(
'modules'
,
$mod
);
}
return
$tpl
->
grab
();
}
}
?>
\ No newline at end of file
interface/web/dashboard/dashlets/templates/limits.htm
0 → 100644
View file @
c71060dc
<h2>
{tmpl_var name='limits_txt'}
</h2>
<div
style=
"width:350px;"
>
<table
class=
"list"
>
<tmpl_loop
name=
'rows'
>
<tr
class=
"tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>"
>
<td>
{tmpl_var name='field_txt'}
</td>
<td>
{tmpl_var name='usage'} {tmpl_var name='of_txt'} {tmpl_var name='value'}
</td>
</tr>
</tmpl_loop>
</table>
</div>
\ No newline at end of file
interface/web/dashboard/dashlets/templates/modules.htm
0 → 100644
View file @
c71060dc
<h2>
{tmpl_var name='available_modules_txt'}
</h2>
<div
style=
"width:350px;"
>
<tmpl_loop
name=
'modules'
>
<div
class=
"dashboard-modules {tmpl_var name='modules_name'}"
>
<a
href=
"#"
onclick=
"capp('{tmpl_var name='modules_name'}')"
>
{tmpl_var name='modules_title'}
</a>
</div>
</tmpl_loop>
</div>
\ No newline at end of file
interface/web/dashboard/lib/lang/en_dashlet_limits.lng
0 → 100644
View file @
c71060dc
<?php
$wb
[
'limits_txt'
]
=
"Account limits"
;
$wb
[
'of_txt'
]
=
"of"
;
$wb
[
'unlimited_txt'
]
=
"Unlimited"
;
$wb
[
'limit_maildomain_txt'
]
=
"Number of email domains"
;
$wb
[
'limit_mailbox_txt'
]
=
"Number of mailboxes"
;
$wb
[
"limit_mailalias_txt"
]
=
'Number of email aliases'
;
$wb
[
"limit_mailaliasdomain_txt"
]
=
'Number of domain aliases'
;
$wb
[
"limit_mailforward_txt"
]
=
'Number of email forwarders'
;
$wb
[
"limit_mailcatchall_txt"
]
=
'Number of email catchall accounts'
;
$wb
[
"limit_mailrouting_txt"
]
=
'Number of email routes'
;
$wb
[
"limit_mailfilter_txt"
]
=
'Number of email filters'
;
$wb
[
"limit_fetchmail_txt"
]
=
'Number of fetchmail accounts'
;
$wb
[
"limit_spamfilter_wblist_txt"
]
=
'Number of spamfilter white / blacklist filters'
;
$wb
[
"limit_spamfilter_user_txt"
]
=
'Number of spamfilter users'
;
$wb
[
"limit_spamfilter_policy_txt"
]
=
'Number of spamfilter policys'
;
$wb
[
"limit_cron_txt"
]
=
'Number of cron jobs'
;
$wb
[
"limit_web_domain_txt"
]
=
'Number of web domains'
;
$wb
[
"limit_web_aliasdomain_txt"
]
=
'Number of web aliasdomains'
;
$wb
[
"limit_web_subdomain_txt"
]
=
'Number of web subdomains'
;
$wb
[
"limit_ftp_user_txt"
]
=
'Number of FTP users'
;
$wb
[
"limit_dns_zone_txt"
]
=
'Number of DNS zones'
;
$wb
[
"limit_dns_record_txt"
]
=
'Number DNS records'
;
$wb
[
"limit_shell_user_txt"
]
=
'Number of Shell users'
;
$wb
[
"limit_webdav_user_txt"
]
=
'Number of Webdav users'
;
$wb
[
"limit_client_txt"
]
=
'Number of Clients'
;
$wb
[
"limit_database_txt"
]
=
'Number of Databases'
;
?>
interface/web/dashboard/lib/lang/en_dashlet_modules.lng
0 → 100644
View file @
c71060dc
<?php
$wb
[
'available_modules_txt'
]
=
"Available Modules"
;
?>
interface/web/dashboard/templates/dashboard.htm
View file @
c71060dc
<h1><tmpl_var
name=
"welcome_user"
></h1>
<hr
/>
<div
class=
"panel panel_dashboard"
>
<div>
<tmpl_if
name=
'error'
>
...
...
@@ -25,15 +25,16 @@
</div>
</tmpl_if>
</div>
<div
style=
"float:left; width:350px;"
>
<tmpl_loop
name=
'leftcol'
>
{tmpl_var name='content'}
<p>
</p>
</tmpl_loop>
</div>
<div
style=
"float:left; width:350px;"
>
<tmpl_loop
name=
'rightcol'
>
{tmpl_var name='content'}
<p>
</p>
<h2>
{tmpl_var name='available_modules_txt'}
</h2>
<div
style=
"width:700px;"
>
<tmpl_loop
name=
'modules'
>
<div
class=
"dashboard-modules {tmpl_var name='modules_name'}"
>
<a
href=
"#"
onclick=
"capp('{tmpl_var name='modules_name'}')"
>
{tmpl_var name='modules_title'}
</a>
</div>
</tmpl_loop>
</div>
</div>
...
...
interface/web/themes/default/css/screen/content_ispc.css
View file @
c71060dc
...
...
@@ -233,8 +233,8 @@
/* Dashboard */
.dashboard-modules
{
float
:
left
;
width
:
10
0px
;
height
:
10
0px
;
width
:
6
0px
;
height
:
6
0px
;
border
:
1px
dotted
#888888
;
background-color
:
#cccccc
;
margin
:
10px
;
...
...
@@ -248,20 +248,24 @@
display
:
block
;
font-weight
:
bold
;
height
:
30px
;
padding-top
:
70
px
;
width
:
10
0px
;
padding-top
:
42
px
;
width
:
6
0px
;
text-decoration
:
none
;
}
.dashboard-modules.admin
{
background-image
:
url('../../icons/x64/system.png')
!important
;
}
.dashboard-modules.client
{
background-image
:
url('../../icons/x64/client.png')
!important
;
}
.dashboard-modules.mail
{
background-image
:
url('../../icons/x64/email.png')
!important
;
}
.dashboard-modules.monitor
{
background-image
:
url('../../icons/x64/monitor.png')
!important
;
}
.dashboard-modules.dns
{
background-image
:
url('../../icons/x64/dns.png')
!important
;
}
.dashboard-modules.tools
{
background-image
:
url('../../icons/x64/tools.png')
!important
;
}
.dashboard-modules.help
{
background-image
:
url('../../icons/x64/help.png')
!important
;
}
.dashboard-modules.domain
{
background-image
:
url('../../icons/x64/domain.png')
!important
;
}
.dashboard-modules.sites
{
background-image
:
url('../../icons/x64/sites.png')
!important
;
}
.dashboard-modules.admin
{
background-image
:
url('../../icons/x32/system.png')
!important
;
}
.dashboard-modules.client
{
background-image
:
url('../../icons/x32/client.png')
!important
;
}
.dashboard-modules.mail
{
background-image
:
url('../../icons/x32/email.png')
!important
;
}
.dashboard-modules.monitor
{
background-image
:
url('../../icons/x32/monitor.png')
!important
;
}
.dashboard-modules.dns
{
background-image
:
url('../../icons/x32/dns.png')
!important
;
}
.dashboard-modules.tools
{
background-image
:
url('../../icons/x32/tools.png')
!important
;
}
.dashboard-modules.help
{
background-image
:
url('../../icons/x32/help.png')
!important
;
}
.dashboard-modules.domain
{
background-image
:
url('../../icons/x32/domain.png')
!important
;
}
.dashboard-modules.sites
{
background-image
:
url('../../icons/x32/sites.png')
!important
;
}
.panel_dashboard
h2
{
font-size
:
20px
;
}
/* Image-Replacement */
.swap
{
background-repeat
:
no-repeat
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment