diff --git a/cronjobs/payouts.php b/cronjobs/payouts.php
index 0edb9b3c..5b9caa73 100755
--- a/cronjobs/payouts.php
+++ b/cronjobs/payouts.php
@@ -46,10 +46,10 @@ if (!$dWalletBalance = $bitcoin->getrealbalance())
// Fetch unconfirmed amount from blocks table
empty($config['network_confirmations']) ? $confirmations = 120 : $confirmations = $config['network_confirmations'];
+$aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations);
+$dBlocksUnconfirmedBalance = 0;
+if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount'];
if ($config['getbalancewithunconfirmed']) {
- $aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations);
- $dBlocksUnconfirmedBalance = 0;
- if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount'];
$dWalletBalance -= $dBlocksUnconfirmedBalance;
}
// Fetch Newmint
@@ -133,10 +133,10 @@ if (!$dWalletBalance = $bitcoin->getrealbalance())
// Fetch unconfirmed amount from blocks table
empty($config['network_confirmations']) ? $confirmations = 120 : $confirmations = $config['network_confirmations'];
+$aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations);
+$dBlocksUnconfirmedBalance = 0;
+if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount'];
if ($config['getbalancewithunconfirmed']) {
- $aBlocksUnconfirmed = $block->getAllUnconfirmed($confirmations);
- $dBlocksUnconfirmedBalance = 0;
- if (!empty($aBlocksUnconfirmed))foreach ($aBlocksUnconfirmed as $aData) $dBlocksUnconfirmedBalance += $aData['amount'];
$dWalletBalance -= $dBlocksUnconfirmedBalance;
}
// Fetch Newmint
diff --git a/public/include/classes/coins/coin_base.class.php b/public/include/classes/coins/coin_base.class.php
index 1eb5470c..7eeb3ee1 100644
--- a/public/include/classes/coins/coin_base.class.php
+++ b/public/include/classes/coins/coin_base.class.php
@@ -47,13 +47,22 @@ class CoinBase extends Base {
* Calculate our networks expected time per block
**/
public function calcNetworkExpectedTimePerBlock($dDifficulty, $dNetworkHashrate) {
- return pow(2, 32) * $dDifficulty / $dNetworkHashrate;
+ if ($dNetworkHashrate > 0) {
+ return pow(2, 32) * $dDifficulty / $dNetworkHashrate;
+ } else {
+ return 0;
+ }
}
/**
* Calculate next expected difficulty based on current difficulty
**/
public function calcExpectedNextDifficulty($dDifficulty, $dNetworkHashrate) {
- return round($dDifficulty * $this->config['cointarget'] / $this->calcNetworkExpectedTimePerBlock($dDifficulty, $dNetworkHashrate), 8);
+ $iExpectedTimePerBlock = $this->calcNetworkExpectedTimePerBlock($dDifficulty, $dNetworkHashrate);
+ if (!empty($iExpectedTimePerBlock) && $iExpectedTimePerBlock > 0) {
+ return round($dDifficulty * $this->config['cointarget'] / $iExpectedTimePerBlock, 8);
+ } else {
+ return 0;
+ }
}
}
diff --git a/public/include/classes/mail.class.php b/public/include/classes/mail.class.php
index 51a228ba..3a26b089 100644
--- a/public/include/classes/mail.class.php
+++ b/public/include/classes/mail.class.php
@@ -34,7 +34,7 @@ class Mail extends Base {
$aData['senderEmail'] = $senderEmail;
$aData['senderSubject'] = $senderSubject;
$aData['senderMessage'] = $senderMessage;
- $aData['email'] = $this->setting->getValue('website_email');
+ $aData['email'] = $this->setting->getValue('website_email', 'test@example.com');
$aData['subject'] = 'Contact Form';
if ($this->sendMail('contactform/body', $aData)) {
return true;
@@ -52,7 +52,7 @@ class Mail extends Base {
* subject : Mail Subject
* email : Destination address
**/
- public function sendMail($template, $aData) {
+ public function sendMail($template, $aData, $throttle=false) {
// Prepare SMTP transport and mailer
$transport_type = $this->config['swiftmailer']['type'];
if ($transport_type == 'sendmail') {
@@ -65,6 +65,14 @@ class Mail extends Base {
}
}
$mailer = Swift_Mailer::newInstance($transport);
+
+ // Throttle mails to x per minute, used for newsletter for example
+ if ($this->config['swiftmailer']['type'] == 'smtp' && $throttle) {
+ $mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin(
+ $this->config['switfmailer']['smtp']['throttle'], Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE
+ ));
+ }
+
// Prepare the smarty templates used
$this->smarty->clearCache(BASEPATH . 'templates/mail/' . $template . '.tpl');
$this->smarty->clearCache(BASEPATH . 'templates/mail/subject.tpl');
@@ -73,14 +81,20 @@ class Mail extends Base {
$this->smarty->assign('DATA', $aData);
// Create new message for Swiftmailer
+ $senderEmail = $this->setting->getValue('website_email', 'test@example.com');
+ $senderName = $this->setting->getValue('website_name', 'test@example.com');
$message = Swift_Message::newInstance()
->setSubject($this->smarty->fetch(BASEPATH . 'templates/mail/subject.tpl'))
- ->setFrom(array( $this->setting->getValue('website_email') => $this->setting->getValue('website_name')))
+ ->setFrom(array( $senderEmail => $senderName))
->setTo($aData['email'])
- ->setSender($this->setting->getValue('website_email'))
- ->setReturnPath($this->setting->getValue('website_email'))
+ ->setSender($senderEmail)
+ ->setReturnPath($senderEmail)
->setBody($this->smarty->fetch(BASEPATH . 'templates/mail/' . $template . '.tpl'), 'text/html');
- if (strlen(@$aData['senderName']) > 0 && @strlen($aData['senderEmail']) > 0 )
+ if (isset($aData['senderName']) &&
+ isset($aData['senderEmail']) &&
+ strlen($aData['senderName']) > 0 &&
+ strlen($aData['senderEmail']) > 0 &&
+ filter_var($aData['senderEmail'], FILTER_VALIDATE_EMAIL))
$message->setReplyTo(array($aData['senderEmail'] => $aData['senderName']));
// Send message out with configured transport
diff --git a/public/include/classes/notification.class.php b/public/include/classes/notification.class.php
index cc586ce1..44860281 100644
--- a/public/include/classes/notification.class.php
+++ b/public/include/classes/notification.class.php
@@ -72,13 +72,26 @@ class Notification extends Mail {
* @return array Notification settings
**/
public function getNotificationSettings($account_id) {
+ // Some defaults, we cover them here so we can avoid adding default settings on user creation
+ $aDefaults = array( 'newsletter' => 1 );
$this->debug->append("STA " . __METHOD__, 4);
$stmt = $this->mysqli->prepare("SELECT * FROM $this->tableSettings WHERE account_id = ?");
if ($stmt && $stmt->bind_param('i', $account_id) && $stmt->execute() && $result = $stmt->get_result()) {
if ($result->num_rows > 0) {
+ $aFound = array();
while ($row = $result->fetch_assoc()) {
+ if (array_key_exists($row['type'], $aDefaults)) $aFound[] = $row['type'];
$aData[$row['type']] = $row['active'];
}
+ // Check found types against our defaults, set if required
+ foreach ($aDefaults as $type => $value) {
+ if (!in_array($type, $aFound)) {
+ $aData[$type] = $value;
+ }
+ }
+ return $aData;
+ } else {
+ foreach ($aDefaults as $type => $value) $aData[$type] = $value;
return $aData;
}
}
diff --git a/public/include/classes/transaction.class.php b/public/include/classes/transaction.class.php
index 60d178b5..1999fd4b 100644
--- a/public/include/classes/transaction.class.php
+++ b/public/include/classes/transaction.class.php
@@ -150,8 +150,8 @@ class Transaction extends Base {
IFNULL(SUM(IF(t.type = 'TXFee' AND timestamp >= DATE_SUB(now(), INTERVAL 31536000 SECOND), t.amount, 0)), 0) AS 1YearTXFee,
IFNULL(SUM(IF(t.type = 'Fee' AND timestamp >= DATE_SUB(now(), INTERVAL 31536000 SECOND), t.amount, 0)), 0) AS 1YearFee,
IFNULL(SUM(IF(t.type = 'Donation' AND timestamp >= DATE_SUB(now(), INTERVAL 31536000 SECOND), t.amount, 0)), 0) AS 1YearDonation
- FROM transactions AS t
- LEFT OUTER JOIN blocks AS b ON b.id = t.block_id
+ FROM $this->table AS t
+ LEFT OUTER JOIN " . $this->block->getTableName() . " AS b ON b.id = t.block_id
WHERE
t.account_id = ? AND (b.confirmations > 0 OR b.id IS NULL)");
if ($this->checkStmt($stmt) && $stmt->bind_param("i", $account_id) && $stmt->execute() && $result = $stmt->get_result())
diff --git a/public/include/classes/user.class.php b/public/include/classes/user.class.php
index e5d078aa..68e77d3a 100644
--- a/public/include/classes/user.class.php
+++ b/public/include/classes/user.class.php
@@ -192,6 +192,11 @@ class User extends Base {
return false;
}
if ($this->checkUserPassword($username, $password)) {
+ // delete notification cookies
+ setcookie("motd-box", "", time()-3600);
+ setcookie("lastlogin-box", "", time()-3600);
+ setcookie("backend-box", "", time()-3600);
+ // rest of login process
$uid = $this->getUserId($username);
$lastLoginTime = $this->getLastLogin($uid);
$this->updateLoginTimestamp($uid);
diff --git a/public/include/config/admin_settings.inc.php b/public/include/config/admin_settings.inc.php
index b48a6be6..e0adf7cb 100644
--- a/public/include/config/admin_settings.inc.php
+++ b/public/include/config/admin_settings.inc.php
@@ -272,6 +272,20 @@ $aSettings['acl'][] = array(
'name' => 'acl_chat_page', 'value' => $setting->getValue('acl_chat_page'),
'tooltip' => 'Make the chat page private (users only) or public.'
);
+$aSettings['acl'][] = array(
+ 'display' => 'MOOT Forum Page', 'type' => 'select',
+ 'options' => array( 0 => 'Private', 1 => 'Public', 2 => 'Disabled' ),
+ 'default' => 2,
+ 'name' => 'acl_moot_forum', 'value' => $setting->getValue('acl_moot_forum'),
+ 'tooltip' => 'Make the forum page private (users only) or public.'
+);
+$aSettings['acl'][] = array(
+ 'display' => 'QRCode', 'type' => 'select',
+ 'options' => array( 0 => 'Enabled', 1 => 'Disabled' ),
+ 'default' => 0,
+ 'name' => 'acl_qrcode', 'value' => $setting->getValue('acl_qrcode'),
+ 'tooltip' => 'Hide or Show the QRCode Page.'
+);
$aSettings['system'][] = array(
'display' => 'E-mail address for system error notifications', 'type' => 'text',
'size' => 25,
@@ -370,6 +384,13 @@ $aSettings['system'][] = array(
'name' => 'system_irc_chat', 'value' => $setting->getValue('system_irc_chat'),
'tooltip' => 'Your IRC support channel name.'
);
+$aSettings['system'][] = array(
+ 'display' => 'Moot Forum Channel', 'type' => 'text',
+ 'size' => 25,
+ 'default' => 'lazypoolop',
+ 'name' => 'system_moot_forum', 'value' => $setting->getValue('system_moot_forum'),
+ 'tooltip' => 'Your MOOT support forum name.'
+);
$aSettings['recaptcha'][] = array(
'display' => 'Enable re-Captcha', 'type' => 'select',
'options' => array( 0 => 'No', 1 => 'Yes' ),
@@ -447,6 +468,13 @@ $aSettings['notifications'][] = array(
'name' => 'notifications_disable_idle_worker', 'value' => $setting->getValue('notifications_disable_idle_worker'),
'tooltip' => 'Enable/Disable IDLE worker notifications globally. Will remove the user option too.'
);
+$aSettings['notifications'][] = array(
+ 'display' => 'Disable Pool Newsletter', 'type' => 'select',
+ 'options' => array( 0 => 'No', 1 => 'Yes'),
+ 'default' => 0,
+ 'name' => 'notifications_disable_pool_newsletter', 'value' => $setting->getValue('notifications_disable_pool_newsletter'),
+ 'tooltip' => 'Enable/Disable pool newsletter globally. Will remove the user option too.'
+);
$aSettings['pools'][] = array(
'display' => 'Enable Pool Navigation', 'type' => 'select',
'options' => array( 0 => 'No', 1 => 'Yes' ),
diff --git a/public/include/config/global.inc.dist.php b/public/include/config/global.inc.dist.php
index 548db7b6..c5fd9d74 100644
--- a/public/include/config/global.inc.dist.php
+++ b/public/include/config/global.inc.dist.php
@@ -70,6 +70,7 @@ $config['switfmailer']['smtp']['port'] = '587';
$config['switfmailer']['smtp']['encryption'] = 'tls';
$config['switfmailer']['smtp']['username'] = '';
$config['switfmailer']['smtp']['password'] = '';
+$config['switfmailer']['smtp']['throttle'] = 100;
/**
* Getting Started Config
diff --git a/public/include/pages/about/moot.inc.php b/public/include/pages/about/moot.inc.php
new file mode 100644
index 00000000..595c8f5e
--- /dev/null
+++ b/public/include/pages/about/moot.inc.php
@@ -0,0 +1,20 @@
+getValue('acl_moot_forum', 2)) {
+case '0':
+ if ($user->isAuthenticated()) {
+ $smarty->assign('CHATROOM', $setting->getValue('system_moot_forum', 'lazypoolop'));
+ $smarty->assign("CONTENT", "default.tpl");
+ }
+ break;
+case '1':
+ $smarty->assign('CHATROOM', $setting->getValue('system_moot_forum', 'lazypoolop'));
+ $smarty->assign("CONTENT", "default.tpl");
+ break;
+case '2':
+ $_SESSION['POPUP'][] = array('CONTENT' => 'Page currently disabled. Please try again later.', 'TYPE' => 'alert alert-danger');
+ $smarty->assign("CONTENT", "disabled.tpl");
+ break;
+}
diff --git a/public/include/pages/account/edit.inc.php b/public/include/pages/account/edit.inc.php
index 0c50dafd..951face4 100644
--- a/public/include/pages/account/edit.inc.php
+++ b/public/include/pages/account/edit.inc.php
@@ -12,52 +12,54 @@ $updating = (@$_POST['do']) ? 1 : 0;
if ($user->isAuthenticated()) {
if ($config['twofactor']['enabled']) {
- $popupmsg = 'E-mail confirmations are required for ';
- $popuptypes = array();
- if ($config['twofactor']['options']['details'] && $oldtoken_ea !== "") {
- $popuptypes[] = 'editing your details';
- $ea_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_ea, 5);
- $ea_sent = $user->token->doesTokenExist('account_edit', $_SESSION['USERDATA']['id']);
- }
- if ($config['twofactor']['options']['changepw'] && $oldtoken_cp !== "") {
- $popuptypes[] = 'changing your password';
- $cp_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_cp, 6);
- $cp_sent = $user->token->doesTokenExist('change_pw', $_SESSION['USERDATA']['id']);
- }
- if ($config['twofactor']['options']['withdraw'] && $oldtoken_wf !== "") {
- $popuptypes[] = 'withdrawals';
- $wf_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_wf, 7);
- $wf_sent = $user->token->doesTokenExist('withdraw_funds', $_SESSION['USERDATA']['id']);
- }
-
- // get the status of a token if set
- $message_tokensent_invalid = 'A token was sent to your e-mail that will allow you to ';
- $message_tokensent_valid = 'You can currently ';
- $messages_tokensent_status = array(
- 'ea' => 'edit your account details',
- 'wf' => 'withdraw funds',
- 'cp' => 'change your password'
- );
- // build the message we're going to show them for their token(s)
- $eaprep_sent = ($ea_sent) ? $message_tokensent_valid.$messages_tokensent_status['ea'] : "";
- $eaprep_edit = ($ea_editable) ? $message_tokensent_invalid.$messages_tokensent_status['ea'] : "";
- $wfprep_sent = ($wf_sent) ? $message_tokensent_valid.$messages_tokensent_status['wf'] : "";
- $wfprep_edit = ($wf_editable) ? $message_tokensent_invalid.$messages_tokensent_status['wf'] : "";
- $cpprep_sent = ($cp_sent) ? $message_tokensent_valid.$messages_tokensent_status['cp'] : "";
- $cpprep_edit = ($cp_editable) ? $message_tokensent_invalid.$messages_tokensent_status['cp'] : "";
- $ptc = 0;
- $ptcn = count($popuptypes);
- foreach ($popuptypes as $pt) {
- if ($ptcn == 1) { $popupmsg.= $popuptypes[$ptc]; continue; }
- if ($ptc !== ($ptcn-1)) {
- $popupmsg.= $popuptypes[$ptc].', ';
- } else {
- $popupmsg.= 'and '.$popuptypes[$ptc];
+ if ($config['twofactor']['options']['details'] OR $config['twofactor']['options']['changepw'] OR $config['twofactor']['options']['withdraw']) {
+ $popupmsg = 'E-mail confirmations are required for ';
+ $popuptypes = array();
+ if ($config['twofactor']['options']['details'] && $oldtoken_ea !== "") {
+ $popuptypes[] = 'editing your details';
+ $ea_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_ea, 5);
+ $ea_sent = $user->token->doesTokenExist('account_edit', $_SESSION['USERDATA']['id']);
}
- $ptc++;
+ if ($config['twofactor']['options']['changepw'] && $oldtoken_cp !== "") {
+ $popuptypes[] = 'changing your password';
+ $cp_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_cp, 6);
+ $cp_sent = $user->token->doesTokenExist('change_pw', $_SESSION['USERDATA']['id']);
+ }
+ if ($config['twofactor']['options']['withdraw'] && $oldtoken_wf !== "") {
+ $popuptypes[] = 'withdrawals';
+ $wf_editable = $user->token->isTokenValid($_SESSION['USERDATA']['id'], $oldtoken_wf, 7);
+ $wf_sent = $user->token->doesTokenExist('withdraw_funds', $_SESSION['USERDATA']['id']);
+ }
+
+ // get the status of a token if set
+ $message_tokensent_invalid = 'A token was sent to your e-mail that will allow you to ';
+ $message_tokensent_valid = 'You can currently ';
+ $messages_tokensent_status = array(
+ 'ea' => 'edit your account details',
+ 'wf' => 'withdraw funds',
+ 'cp' => 'change your password'
+ );
+ // build the message we're going to show them for their token(s)
+ $eaprep_sent = ($ea_sent) ? $message_tokensent_valid.$messages_tokensent_status['ea'] : "";
+ $eaprep_edit = ($ea_editable) ? $message_tokensent_invalid.$messages_tokensent_status['ea'] : "";
+ $wfprep_sent = ($wf_sent) ? $message_tokensent_valid.$messages_tokensent_status['wf'] : "";
+ $wfprep_edit = ($wf_editable) ? $message_tokensent_invalid.$messages_tokensent_status['wf'] : "";
+ $cpprep_sent = ($cp_sent) ? $message_tokensent_valid.$messages_tokensent_status['cp'] : "";
+ $cpprep_edit = ($cp_editable) ? $message_tokensent_invalid.$messages_tokensent_status['cp'] : "";
+ $ptc = 0;
+ $ptcn = count($popuptypes);
+ foreach ($popuptypes as $pt) {
+ if ($ptcn == 1) { $popupmsg.= $popuptypes[$ptc]; continue; }
+ if ($ptc !== ($ptcn-1)) {
+ $popupmsg.= $popuptypes[$ptc].', ';
+ } else {
+ $popupmsg.= 'and '.$popuptypes[$ptc];
+ }
+ $ptc++;
+ }
+ // display global notice about tokens being in use and for which bits they're active
+ $_SESSION['POPUP'][] = array('CONTENT' => $popupmsg, 'TYPE' => 'alert alert-warning');
}
- // display global notice about tokens being in use and for which bits they're active
- $_SESSION['POPUP'][] = array('CONTENT' => $popupmsg, 'TYPE' => 'alert alert-warning');
}
if (isset($_POST['do']) && $_POST['do'] == 'genPin') {
@@ -174,12 +176,12 @@ if ($config['twofactor']['enabled'] && $user->isAuthenticated()) {
}
// display token info per each - only when sent and editable or just sent, not by default
- (!empty($eaprep_sent) && !empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $eaprep_sent, 'TYPE' => 'success'):"";
- (!empty($eaprep_sent) && empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['ea'], 'TYPE' => 'success'):"";
- (!empty($wfprep_sent) && !empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $wfprep_sent, 'TYPE' => 'success'):"";
- (!empty($wfprep_sent) && empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['wf'], 'TYPE' => 'success'):"";
- (!empty($cpprep_sent) && !empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $cpprep_sent, 'TYPE' => 'success'):"";
- (!empty($cpprep_sent) && empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['cp'], 'TYPE' => 'success'):"";
+ (!empty($eaprep_sent) && !empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $eaprep_sent, 'TYPE' => 'alert alert-success'):"";
+ (!empty($eaprep_sent) && empty($eaprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['ea'], 'TYPE' => 'alert alert-success'):"";
+ (!empty($wfprep_sent) && !empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $wfprep_sent, 'TYPE' => 'alert alert-success'):"";
+ (!empty($wfprep_sent) && empty($wfprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['wf'], 'TYPE' => 'alert alert-success'):"";
+ (!empty($cpprep_sent) && !empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $cpprep_sent, 'TYPE' => 'alert alert-success'):"";
+ (!empty($cpprep_sent) && empty($cpprep_edit)) ? $_SESSION['POPUP'][] = array('CONTENT' => $message_tokensent_invalid.$messages_tokensent_status['cp'], 'TYPE' => 'alert alert-success'):"";
// two-factor stuff
$smarty->assign("CHANGEPASSUNLOCKED", $cp_editable);
$smarty->assign("WITHDRAWUNLOCKED", $wf_editable);
diff --git a/public/include/pages/account/notifications.inc.php b/public/include/pages/account/notifications.inc.php
index ef26761c..f06c796a 100644
--- a/public/include/pages/account/notifications.inc.php
+++ b/public/include/pages/account/notifications.inc.php
@@ -25,6 +25,7 @@ if ($user->isAuthenticated()) {
// Fetch global settings
$smarty->assign('DISABLE_BLOCKNOTIFICATIONS', $setting->getValue('notifications_disable_block'));
$smarty->assign('DISABLE_IDLEWORKERNOTIFICATIONS', $setting->getValue('notifications_disable_idle_worker'));
+ $smarty->assign('DISABLE_POOLNEWSLETTER', $setting->getValue('notifications_disable_pool_newsletter'));
// Fetch user notification settings
$aSettings = $notification->getNotificationSettings($_SESSION['USERDATA']['id']);
diff --git a/public/include/pages/account/qrcode.inc.php b/public/include/pages/account/qrcode.inc.php
index 3171ded7..6e30b898 100644
--- a/public/include/pages/account/qrcode.inc.php
+++ b/public/include/pages/account/qrcode.inc.php
@@ -1,5 +1,15 @@
isAuthenticated()) $smarty->assign("CONTENT", "default.tpl");
+switch($setting->getValue('acl_qrcode')) {
+case '0':
+ if ($user->isAuthenticated()) {
+ $smarty->assign("CONTENT", "default.tpl");
+ }
+ break;
+case '1':
+ $_SESSION['POPUP'][] = array('CONTENT' => 'Page currently disabled. Please try again later.', 'TYPE' => 'alert alert-danger');
+ $smarty->assign("CONTENT", "");
+ break;
+}
?>
diff --git a/public/include/pages/admin/newsletter.inc.php b/public/include/pages/admin/newsletter.inc.php
new file mode 100644
index 00000000..69204b01
--- /dev/null
+++ b/public/include/pages/admin/newsletter.inc.php
@@ -0,0 +1,41 @@
+isAuthenticated() || !$user->isAdmin($_SESSION['USERDATA']['id'])) {
+ header("HTTP/1.1 404 Page not found");
+ die("404 Page not found");
+}
+
+// Include markdown library
+use \Michelf\Markdown;
+
+if ($setting->getValue('notifications_disable_pool_newsletter', 0) == 1) {
+ $_SESSION['POPUP'][] = array('CONTENT' => 'Pool newsletters are disabled.', 'TYPE' => 'alert alert-info');
+ $smarty->assign("CONTENT", "");
+} else {
+ if (@$_REQUEST['do'] == 'send') {
+ if (!$config['csrf']['enabled'] || $config['csrf']['enabled'] && $csrftoken->valid) {
+ $iFailed = 0;
+ $iSuccess = 0;
+ foreach ($user->getAllAssoc() as $aData) {
+ $aUserNotificationSettings = $notification->getNotificationSettings($aData['id']);
+ if ($aData['is_locked'] != 0 || $aUserNotificationSettings['newsletter'] != 1) continue;
+ $aData['subject'] = $_REQUEST['data']['subject'];
+ $aData['CONTENT'] = $_REQUEST['data']['content'];
+ if (!$mail->sendMail('newsletter/body', $aData, true)) {
+ $iFailed++;
+ } else {
+ $iSuccess++;
+ }
+ }
+ $_SESSION['POPUP'][] = array('CONTENT' => 'Newsletter sent to ' . $iSuccess . ' users.', 'TYPE' => 'alert alert-success');
+ if ($iFailed > 0)
+ $_SESSION['POPUP'][] = array('CONTENT' => 'Failed to send e-mail to ' . $iFailed . ' users. ', 'TYPE' => 'alert alert-info');
+ } else {
+ $_SESSION['POPUP'][] = array('CONTENT' => $csrftoken->getErrorWithDescriptionHTML(), 'TYPE' => 'alert alert-warning');
+ }
+ }
+ $smarty->assign("CONTENT", "default.tpl");
+}
+?>
diff --git a/public/include/pages/api/getpoolstatus.inc.php b/public/include/pages/api/getpoolstatus.inc.php
index 27512426..26abc851 100644
--- a/public/include/pages/api/getpoolstatus.inc.php
+++ b/public/include/pages/api/getpoolstatus.inc.php
@@ -34,6 +34,8 @@ if ($iCurrentPoolHashrate > $dNetworkHashrate) $dNetworkHashrate = $iCurrentPool
// Time in seconds, not hours, using modifier in smarty to translate
$iCurrentPoolHashrate > 0 ? $iEstTime = $dDifficulty * pow(2,32) / ($iCurrentPoolHashrate * 1000) : $iEstTime = 0;
$iEstShares = $statistics->getEstimatedShares($dDifficulty);
+// For mpos-bot PoolLuck
+$iEstShares > 0 && $aShares['valid'] > 0 ? $dEstPercent = round(100 / $iEstShares * $aShares['valid'], 2) : $dEstPercent = 0;
// Time since last
$now = new DateTime( "now" );
@@ -48,6 +50,7 @@ $data = array(
'pool_name' => $setting->getValue('website_name'),
'hashrate' => $iCurrentPoolHashrate,
'efficiency' => $dEfficiency,
+ 'progress' => $dEstPercent,
'workers' => $worker->getCountAllActiveWorkers(),
'currentnetworkblock' => $iBlock,
'nextnetworkblock' => $iBlock + 1,
diff --git a/public/include/pages/about/donors.inc.php b/public/include/pages/statistics/donors.inc.php
similarity index 100%
rename from public/include/pages/about/donors.inc.php
rename to public/include/pages/statistics/donors.inc.php
diff --git a/public/include/smarty_globals.inc.php b/public/include/smarty_globals.inc.php
index bd5df5db..d19fd00b 100644
--- a/public/include/smarty_globals.inc.php
+++ b/public/include/smarty_globals.inc.php
@@ -133,6 +133,8 @@ $aGlobal['acl']['donors']['page'] = $setting->getValue('acl_donors_page');
$aGlobal['acl']['about']['page'] = $setting->getValue('acl_about_page');
$aGlobal['acl']['contactform'] = $setting->getValue('acl_contactform');
$aGlobal['acl']['chat']['page'] = $setting->getValue('acl_chat_page', 2);
+$aGlobal['acl']['moot']['forum'] = $setting->getValue('acl_moot_forum', 2);
+$aGlobal['acl']['qrcode'] = $setting->getValue('acl_qrcode');
// We don't want these session infos cached
if (@$_SESSION['USERDATA']['id']) {
diff --git a/public/site_assets/bootstrap/css/design/blue.css b/public/site_assets/bootstrap/css/design/blue.css
index ea0c2532..284b7617 100644
--- a/public/site_assets/bootstrap/css/design/blue.css
+++ b/public/site_assets/bootstrap/css/design/blue.css
@@ -43,6 +43,10 @@ a:focus {
border-color: #A2BCF5;
}
+.panel .panel-default {
+ background-color: #3E6CCF;
+}
+
.lightblue {
background-color: #3065D9;
}
diff --git a/public/site_assets/bootstrap/css/design/dark.css b/public/site_assets/bootstrap/css/design/dark.css
index e7202765..7cf1e85b 100644
--- a/public/site_assets/bootstrap/css/design/dark.css
+++ b/public/site_assets/bootstrap/css/design/dark.css
@@ -43,6 +43,10 @@ a:focus {
border-color: #222222;
}
+.panel .panel-default {
+ background-color: #D3D3D3;
+}
+
.lightblue {
background-color: #222222;
}
@@ -134,3 +138,7 @@ a:focus {
.dropdown-menu {
background-color: #D3D3D3;
}
+
+.confirmations {
+ color: #F3FF12;
+}
diff --git a/public/site_assets/bootstrap/css/design/green.css b/public/site_assets/bootstrap/css/design/green.css
index b79905b4..c9f5230f 100644
--- a/public/site_assets/bootstrap/css/design/green.css
+++ b/public/site_assets/bootstrap/css/design/green.css
@@ -43,6 +43,10 @@ a:focus {
border-color: #167A1D;
}
+.panel .panel-default {
+ background-color: #65B058;
+}
+
.lightblue {
background-color: #167A1D;
}
diff --git a/public/site_assets/bootstrap/css/mpos.css b/public/site_assets/bootstrap/css/mpos.css
index 6bec5713..d8cd9220 100644
--- a/public/site_assets/bootstrap/css/mpos.css
+++ b/public/site_assets/bootstrap/css/mpos.css
@@ -1,587 +1,623 @@
-/* Global Styles */
-
-/* ------------------------------- */
-
-body {
- background-color: #f8f8f8;
- min-width: 350px;
- font-size: 12px;
- /* Design constraint */
-}
-
-p {
- font-size: 12px;
-}
-
-/* Wrappers */
-
-/* ------------------------------- */
-
- #wrapper {
- width: 100%;
-}
-
-#page-wrapper {
- padding: 0 15px;
- min-height: 568px;
- background-color: #fff;
- font-size: 12px;
-}
-
-@media(min-width:768px) {
- #page-wrapper {
- position: inherit;
- margin: 0 0 0 250px;
- padding: 0 30px;
- min-height: 900px;
- border-left: 1px solid #e7e7e7;
- font-size: 12px;
- }
-}
-
-.navbar-static-side ul li {
- border-bottom: 1px solid #e7e7e7;
-}
-
-
-/* Input fields */
-
-/* ------------------------------- */
-
-select,
-textarea,
-input[type="text"],
-input[type="password"],
-input[type="datetime"],
-input[type="datetime-local"],
-input[type="date"],
-input[type="month"],
-input[type="time"],
-input[type="week"],
-input[type="number"],
-input[type="email"],
-input[type="url"],
-input[type="search"],
-input[type="tel"],
-input[type="color"],
-.uneditable-input {
- background-color: #ffffff;
- padding: 4px 4px 4px 4px;
- font-size: 11px;
- color: #555555;
- border: 1px solid #ccc;
- height: 25px;
- line-height: 25px;
-}
-
-.input-group-sm > .form-control,
-.input-group-sm > .input-group-addon,
-.input-group-sm > .input-group-btn > .btn {
- height: 25px;
- font-size: 12px;
-}
-
-.form-control {
- font-size: 12px;
-}
-
-.input-group .input-group-addon {
- line-height: 1!important;
- }
-
-.glyphicon{
- line-height: 1em;
-}
-
-.select-mini, .input-group {
- font-size: 11px;
- height: 25px;
-}
-
-/* Navigation */
-
-/* ------------------------------- */
-
-/* Top Right Navigation Dropdown Styles */
-
-.navbar-top-links li {
- display: inline-block;
-}
-
-.navbar-top-links li:last-child {
- margin-right: 15px;
-}
-
-.navbar-top-links li a {
- padding: 15px;
- min-height: 50px;
-}
-
-.dropdown-user {
- min-width:100px;
-}
-
-.navbar-top-links .dropdown-menu li {
- display: block;
-}
-
-.navbar-top-links .dropdown-menu li:last-child {
- margin-right: 0;
-}
-
-.navbar-top-links .dropdown-menu li a {
- padding: 3px 20px;
- min-height: 0;
-}
-
-.navbar-top-links .dropdown-menu li a div {
- white-space: normal;
-}
-
-.navbar-top-links .dropdown-messages,
-.navbar-top-links .dropdown-tasks,
-.navbar-top-links .dropdown-alerts {
- width: 310px;
- min-width: 0;
-}
-
-.navbar-top-links .dropdown-messages {
- margin-left: 5px;
-}
-
-.navbar-top-links .dropdown-tasks {
- margin-left: -59px;
-}
-
-.navbar-top-links .dropdown-alerts {
- /*#margin-left: -123px; */
-}
-
-.navbar-top-links .dropdown-user {
- right: 0;
- left: auto;
-}
-
-/* Sidebar Menu Styles */
-
- .sidebar-search {
- padding: 15px;
-}
-
-.arrow {
- float: right;
-}
-
-.fa.arrow:before {
- content: "\f104";
-}
-
-.active > a > .fa.arrow:before {
- content: "\f107";
-}
-
-.nav-second-level li,
-.nav-third-level li {
- border-bottom: none !important;
-}
-
-.nav-second-level li a {
- padding-left: 37px;
-}
-
-.nav-third-level li a {
- padding-left: 52px;
-}
-
-@media(min-width:768px) {
- .navbar-static-side {
- z-index: 1;
- position: absolute;
- width: 250px;
- }
-
- .navbar-top-links .dropdown-messages,
- .navbar-top-links .dropdown-tasks,
- .navbar-top-links .dropdown-alerts {
- margin-left: auto;
- }
-}
-
-.navbar-default .navbar-nav .open .dropdown-menu > li > a,
-.navbar-default .navbar-nav .open .dropdown-menu {
- font-size: 12px;
-}
-
-.navbar-default .navbar-nav .open .dropdown-menu > li a:hover {
- font-size: 12px;
-}
-
-/* Buttons */
-
-/* ------------------------------- */
-
- .btn-outline {
- color: inherit;
- background-color: transparent;
- transition: all .5s;
-}
-
-.btn-primary.btn-outline {
- color: #428bca;
-}
-
-.btn-success.btn-outline {
- color: #5cb85c;
-}
-
-.btn-info.btn-outline {
- color: #5bc0de;
-}
-
-.btn-warning.btn-outline {
- color: #f0ad4e;
-}
-
-.btn-danger.btn-outline {
- color: #d9534f;
-}
-
-.btn-primary.btn-outline:hover,
-.btn-success.btn-outline:hover,
-.btn-info.btn-outline:hover,
-.btn-warning.btn-outline:hover,
-.btn-danger.btn-outline:hover {
- color: #fff;
-}
-
-/* Pages */
-
-/* ------------------------------- */
-
-/* Dashboard Chat */
-
- .chat {
- margin: 0;
- padding: 0;
- list-style: none;
-}
-
-.chat li {
- margin-bottom: 10px;
- padding-bottom: 5px;
- border-bottom: 1px dotted #B3A9A9;
-}
-
-.chat li.left .chat-body {
- margin-left: 60px;
-}
-
-.chat li.right .chat-body {
- margin-right: 60px;
-}
-
-.chat li .chat-body p {
- margin: 0;
- color: #777777;
-}
-
-.panel .slidedown .glyphicon,
-.chat .glyphicon {
- margin-right: 5px;
-}
-
-.chat-panel .panel-body {
- height: 350px;
- overflow-y: scroll;
-}
-
-/* Login Page */
-
-.login-panel {
- margin-top: 25%;
-}
-
-/* Flot Chart Containers */
-
-.flot-chart {
- display: block;
- height: 400px;
-}
-
-.flot-chart-content {
- width: 100%;
- height: 100%;
-}
-
-/* DataTables Overrides */
-
-table.dataTable thead .sorting,
-table.dataTable thead .sorting_asc:after,
-table.dataTable thead .sorting_desc,
-table.dataTable thead .sorting_asc_disabled,
-table.dataTable thead .sorting_desc_disabled {
- background: transparent;
-}
-
-table.dataTable thead .sorting_asc:after {
- content: "\f0de";
- float: right;
- font-family: fontawesome;
-}
-
-table.dataTable thead .sorting_desc:after {
- content: "\f0dd";
- float: right;
- font-family: fontawesome;
-}
-
-table.dataTable thead .sorting:after {
- content: "\f0dc";
- float: right;
- font-family: fontawesome;
- color: rgba(50,50,50,.5);
-}
-
-.table {
- width: 100%;
- margin-bottom: 20px;
- table-layout: fixed;
- word-wrap: break-word;
-}
-
-div.dataTables_length select {
- font-size: 11px;
- height: 25px;
-}
-
-div.dataTables_filter input {
- font-size: 11px;
- height: 25px;
-}
-
-div.dataTables_paginate {
- font-size: 11px;
-}
-
-div.dataTables_paginate ul.pagination {
- font-size: 11px;
+/* Global Styles */
-}
-
-/* Circle Buttons */
-
- .btn-circle {
- width: 30px;
- height: 30px;
- padding: 6px 0;
- border-radius: 15px;
- text-align: center;
- font-size: 12px;
- line-height: 1.428571429;
-}
-
-.btn-circle.btn-lg {
- width: 50px;
- height: 50px;
- padding: 10px 16px;
- border-radius: 25px;
- font-size: 18px;
- line-height: 1.33;
-}
-
-.btn-circle.btn-xl {
- width: 70px;
- height: 70px;
- padding: 10px 16px;
- border-radius: 35px;
- font-size: 24px;
- line-height: 1.33;
-}
-
-.show-grid [class^="col-"] {
- padding-top: 10px;
- padding-bottom: 10px;
- border: 1px solid #ddd;
- background-color: #eee !important;
-}
-
-.show-grid {
- margin: 15px 0;
-}
-
-/* No Padding for Tables */
-
-.no-padding {
- padding:0
-}
-
-.no-padding table {
- margin: 0
-}
-
-.no-padding .table-bordered {
- border: 0;
-}
-
-.borderless > tbody > tr > td {
- border: none;
-}
-
-.borderless > thead > tr > th {
- border: none;
-}
-
-.footer {
- clear: both;
- text-align: center;
- padding: 4px 0px 0px;
- font-size: 11px;
- width: 100%;
-}
-
-.margin-bottom-sm {
- margin-bottom: 5px !important;
-}
-
-p.overview {
- font-family: 'Open Sans',sans-serif;
- font-weight: 600;
- font-size: 11px;
- text-transform: uppercase;
- display: block;
- margin-bottom: 4px;
-}
-
-span.overview {
- font-size: 14px;
- font-weight: bold;
-}
-
-div.overview {
- margin: 20px 0px 0px;
-}
-
-span.bigfont {
- font-size: 100%;
-}
-
-th.smallwidth {
- width: 250px;
-}
-
-.col-md-spark, .col-md-spark-2 {
- position:relative;
- min-height:1px;
- padding-left:15px;
- padding-right:15px
-}
-
-@media (min-width:992px) {
- .col-md-spark, .col-md-spark-2 {
- float: left;
- }
- .col-md-spark {
- width:16.65%
- }
- .col-md-spark-2 {
- width:20%
- }
-}
-
-span.overview-mhs {
- font-size: 11px;
- font-weight: bold;
-}
-
-div.black {
- color: black;
-}
-
-div.progress-fix {
- margin: 0px 0px 5px 0px;
-}
-
-span.spark-18 {
- margin: -20%;
-}
-
-span.spark-25 {
- margin: -25%;
-}
-
-/* Test Edit */
-
-.circle-tile {
- margin-bottom: 30px;
-}
-
-.circle-tile {
- margin-bottom: 15px;
- text-align: center;
-}
-
-.circle-tile-content {
- padding-top: 50px;
- border-radius: 8px;
- border: 3px solid rgba(255, 255, 255, 0.3);
-}
-
-.circle-tile-description {
- font-weight: bold;
- font-size: 16px;
-}
-
-.circle-tile-number {
- padding: 0px 1px 4px;
-}
-
-.circle-tile-heading {
- position: relative;
- width: 80px;
- height: 80px;
- margin: 0px auto -40px;
- border: 3px solid rgba(255, 255, 255, 0.3);
- border-radius: 100%;
- color: #FFF;
- transition: all 0.3s ease-in-out 0s;
-}
-
-.circle-tile-heading .fa {
- line-height: 80px;
-}
-
-.lightblue {
- background-color: #2FAACE;
-}
-
-.text-faded {
- color: rgba(255, 255, 255, 0.7);
-}
-
-.text-link {
- color: #FFFFFF;
-}
-
-p.up {
- margin: -5px 0px -8px;
- font-weight: 600;
-}
-
-div.up {
- margin: -10px 0px 6px 0px;
-}
-
-p.up-more {
- margin: -6px 0px 10px;
- font-weight: 600;
-}
-
-p.up-more2 {
- margin: -6px 0px 0px;
-}
-
-div.fade {
- opacity: 0.8;
-}
-
-/* End Test */
+/* ------------------------------- */
+
+body {
+ background-color: #f8f8f8;
+ min-width: 350px;
+ font-size: 12px;
+ /* Design constraint */
+}
+
+p {
+ font-size: 12px;
+}
+
+/* Wrappers */
+
+/* ------------------------------- */
+
+ #wrapper {
+ width: 100%;
+}
+
+#page-wrapper {
+ padding: 0 15px;
+ min-height: 568px;
+ background-color: #fff;
+ font-size: 12px;
+}
+
+@media(min-width:768px) {
+ #page-wrapper {
+ position: inherit;
+ margin: 0 0 0 250px;
+ padding: 0 30px;
+ min-height: 900px;
+ border-left: 1px solid #e7e7e7;
+ font-size: 12px;
+ }
+}
+
+.navbar-static-side ul li {
+ border-bottom: 1px solid #e7e7e7;
+}
+
+
+/* Input fields */
+
+/* ------------------------------- */
+
+select,
+textarea,
+input[type="text"],
+input[type="password"],
+input[type="datetime"],
+input[type="datetime-local"],
+input[type="date"],
+input[type="month"],
+input[type="time"],
+input[type="week"],
+input[type="number"],
+input[type="email"],
+input[type="url"],
+input[type="search"],
+input[type="tel"],
+input[type="color"],
+.uneditable-input {
+ background-color: #ffffff;
+ padding: 4px 4px 4px 4px;
+ font-size: 11px;
+ color: #555555;
+ border: 1px solid #ccc;
+ height: 25px;
+ line-height: 25px;
+}
+
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 25px;
+ font-size: 12px;
+}
+
+.form-control {
+ font-size: 12px;
+}
+
+.input-group .input-group-addon {
+ line-height: 1!important;
+ }
+
+.glyphicon{
+ line-height: 1em;
+}
+
+.select-mini, .input-group {
+ font-size: 11px;
+ height: 25px;
+ padding: 3px;
+}
+
+/* Navigation */
+
+/* ------------------------------- */
+
+/* Top Right Navigation Dropdown Styles */
+
+.navbar-top-links li {
+ display: inline-block;
+}
+
+.navbar-top-links li:last-child {
+ margin-right: 15px;
+}
+
+.navbar-top-links li a {
+ padding: 15px;
+ min-height: 50px;
+}
+
+.dropdown-user {
+ min-width:100px;
+}
+
+.navbar-top-links .dropdown-menu li {
+ display: block;
+}
+
+.navbar-top-links .dropdown-menu li:last-child {
+ margin-right: 0;
+}
+
+.navbar-top-links .dropdown-menu li a {
+ padding: 3px 20px;
+ min-height: 0;
+}
+
+.navbar-top-links .dropdown-menu li a div {
+ white-space: normal;
+}
+
+.navbar-top-links .dropdown-messages,
+.navbar-top-links .dropdown-tasks,
+.navbar-top-links .dropdown-alerts {
+ width: 310px;
+ min-width: 0;
+}
+
+.navbar-top-links .dropdown-messages {
+ margin-left: 5px;
+}
+
+.navbar-top-links .dropdown-tasks {
+ margin-left: -59px;
+}
+
+.navbar-top-links .dropdown-alerts {
+ /*#margin-left: -123px; */
+}
+
+.navbar-top-links .dropdown-user {
+ right: 0;
+ left: auto;
+}
+
+/* Sidebar Menu Styles */
+
+.sidebar-search {
+ padding: 15px;
+}
+
+.arrow {
+ float: right;
+}
+
+.fa.arrow:before {
+ content: "\f104";
+}
+
+.active > a > .fa.arrow:before {
+ content: "\f107";
+}
+
+.nav-second-level li,
+.nav-third-level li {
+ border-bottom: none !important;
+}
+
+.nav-second-level li a {
+ padding-left: 37px;
+}
+
+.nav-third-level li a {
+ padding-left: 52px;
+}
+
+@media(min-width:768px) {
+ .navbar-static-side {
+ z-index: 1;
+ position: absolute;
+ width: 250px;
+ }
+
+ .navbar-top-links .dropdown-messages,
+ .navbar-top-links .dropdown-tasks,
+ .navbar-top-links .dropdown-alerts {
+ margin-left: auto;
+ }
+ .col-md-spark, .col-md-spark-2 {
+ float: left;
+ }
+ .col-md-spark {
+ width:16.65%
+ }
+ .col-md-spark-2 {
+ width:20%
+ }
+}
+
+.navbar-default .navbar-nav .open .dropdown-menu > li > a,
+.navbar-default .navbar-nav .open .dropdown-menu {
+ font-size: 12px;
+}
+
+.navbar-default .navbar-nav .open .dropdown-menu > li a:hover {
+ font-size: 12px;
+}
+
+/* Buttons */
+
+/* ------------------------------- */
+
+.btn-outline {
+ color: inherit;
+ background-color: transparent;
+ transition: all .5s;
+}
+
+.btn-primary.btn-outline {
+ color: #428bca;
+}
+
+.btn-success.btn-outline {
+ color: #5cb85c;
+}
+
+.btn-info.btn-outline {
+ color: #5bc0de;
+}
+
+.btn-warning.btn-outline {
+ color: #f0ad4e;
+}
+
+.btn-danger.btn-outline {
+ color: #d9534f;
+}
+
+.btn-primary.btn-outline:hover,
+.btn-success.btn-outline:hover,
+.btn-info.btn-outline:hover,
+.btn-warning.btn-outline:hover,
+.btn-danger.btn-outline:hover {
+ color: #fff;
+}
+
+/* Pages */
+
+/* ------------------------------- */
+
+/* Dashboard Chat */
+
+.chat {
+ margin: 0;
+ padding: 0;
+ list-style: none;
+}
+
+.chat li {
+ margin-bottom: 10px;
+ padding-bottom: 5px;
+ border-bottom: 1px dotted #B3A9A9;
+}
+
+.chat li.left .chat-body {
+ margin-left: 60px;
+}
+
+.chat li.right .chat-body {
+ margin-right: 60px;
+}
+
+.chat li .chat-body p {
+ margin: 0;
+ color: #777777;
+}
+
+.panel .slidedown .glyphicon,
+.chat .glyphicon {
+ margin-right: 5px;
+}
+
+.chat-panel .panel-body {
+ height: 350px;
+ overflow-y: scroll;
+}
+
+/* Login Page */
+
+.login-panel {
+ margin-top: 25%;
+}
+
+/* Flot Chart Containers */
+
+.flot-chart {
+ display: block;
+ height: 400px;
+}
+
+.flot-chart-content {
+ width: 100%;
+ height: 100%;
+}
+
+/* DataTables Overrides */
+
+table.dataTable thead .sorting,
+table.dataTable thead .sorting_asc:after,
+table.dataTable thead .sorting_desc,
+table.dataTable thead .sorting_asc_disabled,
+table.dataTable thead .sorting_desc_disabled {
+ background: transparent;
+}
+
+table.dataTable thead .sorting_asc:after {
+ content: "\f0de";
+ float: right;
+ font-family: fontawesome;
+}
+
+table.dataTable thead .sorting_desc:after {
+ content: "\f0dd";
+ float: right;
+ font-family: fontawesome;
+}
+
+table.dataTable thead .sorting:after {
+ content: "\f0dc";
+ float: right;
+ font-family: fontawesome;
+ color: rgba(50,50,50,.5);
+}
+
+div.dataTables_length select {
+ font-size: 11px;
+ height: 25px;
+}
+
+div.dataTables_filter input {
+ font-size: 11px;
+ height: 25px;
+}
+
+div.dataTables_paginate {
+ font-size: 11px;
+}
+
+div.dataTables_paginate ul.pagination {
+ font-size: 11px;
+
+}
+
+/* Circle Buttons */
+
+ .btn-circle {
+ width: 30px;
+ height: 30px;
+ padding: 6px 0;
+ border-radius: 15px;
+ text-align: center;
+ font-size: 12px;
+ line-height: 1.428571429;
+}
+
+.btn-circle.btn-lg {
+ width: 50px;
+ height: 50px;
+ padding: 10px 16px;
+ border-radius: 25px;
+ font-size: 18px;
+ line-height: 1.33;
+}
+
+.btn-circle.btn-xl {
+ width: 70px;
+ height: 70px;
+ padding: 10px 16px;
+ border-radius: 35px;
+ font-size: 24px;
+ line-height: 1.33;
+}
+
+.show-grid [class^="col-"] {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ border: 1px solid #ddd;
+ background-color: #eee !important;
+}
+
+.show-grid {
+ margin: 15px 0;
+}
+
+/* No Padding for Tables */
+
+.no-padding {
+ padding:0
+}
+
+.no-padding table {
+ margin: 0
+}
+
+.no-padding .table-bordered {
+ border: 0;
+}
+
+.borderless > tbody > tr > td {
+ border: none;
+ padding: 5px;
+}
+
+.borderless > thead > tr > th {
+ border: none;
+}
+
+.margin-bottom-sm {
+ margin-bottom: 5px !important;
+}
+
+p.overview {
+ font-family: 'Open Sans',sans-serif;
+ font-weight: 600;
+ font-size: 11px;
+ text-transform: uppercase;
+ display: block;
+ margin-bottom: 4px;
+}
+
+span.overview {
+ font-size: 14px;
+ font-weight: bold;
+}
+
+div.overview {
+ margin: 20px 0px 0px;
+}
+
+span.bigfont {
+ font-size: 100%;
+}
+
+th.smallwidth {
+ width: 250px;
+}
+
+.col-md-spark, .col-md-spark-2 {
+ position:relative;
+ min-height:1px;
+ padding-left:15px;
+ padding-right:15px
+}
+
+span.overview-mhs {
+ font-size: 11px;
+ font-weight: bold;
+}
+
+div.black {
+ color: black;
+}
+
+div.progress-fix {
+ margin: 0px 0px 5px 0px;
+}
+
+span.spark-18 {
+ margin: -20%;
+}
+
+span.spark-25 {
+ margin: -25%;
+}
+
+/* Test Edit */
+
+.circle-tile {
+ margin-bottom: 30px;
+}
+
+.circle-tile {
+ margin-bottom: 15px;
+ text-align: center;
+}
+
+.circle-tile-content {
+ padding-top: 50px;
+ border-radius: 8px;
+ border: 3px solid rgba(255, 255, 255, 0.3);
+}
+
+.circle-tile-description {
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.circle-tile-number {
+ padding: 0px 1px 4px;
+}
+
+.circle-tile-heading {
+ position: relative;
+ width: 80px;
+ height: 80px;
+ margin: 0px auto -40px;
+ border: 3px solid rgba(255, 255, 255, 0.3);
+ border-radius: 100%;
+ color: #FFF;
+ transition: all 0.3s ease-in-out 0s;
+}
+
+.circle-tile-heading .fa {
+ line-height: 80px;
+}
+
+.lightblue {
+ background-color: #2FAACE;
+}
+
+.text-faded {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.text-link {
+ color: #FFFFFF;
+}
+
+p.up {
+ margin: -5px 0px -8px;
+ font-weight: 600;
+}
+
+div.up {
+ margin: -10px 0px 6px 0px;
+}
+
+p.up-more {
+ margin: -6px 0px 10px;
+ font-weight: 600;
+}
+
+p.up-more2 {
+ margin: -6px 0px 0px;
+}
+
+div.fade {
+ opacity: 0.8;
+}
+
+/* End Test */
+
+/* Tables */
+
+.table>tbody>tr>th
+{
+ padding-left:3px;
+ padding-bottom:3px;
+ border: 1px solid #ddd;
+ background-color: #f9f9f9;
+ padding-right:1px;
+}
+
+.table > tbody > tr > td
+{
+ padding:4px;
+}
+
+.panel > .table,
+.panel > .table-responsive > .table {
+ margin-bottom: 0;
+}
+
+.table-responsive
+{
+ white-space: nowrap;
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-x: scroll;
+ overflow-y: hidden;
+ -webkit-overflow-scrolling: touch;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+}
+
+/* End Tables */
+
+/* Footer */
+
+
+.footer {
+ clear: both;
+ text-align: center;
+ padding: 4px 0px 0px;
+ font-size: 11px;
+ width: 100%;
+ margin-bottom: 5px !important;
+}
+
+.confirmations {
+ color: #F79D00;
+}
+
+/* End Footer */
diff --git a/public/site_assets/bootstrap/js/jquery.md5.js b/public/site_assets/bootstrap/js/jquery.md5.js
new file mode 100644
index 00000000..bf9bbe97
--- /dev/null
+++ b/public/site_assets/bootstrap/js/jquery.md5.js
@@ -0,0 +1,269 @@
+/*
+ * jQuery MD5 Plugin 1.2.1
+ * https://github.com/blueimp/jQuery-MD5
+ *
+ * Copyright 2010, Sebastian Tschan
+ * https://blueimp.net
+ *
+ * Licensed under the MIT license:
+ * http://creativecommons.org/licenses/MIT/
+ *
+ * Based on
+ * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message
+ * Digest Algorithm, as defined in RFC 1321.
+ * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009
+ * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet
+ * Distributed under the BSD License
+ * See http://pajhome.org.uk/crypt/md5 for more info.
+ */
+
+/*jslint bitwise: true */
+/*global unescape, jQuery */
+
+(function ($) {
+ 'use strict';
+
+ /*
+ * Add integers, wrapping at 2^32. This uses 16-bit operations internally
+ * to work around bugs in some JS interpreters.
+ */
+ function safe_add(x, y) {
+ var lsw = (x & 0xFFFF) + (y & 0xFFFF),
+ msw = (x >> 16) + (y >> 16) + (lsw >> 16);
+ return (msw << 16) | (lsw & 0xFFFF);
+ }
+
+ /*
+ * Bitwise rotate a 32-bit number to the left.
+ */
+ function bit_rol(num, cnt) {
+ return (num << cnt) | (num >>> (32 - cnt));
+ }
+
+ /*
+ * These functions implement the four basic operations the algorithm uses.
+ */
+ function md5_cmn(q, a, b, x, s, t) {
+ return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s), b);
+ }
+ function md5_ff(a, b, c, d, x, s, t) {
+ return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t);
+ }
+ function md5_gg(a, b, c, d, x, s, t) {
+ return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t);
+ }
+ function md5_hh(a, b, c, d, x, s, t) {
+ return md5_cmn(b ^ c ^ d, a, b, x, s, t);
+ }
+ function md5_ii(a, b, c, d, x, s, t) {
+ return md5_cmn(c ^ (b | (~d)), a, b, x, s, t);
+ }
+
+ /*
+ * Calculate the MD5 of an array of little-endian words, and a bit length.
+ */
+ function binl_md5(x, len) {
+ /* append padding */
+ x[len >> 5] |= 0x80 << ((len) % 32);
+ x[(((len + 64) >>> 9) << 4) + 14] = len;
+
+ var i, olda, oldb, oldc, oldd,
+ a = 1732584193,
+ b = -271733879,
+ c = -1732584194,
+ d = 271733878;
+
+ for (i = 0; i < x.length; i += 16) {
+ olda = a;
+ oldb = b;
+ oldc = c;
+ oldd = d;
+
+ a = md5_ff(a, b, c, d, x[i], 7, -680876936);
+ d = md5_ff(d, a, b, c, x[i + 1], 12, -389564586);
+ c = md5_ff(c, d, a, b, x[i + 2], 17, 606105819);
+ b = md5_ff(b, c, d, a, x[i + 3], 22, -1044525330);
+ a = md5_ff(a, b, c, d, x[i + 4], 7, -176418897);
+ d = md5_ff(d, a, b, c, x[i + 5], 12, 1200080426);
+ c = md5_ff(c, d, a, b, x[i + 6], 17, -1473231341);
+ b = md5_ff(b, c, d, a, x[i + 7], 22, -45705983);
+ a = md5_ff(a, b, c, d, x[i + 8], 7, 1770035416);
+ d = md5_ff(d, a, b, c, x[i + 9], 12, -1958414417);
+ c = md5_ff(c, d, a, b, x[i + 10], 17, -42063);
+ b = md5_ff(b, c, d, a, x[i + 11], 22, -1990404162);
+ a = md5_ff(a, b, c, d, x[i + 12], 7, 1804603682);
+ d = md5_ff(d, a, b, c, x[i + 13], 12, -40341101);
+ c = md5_ff(c, d, a, b, x[i + 14], 17, -1502002290);
+ b = md5_ff(b, c, d, a, x[i + 15], 22, 1236535329);
+
+ a = md5_gg(a, b, c, d, x[i + 1], 5, -165796510);
+ d = md5_gg(d, a, b, c, x[i + 6], 9, -1069501632);
+ c = md5_gg(c, d, a, b, x[i + 11], 14, 643717713);
+ b = md5_gg(b, c, d, a, x[i], 20, -373897302);
+ a = md5_gg(a, b, c, d, x[i + 5], 5, -701558691);
+ d = md5_gg(d, a, b, c, x[i + 10], 9, 38016083);
+ c = md5_gg(c, d, a, b, x[i + 15], 14, -660478335);
+ b = md5_gg(b, c, d, a, x[i + 4], 20, -405537848);
+ a = md5_gg(a, b, c, d, x[i + 9], 5, 568446438);
+ d = md5_gg(d, a, b, c, x[i + 14], 9, -1019803690);
+ c = md5_gg(c, d, a, b, x[i + 3], 14, -187363961);
+ b = md5_gg(b, c, d, a, x[i + 8], 20, 1163531501);
+ a = md5_gg(a, b, c, d, x[i + 13], 5, -1444681467);
+ d = md5_gg(d, a, b, c, x[i + 2], 9, -51403784);
+ c = md5_gg(c, d, a, b, x[i + 7], 14, 1735328473);
+ b = md5_gg(b, c, d, a, x[i + 12], 20, -1926607734);
+
+ a = md5_hh(a, b, c, d, x[i + 5], 4, -378558);
+ d = md5_hh(d, a, b, c, x[i + 8], 11, -2022574463);
+ c = md5_hh(c, d, a, b, x[i + 11], 16, 1839030562);
+ b = md5_hh(b, c, d, a, x[i + 14], 23, -35309556);
+ a = md5_hh(a, b, c, d, x[i + 1], 4, -1530992060);
+ d = md5_hh(d, a, b, c, x[i + 4], 11, 1272893353);
+ c = md5_hh(c, d, a, b, x[i + 7], 16, -155497632);
+ b = md5_hh(b, c, d, a, x[i + 10], 23, -1094730640);
+ a = md5_hh(a, b, c, d, x[i + 13], 4, 681279174);
+ d = md5_hh(d, a, b, c, x[i], 11, -358537222);
+ c = md5_hh(c, d, a, b, x[i + 3], 16, -722521979);
+ b = md5_hh(b, c, d, a, x[i + 6], 23, 76029189);
+ a = md5_hh(a, b, c, d, x[i + 9], 4, -640364487);
+ d = md5_hh(d, a, b, c, x[i + 12], 11, -421815835);
+ c = md5_hh(c, d, a, b, x[i + 15], 16, 530742520);
+ b = md5_hh(b, c, d, a, x[i + 2], 23, -995338651);
+
+ a = md5_ii(a, b, c, d, x[i], 6, -198630844);
+ d = md5_ii(d, a, b, c, x[i + 7], 10, 1126891415);
+ c = md5_ii(c, d, a, b, x[i + 14], 15, -1416354905);
+ b = md5_ii(b, c, d, a, x[i + 5], 21, -57434055);
+ a = md5_ii(a, b, c, d, x[i + 12], 6, 1700485571);
+ d = md5_ii(d, a, b, c, x[i + 3], 10, -1894986606);
+ c = md5_ii(c, d, a, b, x[i + 10], 15, -1051523);
+ b = md5_ii(b, c, d, a, x[i + 1], 21, -2054922799);
+ a = md5_ii(a, b, c, d, x[i + 8], 6, 1873313359);
+ d = md5_ii(d, a, b, c, x[i + 15], 10, -30611744);
+ c = md5_ii(c, d, a, b, x[i + 6], 15, -1560198380);
+ b = md5_ii(b, c, d, a, x[i + 13], 21, 1309151649);
+ a = md5_ii(a, b, c, d, x[i + 4], 6, -145523070);
+ d = md5_ii(d, a, b, c, x[i + 11], 10, -1120210379);
+ c = md5_ii(c, d, a, b, x[i + 2], 15, 718787259);
+ b = md5_ii(b, c, d, a, x[i + 9], 21, -343485551);
+
+ a = safe_add(a, olda);
+ b = safe_add(b, oldb);
+ c = safe_add(c, oldc);
+ d = safe_add(d, oldd);
+ }
+ return [a, b, c, d];
+ }
+
+ /*
+ * Convert an array of little-endian words to a string
+ */
+ function binl2rstr(input) {
+ var i,
+ output = '';
+ for (i = 0; i < input.length * 32; i += 8) {
+ output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xFF);
+ }
+ return output;
+ }
+
+ /*
+ * Convert a raw string to an array of little-endian words
+ * Characters >255 have their high-byte silently ignored.
+ */
+ function rstr2binl(input) {
+ var i,
+ output = [];
+ output[(input.length >> 2) - 1] = undefined;
+ for (i = 0; i < output.length; i += 1) {
+ output[i] = 0;
+ }
+ for (i = 0; i < input.length * 8; i += 8) {
+ output[i >> 5] |= (input.charCodeAt(i / 8) & 0xFF) << (i % 32);
+ }
+ return output;
+ }
+
+ /*
+ * Calculate the MD5 of a raw string
+ */
+ function rstr_md5(s) {
+ return binl2rstr(binl_md5(rstr2binl(s), s.length * 8));
+ }
+
+ /*
+ * Calculate the HMAC-MD5, of a key and some data (raw strings)
+ */
+ function rstr_hmac_md5(key, data) {
+ var i,
+ bkey = rstr2binl(key),
+ ipad = [],
+ opad = [],
+ hash;
+ ipad[15] = opad[15] = undefined;
+ if (bkey.length > 16) {
+ bkey = binl_md5(bkey, key.length * 8);
+ }
+ for (i = 0; i < 16; i += 1) {
+ ipad[i] = bkey[i] ^ 0x36363636;
+ opad[i] = bkey[i] ^ 0x5C5C5C5C;
+ }
+ hash = binl_md5(ipad.concat(rstr2binl(data)), 512 + data.length * 8);
+ return binl2rstr(binl_md5(opad.concat(hash), 512 + 128));
+ }
+
+ /*
+ * Convert a raw string to a hex string
+ */
+ function rstr2hex(input) {
+ var hex_tab = '0123456789abcdef',
+ output = '',
+ x,
+ i;
+ for (i = 0; i < input.length; i += 1) {
+ x = input.charCodeAt(i);
+ output += hex_tab.charAt((x >>> 4) & 0x0F) +
+ hex_tab.charAt(x & 0x0F);
+ }
+ return output;
+ }
+
+ /*
+ * Encode a string as utf-8
+ */
+ function str2rstr_utf8(input) {
+ return unescape(encodeURIComponent(input));
+ }
+
+ /*
+ * Take string arguments and return either raw or hex encoded strings
+ */
+ function raw_md5(s) {
+ return rstr_md5(str2rstr_utf8(s));
+ }
+ function hex_md5(s) {
+ return rstr2hex(raw_md5(s));
+ }
+ function raw_hmac_md5(k, d) {
+ return rstr_hmac_md5(str2rstr_utf8(k), str2rstr_utf8(d));
+ }
+ function hex_hmac_md5(k, d) {
+ return rstr2hex(raw_hmac_md5(k, d));
+ }
+
+ $.md5 = function (string, key, raw) {
+ if (!key) {
+ if (!raw) {
+ return hex_md5(string);
+ } else {
+ return raw_md5(string);
+ }
+ }
+ if (!raw) {
+ return hex_hmac_md5(key, string);
+ } else {
+ return raw_hmac_md5(key, string);
+ }
+ };
+
+}(typeof jQuery === 'function' ? jQuery : this));
\ No newline at end of file
diff --git a/public/site_assets/bootstrap/js/mpos.js b/public/site_assets/bootstrap/js/mpos.js
index 36ac5f54..830319f4 100644
--- a/public/site_assets/bootstrap/js/mpos.js
+++ b/public/site_assets/bootstrap/js/mpos.js
@@ -22,7 +22,38 @@ $(document).ready(function() {
// Bootstrap iOS style switches for checkboxes with switch class
$('.switch').bootstrapSwitch();
+
+ if (document.getElementById("motd")) {
+ var md5motd = $.md5(document.getElementById('motd').innerHTML);
+ // Check if MOTD alert has been closed
+ //alert(md5motd);
+ if( $.cookie('motd-box') === md5motd ){
+ $('#motd').hide();
+ //alert('hidden');
+ }
+ }
+
+ if (document.getElementById("lastlogin")) {
+ var md5lastlogin = $.md5(document.getElementById('lastlogin').innerHTML);
+ // Check if lastlogin alert has been closed
+ //alert(md5lastlogin);
+ if( $.cookie('lastlogin-box') === md5lastlogin ){
+ $('#lastlogin').hide();
+ //alert('hidden');
+ }
+
+ }
+ if (document.getElementById("backend")) {
+ var md5backend = $.md5(document.getElementById('backend').innerHTML);
+ // Check if Backend Issues alert has been closed
+ //alert(md5backend);
+ if( $.cookie('backend-box') === md5backend ){
+ $('#backend').hide();
+ //alert('hidden');
+ }
+ }
+
});
$(function() {
@@ -38,29 +69,19 @@ $(function() {
}, hide_delay + hide_next*index);
});
- // Check if lastlogin alert has been closed
- if( $.cookie('lastlogin-box') === 'closed' ){
- $('#lastlogin').hide();
- }
- // Check if MOTD alert has been closed
- if( $.cookie('motd-box') === 'closed' ){
- $('#motd').hide();
- }
- // Check if Backend Issues alert has been closed
- if( $.cookie('backend-box') === 'closed' ){
- $('#backend').hide();
- }
-
// Grab your button (based on your posted html)
$('.close').click(function( e ){
e.preventDefault();
//alert($(this).attr("id"));
if ($(this).attr("id") === 'motd') {
- $.cookie('motd-box', 'closed', { path: '/' });
+ var md5motd = $.md5(document.getElementById('motd').innerHTML);
+ $.cookie('motd-box', md5motd, { path: '/' });
} else if ($(this).attr("id") === 'lastlogin') {
- $.cookie('lastlogin-box', 'closed', { path: '/' });
+ var md5lastlogin = $.md5(document.getElementById('lastlogin').innerHTML);
+ $.cookie('lastlogin-box', md5lastlogin, { path: '/' });
} else if ($(this).attr("id") === 'backend') {
- $.cookie('backend-box', 'closed', { path: '/' });
+ var md5backend = $.md5(document.getElementById('backend').innerHTML);
+ $.cookie('backend-box', md5backend, { path: '/' });
} else {
//alert($(this).attr("id"));
}
diff --git a/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js b/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js
index 36a8098d..69db8208 100644
--- a/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js
+++ b/public/site_assets/bootstrap/js/plugins/metisMenu/jquery.metisMenu.js
@@ -1,3 +1,10 @@
+/**
+* metisMenu v1.0.1
+* Author : Osman Nuri Okumuş
+* Copyright 2014
+* Licensed under MIT
+*/
+
;(function ($, window, document, undefined) {
var pluginName = "metisMenu",
@@ -42,4 +49,4 @@
});
};
-})(jQuery, window, document);
+})(jQuery, window, document);
\ No newline at end of file
diff --git a/public/templates/bootstrap/about/moot/default.tpl b/public/templates/bootstrap/about/moot/default.tpl
new file mode 100644
index 00000000..c066cdcd
--- /dev/null
+++ b/public/templates/bootstrap/about/moot/default.tpl
@@ -0,0 +1,15 @@
+
diff --git a/public/templates/bootstrap/about/moot/disabled.tpl b/public/templates/bootstrap/about/moot/disabled.tpl
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/public/templates/bootstrap/about/moot/disabled.tpl
@@ -0,0 +1 @@
+0
diff --git a/public/templates/bootstrap/about/pool/default.tpl b/public/templates/bootstrap/about/pool/default.tpl
index a3a94c5d..92559fc1 100644
--- a/public/templates/bootstrap/about/pool/default.tpl
+++ b/public/templates/bootstrap/about/pool/default.tpl
@@ -18,7 +18,7 @@
Q: What is a Orphan Block?
A: Coins generated by a block will not be available to you right away. They will take some time to be confirmed by the entire network before you are allowed to transfer them out of the pool. Usually coins have a confirmation set to 120. What that actually means: the network (not the pool) has to discover 120 additional blocks on top of the one found by the pool to confirm it.
- Q: What is estimated paypout?
+ Q: What is estimated payout?
A: Estimated Payout is your Estimated payout if a block is found at that time. This is an estimate according to your amount of shares submitted for the round(s).
Q: What is Pool-variance?
diff --git a/public/templates/bootstrap/account/earnings/default.tpl b/public/templates/bootstrap/account/earnings/default.tpl
index f783d452..dab7af0e 100644
--- a/public/templates/bootstrap/account/earnings/default.tpl
+++ b/public/templates/bootstrap/account/earnings/default.tpl
@@ -10,12 +10,13 @@
- All Time
+ Summary
+
{foreach $SUMMARY as $type=>$total}
{$type}
{/foreach}
@@ -23,6 +24,7 @@
+ All Time
{foreach $SUMMARY as $type=>$total}
{$total|number_format:"8"}
{/foreach}
@@ -44,7 +46,7 @@
-
+
Credit
Bonus
Debit AP
@@ -58,7 +60,7 @@
- Last Hour
+ Last Hour
{$BYTIME.1HourCredit|number_format:"8"}
{$BYTIME.1HourBonus|number_format:"8"}
{$BYTIME.1HourDebitAP|number_format:"8"}
@@ -70,7 +72,7 @@
{$BYTIME.1HourTXFee|number_format:"8"}
- Last Day
+ Last Day
{$BYTIME.24HourCredit|number_format:"8"}
{$BYTIME.24HourBonus|number_format:"8"}
{$BYTIME.24HourDebitAP|number_format:"8"}
@@ -82,7 +84,7 @@
{$BYTIME.24HourTXFee|number_format:"8"}
- Last Week
+ Last Week
{$BYTIME.1WeekCredit|number_format:"8"}
{$BYTIME.1WeekBonus|number_format:"8"}
{$BYTIME.1WeekDebitAP|number_format:"8"}
@@ -94,7 +96,7 @@
{$BYTIME.1WeekTXFee|number_format:"8"}
- Last Month
+ Last Month
{$BYTIME.1MonthCredit|number_format:"8"}
{$BYTIME.1MonthBonus|number_format:"8"}
{$BYTIME.1MonthDebitAP|number_format:"8"}
@@ -106,7 +108,7 @@
{$BYTIME.1MonthTXFee|number_format:"8"}
- Last Year
+ Last Year
{$BYTIME.1YearCredit|number_format:"8"}
{$BYTIME.1YearBonus|number_format:"8"}
{$BYTIME.1YearDebitAP|number_format:"8"}
@@ -123,7 +125,6 @@
-
diff --git a/public/templates/bootstrap/account/edit/cashout.tpl b/public/templates/bootstrap/account/edit/cashout.tpl
index 8a853351..1008fda9 100644
--- a/public/templates/bootstrap/account/edit/cashout.tpl
+++ b/public/templates/bootstrap/account/edit/cashout.tpl
@@ -28,7 +28,7 @@
{nocache} {/nocache}
- 4 digit PIN
+ 4 Digit PIN
diff --git a/public/templates/bootstrap/account/edit/detail.tpl b/public/templates/bootstrap/account/edit/detail.tpl
index 35049d54..6ca4d131 100644
--- a/public/templates/bootstrap/account/edit/detail.tpl
+++ b/public/templates/bootstrap/account/edit/detail.tpl
@@ -54,7 +54,7 @@
Hide username on website from others. Admins can still get your user information.
- 4 digit PIN
+ 4 Digit PIN
The 4 digit PIN you chose when registering
diff --git a/public/templates/bootstrap/account/edit/password.tpl b/public/templates/bootstrap/account/edit/password.tpl
index fa3d23e6..6110a543 100644
--- a/public/templates/bootstrap/account/edit/password.tpl
+++ b/public/templates/bootstrap/account/edit/password.tpl
@@ -31,7 +31,7 @@
{nocache} {/nocache}
- 4 digit PIN
+ 4 Digit PIN
diff --git a/public/templates/bootstrap/account/notifications/default.tpl b/public/templates/bootstrap/account/notifications/default.tpl
index ab2fedea..f1fa1a0d 100644
--- a/public/templates/bootstrap/account/notifications/default.tpl
+++ b/public/templates/bootstrap/account/notifications/default.tpl
@@ -50,6 +50,17 @@
+ {if $DISABLE_POOLNEWSLETTER|default:"" != 1}
+
+
+ Pool Newsletter
+
+
+
+
+
+
+ {/if}
-
\ No newline at end of file
+
diff --git a/public/templates/bootstrap/about/donors/disabled.tpl b/public/templates/bootstrap/account/qrcode/disabled.tpl
old mode 100644
new mode 100755
similarity index 100%
rename from public/templates/bootstrap/about/donors/disabled.tpl
rename to public/templates/bootstrap/account/qrcode/disabled.tpl
diff --git a/public/templates/bootstrap/account/transactions/default.tpl b/public/templates/bootstrap/account/transactions/default.tpl
index 9cfdff13..5ba392b4 100644
--- a/public/templates/bootstrap/account/transactions/default.tpl
+++ b/public/templates/bootstrap/account/transactions/default.tpl
@@ -1,5 +1,5 @@
-
-
+
Transaction History
-
+
ID
@@ -54,10 +54,10 @@
{section transaction $TRANSACTIONS}
- {$TRANSACTIONS[transaction].id}
- {$TRANSACTIONS[transaction].timestamp}
- {$TRANSACTIONS[transaction].type}
-
+ {$TRANSACTIONS[transaction].id}
+ {$TRANSACTIONS[transaction].timestamp}
+ {$TRANSACTIONS[transaction].type}
+
{if $TRANSACTIONS[transaction].type == 'Credit_PPS' OR
$TRANSACTIONS[transaction].type == 'Fee_PPS' OR
$TRANSACTIONS[transaction].type == 'Donation_PPS' OR
@@ -73,14 +73,14 @@
Unconfirmed
{/if}
- {$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}
+ {$TRANSACTIONS[transaction].coin_address|truncate:20:"...":true:true}
{if ! $GLOBAL.website.transactionexplorer.disabled}
- {$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}
+ {$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}
{else}
- {$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}
+ {$TRANSACTIONS[transaction].txid|truncate:20:"...":true:true}
{/if}
- {if $TRANSACTIONS[transaction].height == 0}n/a{else}{$TRANSACTIONS[transaction].height} {/if}
- {$TRANSACTIONS[transaction].amount|number_format:"8"}
+ {if $TRANSACTIONS[transaction].height == 0}n/a{else}{$TRANSACTIONS[transaction].height} {/if}
+ {$TRANSACTIONS[transaction].amount|number_format:"8"}
{/section}
diff --git a/public/templates/bootstrap/account/workers/default.tpl b/public/templates/bootstrap/account/workers/default.tpl
index 8ca7e40a..6a6dbc8b 100644
--- a/public/templates/bootstrap/account/workers/default.tpl
+++ b/public/templates/bootstrap/account/workers/default.tpl
@@ -42,7 +42,7 @@
Worker Login
Worker Password
Active
- {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}Monitor {/if}
+ {if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}Monitor {/if}
Khash/s
Difficulty
Action
@@ -62,7 +62,7 @@
{if $GLOBAL.config.disable_notifications != 1 && $DISABLE_IDLEWORKERNOTIFICATIONS != 1}
-
+
diff --git a/public/templates/bootstrap/admin/invitations/default.tpl b/public/templates/bootstrap/admin/invitations/default.tpl
index e31c44b5..a49afeb6 100644
--- a/public/templates/bootstrap/admin/invitations/default.tpl
+++ b/public/templates/bootstrap/admin/invitations/default.tpl
@@ -31,8 +31,8 @@