From 3e73f6ccb4bb4bd542a664c78dea2198b9213e84 Mon Sep 17 00:00:00 2001 From: BNoiZe Date: Thu, 24 Oct 2013 22:07:01 +0200 Subject: [PATCH] First version of the new Dashboard --- lng/english.lng.php | 18 +- lng/german.lng.php | 8 +- templates/Sparkle/admin/index/index.tpl | 260 ++++++++++++++++----- templates/Sparkle/assets/css/main.css | 61 ++++- templates/Sparkle/assets/js/circular.js | 85 +++++++ templates/Sparkle/assets/js/jcanvas.min.js | 5 + templates/Sparkle/customer/index/index.tpl | 230 ++++++++++++------ templates/Sparkle/header.tpl | 4 +- 8 files changed, 522 insertions(+), 149 deletions(-) create mode 100644 templates/Sparkle/assets/js/circular.js create mode 100644 templates/Sparkle/assets/js/jcanvas.min.js diff --git a/lng/english.lng.php b/lng/english.lng.php index dfe87261..52d6d94e 100644 --- a/lng/english.lng.php +++ b/lng/english.lng.php @@ -59,17 +59,17 @@ $lng['customer']['zipcode'] = 'Zipcode'; $lng['customer']['city'] = 'City'; $lng['customer']['phone'] = 'Phone'; $lng['customer']['fax'] = 'Fax'; -$lng['customer']['email'] = 'Email'; +$lng['customer']['email'] = 'email'; $lng['customer']['customernumber'] = 'Customer ID'; $lng['customer']['diskspace'] = 'Webspace (MB)'; $lng['customer']['traffic'] = 'Traffic (GB)'; $lng['customer']['mysqls'] = 'MySQL-databases'; -$lng['customer']['emails'] = 'E-mail-Addresses'; -$lng['customer']['accounts'] = 'E-mail-Accounts'; -$lng['customer']['forwarders'] = 'E-mail-Forwarders'; +$lng['customer']['emails'] = 'email-Addresses'; +$lng['customer']['accounts'] = 'email-Accounts'; +$lng['customer']['forwarders'] = 'email-Forwarders'; $lng['customer']['ftps'] = 'FTP-Accounts'; -$lng['customer']['subdomains'] = 'Sub-Domain'; -$lng['customer']['domains'] = 'Domain'; +$lng['customer']['subdomains'] = 'Subdomains'; +$lng['customer']['domains'] = 'Domains'; $lng['customer']['unlimited'] = '∞'; /** @@ -1969,3 +1969,9 @@ $lng['domains']['serveraliasoption_none'] = 'No alias'; $lng['error']['givendirnotallowed'] = 'The given directory in field %s is not allowed.'; $lng['serversettings']['ssl']['ssl_cipher_list']['title'] = 'Configure the allowed SSL ciphers'; $lng['serversettings']['ssl']['ssl_cipher_list']['description'] = 'This is a list of ciphers that you want (or don\'t want) to use when talking SSL. For a list of ciphers and how to include/exclude them, see sections "CIPHER LIST FORMAT" and "CIPHER STRINGS" on the man-page for ciphers.

Default value is:
ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
'; + +// Added in Froxlor 0.9.31 +$lng['panel']['dashboard'] = "Dashboard"; +$lng['panel']['used'] = "used"; +$lng['panel']['assigned'] = "assigned"; +$lng['panel']['available'] = "available"; \ No newline at end of file diff --git a/lng/german.lng.php b/lng/german.lng.php index d2b8059e..1b2b460b 100644 --- a/lng/german.lng.php +++ b/lng/german.lng.php @@ -68,7 +68,7 @@ $lng['customer']['emails'] = 'E-Mail-Adressen'; $lng['customer']['accounts'] = 'E-Mail-Konten'; $lng['customer']['forwarders'] = 'E-Mail-Weiterleitungen'; $lng['customer']['ftps'] = 'FTP-Konten'; -$lng['customer']['subdomains'] = 'Sub-Domain(s)'; +$lng['customer']['subdomains'] = 'Subdomain(s)'; $lng['customer']['domains'] = 'Domain(s)'; $lng['customer']['unlimited'] = '∞'; @@ -1689,3 +1689,9 @@ $lng['domains']['serveraliasoption_none'] = 'Kein alias'; $lng['error']['givendirnotallowed'] = 'Das angegebene Verzeichnis im Feld %s ist nicht erlaubt.'; $lng['serversettings']['ssl']['ssl_cipher_list']['title'] = 'Erlaubte SSL Ciphers festlegen'; $lng['serversettings']['ssl']['ssl_cipher_list']['description'] = 'Dies ist eine Liste von Ciphers die genutzt werden sollen (oder auch nicht genutzt werden sollen) wenn eine SSL Verbindung besteht. Eine Liste aller Ciphers und wie diese hinzugefügt/ausgeschlossen werden ist in den Abschnitten "CIPHER LIST FORMAT" und "CIPHER STRINGS" in der man-page für Ciphers zu finden.

Standard-Wert ist:
ECDHE-RSA-AES128-SHA256:AES128-GCM-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH
'; + +// Added in Froxlor 0.9.31 +$lng['panel']['dashboard'] = "Dashboard"; +$lng['panel']['used'] = "genutzt"; +$lng['panel']['assigned'] = "zugewiesen"; +$lng['panel']['available'] = "verfügbar"; \ No newline at end of file diff --git a/templates/Sparkle/admin/index/index.tpl b/templates/Sparkle/admin/index/index.tpl index c80b0dbd..cbcabbb9 100644 --- a/templates/Sparkle/admin/index/index.tpl +++ b/templates/Sparkle/admin/index/index.tpl @@ -1,75 +1,205 @@ $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']} + +
+
+ + +
+

System Information

+
+
{$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']})
@@ -113,6 +243,10 @@ $header +
{$lng['admin']['systemdetails']}
$uptime
+
+
+ @@ -142,7 +276,7 @@ $header
{$lng['admin']['froxlordetails']}
-
+
$footer diff --git a/templates/Sparkle/assets/css/main.css b/templates/Sparkle/assets/css/main.css index 31914c64..714575d8 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 */ @@ -653,6 +660,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 +762,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; @@ -884,3 +906,20 @@ label.nobr { text-indent:-9999px; background: url(../img/top.png) no-repeat; } + +/* CANVAS STUFF */ +.canvasitems { + margin: 0 auto; + text-align: center; +} +.canvasbox { + width: 130px !important; + margin: 10px; + 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..a971c25e --- /dev/null +++ b/templates/Sparkle/assets/js/circular.js @@ -0,0 +1,85 @@ +$(document).ready(function() { + var usedColor = "#91c46b"; + var assiColor = "#287e7e"; + var unliColor = "#56606e"; + + $(".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 == "∞") { + 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)) { + 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 { + available = parseFloat(available); + usedP = 100 / available * used; + if (usedP < 1 && usedP > 0) { + usedP = 1; + } else { + usedP = Math.round(usedP); + } + usedD = 270 * usedP / 100; + circularCircle(canvas, 40, 0, usedD, 8, usedColor); + 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) { + $(canvas).drawText({ + fillStyle: "#343a41", + 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..6b364f47 100644 --- a/templates/Sparkle/customer/index/index.tpl +++ b/templates/Sparkle/customer/index/index.tpl @@ -1,11 +1,169 @@ $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']} + +
+
+
+ + +
+
+ - + @@ -15,70 +173,8 @@ $header - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{$lng['index']['accountdetails']}
{$lng['login']['username']} {$userinfo['loginname']}$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']}
-
- -
- - - + diff --git a/templates/Sparkle/header.tpl b/templates/Sparkle/header.tpl index 4efd0962..c096dc6a 100644 --- a/templates/Sparkle/header.tpl +++ b/templates/Sparkle/header.tpl @@ -19,6 +19,8 @@ + + @@ -57,7 +59,7 @@
  • {$userinfo['loginname']}
  • -
  • {$lng['admin']['overview']}
  • +
  • {$lng['panel']['dashboard']}
  • {$lng['panel']['options']} ▾
  • {$lng['index']['customerdetails']}
    {$lng['customer']['customernumber']}: