-
+
diff --git a/templates/Sparkle/admin/index/index.tpl b/templates/Sparkle/admin/index/index.tpl
index c80b0dbd..ddd1d376 100644
--- a/templates/Sparkle/admin/index/index.tpl
+++ b/templates/Sparkle/admin/index/index.tpl
@@ -1,75 +1,204 @@
$header
-
-
+
+
+ {$lng['panel']['dashboard']}
+
+
+
+
+
+ {$lng['admin']['customers']}
+
+ {$overview['number_customers']} {$lng['panel']['used']}
+ {$userinfo['customers_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['customers']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['domains']}
+
+ {$overview['number_domains']} {$lng['panel']['used']}
+ {$userinfo['domains_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['domains']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['subdomains']}
+
+ {$overview['subdomains_used']} {$lng['panel']['used']}
+ {$userinfo['subdomains_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['subdomains']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['diskspace']}
+
+ {$overview['diskspace_used']} {$lng['panel']['used']}
+ {$userinfo['diskspace_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['diskspace']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['traffic']}
+
+ {$overview['traffic_used']} {$lng['panel']['used']}
+ {$userinfo['traffic_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['traffic']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['mysqls']}
+
+ {$overview['mysqls_used']} {$lng['panel']['used']}
+ {$userinfo['mysqls_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['mysqls']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['emails']}
+
+ {$overview['emails_used']} {$lng['panel']['used']}
+ {$userinfo['emails_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['emails']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['accounts']}
+
+ {$overview['email_accounts_used']} {$lng['panel']['used']}
+ {$userinfo['email_accounts_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['email_accounts']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+ {$lng['customer']['forwarders']}
+
+ {$overview['email_forwarders_used']} {$lng['panel']['used']}
+ {$userinfo['email_forwarders_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['email_forwarders']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+ {$lng['customer']['email_quota']}
+
+ {$overview['email_quota_used']} {$lng['panel']['used']}
+ {$userinfo['email_quota_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['email_quota']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['autoresponder']}
+
+ {$overview['email_autoresponder_used']} {$lng['panel']['used']}
+ {$userinfo['email_autoresponder_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['email_autoresponder']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['aps']['numberofapspackages']}
+
+ {$overview['aps_packages_used']} {$lng['panel']['used']}
+ {$userinfo['aps_packages_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['aps_packages']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+ {$lng['customer']['ftps']}
+
+ {$overview['ftps_used']} {$lng['panel']['used']}
+ {$userinfo['ftps_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['ftps']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+ {$lng['customer']['tickets']}
+
+ {$overview['tickets_used']} {$lng['panel']['used']}
+ {$userinfo['tickets_used']} {$lng['panel']['assigned']}
+
+ {$userinfo['tickets']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
-
- {$lng['admin']['ressourcedetails']}
-
-
- {$lng['admin']['customers']} {$lng['admin']['usedmax']}
- {$overview['number_customers']} ({$userinfo['customers']})
-
-
- {$lng['customer']['domains']} {$lng['admin']['usedmax']}
- {$overview['number_domains']} ({$userinfo['domains']})
-
-
- {$lng['customer']['subdomains']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['subdomains_used']} ({$userinfo['subdomains_used']}/{$userinfo['subdomains']})
-
-
- {$lng['customer']['diskspace']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['diskspace_used']} ({$userinfo['diskspace_used']}/{$userinfo['diskspace']})
-
-
- {$lng['customer']['traffic']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['traffic_used']} ({$userinfo['traffic_used']}/{$userinfo['traffic']})
-
-
- {$lng['customer']['mysqls']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['mysqls_used']} ({$userinfo['mysqls_used']}/{$userinfo['mysqls']})
-
-
- {$lng['customer']['emails']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['emails_used']} ({$userinfo['emails_used']}/{$userinfo['emails']})
-
-
- {$lng['customer']['accounts']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['email_accounts_used']} ({$userinfo['email_accounts_used']}/{$userinfo['email_accounts']})
-
-
- {$lng['customer']['forwarders']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['email_forwarders_used']} ({$userinfo['email_forwarders_used']}/{$userinfo['email_forwarders']})
-
-
-
- {$lng['customer']['email_quota']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['email_quota_used']} ({$userinfo['email_quota_used']}/{$userinfo['email_quota']})
-
-
-
-
- {$lng['customer']['autoresponder']} {$lng['admin']['usedmax']}
- {$userinfo['email_autoresponder_used']} ({$userinfo['email_autoresponder']})
-
-
-
-
- {$lng['aps']['numberofapspackages']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['aps_packages_used']} ({$userinfo['aps_packages_used']}/{$userinfo['aps_packages']})
-
-
-
- {$lng['customer']['ftps']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['ftps_used']} ({$userinfo['ftps_used']}/{$userinfo['ftps']})
-
-
-
- {$lng['customer']['tickets']} {$lng['admin']['used']} ({$lng['admin']['assignedmax']})
- {$overview['tickets_used']} ({$userinfo['tickets_used']}/{$userinfo['tickets']})
-
-
{$lng['admin']['systemdetails']}
@@ -113,6 +242,10 @@ $header
$uptime
+
+
+
+
{$lng['admin']['froxlordetails']}
@@ -142,7 +275,7 @@ $header
-
+
$footer
diff --git a/templates/Sparkle/admin/settings/settings.tpl b/templates/Sparkle/admin/settings/settings.tpl
index dfb5fcd6..db9df1f4 100644
--- a/templates/Sparkle/admin/settings/settings.tpl
+++ b/templates/Sparkle/admin/settings/settings.tpl
@@ -10,11 +10,13 @@
diff --git a/templates/Sparkle/admin/settings/settings_group.tpl b/templates/Sparkle/admin/settings/settings_group.tpl
index 035ca9e3..c563bf4c 100644
--- a/templates/Sparkle/admin/settings/settings_group.tpl
+++ b/templates/Sparkle/admin/settings/settings_group.tpl
@@ -1,9 +1,10 @@
-
-
- {$groupdetails['title']}
-
-
-
-
-
-
+
+
+
+ {$groupdetails['title']}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/Sparkle/assets/css/main.css b/templates/Sparkle/assets/css/main.css
index 31914c64..c184bd25 100644
--- a/templates/Sparkle/assets/css/main.css
+++ b/templates/Sparkle/assets/css/main.css
@@ -11,7 +11,7 @@ article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
/* TYPE */
html,body {
- font:12px/18px Helvetica,Arial,Verdana,sans-serif;
+ font:12px/18px 'Lucida Grande', 'Lucida Sans Unicode', Helvetica, Arial, Verdana, sans-serif;
background-color:#f2f2f2;
color:#333;
-webkit-font-smoothing: antialiased;
@@ -23,7 +23,7 @@ body {
}
.dark {
- background-color: #e9edf0;
+ background: #f0f2f4;
border-bottom:1px solid #d1d5d8;
}
@@ -45,11 +45,15 @@ h2, h3 {
}
h2 {
- font-size:17px;
+ font-size:24px;
+ font-weight: normal;
}
h3 {
- font-size: 15px;
+ font-size: 16px;
+}
+h4 {
+ font-size: 1em;
}
@@ -68,24 +72,27 @@ td a {
}
.topheader {
- background: #fafafa;
- background: rgba(250,250,250,0.9);
+ background: #f0f2f4;
+ background: rgba(240, 242, 244, 0.85098);
top: 0px;
width: 100%;
padding: 2px 0 0 5px;
- box-shadow: 0 1px 8px rgba(0, 0, 0, 0.35);
+ box-shadow: 0 1px 8px rgba(0, 0, 0, 0.10);
position:fixed;
z-index: 100;
+ border-bottom-color: rgb(221, 221, 221);
+ border-bottom-style: solid;
+ border-bottom-width: 1px;
}
.topheader_navigation {
float: right;
- margin: 14px 50px 0 0;
+ margin: 17px 50px 0 0;
}
/* TOPHEADER NAV */
ul.topheadernav {
list-style-type: none;
- font-size: 13px;
+ font-size: 12px;
}
ul.topheadernav li {
padding: 0px;
@@ -132,7 +139,7 @@ nav div:first-child {
.topheadernav img {
padding: 0px;
- margin: 0px;
+ margin: -4px 0 0 0;
}
.countbubble {
display: block;
@@ -145,7 +152,7 @@ nav div:first-child {
line-height: 9px;
border-radius: 3px;
right: -6px;
- bottom: -3px;
+ bottom: -1px;
}
/* FOOTER */
@@ -356,6 +363,9 @@ aside.right {
right:36px;
font-size:80%;
}
+.overviewsearch input[type="text"] {
+ width: 150px;
+}
.overviewadd {
padding:10px;
@@ -653,6 +663,10 @@ textarea {
border-radius: 3px;
}
+input[type="text"], input[type="password"] {
+ width: 400px;
+}
+
input[type="password"] {
background:#fff url(../img/icons/password.png) no-repeat 5px 4px;
}
@@ -751,6 +765,17 @@ select[multiple="multiple"] {
border: 1px solid #d1d5d8;
}
+.dboardcanvas {
+ float:left;
+ width: 48%;
+ margin-top:15px;
+ margin-right:0;
+ margin-bottom:15px;
+ margin-left:15px;
+ padding:0;
+ box-shadow: 0px 0px 0px black;
+}
+
.dboarditemfull {
position:relative;
overflow:hidden;
@@ -784,9 +809,8 @@ select[multiple="multiple"] {
.cronjobtask li {
background-image: url(../img/icons/clock.png);
background-repeat: no-repeat;
- background-position: 0px center;
- padding-left: 18px;
- height: 18px;
+ background-position: 0px 1px;
+ padding-left: 18px;
}
.overviewheading {
@@ -813,6 +837,7 @@ select[multiple="multiple"] {
-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);
-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);
box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);
+ text-align: center;
}
.progress .bar {
width:1px;
@@ -884,3 +909,24 @@ label.nobr {
text-indent:-9999px;
background: url(../img/top.png) no-repeat;
}
+
+/* CANVAS STUFF */
+.canvasitems {
+ position:relative;
+ overflow:hidden;
+ width:100%;
+ margin-top:10px;
+ margin-bottom:10px;
+ padding: 0 0 0 10px;
+}
+.canvasbox {
+ width: 130px;
+ margin: 10px 20px 10px 0;
+ text-align: center;
+ float: left;
+ height: 150px;
+ line-height: normal;
+}
+canvas {
+ width: 120px;
+}
diff --git a/templates/Sparkle/assets/js/circular.js b/templates/Sparkle/assets/js/circular.js
new file mode 100644
index 00000000..f39e87c7
--- /dev/null
+++ b/templates/Sparkle/assets/js/circular.js
@@ -0,0 +1,142 @@
+(function($,sr){
+ var debounce = function (func, threshold, execAsap) {
+ var timeout;
+
+ return function debounced () {
+ var obj = this, args = arguments;
+ function delayed () {
+ if (!execAsap)
+ func.apply(obj, args);
+ timeout = null;
+ };
+
+ if (timeout)
+ clearTimeout(timeout);
+ else if (execAsap)
+ func.apply(obj, args);
+
+ timeout = setTimeout(delayed, threshold || 100);
+ };
+ }
+ // smartresize
+ jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
+
+})(jQuery,'smartresize');
+
+
+$(window).smartresize(function(){
+ resizecanvas();
+});
+
+function resizecanvas() {
+ var divwidth = $('#statsbox').width();
+ var space = divwidth % 150;
+ var elementspl = (divwidth - space) / 150;
+ var elementwidth = 130 + Math.round(space / elementspl) - 1;
+ $(".canvasbox").animate({width: elementwidth}, 500);
+}
+
+$(document).ready(function() {
+ resizecanvas();
+
+ var usedColor = "#91c46b";
+ var assiColor = "#287e7e";
+ var unliColor = "#56606e";
+ var overColor = "#dd514c";
+
+ $(".circular").each(function(index, element) {
+ var canvas = "#" + $(element).attr("id") + "-canvas";
+ var used = parseFloat($(element).attr("used"));
+ var available = $(element).attr("available");
+ var assigned = parseFloat($(element).attr("assigned"));
+ var usedD, usedP, assignedP, assignedD;
+
+ // Draw basic circle
+ circularCircle(canvas, 40, 0, 270, 8, "#d2d4d8");
+
+ // Draw percentages
+ if (!isNaN(assigned) && available == "∞") {
+ // Unlimited ressource and assigned
+ if (assigned > used) {
+ // Draw assigned as full circle
+ circularCircle(canvas, 38, 0, 270, 4, assiColor);
+ // Draw used as percentage of full circle
+ usedP = Math.round(100 / assigned * used);
+ usedD = 270 * usedP / 100;
+ circularCircle(canvas, 42, 0, usedD, 4, usedColor);
+ } else if (used > assigned) {
+ // Draw used as full circle
+ circularCircle(canvas, 42, 0, 270, 4, usedColor);
+ // Draw assigned as percentage of full circle
+ assignedP = Math.round(100 / used * assigned);
+ assignedD = 270 * assignedP / 100;
+ circularCircle(canvas, 38, 0, assignedD, 4, assiColor);
+ } else {
+ circularCircle(canvas, 42, 0, 270, 4, usedColor);
+ circularCircle(canvas, 38, 0, 270, 4, assiColor);
+ }
+ circularText(canvas, 60, 42, 26, "∞")
+ } else if (!isNaN(assigned)) {
+ // Limited ressources but assigned
+ available = parseFloat(available);
+
+ assignedP = Math.round(100 / available * assigned);
+ assignedD = 270 * assignedP / 100;
+ circularCircle(canvas, 38, 0, assignedD, 4, assiColor);
+
+ usedP = Math.round(100 / available * used);
+ usedD = 270 * usedP / 100;
+ circularCircle(canvas, 42, 0, usedD, 4, usedColor);
+ } else if (available == "∞") {
+ circularCircle(canvas, 40, 0, 270, 8, unliColor);
+ circularText(canvas, 60, 42, 26, "∞")
+ } else {
+ // Limited ressources
+ available = parseFloat(available);
+ usedP = 100 / available * used;
+ if (usedP < 1 && usedP > 0) {
+ usedP = 1;
+ } else {
+ usedP = Math.round(usedP);
+ }
+ // Check if customer is over Limit
+ usedD = 270 * usedP / 100;
+ if (usedD > 270) { usedD = 270; }
+ if (usedP > 90) {
+ circularCircle(canvas, 40, 0, usedD, 8, overColor);
+ } else {
+ circularCircle(canvas, 40, 0, usedD, 8, usedColor);
+ }
+ if (usedP > 100) {
+ circularText(canvas, 60, 42, 22, usedP + "%", overColor);
+ } else {
+ circularText(canvas, 60, 42, 22, usedP + "%")
+ }
+
+
+ }
+
+ });
+
+});
+
+function circularCircle(canvas, radius, start, end, stroke, color) {
+ $(canvas).drawArc({
+ strokeStyle: color,
+ strokeWidth: stroke,
+ x: 60, y: 44,
+ radius: radius,
+ start: start, end: end,
+ rotate: -135
+ });
+}
+function circularText(canvas, x, y, size, text, color) {
+ color = color || "#343a41";
+ $(canvas).drawText({
+ fillStyle: color,
+ x: x, y: y,
+ fontSize: size,
+ fontFamily: "Lucida Grande, Verdana, sans-serif",
+ text: text
+ });
+}
\ No newline at end of file
diff --git a/templates/Sparkle/assets/js/jcanvas.min.js b/templates/Sparkle/assets/js/jcanvas.min.js
new file mode 100644
index 00000000..dc58b0d3
--- /dev/null
+++ b/templates/Sparkle/assets/js/jcanvas.min.js
@@ -0,0 +1,5 @@
+/**
+ * jCanvas v13.09.16
+ * Copyright 2013 Caleb Evans
+ * Released under the MIT license
+ */(function(e,t,n,r,i,s,o,u,a){function L(e){var t=this;l(t,e);return t}function A(e){e?l(L.prototype,e):A.prefs=L.prototype=l({},f);return this}function O(e){return h(e)==="string"}function M(e){return e&&e.getContext?e.getContext("2d"):u}function _(e){e=l({},e);e.masks=e.masks.slice(0);return e}function D(e,t){var n;e.save();n=_(t.transforms);t.savedTransforms.push(n)}function P(e,t){if(t.savedTransforms.length===0)t.transforms=_(N);else{e.restore();t.transforms=t.savedTransforms.pop()}}function H(e,t,n){p(n.fillStyle)?t.fillStyle=n.fillStyle.call(e,n):t.fillStyle=n.fillStyle;p(n.strokeStyle)?t.strokeStyle=n.strokeStyle.call(e,n):t.strokeStyle=n.strokeStyle;t.lineWidth=n.strokeWidth;if(n.rounded)t.lineCap=t.lineJoin="round";else{t.lineCap=n.strokeCap;t.lineJoin=n.strokeJoin;t.miterLimit=n.miterLimit}t.shadowOffsetX=n.shadowX;t.shadowOffsetY=n.shadowY;t.shadowBlur=n.shadowBlur;t.shadowColor=n.shadowColor;t.globalAlpha=n.opacity;t.globalCompositeOperation=n.compositing;n.imageSmoothing&&(t.webkitImageSmoothingEnabled=t.mozImageSmoothingEnabled=n.imageSmoothing)}function B(e,t,n){if(n.mask){n.autosave&&D(e,t);e.clip();t.transforms.masks.push(n._args)}}function j(e,t){t._transformed&&e.restore()}function F(e,t,n){var r;n.closed&&t.closePath();if(n.shadowStroke&&n.strokeWidth!==0){t.stroke();t.fill();t.shadowColor="transparent";t.shadowBlur=0;t.stroke()}else{t.fill();n.fillStyle!=="transparent"&&(t.shadowColor="transparent");n.strokeWidth!==0&&t.stroke()}n.closed||t.closePath();j(t,n);if(n.mask){r=z(e);B(t,r,n)}}function I(e,t,n){t._toRad=t.inDegrees?v/180:1;e.translate(t.x,t.y);e.rotate(t.rotate*t._toRad);e.translate(-t.x,-t.y);n&&(n.rotate+=t.rotate*t._toRad)}function q(e,t,n){t.scale!==1&&(t.scaleX=t.scaleY=t.scale);e.translate(t.x,t.y);e.scale(t.scaleX,t.scaleY);e.translate(-t.x,-t.y);if(n){n.scaleX*=t.scaleX;n.scaleY*=t.scaleY}}function R(e,t,n){t.translate&&(t.translateX=t.translateY=t.translate);e.translate(t.translateX,t.translateY);if(n){n.translateX+=t.translateX;n.translateY+=t.translateY}}function U(e,t,n,r,i){n._toRad=n.inDegrees?v/180:1;n._transformed=s;t.save();i===a&&(i=r);if(!n.fromCenter&&!n._centered){n.x+=r/2;n.y+=i/2;n._centered=s}n.rotate&&I(t,n,{});(n.scale!==1||n.scaleX!==1||n.scaleY!==1)&&q(t,n,{});(n.translate||n.translateX||n.translateY)&&R(t,n,{})}function z(t){var n;if(S._canvas===t&&S._data)n=S._data;else{n=e.data(t,"jCanvas");if(!n){n={canvas:t,layers:[],layer:{names:{},groups:{}},intersecting:[],lastIntersected:u,cursor:e(t).css("cursor"),drag:{},event:{type:u,x:u,y:u},events:{},transforms:_(N),savedTransforms:[],animating:o,animated:u,pos:0,pixelRatio:1,scaled:!1};e.data(t,"jCanvas",n)}S._canvas=t;S._data=n}return n}function W(e,t,n){var r;for(r in A.events)A.events.hasOwnProperty(r)&&(n[r]||n.cursors&&n.cursors[r])&&X(e,t,n,r)}function X(e,t,n,r){r=ot(r);A.events[r](e,t);n._event=s}function V(e,t,n){var r,i,o;if(n.draggable||n.cursor||n.cursors){r=["mousedown","mousemove","mouseup"];for(o=0;o
=0;n-=1){t=e.intersecting[n];if(t._masks){for(r=t._masks.length-1;r>=0;r-=1)if(!t._masks[r].intersects){t.intersects=o;break}if(t.intersects)break}}return t}function Q(e,t,n,r){if(n&&n.visible&&n._method){r?n._next=r:n._next=u;n._method.call(e,n)}}function G(e,t,n){var r,i,u,a,f,l,h,p;a=t.drag;i=a.layer;f=i.dragGroups||[];r=t.layers;if(n==="mousemove"||n==="touchmove"){if(!a.dragging){a.dragging=s;if(i.bringToFront){r.splice(i.index,1);i.index=r.push(i)}for(p=0;pr.width&&(r.width=u)}o=t.style.fontSize;t.style.fontSize=r.fontSize;r.height=i(e.css(t,"fontSize"))*s.length*r.lineHeight;t.style.fontSize=o}}function pt(e,t){var n=t.text,r=t.maxWidth,i=n.split("\n"),s=[],o,u,a,f,l,c;for(a=0;ar){u!==""&&o.push(u);u=""}u+=l[c];c!==l.length-1&&(u+=" ")}o.push(u)}s=s.concat(o.join("\n").replace(/( (\n))|( $)/gi,"$2").split("\n"))}return s}var f,l=e.extend,c=e.inArray,h=e.type,p=e.isFunction,d=r.round,v=r.PI,m=r.sin,g=r.cos,y=e.event.fix,b,w,E,S={},x={},T={},N={rotate:0,scaleX:1,scaleY:1,translateX:0,translateY:0,masks:[]},C,k;e.fn.jCanvas=A;A.events={};f={align:"center",autosave:s,baseline:"middle",bringToFront:o,ccw:o,closed:o,compositing:"source-over",concavity:0,cornerRadius:0,count:1,cropFromCenter:s,cursor:u,cursors:u,disableEvents:o,draggable:o,dragGroups:u,group:u,groups:u,data:{},each:u,end:360,fillStyle:"transparent",fontStyle:"normal",fontSize:"12pt",fontFamily:"sans-serif",fromCenter:s,fn:u,height:u,imageSmoothing:s,inDegrees:s,index:u,lineHeight:1,layer:o,load:u,mask:o,maxWidth:u,miterLimit:10,name:u,opacity:1,r1:u,r2:u,radius:0,repeat:"repeat",respectAlign:o,rotate:0,rounded:o,scale:1,scaleX:1,scaleY:1,shadowBlur:0,shadowColor:"transparent",shadowStroke:!1,shadowX:0,shadowY:0,sHeight:u,sides:0,source:"",spread:0,start:0,strokeCap:"butt",strokeJoin:"miter",strokeStyle:"transparent",strokeWidth:1,sWidth:u,sx:u,sy:u,text:"",translate:0,translateX:0,translateY:0,type:u,visible:s,width:u,x:0,y:0};A();A.extend=function(n){A.defaults=l(f,n.props);A();n.name&&(e.fn[n.name]=function r(e){var t=this,i,s,o,u,a;for(s=0;sd.height&&(i.sy=d.height-i.sHeight/2);i.sx-i.sWidth/2<0&&(i.sx=i.sWidth/2);i.sx+i.sWidth/2>d.width&&(i.sx=d.width-i.sWidth/2);U(r[e],t,i,i.width,i.height);t.drawImage(d,i.sx-i.sWidth/2,i.sy-i.sHeight/2,i.sWidth,i.sHeight,i.x-i.width/2,i.y-i.height/2,i.width,i.height)}else{U(r[e],t,i,i.width,i.height);t.drawImage(d,i.x-i.width/2,i.y-i.height/2,i.width,i.height)}H(r[e],t,i);t.beginPath();t.rect(i.x-i.width/2,i.y-i.height/2,i.width,i.height);i._event&<(r[e],t,i);t.closePath();t.stroke();j(t,i);B(t,n,i)}function y(t,n,r,i,u,a){return function(){g(n,r,i,u,a);u.load&&u.load.call(t,a);if(u.layer){u._args._masks=i.transforms.masks.slice(0);u._next&&e(t).drawLayers({clear:o,resetFire:s,index:u._next})}}}var r=this,i,f,l,c,h,p,d,v,m;for(f=0;f ")[0];a.width=o.width;a.height=o.height;f=M(a);c.call(a,f);h()}else{f=c.getContext;if(c.src||f)a=c;else{a=new n;a.src=c}if(a.complete||f)h();else{e(a).bind("load",h);a.src=a.src}}}else l=u;return l};e.fn.createGradient=function(t){var n=this,r,i,s,o=[],f,l,c,h,p,d,v;i=new L(t);r=M(n[0]);if(r){i.x1=i.x1||0;i.y1=i.y1||0;i.x2=i.x2||0;i.y2=i.y2||0;i.r1!==u||i.r2!==u?s=r.createRadialGradient(i.x1,i.y1,i.r1,i.x2,i.y2,i.r2):s=r.createLinearGradient(i.x1,i.y1,i.x2,i.y2);for(h=1;i["c"+h]!==a;h+=1)i["s"+h]!==a?o.push(i["s"+h]):o.push(u);f=o.length;o[0]===u&&(o[0]=0);o[f-1]===u&&(o[f-1]=1);for(h=0;hc&&(o[p]=o[h])}else if(o[h]===u){v+=1;o[h]=l+v*((c-l)/d)}s.addColorStop(o[h],i["c"+(h+1)])}}else s=u;return s};e.fn.setPixels=function _t(e){var t=this,n,r,i,s,o,a,f,l,c,h;for(r=0;r ")[0].getContext;A.defaults=f;A.transformShape=U;A.detectEvents=lt;A.closePath=F;A.getTouchEventName=ot;e.jCanvas=A})(jQuery,document,Image,Math,parseFloat,!0,!1,null);
\ No newline at end of file
diff --git a/templates/Sparkle/customer/index/index.tpl b/templates/Sparkle/customer/index/index.tpl
index 058f06c3..3876c4ae 100644
--- a/templates/Sparkle/customer/index/index.tpl
+++ b/templates/Sparkle/customer/index/index.tpl
@@ -1,11 +1,185 @@
$header
+
+
+ {$lng['panel']['dashboard']}
+
+
+
+
+
+
+
+ {$lng['customer']['subdomains']}
+
+ {$userinfo['subdomains_used']} {$lng['panel']['used']}
+
+ {$userinfo['subdomains']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['diskspace']}
+
+ {$userinfo['diskspace_used']} {$lng['panel']['used']}
+
+ {$userinfo['diskspace']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['traffic']}
+
+ {$userinfo['traffic_used']} {$lng['panel']['used']}
+
+ {$userinfo['traffic']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['emails']}
+
+ {$userinfo['emails_used']} {$lng['panel']['used']}
+
+ {$userinfo['emails']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['accounts']}
+
+ {$userinfo['email_accounts_used']} {$lng['panel']['used']}
+
+ {$userinfo['email_accounts']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['forwarders']}
+
+ {$userinfo['email_forwarders_used']} {$lng['panel']['used']}
+
+ {$userinfo['email_forwarders']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['email_quota']}
+
+ {$userinfo['email_quota_used']} {$lng['panel']['used']}
+
+ {$userinfo['email_quota']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['autoresponder']}
+
+ {$userinfo['email_autoresponder_used']} {$lng['panel']['used']}
+
+ {$userinfo['email_autoresponder']} {$lng['panel']['available']}
+
+
+
+
-
-
-
+
+
+
+
+ {$lng['customer']['mysqls']}
+
+ {$userinfo['mysqls_used']} {$lng['panel']['used']}
+
+ {$userinfo['mysqls']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['ftps']}
+
+ {$userinfo['ftps_used']} {$lng['panel']['used']}
+
+ {$userinfo['ftps']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['aps']['numberofapspackages']}
+
+ {$userinfo['aps_packages_used']} {$lng['panel']['used']}
+
+ {$userinfo['aps_packages']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
+ {$lng['customer']['tickets']}
+
+ {$userinfo['tickets_used']} {$lng['panel']['used']}
+
+ {$userinfo['tickets']} {$lng['panel']['available']}
+
+
+
+
+
+
+
+
+
{$lng['index']['accountdetails']}
-
+
{$lng['login']['username']}
{$userinfo['loginname']}
@@ -15,70 +189,8 @@ $header
$domains
- {$lng['customer']['subdomains']}{$lng['customer']['usedmax']}
- {$userinfo['subdomains_used']}/{$userinfo['subdomains']}
-
-
- {$lng['customer']['diskspace']}{$lng['customer']['usedmax']}
- {$userinfo['diskspace_used']}/{$userinfo['diskspace']}
-
-
- {$lng['customer']['traffic']}$month, {$lng['customer']['usedmax']}
- {$userinfo['traffic_used']}/{$userinfo['traffic']}
-
-
- {$lng['customer']['emails']}{$lng['customer']['usedmax']}
- {$userinfo['emails_used']}/{$userinfo['emails']}
-
-
- {$lng['customer']['accounts']}{$lng['customer']['usedmax']}
- {$userinfo['email_accounts_used']}/{$userinfo['email_accounts']}
-
-
- {$lng['customer']['forwarders']}{$lng['customer']['usedmax']}
- {$userinfo['email_forwarders_used']}/{$userinfo['email_forwarders']}
-
-
-
- {$lng['customer']['email_quota']}{{$lng['panel']['megabyte']}, {$lng['customer']['usedmax']}
- {$userinfo['email_quota_used']}/{$userinfo['email_quota']}
-
-
-
-
-
- {$lng['customer']['autoresponder']} {$lng['customer']['usedmax']}
- {$userinfo['email_autoresponder_used']}/{$userinfo['email_autoresponder']}
-
-
-
- {$lng['customer']['mysqls']}{$lng['customer']['usedmax']}
- {$userinfo['mysqls_used']}/{$userinfo['mysqls']}
-
-
- {$lng['customer']['ftps']}{$lng['customer']['usedmax']}
- {$userinfo['ftps_used']}/{$userinfo['ftps']}
-
-
-
- {$lng['aps']['numberofapspackages']}{$lng['customer']['usedmax']}
- {$userinfo['aps_packages_used']}/{$userinfo['aps_packages']}
-
-
-
-
- {$lng['customer']['tickets']}{$lng['customer']['usedmax']}
- {$userinfo['tickets_used']}/{$userinfo['tickets']}
-
-
-
-
-
-