From 94f5fffd4a6b03b4e59c88830774323630ed3282 Mon Sep 17 00:00:00 2001 From: Jagadedes Date: Mon, 17 Nov 2014 16:53:41 +0530 Subject: [PATCH] Beta2 bug fix. 31237 Option to display current amount instead of percentage --- CRM/Wci/BAO/ProgressBar.php | 72 ++++++++++++++++------------ CRM/Wci/BAO/Widget.php | 1 + CRM/Wci/DAO/Widget.php | 13 +++++ CRM/Wci/Form/CreateWidget.php | 21 ++++++-- sql/install.sql | 1 + templates/CRM/Wci/Page/wciwidget.tpl | 6 ++- 6 files changed, 78 insertions(+), 36 deletions(-) diff --git a/CRM/Wci/BAO/ProgressBar.php b/CRM/Wci/BAO/ProgressBar.php index 1177bd7..3bb0124 100644 --- a/CRM/Wci/BAO/ProgressBar.php +++ b/CRM/Wci/BAO/ProgressBar.php @@ -157,22 +157,9 @@ class CRM_Wci_BAO_ProgressBar extends CRM_Wci_DAO_ProgressBar { * @return decimal percentage value * @access public */ - public static function getProgressbarPercentage($idPB) { + public static function getPBCollectedAmount($pbId) { $bp = 0; - $ga = 0; - $query = "SELECT * FROM civicrm_wci_progress_bar where id=" . $idPB; - $params = array(); - $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar'); - - while ($dao->fetch()) { - $con_page[$dao->id] = array(); - CRM_Core_DAO::storeValues($dao, $con_page[$dao->id]); - $con_page[$dao->id]['name']; - $sa = $con_page[$dao->id]['starting_amount']; - $ga = $con_page[$dao->id]['goal_amount']; - } - - $query = "SELECT * FROM civicrm_wci_progress_bar_formula WHERE progress_bar_id =" . $idPB; + $query = "SELECT * FROM civicrm_wci_progress_bar_formula WHERE progress_bar_id =" . $pbId; $params = array(); $daoPbf = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBarFormula'); @@ -194,25 +181,50 @@ class CRM_Wci_BAO_ProgressBar extends CRM_Wci_DAO_ProgressBar { $bp += $bx * $px / 100; } } - (0 == $ga) ? $perc = 0: $perc = (($sa + $bp) / $ga ) * 100; - if (100 < $perc){ - $perc = 100; - } - return round($perc); + return floor($bp); + } + + public static function getProgressbarInfo($pbId) { + $ga = 0; + $query = "SELECT * FROM civicrm_wci_progress_bar where id=" . $pbId; + $params = array(); + $pbInfo = array(); + $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_ProgressBar'); + + while ($dao->fetch()) { + $con_page[$dao->id] = array(); + CRM_Core_DAO::storeValues($dao, $con_page[$dao->id]); + $pbInfo['name'] = $con_page[$dao->id]['name']; + $pbInfo['starting_amount'] = $con_page[$dao->id]['starting_amount']; + $pbInfo['goal_amount'] = $con_page[$dao->id]['goal_amount']; + } + + return $pbInfo; + } + public static function getProgressbarPercentage($pbId, &$pbInfo) { + + $pbInfo = CRM_Wci_BAO_ProgressBar::getProgressbarInfo($pbId); + $ga = $pbInfo['goal_amount']; + $currAmnt = CRM_Wci_BAO_ProgressBar::getPBCollectedAmount($pbId) + + $pbInfo['starting_amount']; + (0 == $ga) ? $currAmt = 0: $perc = ($currAmnt / $ga ) * 100; + if (100 < $perc){ + $perc = 100; + } + + return floor($perc); } public static function getProgressbarData($pbId, &$pbData) { if(0 != $pbId) { - $query = "SELECT * FROM civicrm_wci_progress_bar where id=".$pbId; - $params = array(); + $pbInfo = array();//CRM_Wci_BAO_ProgressBar::getProgressbarInfo($pbId); + $pbData["pb_percentage"] = CRM_Wci_BAO_ProgressBar::getProgressbarPercentage($pbId, $pbInfo); + $pbData["starting_amount"] = floor($pbInfo['starting_amount']); + $pbData["goal_amount"] = ceil($pbInfo['goal_amount']); - $dao = CRM_Core_DAO::executeQuery($query, $params, TRUE, 'CRM_Wci_DAO_Widget'); - - //$pbData = array(); - while ($dao->fetch()) { - $pbData["starting_amount"] = $dao->starting_amount; - $pbData["goal_amount"] = $dao->goal_amount; - } - $pbData["pb_percentage"] = CRM_Wci_BAO_ProgressBar::getProgressbarPercentage($pbId); + ($pbData["show_pb_perc"]) ? $pbData["pb_caption"] = $pbData["pb_percentage"] + : $pbData["pb_caption"] = CRM_Wci_BAO_ProgressBar::getPBCollectedAmount($pbId) + + $pbData["starting_amount"]; + $pbData["no_pb"] = False; } else { $pbData["no_pb"] = True; diff --git a/CRM/Wci/BAO/Widget.php b/CRM/Wci/BAO/Widget.php index 5e423d5..e1b4630 100644 --- a/CRM/Wci/BAO/Widget.php +++ b/CRM/Wci/BAO/Widget.php @@ -159,6 +159,7 @@ class CRM_Wci_BAO_Widget extends CRM_Wci_DAO_Widget { $data["color_button"] = $dao->color_button; $data["color_button_bg"] = $dao->color_button_bg; $data['style_rules'] = $dao->style_rules; + $data["show_pb_perc"] = $dao->show_pb_perc; CRM_Wci_BAO_ProgressBar::getProgressbarData($dao->progress_bar_id, $data); $data["custom_template"] = $dao->custom_template; $data["widgetId"] = $widgetId; diff --git a/CRM/Wci/DAO/Widget.php b/CRM/Wci/DAO/Widget.php index 9920b96..2c6f51e 100644 --- a/CRM/Wci/DAO/Widget.php +++ b/CRM/Wci/DAO/Widget.php @@ -228,6 +228,12 @@ class CRM_Wci_DAO_Widget extends CRM_Core_DAO * @var boolean */ public $hide_pbcap; + /** + * if true then shows pb in % else in collected amount + * + * @var boolean + */ + public $show_pb_perc; /** * Custom template * @@ -454,6 +460,12 @@ class CRM_Wci_DAO_Widget extends CRM_Core_DAO 'title' => ts('Hide pb caption, if 1.', array('domain' => 'org.civicrm.wci')) , 'required' => false, ) , + 'show_pb_perc' => array( + 'name' => 'show_pb_perc', + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'title' => ts('pb in %(1) or amount(0).', array('domain' => 'org.civicrm.wci')) , + 'required' => false, + ) , 'custom_template' => array( 'name' => 'custom_template', 'type' => CRM_Utils_Type::T_TEXT, @@ -528,6 +540,7 @@ class CRM_Wci_DAO_Widget extends CRM_Core_DAO 'hide_title' => 'hide_title', 'hide_border' => 'hide_border', 'hide_pbcap' => 'hide_pbcap', + 'show_pb_perc' => 'show_pb_perc', 'custom_template' => 'custom_template', ); } diff --git a/CRM/Wci/Form/CreateWidget.php b/CRM/Wci/Form/CreateWidget.php index 7d8f544..3acfed0 100644 --- a/CRM/Wci/Form/CreateWidget.php +++ b/CRM/Wci/Form/CreateWidget.php @@ -97,6 +97,7 @@ class CRM_Wci_Form_CreateWidget extends CRM_Core_Form { $defaults = array(); if (!isset($this->_id)) { $defaults['size_variant'] = 'normal'; + $defaults['show_pb_perc'] = 1; foreach ($this->_colorFields as $name => $val) { $defaults[$name] = $val[3]; } @@ -112,6 +113,13 @@ class CRM_Wci_Form_CreateWidget extends CRM_Core_Form { $this->add('select', 'button_link_to', ts('Contribution button'), getContributionPageOptions()); $this->add('text', 'button_title', ts('Contribution button title'))->setSize(45); $this->add('select', 'progress_bar', ts('Progress bar'), $this->getProgressBars()); + + $pbtype = array(); + $pbtype[1] = "Percentage"; + $pbtype[0] = "Amount"; + $this->addRadio('show_pb_perc', ts('Progressbar caption type'), $pbtype, + NULL, " "); + $this->addWysiwyg('description', ts('Description'), ''); $this->add('select', 'email_signup_group_id', ts('Newsletter signup'), $this->getGroupOptions()); $this->add('select', 'size_variant', ts('Size variant'), $this->getSizeOptions()); @@ -206,6 +214,8 @@ where w.id=" . $this->_id;*/ 'hide_border' => $wid_page[$dao->id]['hide_border'])); $this->setDefaults(array( 'hide_pbcap' => $wid_page[$dao->id]['hide_pbcap'])); + $this->setDefaults(array( + 'show_pb_perc' => $wid_page[$dao->id]['show_pb_perc'])); $this->setDefaults(array( 'color_btn_newsletter' => $wid_page[$dao->id]['color_btn_newsletter'])); @@ -298,7 +308,8 @@ where w.id=" . $this->_id;*/ 25 => array($values['color_newsletter_text'], 'String'), 26 => array($values['style_rules'], 'String'), 27 => array($override, 'Integer'), - 28 => array($values['custom_template'], 'String'), ); + 28 => array($values['custom_template'], 'String'), + 29 => array($values['show_pb_perc'], 'Integer'),); if (isset($this->_id)) { $sql = "UPDATE civicrm_wci_widget SET title = %1, logo_image =%2, @@ -311,9 +322,9 @@ where w.id=" . $this->_id;*/ hide_border = %20, hide_pbcap = %21, color_btn_newsletter = %22, color_btn_newsletter_bg = %23, newsletter_text = %24, color_newsletter_text = %25, style_rules = %26, override = %27, - custom_template = %28 where id = %29"; + custom_template = %28, show_pb_perc = %29 where id = %30"; - $params += array(29 => array($this->_id, 'Integer'),); + $params += array(30 => array($this->_id, 'Integer'),); } else { $sql = "INSERT INTO civicrm_wci_widget (title, logo_image, image, @@ -322,9 +333,9 @@ where w.id=" . $this->_id;*/ color_progress_bar, color_progress_bar_bg, color_widget_bg, color_description, color_border, color_button, color_button_bg, hide_title, hide_border, hide_pbcap, color_btn_newsletter, color_btn_newsletter_bg, newsletter_text, - color_newsletter_text, style_rules, override, custom_template) + color_newsletter_text, style_rules, override, custom_template, show_pb_perc) VALUES (%1, %2, %3, %4, %5, %6, %7, %8, %9, %10, %11, %12, %13, - %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28)"; + %14, %15, %16, %17, %18, %19, %20, %21, %22, %23, %24, %25, %26, %27, %28, %29)"; } $errorScope = CRM_Core_TemporaryErrorScope::useException(); diff --git a/sql/install.sql b/sql/install.sql index b787b69..d6c0cdc 100644 --- a/sql/install.sql +++ b/sql/install.sql @@ -45,6 +45,7 @@ CREATE TABLE IF NOT EXISTS civicrm_wci_widget ( hide_title tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Hide title, if 1.', hide_border tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Hide widget border, if 1.', hide_pbcap tinyint(4) NOT NULL DEFAULT '0' COMMENT 'Hide pb caption, if 1.', + show_pb_perc tinyint(4) NOT NULL DEFAULT '1' COMMENT 'show pb in %(1) or amt(0)', color_btn_newsletter varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Newsletter Button text color', color_btn_newsletter_bg varchar(10) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Newsletter Button color', newsletter_text varchar(64) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Newsletter text', diff --git a/templates/CRM/Wci/Page/wciwidget.tpl b/templates/CRM/Wci/Page/wciwidget.tpl index 28a66c0..a72c2ed 100644 --- a/templates/CRM/Wci/Page/wciwidget.tpl +++ b/templates/CRM/Wci/Page/wciwidget.tpl @@ -210,7 +210,11 @@
${$wciform.goal_amount}
${$wciform.starting_amount}
-
{$wciform.pb_percentage}%
+ {if (true == $wciform.show_pb_perc)} +
{$wciform.pb_caption}%
+ {else} +
${$wciform.pb_caption}
+ {/if}
{/if}
-- 2.25.1