Version Notes
===== 1.1.0 =====
* Removed jQuery because I have replaced the counter plugin ( https://github.com/bfintal/Counter-Up ) with ( https://inorganik.github.io/countUp.js ) that allows you to count up and down without a JavaScript framework.
* Removed ( http://imakewebthings.com/waypoints ). Please add it to your theme manually.
* Added new parameter decimals and duration.
* Added default counter options in System > Forkel Counter > General
* Added new parameter options that allows you to set different ( https://inorganik.github.io/countUp.js ) settings for each counter.
Download this release
Release Info
| Developer | Tobias Forkel |
| Extension | forkel_counter |
| Version | 1.1.0 |
| Comparing to | |
| See all releases | |
Version 1.1.0
- app/code/community/Forkel/Counter/Block/Base.php +91 -0
- app/code/community/Forkel/Counter/Block/Frontend/Counter.php +142 -0
- app/code/community/Forkel/Counter/Helper/Data.php +17 -0
- app/code/community/Forkel/Counter/Model/Observer.php +21 -0
- app/code/community/Forkel/Counter/etc/adminhtml.xml +35 -0
- app/code/community/Forkel/Counter/etc/config.xml +64 -0
- app/code/community/Forkel/Counter/etc/system.xml +129 -0
- app/design/frontend/base/default/layout/forkel/counter.xml +70 -0
- app/design/frontend/base/default/template/forkel/counter/counter.phtml +36 -0
- app/etc/modules/Forkel_Counter.xml +9 -0
- js/community/forkel/counter/countUp.min.js +2 -0
- js/community/forkel/counter/init.min.js +2 -0
- package.xml +73 -0
- skin/frontend/base/default/css/forkel/counter/counter.min.css +19 -0
app/code/community/Forkel/Counter/Block/Base.php
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Forkel Counter
|
| 4 |
+
*
|
| 5 |
+
* @category Forkel
|
| 6 |
+
* @package Forkel_Counter
|
| 7 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
|
| 11 |
+
class Forkel_Counter_Block_Base extends Mage_Core_Block_Template
|
| 12 |
+
{
|
| 13 |
+
/**
|
| 14 |
+
* Array with filter options
|
| 15 |
+
* @var array
|
| 16 |
+
*/
|
| 17 |
+
protected $_filter = [];
|
| 18 |
+
|
| 19 |
+
/**
|
| 20 |
+
* Get the numeric for the counter
|
| 21 |
+
* or explode the string with all options, like "collection:catalog/product;from:-14days;to:yesterday".
|
| 22 |
+
*
|
| 23 |
+
* @param string $key Access key from array
|
| 24 |
+
* @return mixed
|
| 25 |
+
*/
|
| 26 |
+
protected function getFilter($key)
|
| 27 |
+
{
|
| 28 |
+
$to = trim($this->getData('to'));
|
| 29 |
+
|
| 30 |
+
if (strpos($to, ':'))
|
| 31 |
+
{
|
| 32 |
+
$to = explode(',', $to);
|
| 33 |
+
|
| 34 |
+
foreach ($to as $value)
|
| 35 |
+
{
|
| 36 |
+
$filter = explode(':', $value);
|
| 37 |
+
$this->_filter[$filter[0]] = trim($filter[1]);
|
| 38 |
+
}
|
| 39 |
+
}
|
| 40 |
+
|
| 41 |
+
return (array_key_exists($key, $this->_filter) ? $this->_filter[$key] : false);
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
+
/**
|
| 45 |
+
* Return the name of a collection.
|
| 46 |
+
*
|
| 47 |
+
* @return mixed
|
| 48 |
+
*/
|
| 49 |
+
public function getCollectionName()
|
| 50 |
+
{
|
| 51 |
+
$name = $this->getFilter('collection');
|
| 52 |
+
|
| 53 |
+
$collection = array('sales/order', 'catalog/product', 'customer/customer', 'customer/session');
|
| 54 |
+
|
| 55 |
+
return (in_array($name, $collection) ? $name : false);
|
| 56 |
+
}
|
| 57 |
+
|
| 58 |
+
/**
|
| 59 |
+
* Return an condition array, depending on the collection.
|
| 60 |
+
*
|
| 61 |
+
* @return mixed
|
| 62 |
+
*/
|
| 63 |
+
public function getFieldToFilter()
|
| 64 |
+
{
|
| 65 |
+
$name = $this->getFilter('collection');
|
| 66 |
+
|
| 67 |
+
$settings = [
|
| 68 |
+
'sales/order' => [
|
| 69 |
+
'field' => 'created_at',
|
| 70 |
+
],
|
| 71 |
+
'catalog/product' => [
|
| 72 |
+
'field' => 'created_at',
|
| 73 |
+
],
|
| 74 |
+
'customer/customer' => [
|
| 75 |
+
'field' => 'created_at',
|
| 76 |
+
],
|
| 77 |
+
'customer/session' => [
|
| 78 |
+
'field' => 'login_at',
|
| 79 |
+
]
|
| 80 |
+
];
|
| 81 |
+
|
| 82 |
+
$from = ($this->getFilter('from') ? $this->getFilter('from') : Forkel_Counter_Helper_Data::COLLECTION_FILTER_DATETIME_FROM);
|
| 83 |
+
$to = ($this->getFilter('to') ? $this->getFilter('to') : Forkel_Counter_Helper_Data::COLLECTION_FILTER_DATETIME_TO);
|
| 84 |
+
|
| 85 |
+
$condition = ['from' => date('Y-m-d H:i:s', strtotime($from)), 'to' => date('Y-m-d H:i:s', strtotime($to))];
|
| 86 |
+
|
| 87 |
+
$settings[$name]['condition'] = $condition;
|
| 88 |
+
|
| 89 |
+
return (array_key_exists($name, $settings) ? $settings[$name] : false);
|
| 90 |
+
}
|
| 91 |
+
}
|
app/code/community/Forkel/Counter/Block/Frontend/Counter.php
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Forkel Counter
|
| 4 |
+
*
|
| 5 |
+
* @category Forkel
|
| 6 |
+
* @package Forkel_Counter
|
| 7 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
|
| 11 |
+
class Forkel_Counter_Block_Frontend_Counter extends Forkel_Counter_Block_Base
|
| 12 |
+
{
|
| 13 |
+
protected function _construct()
|
| 14 |
+
{
|
| 15 |
+
$this->setTemplate(Forkel_Counter_Helper_Data::TEMPLATE_BLOCK_COUNTER);
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
/**
|
| 19 |
+
* Merge array and override values with the same keys
|
| 20 |
+
*
|
| 21 |
+
* @param array Array with original values
|
| 22 |
+
* @param array Array with values
|
| 23 |
+
*
|
| 24 |
+
* @return array Numeric
|
| 25 |
+
*/
|
| 26 |
+
public function mergeArray($array, $merge)
|
| 27 |
+
{
|
| 28 |
+
|
| 29 |
+
// Return original array if there is nothing to merge
|
| 30 |
+
if (!is_array($merge))
|
| 31 |
+
{
|
| 32 |
+
|
| 33 |
+
return $array;
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
// Override values of the original array
|
| 37 |
+
foreach($merge as $key => $value)
|
| 38 |
+
{
|
| 39 |
+
$array[$key] = $value;
|
| 40 |
+
}
|
| 41 |
+
|
| 42 |
+
return $array;
|
| 43 |
+
}
|
| 44 |
+
|
| 45 |
+
/**
|
| 46 |
+
* Return the number from where the counter should start.
|
| 47 |
+
*
|
| 48 |
+
* @return number Numeric
|
| 49 |
+
*/
|
| 50 |
+
public function getTo()
|
| 51 |
+
{
|
| 52 |
+
if ($name = $this->getCollectionName())
|
| 53 |
+
{
|
| 54 |
+
$collection = Mage::getModel($name)->getCollection();
|
| 55 |
+
|
| 56 |
+
$filter = $this->getFieldToFilter();
|
| 57 |
+
$collection->addFieldToFilter($filter['field'], $filter['condition']);
|
| 58 |
+
|
| 59 |
+
return $collection->getSize();
|
| 60 |
+
}
|
| 61 |
+
|
| 62 |
+
return str_replace(array(',', '.'), array('',''), $this->getData('to'));
|
| 63 |
+
}
|
| 64 |
+
|
| 65 |
+
/**
|
| 66 |
+
* Define the number where the counter should starting from.
|
| 67 |
+
*
|
| 68 |
+
* @return number Return a number or 0
|
| 69 |
+
*/
|
| 70 |
+
public function getFrom()
|
| 71 |
+
{
|
| 72 |
+
return ($this->getData('from')) ? $this->getData('from') : 0;
|
| 73 |
+
}
|
| 74 |
+
|
| 75 |
+
/**
|
| 76 |
+
* Display icon before the counter. Using Fonts Awesome.
|
| 77 |
+
*
|
| 78 |
+
* @return mixed String|Boolean
|
| 79 |
+
*/
|
| 80 |
+
public function getIcon()
|
| 81 |
+
{
|
| 82 |
+
|
| 83 |
+
return ($this->getData('icon')) ? $this->getData('icon') : false;
|
| 84 |
+
}
|
| 85 |
+
|
| 86 |
+
/**
|
| 87 |
+
* Display any kind of prefix in text format.
|
| 88 |
+
*
|
| 89 |
+
* @return mixed String|Boolean
|
| 90 |
+
*/
|
| 91 |
+
public function getPrefix()
|
| 92 |
+
{
|
| 93 |
+
|
| 94 |
+
return ($this->getData('prefix')) ? $this->getData('prefix') : false;
|
| 95 |
+
}
|
| 96 |
+
|
| 97 |
+
/**
|
| 98 |
+
* Display any kind of suffix in text format.
|
| 99 |
+
*
|
| 100 |
+
* @return mixed String|Boolean
|
| 101 |
+
*/
|
| 102 |
+
public function getSuffix()
|
| 103 |
+
{
|
| 104 |
+
|
| 105 |
+
return ($this->getData('suffix')) ? $this->getData('suffix') : false;
|
| 106 |
+
}
|
| 107 |
+
|
| 108 |
+
/**
|
| 109 |
+
* Get how many decimals should display after counter
|
| 110 |
+
*
|
| 111 |
+
* @return string
|
| 112 |
+
*/
|
| 113 |
+
public function getDecimals()
|
| 114 |
+
{
|
| 115 |
+
|
| 116 |
+
return ($this->getData('decimals')) ? $this->getData('decimals') : 0;
|
| 117 |
+
}
|
| 118 |
+
|
| 119 |
+
/**
|
| 120 |
+
* Get how long the counter should run
|
| 121 |
+
*
|
| 122 |
+
* @return string
|
| 123 |
+
*/
|
| 124 |
+
public function getDuration()
|
| 125 |
+
{
|
| 126 |
+
|
| 127 |
+
return ($this->getData('duration')) ? $this->getData('duration') : 0;
|
| 128 |
+
}
|
| 129 |
+
|
| 130 |
+
/**
|
| 131 |
+
* Return options for countUp plugin
|
| 132 |
+
*
|
| 133 |
+
* @return string
|
| 134 |
+
*/
|
| 135 |
+
public function getOptions()
|
| 136 |
+
{
|
| 137 |
+
$defaults = Mage::getStoreConfig('forkel_counter/general/options');
|
| 138 |
+
|
| 139 |
+
return json_encode($this->mergeArray(json_decode($defaults, true), json_decode($this->getData('options'), true)));
|
| 140 |
+
}
|
| 141 |
+
|
| 142 |
+
}
|
app/code/community/Forkel/Counter/Helper/Data.php
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Maintenance Counter
|
| 4 |
+
*
|
| 5 |
+
* @category Forkel
|
| 6 |
+
* @package Forkel_Counter
|
| 7 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
|
| 11 |
+
class Forkel_Counter_Helper_Data extends Mage_Core_Helper_Abstract
|
| 12 |
+
{
|
| 13 |
+
const MODULE_NAME = 'forkel_counter';
|
| 14 |
+
const TEMPLATE_BLOCK_COUNTER = 'forkel/counter/counter.phtml';
|
| 15 |
+
const COLLECTION_FILTER_DATETIME_FROM = '01/01/1970';
|
| 16 |
+
const COLLECTION_FILTER_DATETIME_TO = 'now';
|
| 17 |
+
}
|
app/code/community/Forkel/Counter/Model/Observer.php
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Maintenance Counter
|
| 4 |
+
*
|
| 5 |
+
* @category Forkel
|
| 6 |
+
* @package Forkel_Counter
|
| 7 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
|
| 11 |
+
class Forkel_Counter_Model_Observer {
|
| 12 |
+
|
| 13 |
+
public function layoutLoadBefore(Varien_Event_Observer $observer)
|
| 14 |
+
{
|
| 15 |
+
$layout = $observer->getEvent()->getLayout();
|
| 16 |
+
|
| 17 |
+
$layout->getUpdate()->addHandle('forkel_counter_js');
|
| 18 |
+
$layout->getUpdate()->addHandle('forkel_counter_css');
|
| 19 |
+
$layout->getUpdate()->addHandle('forkel_counter');
|
| 20 |
+
}
|
| 21 |
+
}
|
app/code/community/Forkel/Counter/etc/adminhtml.xml
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Forkel Counter
|
| 5 |
+
*
|
| 6 |
+
* @category Forkel
|
| 7 |
+
* @package Forkel_Counter
|
| 8 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 9 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 10 |
+
*/
|
| 11 |
+
-->
|
| 12 |
+
|
| 13 |
+
<config>
|
| 14 |
+
<acl>
|
| 15 |
+
<resources>
|
| 16 |
+
<admin>
|
| 17 |
+
<children>
|
| 18 |
+
|
| 19 |
+
<system>
|
| 20 |
+
<children>
|
| 21 |
+
<config>
|
| 22 |
+
<children>
|
| 23 |
+
<forkel_counter>
|
| 24 |
+
<title>Forkel Counter</title>
|
| 25 |
+
</forkel_counter>
|
| 26 |
+
</children>
|
| 27 |
+
</config>
|
| 28 |
+
</children>
|
| 29 |
+
</system>
|
| 30 |
+
|
| 31 |
+
</children>
|
| 32 |
+
</admin>
|
| 33 |
+
</resources>
|
| 34 |
+
</acl>
|
| 35 |
+
</config>
|
app/code/community/Forkel/Counter/etc/config.xml
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Forkel Counter
|
| 5 |
+
*
|
| 6 |
+
* @category Forkel
|
| 7 |
+
* @package Forkel_Counter
|
| 8 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 9 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 10 |
+
*/
|
| 11 |
+
-->
|
| 12 |
+
|
| 13 |
+
<config>
|
| 14 |
+
<modules>
|
| 15 |
+
<Forkel_Counter>
|
| 16 |
+
<version>1.1.0</version>
|
| 17 |
+
</Forkel_Counter>
|
| 18 |
+
</modules>
|
| 19 |
+
<global>
|
| 20 |
+
<blocks>
|
| 21 |
+
<forkel_counter>
|
| 22 |
+
<class>Forkel_Counter_Block</class>
|
| 23 |
+
</forkel_counter>
|
| 24 |
+
</blocks>
|
| 25 |
+
<helpers>
|
| 26 |
+
<forkel_counter>
|
| 27 |
+
<class>Forkel_Counter_Helper</class>
|
| 28 |
+
</forkel_counter>
|
| 29 |
+
</helpers>
|
| 30 |
+
</global>
|
| 31 |
+
<frontend>
|
| 32 |
+
<events>
|
| 33 |
+
<controller_action_layout_load_before>
|
| 34 |
+
<observers>
|
| 35 |
+
<forkel_counter_layout_load_before>
|
| 36 |
+
<class>Forkel_Counter_Model_Observer</class>
|
| 37 |
+
<method>layoutLoadBefore</method>
|
| 38 |
+
</forkel_counter_layout_load_before>
|
| 39 |
+
</observers>
|
| 40 |
+
</controller_action_layout_load_before>
|
| 41 |
+
</events>
|
| 42 |
+
<layout>
|
| 43 |
+
<updates>
|
| 44 |
+
<forkel_counter>
|
| 45 |
+
<file>forkel/counter.xml</file>
|
| 46 |
+
</forkel_counter>
|
| 47 |
+
</updates>
|
| 48 |
+
</layout>
|
| 49 |
+
</frontend>
|
| 50 |
+
<default>
|
| 51 |
+
<forkel_counter>
|
| 52 |
+
<general>
|
| 53 |
+
<options>{ "separator" : ",", "decimal" : ".", "useEasing" : true, "useGrouping" : true }</options>
|
| 54 |
+
</general>
|
| 55 |
+
<css>
|
| 56 |
+
<default>1</default>
|
| 57 |
+
<font_awesome>1</font_awesome>
|
| 58 |
+
</css>
|
| 59 |
+
<js>
|
| 60 |
+
<default>1</default>
|
| 61 |
+
</js>
|
| 62 |
+
</forkel_counter>
|
| 63 |
+
</default>
|
| 64 |
+
</config>
|
app/code/community/Forkel/Counter/etc/system.xml
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Forkel Counter
|
| 5 |
+
*
|
| 6 |
+
* @category Forkel
|
| 7 |
+
* @package Forkel_Counter
|
| 8 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 9 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 10 |
+
*/
|
| 11 |
+
-->
|
| 12 |
+
|
| 13 |
+
<config>
|
| 14 |
+
<tabs>
|
| 15 |
+
<forkel_counter translate="label" module="forkel_counter">
|
| 16 |
+
<label>Forkel Counter</label>
|
| 17 |
+
<sort_order>9000</sort_order>
|
| 18 |
+
</forkel_counter>
|
| 19 |
+
</tabs>
|
| 20 |
+
<sections>
|
| 21 |
+
<forkel_counter translate="label" module="forkel_counter">
|
| 22 |
+
<label>Forkel Counter</label>
|
| 23 |
+
<tab>general</tab>
|
| 24 |
+
<frontend_type>text</frontend_type>
|
| 25 |
+
<sort_order>100</sort_order>
|
| 26 |
+
<show_in_default>1</show_in_default>
|
| 27 |
+
<show_in_website>1</show_in_website>
|
| 28 |
+
<show_in_store>1</show_in_store>
|
| 29 |
+
<groups>
|
| 30 |
+
|
| 31 |
+
<general translate="label">
|
| 32 |
+
<label>General</label>
|
| 33 |
+
<frontend_type>select</frontend_type>
|
| 34 |
+
<sort_order>50</sort_order>
|
| 35 |
+
<show_in_default>1</show_in_default>
|
| 36 |
+
<show_in_website>1</show_in_website>
|
| 37 |
+
<show_in_store>1</show_in_store>
|
| 38 |
+
<fields>
|
| 39 |
+
|
| 40 |
+
<options translate="label">
|
| 41 |
+
<label>Options</label>
|
| 42 |
+
<frontend_type>text</frontend_type>
|
| 43 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 44 |
+
<sort_order>10</sort_order>
|
| 45 |
+
<show_in_default>1</show_in_default>
|
| 46 |
+
<show_in_website>1</show_in_website>
|
| 47 |
+
<show_in_store>1</show_in_store>
|
| 48 |
+
<comment><![CDATA[
|
| 49 |
+
<p>
|
| 50 |
+
<div>Set default options for the <a href="https://inorganik.github.io/countUp.js/" target="_blank">countUp</a> plugin.</div>
|
| 51 |
+
</p>
|
| 52 |
+
]]></comment>
|
| 53 |
+
</options>
|
| 54 |
+
|
| 55 |
+
</fields>
|
| 56 |
+
</general>
|
| 57 |
+
|
| 58 |
+
<css translate="label">
|
| 59 |
+
<label>CSS</label>
|
| 60 |
+
<frontend_type>select</frontend_type>
|
| 61 |
+
<sort_order>100</sort_order>
|
| 62 |
+
<show_in_default>1</show_in_default>
|
| 63 |
+
<show_in_website>1</show_in_website>
|
| 64 |
+
<show_in_store>1</show_in_store>
|
| 65 |
+
<fields>
|
| 66 |
+
|
| 67 |
+
<default translate="label">
|
| 68 |
+
<label>Default</label>
|
| 69 |
+
<frontend_type>select</frontend_type>
|
| 70 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 71 |
+
<sort_order>10</sort_order>
|
| 72 |
+
<show_in_default>1</show_in_default>
|
| 73 |
+
<show_in_website>1</show_in_website>
|
| 74 |
+
<show_in_store>1</show_in_store>
|
| 75 |
+
<comment><![CDATA[
|
| 76 |
+
<p>
|
| 77 |
+
<div>Load CSS <i>css/forkel/counter/counter.min.css</i> in front-end.</div>
|
| 78 |
+
</p>
|
| 79 |
+
]]></comment>
|
| 80 |
+
</default>
|
| 81 |
+
|
| 82 |
+
<font_awesome translate="label">
|
| 83 |
+
<label>Font Awesome</label>
|
| 84 |
+
<frontend_type>select</frontend_type>
|
| 85 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 86 |
+
<sort_order>20</sort_order>
|
| 87 |
+
<show_in_default>1</show_in_default>
|
| 88 |
+
<show_in_website>1</show_in_website>
|
| 89 |
+
<show_in_store>1</show_in_store>
|
| 90 |
+
<comment><![CDATA[
|
| 91 |
+
<p>
|
| 92 |
+
<div>Load <a href="https://fortawesome.github.io/Font-Awesome/" target="_blank">Font Awesome</a> from CDN in front-end. Disable if it's already loaded in your theme.</div>
|
| 93 |
+
</p>
|
| 94 |
+
]]></comment>
|
| 95 |
+
</font_awesome>
|
| 96 |
+
|
| 97 |
+
</fields>
|
| 98 |
+
</css>
|
| 99 |
+
|
| 100 |
+
<js translate="label">
|
| 101 |
+
<label>JavaScript</label>
|
| 102 |
+
<frontend_type>text</frontend_type>
|
| 103 |
+
<sort_order>200</sort_order>
|
| 104 |
+
<show_in_default>1</show_in_default>
|
| 105 |
+
<show_in_website>1</show_in_website>
|
| 106 |
+
<show_in_store>1</show_in_store>
|
| 107 |
+
<fields>
|
| 108 |
+
|
| 109 |
+
<default translate="label">
|
| 110 |
+
<label>Default</label>
|
| 111 |
+
<frontend_type>select</frontend_type>
|
| 112 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
| 113 |
+
<sort_order>10</sort_order>
|
| 114 |
+
<show_in_default>1</show_in_default>
|
| 115 |
+
<show_in_website>1</show_in_website>
|
| 116 |
+
<show_in_store>1</show_in_store>
|
| 117 |
+
<comment><![CDATA[
|
| 118 |
+
<p>
|
| 119 |
+
<div>Load JavaScript <i>js/community/forkel/counter/init.min.js</i> and <i>js/community/forkel/counter/countUp.min.js</i> in front-end.</div>
|
| 120 |
+
</p>
|
| 121 |
+
]]></comment>
|
| 122 |
+
</default>
|
| 123 |
+
|
| 124 |
+
</fields>
|
| 125 |
+
</js>
|
| 126 |
+
</groups>
|
| 127 |
+
</forkel_counter>
|
| 128 |
+
</sections>
|
| 129 |
+
</config>
|
app/design/frontend/base/default/layout/forkel/counter.xml
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<!--
|
| 3 |
+
/**
|
| 4 |
+
* Forkel Counter
|
| 5 |
+
*
|
| 6 |
+
* @category Forkel
|
| 7 |
+
* @package Forkel_Counter
|
| 8 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 9 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 10 |
+
*/
|
| 11 |
+
-->
|
| 12 |
+
|
| 13 |
+
<layout>
|
| 14 |
+
|
| 15 |
+
<forkel_counter_css>
|
| 16 |
+
<reference name="head">
|
| 17 |
+
<action method="addCss" ifconfig="forkel_counter/css/default">
|
| 18 |
+
<stylesheet>css/forkel/counter/counter.min.css</stylesheet>
|
| 19 |
+
</action>
|
| 20 |
+
<action method="addLinkRel" ifconfig="forkel_counter/css/font_awesome">
|
| 21 |
+
<rel>stylesheet</rel>
|
| 22 |
+
<href>https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css</href>
|
| 23 |
+
</action>
|
| 24 |
+
</reference>
|
| 25 |
+
</forkel_counter_css>
|
| 26 |
+
|
| 27 |
+
<forkel_counter_js>
|
| 28 |
+
<reference name="head" ifconfig="forkel_counter/css/font_awesome">
|
| 29 |
+
<action method="addJs"><script>community/forkel/counter/countUp.min.js</script></action>
|
| 30 |
+
</reference>
|
| 31 |
+
<reference name="head" ifconfig="forkel_counter/css/font_awesome">
|
| 32 |
+
<action method="addJs"><script>community/forkel/counter/init.min.js</script></action>
|
| 33 |
+
</reference>
|
| 34 |
+
</forkel_counter_js>
|
| 35 |
+
|
| 36 |
+
<forkel_counter>
|
| 37 |
+
<reference name="right">
|
| 38 |
+
<block type="forkel_counter/frontend_counter" name="forkel_counter_frontend_counter" after="catalog.compare.sidebar">
|
| 39 |
+
<action method="setData">
|
| 40 |
+
<name>className</name><value>forkel_class</value>
|
| 41 |
+
</action>
|
| 42 |
+
<action method="setData">
|
| 43 |
+
<name>icon</name><value>fa-umbrella</value>
|
| 44 |
+
</action>
|
| 45 |
+
<action method="setData">
|
| 46 |
+
<name>prefix</name><value>$</value>
|
| 47 |
+
</action>
|
| 48 |
+
<action method="setData">
|
| 49 |
+
<name>suffix</name><value>per month</value>
|
| 50 |
+
</action>
|
| 51 |
+
<action method="setData">
|
| 52 |
+
<name>from</name><value>0</value>
|
| 53 |
+
</action>
|
| 54 |
+
<action method="setData">
|
| 55 |
+
<name>to</name><value>1999</value>
|
| 56 |
+
</action>
|
| 57 |
+
<action method="setData">
|
| 58 |
+
<name>decimals</name><value>0</value>
|
| 59 |
+
</action>
|
| 60 |
+
<action method="setData">
|
| 61 |
+
<name>duration</name><value>5</value>
|
| 62 |
+
</action>
|
| 63 |
+
<action method="setData">
|
| 64 |
+
<name>options</name><value>{ "separator" : ",", "decimal" : ".", "useEasing" : true, "useGrouping" : true }</value>
|
| 65 |
+
</action>
|
| 66 |
+
</block>
|
| 67 |
+
</reference>
|
| 68 |
+
</forkel_counter>
|
| 69 |
+
|
| 70 |
+
</layout>
|
app/design/frontend/base/default/template/forkel/counter/counter.phtml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Forkel Counter
|
| 4 |
+
*
|
| 5 |
+
* @category Forkel
|
| 6 |
+
* @package Forkel_Counter
|
| 7 |
+
* @copyright Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de)
|
| 8 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
| 9 |
+
*/
|
| 10 |
+
?>
|
| 11 |
+
|
| 12 |
+
<span class="forkel_counter <?php echo ($className = $this->getData('className')) ? $className : ''; ?>">
|
| 13 |
+
|
| 14 |
+
<?php if ($icon = $this->getIcon()): ?>
|
| 15 |
+
<span class="fa <?php echo $icon; ?>"></span>
|
| 16 |
+
<?php endif; ?>
|
| 17 |
+
|
| 18 |
+
<?php if ($prefix = $this->getPrefix()): ?>
|
| 19 |
+
<span class="prefix"><?php echo $prefix; ?></span>
|
| 20 |
+
<?php endif; ?>
|
| 21 |
+
|
| 22 |
+
<?php if ($to = $this->getTo()): ?>
|
| 23 |
+
<span class="counter" data-from="<?php echo $this->getFrom(); ?>" data-to="<?php echo $to; ?>" data-decimals="<?php echo $this->getDecimals(); ?>" data-duration="<?php echo $this->getDuration(); ?>" data-options='<?php echo $this->getOptions(); ?>'>0</span>
|
| 24 |
+
<?php endif; ?>
|
| 25 |
+
|
| 26 |
+
<?php if ($suffix = $this->getSuffix()): ?>
|
| 27 |
+
<span class="suffix"><?php echo $suffix; ?></span>
|
| 28 |
+
<?php endif; ?>
|
| 29 |
+
|
| 30 |
+
</span>
|
| 31 |
+
|
| 32 |
+
<span class="forkel_counter_alert">
|
| 33 |
+
<span class="alert warning">
|
| 34 |
+
<?php echo $this->__('Something is wrong here. Probably countUp.min.js is not loaded or has a conflict with another library.'); ?>
|
| 35 |
+
</span>
|
| 36 |
+
</span>
|
app/etc/modules/Forkel_Counter.xml
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<config>
|
| 3 |
+
<modules>
|
| 4 |
+
<Forkel_Counter>
|
| 5 |
+
<active>true</active>
|
| 6 |
+
<codePool>community</codePool>
|
| 7 |
+
</Forkel_Counter>
|
| 8 |
+
</modules>
|
| 9 |
+
</config>
|
js/community/forkel/counter/countUp.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
/* countUp.js - (c) 2014-2015 @inorganik - Licensed under the MIT license. */
|
| 2 |
+
var CountUp=function(t,a,n,e,i,r){for(var o=0,s=["webkit","moz","ms","o"],l=0;l<s.length&&!window.requestAnimationFrame;++l)window.requestAnimationFrame=window[s[l]+"RequestAnimationFrame"],window.cancelAnimationFrame=window[s[l]+"CancelAnimationFrame"]||window[s[l]+"CancelRequestAnimationFrame"];window.requestAnimationFrame||(window.requestAnimationFrame=function(t,a){var n=(new Date).getTime(),e=Math.max(0,16-(n-o)),i=window.setTimeout(function(){t(n+e)},e);return o=n+e,i}),window.cancelAnimationFrame||(window.cancelAnimationFrame=function(t){clearTimeout(t)}),this.easeOutExpo=function(t,a,n,e){return n*(-Math.pow(2,-10*t/e)+1)*1024/1023+a},this.options={useEasing:!0,useGrouping:!0,separator:",",decimal:".",postFormatter:null,easingFn:null};for(var m in r)r.hasOwnProperty(m)&&(this.options[m]=r[m]);""===this.options.separator&&(this.options.useGrouping=!1),this.options.prefix||(this.options.prefix=""),this.options.suffix||(this.options.suffix=""),this.options.easingFn=this.options.easingFn?this.options.easingFn:this.easeOutExpo,this.d="string"==typeof t?document.getElementById(t):t,this.startVal=Number(a),this.endVal=Number(n),this.countDown=this.startVal>this.endVal,this.frameVal=this.startVal,this.decimals=Math.max(0,e||0),this.dec=Math.pow(10,this.decimals),this.duration=1e3*Number(i)||2e3;var u=this;this.version=function(){return"1.6.1"},this.printValue=function(t){var a=isNaN(t)?"--":u.formatNumber(t);"INPUT"==u.d.tagName?this.d.value=a:"text"==u.d.tagName||"tspan"==u.d.tagName?this.d.textContent=a:this.d.innerHTML=a},this.count=function(t){u.startTime||(u.startTime=t),u.timestamp=t;var a=t-u.startTime;u.remaining=u.duration-a,u.options.useEasing?u.countDown?u.frameVal=u.startVal-u.options.easingFn.call(u,a,0,u.startVal-u.endVal,u.duration):u.frameVal=u.options.easingFn.call(u,a,u.startVal,u.endVal-u.startVal,u.duration):u.countDown?u.frameVal=u.startVal-(u.startVal-u.endVal)*(a/u.duration):u.frameVal=u.startVal+(u.endVal-u.startVal)*(a/u.duration),u.countDown?u.frameVal=u.frameVal<u.endVal?u.endVal:u.frameVal:u.frameVal=u.frameVal>u.endVal?u.endVal:u.frameVal,u.frameVal=Math.floor(u.frameVal*u.dec)/u.dec,u.printValue(u.frameVal),a<u.duration?u.rAF=requestAnimationFrame(u.count):u.callback&&u.callback()},this.start=function(t){return u.callback=t,u.rAF=requestAnimationFrame(u.count),!1},this.pauseResume=function(){u.paused?(u.paused=!1,delete u.startTime,u.duration=u.remaining,u.startVal=u.frameVal,requestAnimationFrame(u.count)):(u.paused=!0,cancelAnimationFrame(u.rAF))},this.reset=function(){u.paused=!1,delete u.startTime,u.startVal=a,cancelAnimationFrame(u.rAF),u.printValue(u.startVal)},this.update=function(t){cancelAnimationFrame(u.rAF),u.paused=!1,delete u.startTime,u.startVal=u.frameVal,u.endVal=Number(t),u.countDown=u.startVal>u.endVal,u.rAF=requestAnimationFrame(u.count)},this.formatNumber=function(t){t=t.toFixed(u.decimals),t+="";var a,n,e,i;if(a=t.split("."),n=a[0],e=a.length>1?u.options.decimal+a[1]:"",i=/(\d+)(\d{3})/,u.options.useGrouping)for(;i.test(n);)n=n.replace(i,"$1"+u.options.separator+"$2");var r=u.options.prefix+n+e+u.options.suffix;return null!=u.options.postFormatter&&(r=u.options.postFormatter(r)),r},u.printValue(u.startVal)};
|
js/community/forkel/counter/init.min.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
|
|
|
|
| 1 |
+
/* init.min.js - Copyright (c) 2016 Tobias Forkel (http://www.tobiasforkel.de) - http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */
|
| 2 |
+
document.observe("dom:loaded",function(){function t(t){[].forEach.call(document.querySelectorAll(t),function(t){t.style.display="block"})}if("undefined"==typeof CountUp)return void t(".forkel_counter_alert .alert");for(var e=document.querySelectorAll(".counter"),o=0;o<e.length;o++){var r=e[o],a=r.getAttribute("data-from"),n=r.getAttribute("data-to"),u=r.getAttribute("data-decimals"),d=r.getAttribute("data-duration"),l=JSON.parse(r.getAttribute("data-options"));c=new CountUp(r,a,n,u,d,l),c.start()}});
|
package.xml
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
<?xml version="1.0"?>
|
| 2 |
+
<package>
|
| 3 |
+
<name>forkel_counter</name>
|
| 4 |
+
<version>1.1.0</version>
|
| 5 |
+
<stability>stable</stability>
|
| 6 |
+
<license uri="https://opensource.org/licenses/OSL-3.0">Open Software License v. 3.0 (OSL-3.0)</license>
|
| 7 |
+
<channel>community</channel>
|
| 8 |
+
<extends/>
|
| 9 |
+
<summary>A customizable counter that allows you to count up or down from any number.</summary>
|
| 10 |
+
<description><p>Add a customizable counter that allows you to count up or down from any number. With a specific option like <i>collection:catalog/product,from:-30 days,to:now</i> you can get the size of a predefined collection. This module is using the class CountUp that works without a JavaScript framework.</p>
|
| 11 |
+

|
| 12 |
+
<img src="http://www.tobiasforkel.de/public/magento/forkel_counter/version/1.1/screenshots/frontend/frontend_cms.gif" />
|
| 13 |
+
<br />
|
| 14 |
+
<br />
|
| 15 |
+

|
| 16 |
+
<p>A JavaScript fallback will display a warning message in case of issues.</p>
|
| 17 |
+

|
| 18 |
+
<img src="http://www.tobiasforkel.de/public/magento/forkel_counter/version/1.1/screenshots/frontend/frontend_fallback.jpg" />
|
| 19 |
+
<br />
|
| 20 |
+
<br />
|
| 21 |
+

|
| 22 |
+
<img src="http://www.tobiasforkel.de/public/magento/forkel_counter/version/1.1/screenshots/backend/backend_system.jpg" />
|
| 23 |
+
<br />
|
| 24 |
+
<br />
|
| 25 |
+

|
| 26 |
+
<h3>Installation</h3>
|
| 27 |
+
- 1. Pull the code.<br />
|
| 28 |
+
- 2. Copy the code in your document root directory where the /app/ folder is located.<br />
|
| 29 |
+
- 3. Clear all caches and reload your Admin Panel to run the installation process.<br />
|
| 30 |
+
- 4. After installation you should see a new menu item <i>Forkel Counter</i> inside of <i>System &gt; Configuration &gt; General</i>.<br /><br />
|
| 31 |
+

|
| 32 |
+
<h3>Features</h3>
|
| 33 |
+
- Blocks are available for CMS pages and XML layout files.<br />
|
| 34 |
+
- Disable or enable JavaScript and CSS in <i>System &gt; Configuration &gt; General &gt; Forkel Counter</i> to prevent conflicts with your theme.<br />
|
| 35 |
+
- Display a Front Awesome icon.<br />
|
| 36 |
+
- Display a custom prefix like $ or €.<br />
|
| 37 |
+
- Display a custom suffix.<br />
|
| 38 |
+
- Set a number ( -99 or 99 ) from where the counter should start.<br />
|
| 39 |
+
- Set a number ( 290 or 10000 ) where the counter should stop.<br />
|
| 40 |
+
- Set the amount of decimals.<br />
|
| 41 |
+
- Set the counter duration in seconds.<br />
|
| 42 |
+
- Override default options such as <i>{ &quot;separator&quot; : &quot;,&quot;, &quot;decimal&quot; : &quot;.&quot;, &quot;useEasing&quot; : true, &quot;useGrouping&quot; : true }</i><br />
|
| 43 |
+
- Count rows from collections like sales/order or catalog/product in combination with a date filter.<br /><br />
|
| 44 |
+

|
| 45 |
+
<h3>Usage and Examples</h3>
|
| 46 |
+
<p>Please visit the Forkel Counter project on <a href="https://github.com/tobias-forkel/Forkel_Counter#usage">GitHub</a> for further details and examples.</p>
|
| 47 |
+

|
| 48 |
+
<h3>Online Guides</h3>
|
| 49 |
+
<p>- In Progress</p>
|
| 50 |
+

|
| 51 |
+

|
| 52 |
+
<h3>Warranty</h3>
|
| 53 |
+
<p>This module is provided as-is, with no warranty.</p>
|
| 54 |
+

|
| 55 |
+
<h3>Updates</h3>
|
| 56 |
+
<p>All <strong>micro</strong>, <strong>major</strong> and <strong>minor</strong> updates are available for free on <a href="https://github.com/tobias-forkel/Forkel_Counter">GitHub</a> and Magento Connect.
|
| 57 |
+
</p>
|
| 58 |
+

|
| 59 |
+
<h3>Support</h3>
|
| 60 |
+
<p>This module is provided as-is, with no support. If you have technical problems, please open a new issue on <a href="https://github.com/tobias-forkel/Forkel_Counter/issues">GitHub</a> or contact me on Magento Connect or <a href="http://www.tobiasforkel.de">http://www.tobiasforkel.de</a>.</p></description>
|
| 61 |
+
<notes>===== 1.1.0 =====
|
| 62 |
+
* Removed jQuery because I have replaced the counter plugin ( https://github.com/bfintal/Counter-Up ) with ( https://inorganik.github.io/countUp.js ) that allows you to count up and down without a JavaScript framework.
|
| 63 |
+
* Removed ( http://imakewebthings.com/waypoints ). Please add it to your theme manually.
|
| 64 |
+
* Added new parameter decimals and duration.
|
| 65 |
+
* Added default counter options in System > Forkel Counter > General
|
| 66 |
+
* Added new parameter options that allows you to set different ( https://inorganik.github.io/countUp.js ) settings for each counter.</notes>
|
| 67 |
+
<authors><author><name>Tobias Forkel</name><user>tforkel</user><email>magento@tobiasforkel.de</email></author></authors>
|
| 68 |
+
<date>2016-04-02</date>
|
| 69 |
+
<time>16:05:16</time>
|
| 70 |
+
<contents><target name="magecommunity"><dir name="Forkel"><dir name="Counter"><dir name="Block"><file name="Base.php" hash="0fb7db1a9d7a8cc6be259d1539950c0a"/><dir name="Frontend"><file name="Counter.php" hash="286507f4d5e6900c9b41e2e05b189b31"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="57e53875d049d0ea005ca12cf69eb0ac"/><file name="config.xml" hash="6415e6e34b01859c7da247b749c8de55"/><file name="system.xml" hash="45a6182a614112f9a1a4af2335e760e9"/></dir><dir name="Helper"><file name="Data.php" hash="469375d9492dcb6fce5d1160d4555ff6"/></dir><dir name="Model"><file name="Observer.php" hash="5796a0d31338261a8c705e35e2c23a92"/></dir></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><dir name="forkel"><file name="counter.xml" hash="b24deaf69a80e9d151fc7dfb284500e1"/></dir></dir><dir name="template"><dir name="forkel"><dir name="counter"><file name="counter.phtml" hash="dd64c914216a511f9bc909743f7d31b2"/></dir></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Forkel_Counter.xml" hash="36bc38d8ac906af039d0893a080e9dbc"/></dir></target><target name="mage"><dir name="js"><dir name="community"><dir name="forkel"><dir name="counter"><file name="init.min.js" hash="67cb56f84caff4e59c64ecfc27266346"/><file name="countUp.min.js" hash="d6c5a099ba0190b173d13b19a133a7f2"/></dir></dir></dir></dir></target><target name="mageskin"><dir name="frontend"><dir name="base"><dir name="default"><dir name="css"><dir name="forkel"><dir name="counter"><file name="counter.min.css" hash="9754c3e411d6d5ebeca3115be10dd1c5"/></dir></dir></dir></dir></dir></dir></target></contents>
|
| 71 |
+
<compatible/>
|
| 72 |
+
<dependencies><required><php><min>5.4.0</min><max>5.6.16</max></php></required></dependencies>
|
| 73 |
+
</package>
|
skin/frontend/base/default/css/forkel/counter/counter.min.css
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
span.forkel_counter {
|
| 2 |
+
padding: 30px 0;
|
| 3 |
+
font-weight: bold;
|
| 4 |
+
font-size: 38px;
|
| 5 |
+
}
|
| 6 |
+
|
| 7 |
+
span.forkel_counter_alert .alert {
|
| 8 |
+
padding: 15px;
|
| 9 |
+
margin-bottom: 20px;
|
| 10 |
+
border: 1px solid transparent;
|
| 11 |
+
border-radius: 4px;
|
| 12 |
+
display: none;
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
span.forkel_counter_alert .warning {
|
| 16 |
+
color: #8a6d3b;
|
| 17 |
+
background-color: #fcf8e3;
|
| 18 |
+
border-color: #faebcc;
|
| 19 |
+
}
|
