diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..d41a75e --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,9 @@ +change-template: '- $TITLE (#$NUMBER)' +template: | + ## Changelog + + $CHANGES + + ### Contributors + + $CONTRIBUTORS diff --git a/.travis.yml b/.travis.yml index c919443..9ba5f04 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,14 +1,5 @@ language: php -addons: - apt: - packages: - - apache2 - - postfix - - libapache2-mod-fastcgi - - libappindicator1 - - fonts-liberation - cache: directories: - $HOME/.composer/cache @@ -17,39 +8,24 @@ sudo: required dist: trusty php: - - "5.6" - - "7.1" - - "7.2" + - '5.6' + - '7.1' + - '7.2' env: - global: - - SYMFONY_DEPRECATIONS_HELPER=disabled - - SYMFONY_PHPUNIT_VERSION=5.7 - - MODULE_DIR=/tmp/gamification - - MODULE_SCRIPTS_DIR=/tmp/gamification/tools + global: + - SYMFONY_DEPRECATIONS_HELPER=disabled + - SYMFONY_PHPUNIT_VERSION=5.7.27 - matrix: - - PS_VERSION=1.7.4.x - - PS_VERSION=1.7.5.x - - allow_failures: - - php: 7.2 + allow_failures: + - php: 7.2 - fast_finish: true +script: + - composer install + - composer cs-fix-test + - composer test -before_script: - - ./tools/move_module.sh - - $MODULE_SCRIPTS_DIR/get_prestashop.sh - - $MODULE_SCRIPTS_DIR/install_webserver.sh - - $MODULE_SCRIPTS_DIR/start_prestashop.sh - - $MODULE_SCRIPTS_DIR/install_module.sh gamification - -script: - - cd $TRAVIS_BUILD_DIR/modules/gamification - - composer cs-fix-test - - composer test - notifications: - email: + email: on_success: never on_failure: always diff --git a/classes/Advice.php b/classes/Advice.php index 43c5992..a9f10b6 100644 --- a/classes/Advice.php +++ b/classes/Advice.php @@ -27,27 +27,27 @@ class Advice extends ObjectModel { public $id; - + public $id_ps_advice; - + public $id_tab; - + public $validated; public $hide; - + public $selector; - + public $location; - + public $html; - + public $start_day; - + public $stop_day; public $weight; - + /** * @see ObjectModel::$definition */ @@ -69,33 +69,63 @@ class Advice extends ObjectModel 'html' => array('type' => self::TYPE_HTML, 'lang' => true, 'required' => true, 'validate' => 'isString'), ), ); - + public static function getIdByIdPs($id_ps_advice) { $query = new DbQuery(); $query->select('id_advice'); $query->from('advice', 'b'); $query->where('`id_ps_advice` = '.(int)$id_ps_advice); - + return (int)Db::getInstance()->getValue($query); } - public static function getValidatedByIdTab($id_tab, $premium = false, $addons = false) + /** + * @param int $idTab + * @param bool $includePremium [default=false] True to include Premium as well + * @param bool $includeAddons [default=false] True to include Addons as well + * + * @return array[] + * @throws PrestaShopDatabaseException + */ + public static function getValidatedByIdTab($idTab, $includePremium = false, $includeAddons = false) { $query = new DbQuery(); $query->select('a.`id_ps_advice`, a.`selector`, a.`location`, al.`html`, a.`weight`'); $query->from('advice', 'a'); $query->join(' LEFT JOIN `'._DB_PREFIX_.'advice_lang` al ON al.`id_advice` = a.`id_advice` - LEFT JOIN `'._DB_PREFIX_.'tab_advice` at ON at.`id_advice` = a.`id_advice` '); - - $query->where(' - a.`validated` = 1 AND - a.`hide` = 0 AND - al.`id_lang` = '.(int)Context::getContext()->language->id.' AND - at.`id_tab` = '.(int)$id_tab.' AND - ((a.`start_day` = 0 AND a.`stop_day` = 0) OR ('.date('d').' >= a.`start_day` AND '.date('d').' <= a.`stop_day`))'); - + LEFT JOIN `'._DB_PREFIX_.'tab_advice` at ON at.`id_advice` = a.`id_advice` + '); + + $selectorsToExclude = array(); + if (!$includePremium) { + $selectorsToExclude[] = '#dashtrends'; + } + if (!$includeAddons) { + $selectorsToExclude[] = 'addons'; + } + + $selectorsToExcludeSql = ''; + if (!empty($selectorsToExclude)) { + $selectorsToExcludeSql = 'AND a.selector NOT IN("' . implode('","', $selectorsToExclude) . '")'; + } + + $query->where(sprintf( + "a.validated = 1 + AND a.hide = 0 + AND al.id_lang = %d + AND at.id_tab = %d + $selectorsToExcludeSql + AND ( + (a.start_day = 0 AND a.stop_day = 0) + OR (%s BETWEEN a.start_day AND a.stop_day) + )", + (int) Context::getContext()->language->id, + $idTab, + date('d') + )); + $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query); $advices = array(); if (is_array($result)) { @@ -106,28 +136,14 @@ public static function getValidatedByIdTab($id_tab, $premium = false, $addons = 'html' => $res['html'], 'id_ps_advice' => $res['id_ps_advice'], 'weight' => $res['weight'] - ); + ); } } - if (!$premium) { - foreach ($advices as $k => $a) { - if ($a['selector'] == '#dashtrends') { - unset($advices[$k]); - } - } - } - if (!$addons) { - foreach ($advices as $k => $a) { - if ($a['selector'] == 'addons') { - unset($advices[$k]); - } - } - } - + return $advices; } - - public static function getValidatedPremiumByIdTab($id_tab) + + public static function getValidatedPremiumOnlyByIdTab($id_tab) { $advices = self::getValidatedByIdTab($id_tab, true); @@ -136,11 +152,11 @@ public static function getValidatedPremiumByIdTab($id_tab) unset($advices[$k]); } } - + return $advices; } - - public static function getAddonsAdviceByIdTab($id_tab) + + public static function getValidatedAddonsOnlyByIdTab($id_tab) { $advices = self::getValidatedByIdTab($id_tab, false, true); foreach ($advices as $k => $a) { @@ -148,10 +164,10 @@ public static function getAddonsAdviceByIdTab($id_tab) unset($advices[$k]); } } - + return $advices; } - + public static function getIdsAdviceToValidate() { $ids = array(); @@ -166,15 +182,16 @@ public static function getIdsAdviceToValidate() $query->having('count(*) = SUM(c.`validated`)'); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query); - + if (is_array($result)) { foreach ($result as $advice) { $ids[] = $advice['id_advice']; } } + return $ids; } - + public static function getIdsAdviceToUnvalidate() { $ids = array(); @@ -189,12 +206,13 @@ public static function getIdsAdviceToUnvalidate() $query->having('count(*) = SUM(c.`validated`)'); $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query); - + if (is_array($result)) { foreach ($result as $advice) { $ids[] = $advice['id_advice']; } } + return $ids; } } diff --git a/classes/Badge.php b/classes/Badge.php index f993209..b27914c 100644 --- a/classes/Badge.php +++ b/classes/Badge.php @@ -82,6 +82,7 @@ public function validate() { $this->validated = 1; $this->save(); + return true; } @@ -113,6 +114,7 @@ public static function getIdsBadgesToValidate() foreach ($result as $badge) { $ids[] = $badge['id_badge']; } + return $ids; } @@ -123,6 +125,7 @@ public function getNextBadgeId() $query->from('badge', 'b'); $query->where('b.id_group = \''.pSQL($this->id_group).'\' AND b.validated = 0'); $query->orderBy('b.group_position'); + return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query); } } diff --git a/classes/Condition.php b/classes/Condition.php index 29a048b..2c3dd07 100644 --- a/classes/Condition.php +++ b/classes/Condition.php @@ -213,7 +213,6 @@ public static function getIdsDailyCalculation() $ids[] = $r['id_condition']; } - return array_unique($ids); } @@ -349,6 +348,7 @@ protected function makeCalculation($operator, $arg1, $arg2) break; break; } + return (bool)$result; } } diff --git a/classes/GamificationTools.php b/classes/GamificationTools.php index 2e44dbb..a97d84d 100644 --- a/classes/GamificationTools.php +++ b/classes/GamificationTools.php @@ -46,8 +46,10 @@ public static function parseMetaData($content) /** * Retrieve Json api file, forcing gzip compression to save bandwith. + * * @param string $url * @param bool $withResponseHeaders + * * @return string|bool */ public static function retrieveJsonApiFile($url, $withResponseHeaders = false) @@ -70,7 +72,6 @@ public static function retrieveJsonApiFile($url, $withResponseHeaders = false) curl_close($curl); - return $content; } } diff --git a/composer.json b/composer.json index afaff11..2174955 100644 --- a/composer.json +++ b/composer.json @@ -10,7 +10,8 @@ } ], "require": { - "php": ">=5.6" + "php": ">=5.6", + "ext-json": "*" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.12", @@ -20,6 +21,9 @@ "symfony/debug": "^3.4" }, "config": { + "platform": { + "php": "5.6.0" + }, "preferred-install": "dist" }, "scripts": { diff --git a/composer.lock b/composer.lock index 3ef3599..221c0a9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,135 +4,21 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "a0dc56b1cc83ff300554e7c928ceef2f", - "packages": [ - { - "name": "hamcrest/hamcrest-php", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", - "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", - "shasum": "" - }, - "require": { - "php": "^5.3|^7.0" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" - }, - "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "phpunit/phpunit": "~4.0", - "satooshi/php-coveralls": "^1.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "hamcrest" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD" - ], - "description": "This is the PHP port of Hamcrest Matchers", - "keywords": [ - "test" - ], - "time": "2016-01-20T08:20:44+00:00" - }, - { - "name": "mockery/mockery", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/mockery/mockery.git", - "reference": "100633629bf76d57430b86b7098cd6beb996a35a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/100633629bf76d57430b86b7098cd6beb996a35a", - "reference": "100633629bf76d57430b86b7098cd6beb996a35a", - "shasum": "" - }, - "require": { - "hamcrest/hamcrest-php": "~2.0", - "lib-pcre": ">=7.0", - "php": ">=5.6.0" - }, - "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "Mockery": "library/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" - }, - { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } - ], - "description": "Mockery is a simple yet flexible PHP mock object framework", - "homepage": "https://github.com/mockery/mockery", - "keywords": [ - "BDD", - "TDD", - "library", - "mock", - "mock objects", - "mockery", - "stub", - "test", - "test double", - "testing" - ], - "time": "2018-10-02T21:52:37+00:00" - } - ], + "content-hash": "131b28f9d268824ab29ea416d459c213", + "packages": [], "packages-dev": [ { "name": "composer/semver", - "version": "1.4.2", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573" + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/c7cb9a2095a074d131b65a8a0cd294479d785573", - "reference": "c7cb9a2095a074d131b65a8a0cd294479d785573", + "url": "https://api.github.com/repos/composer/semver/zipball/46d9139568ccb8d9e7cdd4539cab7347568a5e2e", + "reference": "46d9139568ccb8d9e7cdd4539cab7347568a5e2e", "shasum": "" }, "require": { @@ -181,20 +67,20 @@ "validation", "versioning" ], - "time": "2016-08-30T16:08:34+00:00" + "time": "2019-03-19T17:25:45+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.3.0", + "version": "1.3.3", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c" + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/b8e9745fb9b06ea6664d8872c4505fb16df4611c", - "reference": "b8e9745fb9b06ea6664d8872c4505fb16df4611c", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/46867cbf8ca9fb8d60c506895449eb799db1184f", + "reference": "46867cbf8ca9fb8d60c506895449eb799db1184f", "shasum": "" }, "require": { @@ -225,34 +111,34 @@ "Xdebug", "performance" ], - "time": "2018-08-31T19:07:57+00:00" + "time": "2019-05-27T17:52:04+00:00" }, { "name": "doctrine/annotations", - "version": "v1.6.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/doctrine/annotations.git", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", - "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", + "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", "shasum": "" }, "require": { "doctrine/lexer": "1.*", - "php": "^7.1" + "php": "^5.6 || ^7.0" }, "require-dev": { "doctrine/cache": "1.*", - "phpunit/phpunit": "^6.4" + "phpunit/phpunit": "^5.7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -293,36 +179,36 @@ "docblock", "parser" ], - "time": "2017-12-06T07:11:42+00:00" + "time": "2017-02-24T16:22:25+00:00" }, { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.0.5", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", + "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.3,<8.0-DEV" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~2.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -347,25 +233,28 @@ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "doctrine/lexer", - "version": "v1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", + "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", "shasum": "" }, "require": { "php": ">=5.3.2" }, + "require-dev": { + "phpunit/phpunit": "^4.5" + }, "type": "library", "extra": { "branch-alias": { @@ -373,8 +262,8 @@ } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "notification-url": "https://packagist.org/downloads/", @@ -395,26 +284,29 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ + "annotations", + "docblock", "lexer", - "parser" + "parser", + "php" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2019-06-08T11:03:04+00:00" }, { "name": "friendsofphp/php-cs-fixer", - "version": "v2.13.0", + "version": "v2.15.1", "source": { "type": "git", "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", - "reference": "7136aa4e0c5f912e8af82383775460d906168a10" + "reference": "20064511ab796593a3990669eff5f5b535001f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/7136aa4e0c5f912e8af82383775460d906168a10", - "reference": "7136aa4e0c5f912e8af82383775460d906168a10", + "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/20064511ab796593a3990669eff5f5b535001f7c", + "reference": "20064511ab796593a3990669eff5f5b535001f7c", "shasum": "" }, "require": { @@ -423,9 +315,9 @@ "doctrine/annotations": "^1.2", "ext-json": "*", "ext-tokenizer": "*", - "php": "^5.6 || >=7.0 <7.3", + "php": "^5.6 || ^7.0", "php-cs-fixer/diff": "^1.3", - "symfony/console": "^3.2 || ^4.0", + "symfony/console": "^3.4.17 || ^4.1.6", "symfony/event-dispatcher": "^3.0 || ^4.0", "symfony/filesystem": "^3.0 || ^4.0", "symfony/finder": "^3.0 || ^4.0", @@ -435,21 +327,18 @@ "symfony/process": "^3.0 || ^4.0", "symfony/stopwatch": "^3.0 || ^4.0" }, - "conflict": { - "hhvm": "*" - }, "require-dev": { "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", "justinrainbow/json-schema": "^5.0", - "keradus/cli-executor": "^1.1", + "keradus/cli-executor": "^1.2", "mikey179/vfsstream": "^1.6", "php-coveralls/php-coveralls": "^2.1", "php-cs-fixer/accessible-object": "^1.0", - "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.0.1", - "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.0.1", + "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.1", + "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.1", "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1", - "phpunitgoodpractices/traits": "^1.5.1", - "symfony/phpunit-bridge": "^4.0" + "phpunitgoodpractices/traits": "^1.8", + "symfony/phpunit-bridge": "^4.3" }, "suggest": { "ext-mbstring": "For handling non-UTF8 characters in cache signature.", @@ -461,11 +350,6 @@ "php-cs-fixer" ], "type": "application", - "extra": { - "branch-alias": { - "dev-master": "2.13-dev" - } - }, "autoload": { "psr-4": { "PhpCsFixer\\": "src/" @@ -497,32 +381,142 @@ } ], "description": "A tool to automatically fix PHP code style", - "time": "2018-08-23T13:15:44+00:00" + "time": "2019-06-01T10:32:12+00:00" }, { - "name": "myclabs/deep-copy", - "version": "1.8.1", + "name": "hamcrest/hamcrest-php", + "version": "v2.0.0", "source": { "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^5.3|^7.0" }, "replace": { - "myclabs/deep-copy": "self.version" + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2016-01-20T08:20:44+00:00" + }, + { + "name": "mockery/mockery", + "version": "1.2.2", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", + "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "~2.0", + "lib-pcre": ">=7.0", + "php": ">=5.6.0" + }, + "require-dev": { + "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "homepage": "http://davedevelopment.co.uk" + } + ], + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", + "keywords": [ + "BDD", + "TDD", + "library", + "mock", + "mock objects", + "mockery", + "stub", + "test", + "test double", + "testing" + ], + "time": "2019-02-13T09:37:52+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "phpunit/phpunit": "^4.1" }, "type": "library", "autoload": { @@ -545,33 +539,37 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2017-10-19T19:58:43+00:00" }, { "name": "paragonie/random_compat", - "version": "v9.99.99", + "version": "v2.0.18", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" + "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", + "reference": "0a58ef6e3146256cc3dc7cc393927bcc7d1b72db", "shasum": "" }, "require": { - "php": "^7" + "php": ">=5.2.0" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" + "phpunit/phpunit": "4.*|5.*" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -590,7 +588,7 @@ "pseudorandom", "random" ], - "time": "2018-07-02T15:55:56+00:00" + "time": "2019-01-03T20:59:08+00:00" }, { "name": "php-cs-fixer/diff", @@ -699,35 +697,29 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bf329f6c1aadea3299f08ee804682b7c45b326a2", + "reference": "bf329f6c1aadea3299f08ee804682b7c45b326a2", "shasum": "" }, "require": { - "php": "^7.0", + "php": "^5.6 || ^7.0", "phpdocumentor/reflection-common": "^1.0.0", "phpdocumentor/type-resolver": "^0.4.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", - "mockery/mockery": "^1.0", - "phpunit/phpunit": "^6.4" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^4.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.x-dev" - } - }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -746,7 +738,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2017-11-10T14:09:06+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -797,16 +789,16 @@ }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", + "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", "shasum": "" }, "require": { @@ -827,8 +819,8 @@ } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -856,7 +848,7 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2019-06-13T12:50:23+00:00" }, { "name": "phpunit/php-code-coverage", @@ -1060,29 +1052,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "1.4.12", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", + "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": ">=5.3.3" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "~4.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1105,7 +1097,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2017-12-04T08:55:13+00:00" }, { "name": "phpunit/phpunit", @@ -1246,20 +1238,21 @@ "mock", "xunit" ], + "abandoned": true, "time": "2017-06-30T09:13:00+00:00" }, { "name": "psr/log", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", "shasum": "" }, "require": { @@ -1293,7 +1286,7 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1810,36 +1803,40 @@ }, { "name": "symfony/console", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b" + "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/dc7122fe5f6113cfaba3b3de575d31112c9aa60b", - "reference": "dc7122fe5f6113cfaba3b3de575d31112c9aa60b", + "url": "https://api.github.com/repos/symfony/console/zipball/8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6", + "reference": "8e1d1e406dd31727fa70cd5a99cda202e9d6a5c6", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { "symfony/dependency-injection": "<3.4", "symfony/process": "<3.3" }, + "provide": { + "psr/log-implementation": "1.0" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", + "symfony/config": "~3.3|~4.0", "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", "symfony/lock": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0" + "symfony/process": "~3.3|~4.0" }, "suggest": { - "psr/log-implementation": "For using the console logger", + "psr/log": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -1847,7 +1844,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -1874,20 +1871,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-10-03T08:15:46+00:00" + "time": "2019-05-09T08:42:51+00:00" }, { "name": "symfony/debug", - "version": "v3.4.17", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6" + "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/0a612e9dfbd2ccce03eb174365f31ecdca930ff6", - "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6", + "url": "https://api.github.com/repos/symfony/debug/zipball/671fc55bd14800668b1d0a3708c3714940e30a8c", + "reference": "671fc55bd14800668b1d0a3708c3714940e30a8c", "shasum": "" }, "require": { @@ -1930,34 +1927,34 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-10-02T16:33:53+00:00" + "time": "2019-05-18T13:32:47+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e" + "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bfb30c2ad377615a463ebbc875eba64a99f6aa3e", - "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a088aafcefb4eef2520a290ed82e4374092a6dff", + "reference": "a088aafcefb4eef2520a290ed82e4374092a6dff", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<3.3" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0" + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" }, "suggest": { "symfony/dependency-injection": "", @@ -1966,7 +1963,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -1993,30 +1990,30 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-07-26T09:10:45+00:00" + "time": "2019-04-02T08:51:52+00:00" }, { "name": "symfony/filesystem", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "596d12b40624055c300c8b619755b748ca5cf0b5" + "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/596d12b40624055c300c8b619755b748ca5cf0b5", - "reference": "596d12b40624055c300c8b619755b748ca5cf0b5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/acf99758b1df8e9295e6b85aa69f294565c9fedb", + "reference": "acf99758b1df8e9295e6b85aa69f294565c9fedb", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2043,29 +2040,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-10-02T12:40:59+00:00" + "time": "2019-02-04T21:34:32+00:00" }, { "name": "symfony/finder", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "1f17195b44543017a9c9b2d437c670627e96ad06" + "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/1f17195b44543017a9c9b2d437c670627e96ad06", - "reference": "1f17195b44543017a9c9b2d437c670627e96ad06", + "url": "https://api.github.com/repos/symfony/finder/zipball/fa5d962a71f2169dfe1cbae217fa5a2799859f6c", + "reference": "fa5d962a71f2169dfe1cbae217fa5a2799859f6c", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2092,29 +2089,29 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-10-03T08:47:56+00:00" + "time": "2019-05-24T12:25:55+00:00" }, { "name": "symfony/options-resolver", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "40f0e40d37c1c8a762334618dea597d64bbb75ff" + "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/40f0e40d37c1c8a762334618dea597d64bbb75ff", - "reference": "40f0e40d37c1c8a762334618dea597d64bbb75ff", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44", + "reference": "ed3b397f9c07c8ca388b2a1ef744403b4d4ecc44", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2146,20 +2143,20 @@ "configuration", "options" ], - "time": "2018-09-18T12:45:12+00:00" + "time": "2019-04-10T16:00:48+00:00" }, { "name": "symfony/phpunit-bridge", - "version": "v3.4.17", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/phpunit-bridge.git", - "reference": "76e013a98031356604e5a730c9eb22713dc4dda4" + "reference": "a43a2f6c465a2d99635fea0addbebddc3864ad97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/76e013a98031356604e5a730c9eb22713dc4dda4", - "reference": "76e013a98031356604e5a730c9eb22713dc4dda4", + "url": "https://api.github.com/repos/symfony/phpunit-bridge/zipball/a43a2f6c465a2d99635fea0addbebddc3864ad97", + "reference": "a43a2f6c465a2d99635fea0addbebddc3864ad97", "shasum": "" }, "require": { @@ -2169,7 +2166,6 @@ "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" }, "suggest": { - "ext-zip": "Zip support is required when using bin/simple-phpunit", "symfony/debug": "For tracking deprecated interfaces usages at runtime with DebugClassLoader" }, "bin": [ @@ -2212,20 +2208,20 @@ ], "description": "Symfony PHPUnit Bridge", "homepage": "https://symfony.com", - "time": "2018-10-02T12:28:39+00:00" + "time": "2019-04-16T09:03:16+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.9.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "reference": "82ebae02209c21113908c229e9883c419720738a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", "shasum": "" }, "require": { @@ -2237,7 +2233,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2270,20 +2266,20 @@ "polyfill", "portable" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.9.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", - "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "" }, "require": { @@ -2295,7 +2291,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2329,20 +2325,20 @@ "portable", "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.9.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "1e24b0c4a56d55aaf368763a06c6d1c7d3194934" + "reference": "bc4858fb611bda58719124ca079baff854149c89" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/1e24b0c4a56d55aaf368763a06c6d1c7d3194934", - "reference": "1e24b0c4a56d55aaf368763a06c6d1c7d3194934", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/bc4858fb611bda58719124ca079baff854149c89", + "reference": "bc4858fb611bda58719124ca079baff854149c89", "shasum": "" }, "require": { @@ -2352,7 +2348,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2388,20 +2384,20 @@ "portable", "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.9.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "95c50420b0baed23852452a7f0c7b527303ed5ae" + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/95c50420b0baed23852452a7f0c7b527303ed5ae", - "reference": "95c50420b0baed23852452a7f0c7b527303ed5ae", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", + "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", "shasum": "" }, "require": { @@ -2410,7 +2406,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -2443,29 +2439,29 @@ "portable", "shim" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/process", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "ee33c0322a8fee0855afcc11fff81e6b1011b529" + "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/ee33c0322a8fee0855afcc11fff81e6b1011b529", - "reference": "ee33c0322a8fee0855afcc11fff81e6b1011b529", + "url": "https://api.github.com/repos/symfony/process/zipball/afe411c2a6084f25cff55a01d0d4e1474c97ff13", + "reference": "afe411c2a6084f25cff55a01d0d4e1474c97ff13", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2492,29 +2488,29 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-10-02T12:40:59+00:00" + "time": "2019-05-22T12:54:11+00:00" }, { "name": "symfony/stopwatch", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "5bfc064125b73ff81229e19381ce1c34d3416f4b" + "reference": "2a651c2645c10bbedd21170771f122d935e0dd58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5bfc064125b73ff81229e19381ce1c34d3416f4b", - "reference": "5bfc064125b73ff81229e19381ce1c34d3416f4b", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/2a651c2645c10bbedd21170771f122d935e0dd58", + "reference": "2a651c2645c10bbedd21170771f122d935e0dd58", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2541,24 +2537,24 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2018-10-02T12:40:59+00:00" + "time": "2019-01-16T09:39:14+00:00" }, { "name": "symfony/yaml", - "version": "v4.1.6", + "version": "v3.4.28", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "367e689b2fdc19965be435337b50bc8adf2746c9" + "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9", - "reference": "367e689b2fdc19965be435337b50bc8adf2746c9", + "url": "https://api.github.com/repos/symfony/yaml/zipball/212a27b731e5bfb735679d1ffaac82bd6a1dc996", + "reference": "212a27b731e5bfb735679d1ffaac82bd6a1dc996", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^5.5.9|>=7.0.8", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -2573,7 +2569,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { @@ -2600,24 +2596,25 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-10-02T16:36:10+00:00" + "time": "2019-03-25T07:48:46+00:00" }, { "name": "webmozart/assert", - "version": "1.3.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a" + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", - "reference": "0df1908962e7a3071564e857d86874dad1ef204a", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -2650,7 +2647,7 @@ "check", "validate" ], - "time": "2018-01-29T19:49:41+00:00" + "time": "2018-12-25T11:19:39+00:00" } ], "aliases": [], @@ -2659,7 +2656,11 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=5.6" + "php": ">=5.6", + "ext-json": "*" }, - "platform-dev": [] + "platform-dev": [], + "platform-overrides": { + "php": "5.6.0" + } } diff --git a/config.xml b/config.xml index b058ce9..5616195 100644 --- a/config.xml +++ b/config.xml @@ -2,7 +2,7 @@ gamification - + diff --git a/controllers/admin/AdminGamificationController.php b/controllers/admin/AdminGamificationController.php index d8bc12c..c4463eb 100644 --- a/controllers/admin/AdminGamificationController.php +++ b/controllers/admin/AdminGamificationController.php @@ -1,9 +1,15 @@ bootstrap = true; @@ -14,9 +20,11 @@ public function __construct() Tools::redirectAdmin($this->context->link->getAdminLink('AdminHome')); } } - + public function setMedia($isNewTheme = false) { + parent::setMedia($isNewTheme); + $this->addJqueryUI('ui.progressbar'); $this->addJS(_MODULE_DIR_.$this->module->name.'/views/js/bubble-popup.js'); @@ -28,22 +36,20 @@ public function setMedia($isNewTheme = false) $this->addJs(_MODULE_DIR_.$this->module->name.'/views/js/jquery.isotope.js'); $this->addCSS(array(_MODULE_DIR_.$this->module->name.'/views/css/bubble-popup.css', _MODULE_DIR_.$this->module->name.'/views/css/isotope.css')); - - return parent::setMedia($isNewTheme); } - + public function initToolBarTitle() { $this->toolbar_title[] = $this->l('Administration'); $this->toolbar_title[] = $this->l('Merchant Expertise'); } - + public function initPageHeaderToolbar() { parent::initPageHeaderToolbar(); unset($this->page_header_toolbar_btn['back']); } - + public function renderView() { $badges_feature = new Collection('badge', $this->context->language->id); @@ -56,12 +62,12 @@ public function renderView() $badges_achievement->sqlWhere('type = \'achievement\' AND awb != 1'); $badges_achievement->orderBy('id_group'); $badges_achievement->orderBy('group_position'); - + $badges_international = new Collection('badge', $this->context->language->id); $badges_international->sqlWhere('type = \'international\' AND awb != 1'); $badges_international->orderBy('id_group'); $badges_international->orderBy('group_position'); - + $groups = array(); $query = new DbQuery(); $query->select('DISTINCT(b.`id_group`), bl.group_name, b.type'); @@ -80,7 +86,7 @@ public function renderView() 'badges_achievement' => array('name' => $this->l('Achievements'), 'badges' => $badges_achievement), 'badges_international' => array('name' => $this->l('International'), 'badges' => $badges_international), ); - + $levels = array( 1 => $this->l('1. Beginner'), 2 => $this->l('2. Pro'), @@ -89,7 +95,7 @@ public function renderView() 5 => $this->l('5. Guru'), 6 => $this->l('6. Legend'), ); - + $this->tpl_view_vars = array( 'badges_type' => $badges_type, 'current_level_percent' => (int)Configuration::get('GF_CURRENT_LEVEL_PERCENT'), @@ -101,15 +107,15 @@ public function renderView() if (version_compare(_PS_VERSION_, '1.5.6.0', '>')) { $this->base_tpl_view = 'view_bt.tpl'; } - + return parent::renderView(); } - + public function ajaxProcessDisableNotification() { Configuration::updateGlobalValue('GF_NOTIFICATION', 0); } - + public function ajaxProcessGamificationTasks() { if (!Configuration::get('GF_INSTALL_CALC')) { @@ -117,23 +123,23 @@ public function ajaxProcessGamificationTasks() $this->processInstallCalculation(); Configuration::updateGlobalValue('GF_INSTALL_CALC', 1); } - + $return = array( 'refresh_data' => $this->processRefreshData(), 'daily_calculation' => $this->processMakeDailyCalculation(), 'advice_validation' => $this->processAdviceValidation() - ); - + ); + $return['advices_to_display'] = $this->processGetAdvicesToDisplay(); //get only one random advice by tab if (count($return['advices_to_display']['advices']) > 1) { - $rand = rand(0, count($return['advices_to_display']['advices'])-1); + $rand = mt_rand(0, count($return['advices_to_display']['advices'])-1); $return['advices_to_display']['advices'] = array($return['advices_to_display']['advices'][$rand]); } - + if (Tab::getIdFromClassName('AdminDashboard') == Tools::getValue('id_tab')) { $return['advices_premium_to_display'] = $this->processGetAdvicesToDisplay(true); - + if (count($return['advices_premium_to_display']['advices']) >= 2) { $weighted_advices_array = array(); foreach ($return['advices_premium_to_display']['advices'] as $prem_advice) { @@ -146,59 +152,55 @@ public function ajaxProcessGamificationTasks() $weighted_advices_array[] = $prem_advice; } } - $rand = rand(0, count($weighted_advices_array)-1); + $rand = mt_rand(0, count($weighted_advices_array)-1); do { - $rand2 = rand(0, count($weighted_advices_array)-1); + $rand2 = mt_rand(0, count($weighted_advices_array)-1); } while ($rand == $rand2); - + $return['advices_premium_to_display']['advices'] = array($weighted_advices_array[$rand], $weighted_advices_array[$rand2]); } elseif (count($return['advices_premium_to_display']['advices']) > 0) { - $addons = Advice::getAddonsAdviceByIdTab((int)Tools::getValue('id_tab')); + $addons = Advice::getValidatedAddonsOnlyByIdTab((int)Tools::getValue('id_tab')); $return['advices_premium_to_display']['advices'][] = array_shift($addons); } } - - + $return['level_badge_validation'] = $this->processLevelAndBadgeValidation(Badge::getIdsBadgesToValidate()); $return['header_notification'] = $this->module->renderHeaderNotification(); - - die(Tools::jsonEncode($return)); + + echo json_encode($return); + + exit; } - + public function processRefreshData() { return $this->module->refreshDatas(); } - + public function processGetAdvicesToDisplay($only_premium = false) { $return = array('advices' => array()); - $id_tab = (int)Tools::getValue('id_tab'); - $ids_ps_advice = Tools::getValue('ids_ps_advice'); - + if ($only_premium) { - $advices = Advice::getValidatedPremiumByIdTab($id_tab); + $advices = Advice::getValidatedPremiumOnlyByIdTab($id_tab); } else { $advices = Advice::getValidatedByIdTab($id_tab); } - - if (is_array($ids_ps_advice)) { - foreach ($advices as $advice) { - if (is_array($ids_ps_advice) && in_array($advice['id_ps_advice'], $ids_ps_advice)) { - $return['advices'][] = array( - 'selector' => $advice['selector'], - 'html' => GamificationTools::parseMetaData($advice['html']), - 'location' => $advice['location'], - 'weight' => (int)$advice['weight'] - ); - } - } + + foreach ($advices as $advice) { + $return['advices'][] = array( + 'selector' => $advice['selector'], + 'html' => GamificationTools::parseMetaData($advice['html']), + 'location' => $advice['location'], + 'weight' => (int)$advice['weight'] + ); } + return $return; } - + public function processMakeDailyCalculation() { $return = true; @@ -207,35 +209,37 @@ public function processMakeDailyCalculation() $cond = new Condition((int)$id); $return &= $cond->processCalculation(); } + return $return; } - + public function processAdviceValidation() { $return = true; $advices_to_validate = Advice::getIdsAdviceToValidate(); $advices_to_unvalidate = Advice::getIdsAdviceToUnvalidate(); - + foreach ($advices_to_validate as $id) { $advice = new Advice((int)$id); $advice->validated = 1; $return &= $advice->save(); } - + foreach ($advices_to_unvalidate as $id) { $advice = new Advice((int)$id); $advice->validated = 0; $return &= $advice->save(); } + return $return; } - + public function processLevelAndBadgeValidation($ids_badge) { $return = true; $current_level = (int)Configuration::get('GF_CURRENT_LEVEL'); $current_level_percent = (int)Configuration::get('GF_CURRENT_LEVEL_PERCENT'); - + $not_viewed_badge = explode('|', ltrim(Configuration::get('GF_NOT_VIEWED_BADGE', ''), '')); $nbr_notif = Configuration::get('GF_NOTIFICATION', 0); @@ -246,12 +250,12 @@ public function processLevelAndBadgeValidation($ids_badge) foreach ($ids_badge as $id) { $badge = new Badge((int)$id); if (($badge->scoring + $current_level_percent) >= 100) { - $current_level ++; + $current_level++; $current_level_percent = $badge->scoring + $current_level_percent - 100; } else { $current_level_percent += $badge->scoring; } - + $return &= $badge->validate(); $condition_ids = Condition::getIdsByBadgeGroup($badge->id_group); if (is_array($condition_ids) && count($condition_ids)) { @@ -263,18 +267,19 @@ public function processLevelAndBadgeValidation($ids_badge) $new_ids_badge = Badge::getIdsBadgesToValidate(); $this->processLevelAndBadgeValidation($new_ids_badge); } - - $nbr_notif ++; + + $nbr_notif++; $not_viewed_badge[] = $badge->id; } - + Configuration::updateGlobalValue('GF_NOTIFICATION', (int)$nbr_notif); Configuration::updateGlobalValue('GF_NOT_VIEWED_BADGE', implode('|', array_unique($not_viewed_badge))); Configuration::updateGlobalValue('GF_CURRENT_LEVEL', (int)$current_level); Configuration::updateGlobalValue('GF_CURRENT_LEVEL_PERCENT', (int)$current_level_percent); + return $return; } - + public function processInstallCalculation() { $group_position = 1; @@ -285,10 +290,10 @@ public function processInstallCalculation() $cond->processCalculation(); unset($cond); } - $group_position ++; + $group_position++; } while (count($condition_ids)); } - + public function ajaxProcessSavePreactivationRequest() { $isoUser = Context::getContext()->language->iso_code; diff --git a/data/index.php b/data/index.php index 2a40ec7..1d9e487 100755 --- a/data/index.php +++ b/data/index.php @@ -24,12 +24,12 @@ * International Registered Trademark & Property of PrestaShop SA */ -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); -header("Location: ../"); +header('Location: ../'); exit; diff --git a/gamification.php b/gamification.php index 755bee7..fdfd2d0 100644 --- a/gamification.php +++ b/gamification.php @@ -35,7 +35,7 @@ class gamification extends Module { - /* We recommend to not set it to true in production environment. */ + // We recommend to not set it to true in production environment. const TEST_MODE = false; private $url_data = 'https://gamification.prestashop.com/json/'; @@ -46,7 +46,7 @@ public function __construct() { $this->name = 'gamification'; $this->tab = 'administration'; - $this->version = '2.2.1'; + $this->version = '2.3.0'; $this->author = 'PrestaShop'; $this->ps_versions_compliancy = array( 'min' => '1.6.1.0', @@ -56,7 +56,7 @@ public function __construct() $this->displayName = $this->l('Merchant Expertise'); $this->description = $this->l('Become an e-commerce expert within the blink of an eye!'); - + $this->cache_data = __DIR__.'/data/'; if (self::TEST_MODE === true) { $this->url_data .= 'test/'; @@ -70,13 +70,18 @@ public function install() } Tools::deleteDirectory($this->cache_data, false); - if (!$this->installDb() || !$this->installTab() || - !Configuration::updateGlobalValue('GF_INSTALL_CALC', 0) || - !Configuration::updateGlobalValue('GF_CURRENT_LEVEL', 1) || !Configuration::updateGlobalValue('GF_CURRENT_LEVEL_PERCENT', 0) || - !Configuration::updateGlobalValue('GF_NOTIFICATION', 0) || !parent::install() || !$this->registerHook('displayBackOfficeHeader')) { - return false; - } - return true; + + return ( + $this->installDb() + && $this->installTab() + && Configuration::updateGlobalValue('GF_INSTALL_CALC', 0) + && Configuration::updateGlobalValue('GF_CURRENT_LEVEL', 1) + && Configuration::updateGlobalValue('GF_CURRENT_LEVEL_PERCENT', 0) + && Configuration::updateGlobalValue('GF_NOTIFICATION', 0) + && parent::install() + && $this->registerHook('actionAdminControllerSetMedia') + && $this->registerHook('displayBackOfficeHeader') + ); } public function uninstall() @@ -88,25 +93,28 @@ public function uninstall() !Configuration::updateGlobalValue('GF_CURRENT_LEVEL_PERCENT', 0)) { return false; } + return true; } public function installDb() { $return = true; - include(__DIR__.'/sql_install.php'); + include __DIR__.'/sql_install.php'; foreach ($sql as $s) { $return &= Db::getInstance()->execute($s); } + return $return; } public function uninstallDb() { - include(__DIR__.'/sql_install.php'); + include __DIR__.'/sql_install.php'; foreach ($sql as $name => $v) { Db::getInstance()->execute('DROP TABLE '.$name); } + return true; } @@ -134,6 +142,7 @@ public function installTab() } $tab->module = $this->name; + return $tab->add(); } @@ -142,6 +151,7 @@ public function uninstallTab() $id_tab = (int)Tab::getIdFromClassName('AdminGamification'); if ($id_tab) { $tab = new Tab($id_tab); + return $tab->delete(); } @@ -166,7 +176,7 @@ public function getContent() public function __call($name, $arguments) { if (!empty(self::$_batch_mode)) { - self::$_defered_func_call[get_class().'::__call_'.$name] = array(array($this, '__call'), array($name, $arguments)); + self::$_defered_func_call[__CLASS__.'::__call_'.$name] = array(array($this, '__call'), array($name, $arguments)); } else { if (!Validate::isHookName($name)) { return false; @@ -189,65 +199,51 @@ public function __call($name, $arguments) public function isUpdating() { $db_version = Db::getInstance()->getValue('SELECT `version` FROM `'._DB_PREFIX_.'module` WHERE `name` = \''.pSQL($this->name).'\''); + return version_compare($this->version, $db_version, '>'); } /** - * Calls the server. * - * @return bool|string - * @throws PrestaShopException */ - public function hookDisplayBackOfficeHeader() + public function hookActionAdminControllerSetMedia() { - //check if currently updatingcheck if module is currently processing update if ($this->isUpdating() || !Module::isEnabled($this->name)) { - return false; + return; } if (method_exists($this->context->controller, 'addJquery')) { - $this->context->controller->addJquery(); - $cssFile = 'gamification.css'; + $this->context->controller->addCss($this->_path . 'views/css/gamification.css'); if (version_compare(_PS_VERSION_, '1.7.0.0', '<=')) { - $cssFile = 'gamification-1.6.css'; - } - - $this->context->controller->addCss($this->_path.'views/css/'. $cssFile); - - //add css for advices - $advices = Advice::getValidatedByIdTab($this->context->controller->id, true); - - $css_str = $js_str = ''; - foreach ($advices as $advice) { - $advice_css_path = __DIR__.'/views/css/advice-'._PS_VERSION_.'_'.(int)$advice['id_ps_advice'].'.css'; - - // 24h cache - if (!$this->isFresh($advice_css_path, 86400)) { - $advice_css_content = Tools::file_get_contents(Tools::getShopProtocol().'gamification.prestashop.com/css/advices/advice-'._PS_VERSION_.'_'.(int)$advice['id_ps_advice'].'.css'); - file_put_contents($advice_css_path, $advice_css_content); - } - - if (filesize($advice_css_path) > 0) { - $this->context->controller->addCss($this->_path.'views/css/advice-'._PS_VERSION_.'_'.(int)$advice['id_ps_advice'].'.css'); - } - - $js_str .= '"'.(int)$advice['id_ps_advice'].'",'; + $this->context->controller->addCss($this->_path . 'views/css/gamification-1.6.css'); + $this->context->controller->addJquery(); } - if (version_compare(_PS_VERSION_, '1.6.0', '>=') === true) { - $this->context->controller->addJs($this->_path.'views/js/gamification_bt.js'); - } else { - $this->context->controller->addJs($this->_path.'views/js/gamification.js'); - } + $this->context->controller->addJs($this->_path . 'views/js/gamification_bt.js'); $this->context->controller->addJqueryPlugin('fancybox'); + } + } - return $css_str.''; + /** + * Calls the server. + * + * @return bool|string + * + * @throws PrestaShopException + */ + public function hookDisplayBackOfficeHeader() + { + if ($this->isUpdating() || !Module::isEnabled($this->name)) { + return false; } + + return ''; } public function renderHeaderNotification() @@ -260,7 +256,7 @@ public function renderHeaderNotification() $current_level = (int)Configuration::get('GF_CURRENT_LEVEL'); $current_level_percent = (int)Configuration::get('GF_CURRENT_LEVEL_PERCENT'); - $badges_to_display = array();//retro compat + $badges_to_display = array(); //retro compat $unlock_badges = array(); $next_badges = array(); $not_viewed_badge = explode('|', Configuration::get('GF_NOT_VIEWED_BADGE', '')); @@ -290,7 +286,7 @@ public function renderHeaderNotification() public function refreshDatas($iso_lang = null) { - if (is_null($iso_lang)) { + if (null === $iso_lang) { $iso_lang = $this->context->language->iso_code; } @@ -308,15 +304,15 @@ public function refreshDatas($iso_lang = null) if (!$this->isFresh($cache_file, 86400)) { if ($this->getData($iso_lang)) { - $data = Tools::jsonDecode(Tools::file_get_contents($cache_file)); - if (!isset($data->signature)) { + $data = json_decode(Tools::file_get_contents($cache_file)); + if (json_last_error() !== JSON_ERROR_NONE || !isset($data->signature)) { return false; } - $this->processCleanAdvices(array_merge($data->advices, $data->advices_16)); + $this->processCleanAdvices(); if (function_exists('openssl_verify') && self::TEST_MODE === false) { - if (!openssl_verify(Tools::jsonencode(array($data->conditions, $data->advices_lang)), base64_decode($data->signature), file_get_contents(__DIR__.'/prestashop.pub'))) { + if (!openssl_verify(json_encode(array($data->conditions, $data->advices_lang)), base64_decode($data->signature), file_get_contents(__DIR__.'/prestashop.pub'))) { return false; } } @@ -335,7 +331,7 @@ public function refreshDatas($iso_lang = null) } if (function_exists('openssl_verify') && self::TEST_MODE === false) { - if (!openssl_verify(Tools::jsonencode(array($data->advices_lang_16)), base64_decode($data->signature_16), file_get_contents(__DIR__.'/prestashop.pub'))) { + if (!openssl_verify(json_encode(array($data->advices_lang_16)), base64_decode($data->signature_16), file_get_contents(__DIR__.'/prestashop.pub'))) { return false; } } @@ -349,7 +345,7 @@ public function refreshDatas($iso_lang = null) public function getData($iso_lang = null) { - if (is_null($iso_lang)) { + if (null === $iso_lang) { $iso_lang = $this->context->language->iso_code; } $iso_country = $this->context->country->iso_code; diff --git a/index.php b/index.php index 2a40ec7..1d9e487 100644 --- a/index.php +++ b/index.php @@ -24,12 +24,12 @@ * International Registered Trademark & Property of PrestaShop SA */ -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); -header("Location: ../"); +header('Location: ../'); exit; diff --git a/sql_install.php b/sql_install.php index 5ca4816..8b562ea 100644 --- a/sql_install.php +++ b/sql_install.php @@ -97,7 +97,6 @@ PRIMARY KEY (`id_condition`, `id_advice`) ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;'; - $sql[_DB_PREFIX_.'tab_advice'] = 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'tab_advice` ( `id_tab` int(11) NOT NULL, `id_advice` int(11) NOT NULL, diff --git a/tests/autoload.php b/tests/autoload.php index f7c0c61..2987f6f 100644 --- a/tests/autoload.php +++ b/tests/autoload.php @@ -1,10 +1,11 @@ assertContains('Content-Encoding: gzip', $response); } } diff --git a/tests/mocks/ObjectModel.php b/tests/mocks/ObjectModel.php index 12c1a01..67f3d35 100644 --- a/tests/mocks/ObjectModel.php +++ b/tests/mocks/ObjectModel.php @@ -3,11 +3,18 @@ class ObjectModel { const TYPE_INT = 1; + const TYPE_BOOL = 2; + const TYPE_STRING = 3; + const TYPE_FLOAT = 4; + const TYPE_DATE = 5; + const TYPE_HTML = 6; + const TYPE_NOTHING = 7; + const TYPE_SQL = 8; } diff --git a/tests/unit/AdviceTest.php b/tests/unit/AdviceTest.php index 522a810..2651c09 100644 --- a/tests/unit/AdviceTest.php +++ b/tests/unit/AdviceTest.php @@ -5,7 +5,7 @@ class AdviceTest extends TestCase { /** - * @var array the list of expected properties of Advice model. + * @var array the list of expected properties of Advice model */ const ADVICE_PROPERTIES = [ 'table', @@ -15,7 +15,7 @@ class AdviceTest extends TestCase ]; /** - * @var array the list of fields of Advice model. + * @var array the list of fields of Advice model */ const ADVICE_FIELDS = [ 'id_ps_advice', @@ -30,11 +30,11 @@ class AdviceTest extends TestCase ]; /** - * @var array the Advice. + * @var array the Advice */ private $advice; - public function setUp() + protected function setUp() { $this->advice = new Advice(); } @@ -43,16 +43,16 @@ public function testAdviceDefinitionIsValid() { $definition = Advice::$definition; - self::assertInternalType('array', $definition); + $this->assertInternalType('array', $definition); foreach (self::ADVICE_PROPERTIES as $property) { - self::assertArrayHasKey($property, $definition); + $this->assertArrayHasKey($property, $definition); } $fieldsProperty = $definition['fields']; foreach (self::ADVICE_FIELDS as $field) { - self::assertArrayHasKey($field, $fieldsProperty); + $this->assertArrayHasKey($field, $fieldsProperty); } } } diff --git a/tools/get_prestashop.sh b/tools/get_prestashop.sh deleted file mode 100755 index 98d145b..0000000 --- a/tools/get_prestashop.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -echo Clone Prestashop - -# Clone Prestashop into Build Folder -cd $TRAVIS_BUILD_DIR -git clone --depth=1 --branch=$PS_VERSION https://github.com/Prestashop/Prestashop.git $TRAVIS_BUILD_DIR - -# PrestaShop configuration -cp tests/parameters.yml.travis app/config/parameters.yml diff --git a/tools/install_module.sh b/tools/install_module.sh deleted file mode 100755 index acef355..0000000 --- a/tools/install_module.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -echo Install Module "$1" - -# Build Module Dependencies -cd $MODULE_DIR -composer update --prefer-dist --no-interaction --no-progress - -# Move Module Contents to Install Folder -echo Move Module Contents to Prestashop Modules Directory - -cd $TRAVIS_BUILD_DIR -rm -Rf $TRAVIS_BUILD_DIR/modules/$1/* -cp -Rf $MODULE_DIR/* $TRAVIS_BUILD_DIR/modules/$1/ - -# Enable the Module -case $PS_VERSION in - 1.7.0.x|1.7.1.x|1.7.2.x|1.7.3.x) - sql_insert="INSERT INTO ps_module (name, active, version) VALUES ('$1', 1 , 'test');" - mysql -D prestashop -e $sql_insert - ;; - *) - php bin/console prestashop:module install $1 - ;; -esac diff --git a/tools/install_webserver.sh b/tools/install_webserver.sh deleted file mode 100755 index cb049e0..0000000 --- a/tools/install_webserver.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/bash - -echo Install WebServer - -# Apache & php-fpm configuration -bash travis-scripts/setup-php-fpm.sh -bash travis-scripts/setup-apache.sh diff --git a/tools/move_module.sh b/tools/move_module.sh deleted file mode 100755 index 86eb906..0000000 --- a/tools/move_module.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -echo Move Module to TMP Folder - -if [ -z "$TRAVIS_BUILD_DIR" ] ; then - echo "TRAVIS_BUILD_DIR is not defined: exit." && exit 1 -fi - -# Move Module Contents to Tmp Folder -mkdir $MODULE_DIR -mv -f $TRAVIS_BUILD_DIR/* $MODULE_DIR - -mkdir $MODULE_DIR/.git -mv -f $TRAVIS_BUILD_DIR/.travis.yml $MODULE_DIR/.travis.yml - -# Delete Remaining Contents from Build Folder -rm -Rf $TRAVIS_BUILD_DIR/.git -rm -Rf $TRAVIS_BUILD_DIR/.gitignore -rm -Rf $TRAVIS_BUILD_DIR/.travis.yml -rm -Rf $TRAVIS_BUILD_DIR/* diff --git a/tools/start_prestashop.sh b/tools/start_prestashop.sh deleted file mode 100755 index 8860b1f..0000000 --- a/tools/start_prestashop.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -echo Start Prestashop - -composer install --prefer-dist --no-interaction --no-progress -bash travis-scripts/install-prestashop diff --git a/translations/index.php b/translations/index.php index 2a40ec7..1d9e487 100644 --- a/translations/index.php +++ b/translations/index.php @@ -24,12 +24,12 @@ * International Registered Trademark & Property of PrestaShop SA */ -header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); -header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); +header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); +header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); -header("Cache-Control: no-store, no-cache, must-revalidate"); -header("Cache-Control: post-check=0, pre-check=0", false); -header("Pragma: no-cache"); +header('Cache-Control: no-store, no-cache, must-revalidate'); +header('Cache-Control: post-check=0, pre-check=0', false); +header('Pragma: no-cache'); -header("Location: ../"); +header('Location: ../'); exit; diff --git a/upgrade/install-1.4.9.php b/upgrade/install-1.4.9.php index edd35ea..4fc9883 100644 --- a/upgrade/install-1.4.9.php +++ b/upgrade/install-1.4.9.php @@ -31,10 +31,10 @@ function upgrade_module_1_4_9($object) { return Db::getInstance()->execute( - 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'tab_advice` ( - `id_tab` int(11) NOT NULL, - `id_advice` int(11) NOT NULL, - PRIMARY KEY (`id_tab`, `id_advice`) - ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;' + 'CREATE TABLE IF NOT EXISTS `'._DB_PREFIX_.'tab_advice` ( + `id_tab` int(11) NOT NULL, + `id_advice` int(11) NOT NULL, + PRIMARY KEY (`id_tab`, `id_advice`) + ) ENGINE='._MYSQL_ENGINE_.' DEFAULT CHARSET=utf8;' ); } diff --git a/upgrade/install-1.8.9.php b/upgrade/install-1.8.9.php index ad37dfc..59faf72 100644 --- a/upgrade/install-1.8.9.php +++ b/upgrade/install-1.8.9.php @@ -32,5 +32,6 @@ function upgrade_module_1_8_9($object) { Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'advice` ADD `weight` INT NULL DEFAULT \'1\''); Db::getInstance()->execute('ALTER TABLE `'._DB_PREFIX_.'badge` ADD `awb` INT NULL DEFAULT \'0\''); + return true; } diff --git a/views/css/bubble-popup.css b/views/css/bubble-popup.css index d1ecb55..e1be09d 100755 --- a/views/css/bubble-popup.css +++ b/views/css/bubble-popup.css @@ -1,85 +1,86 @@ -/* - - jQuery Bubble Popup v.3.0 - http://www.maxvergelli.com/jquery-bubble-popup/ - - Copyright (c) 2012 Max Vergelli - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. - -*/ - - /* Layout Settings */ - .jquerybubblepopup{width:auto;height:auto;margin:0px;padding:0px;position:absolute;border:0px;z-index:100;text-align:center;background-color:transparent;} - .jquerybubblepopup-ie{filter:progid:DXImageTransform.Microsoft.Shadow(color="#666666", Direction=135, Strength=3);} /* the plugin adds this class only if browser is IE; if IE9, it's added to main
else to */ - .jquerybubblepopup table{width:auto;height:auto;margin:0px;padding:0px;display:table;border-collapse:collapse;border-spacing:0px;border:0px;empty-cells:show;background-color:transparent;} - .jquerybubblepopup tbody{display:table-row-group;vertical-align:middle;border:0px;background-color:transparent;} - .jquerybubblepopup td{margin:0px;padding:0px;background-color:transparent;} - .jquerybubblepopup-top-left, .jquerybubblepopup-top-right, - .jquerybubblepopup-bottom-left, .jquerybubblepopup-bottom-right{width:21px;height:21px;overflow:hidden;background-repeat:no-repeat;} - .jquerybubblepopup-top-middle, .jquerybubblepopup-bottom-middle{overflow:hidden;background-repeat:repeat-x;} - .jquerybubblepopup-middle-left, .jquerybubblepopup-middle-right{overflow:hidden;background-repeat:repeat-y;} - .jquerybubblepopup-tail{border:0px;margin:0px;padding:0px;display:inline;} - -/* - Themes: - - The plugin adds the class of the theme (for example ".jquerybubblepopup-azure") - to the main
container, then you can edit the style of any element inside the - Bubble Popup markup for each theme. - - The following code defines fonts and backgrounds of the "innerHtml" for each theme: -*/ - .jquerybubblepopup-azure .jquerybubblepopup-innerHtml, - .jquerybubblepopup-black .jquerybubblepopup-innerHtml, - .jquerybubblepopup-blue .jquerybubblepopup-innerHtml, - .jquerybubblepopup-green .jquerybubblepopup-innerHtml, - .jquerybubblepopup-grey .jquerybubblepopup-innerHtml, - .jquerybubblepopup-orange .jquerybubblepopup-innerHtml, - .jquerybubblepopup-violet .jquerybubblepopup-innerHtml, - .jquerybubblepopup-yellow .jquerybubblepopup-innerHtml - { - font-family:'Trebuchet MS',Arial; - font-size:11px; - font-weight:normal; - color:#000000; - background-color:#FFFFFF; - } - .jquerybubblepopup-all-azure .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-black .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-blue .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-green .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-grey .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-orange .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-violet .jquerybubblepopup-innerHtml, - .jquerybubblepopup-all-yellow .jquerybubblepopup-innerHtml - { - font-family:'Trebuchet MS',Arial; - font-size:11px; - font-weight:normal; - color:#FFFFFF; - } - .jquerybubblepopup-all-azure .jquerybubblepopup-innerHtml{background-color:#0099FF;} - .jquerybubblepopup-all-black .jquerybubblepopup-innerHtml{background-color:#000000;} - .jquerybubblepopup-all-blue .jquerybubblepopup-innerHtml{background-color:#0066CC;} - .jquerybubblepopup-all-green .jquerybubblepopup-innerHtml{background-color:#66FF00;} - .jquerybubblepopup-all-grey .jquerybubblepopup-innerHtml{background-color:#666666;} - .jquerybubblepopup-all-orange .jquerybubblepopup-innerHtml{background-color:#FF9933;} - .jquerybubblepopup-all-violet .jquerybubblepopup-innerHtml{background-color:#FF33FF;} - .jquerybubblepopup-all-yellow .jquerybubblepopup-innerHtml{background-color:#FFCC00;} +/* + + jQuery Bubble Popup v.3.0 + http://www.maxvergelli.com/jquery-bubble-popup/ + + Copyright (c) 2012 Max Vergelli + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +*/ + + /* Layout Settings */ + .jquerybubblepopup{width:auto;height:auto;margin:0px;padding:0px;position:absolute;border:0px;z-index:100;text-align:center;background-color:transparent;} + .jquerybubblepopup-ie{filter:progid:DXImageTransform.Microsoft.Shadow(color="#666666", Direction=135, Strength=3);} /* the plugin adds this class only if browser is IE; if IE9, it's added to main
else to
*/ + .jquerybubblepopup table{width:auto;height:auto;margin:0px;padding:0px;display:table;border-collapse:collapse;border-spacing:0px;border:0px;empty-cells:show;background-color:transparent;} + .jquerybubblepopup tbody{display:table-row-group;vertical-align:middle;border:0px;background-color:transparent;} + .jquerybubblepopup td{margin:0px;padding:0px;background-color:transparent;} + .jquerybubblepopup-top-left, .jquerybubblepopup-top-right, + .jquerybubblepopup-bottom-left, .jquerybubblepopup-bottom-right{width:21px;height:21px;overflow:hidden;background-repeat:no-repeat;} + .jquerybubblepopup-top-middle, .jquerybubblepopup-bottom-middle{overflow:hidden;background-repeat:repeat-x;} + .jquerybubblepopup-middle-left, .jquerybubblepopup-middle-right{overflow:hidden;background-repeat:repeat-y;} + .jquerybubblepopup-tail{border:0px;margin:0px;padding:0px;display:inline;} + +/* + Themes: + + The plugin adds the class of the theme (for example ".jquerybubblepopup-azure") + to the main
container, then you can edit the style of any element inside the + Bubble Popup markup for each theme. + + The following code defines fonts and backgrounds of the "innerHtml" for each theme: +*/ + .jquerybubblepopup-azure .jquerybubblepopup-innerHtml, + .jquerybubblepopup-black .jquerybubblepopup-innerHtml, + .jquerybubblepopup-blue .jquerybubblepopup-innerHtml, + .jquerybubblepopup-green .jquerybubblepopup-innerHtml, + .jquerybubblepopup-grey .jquerybubblepopup-innerHtml, + .jquerybubblepopup-orange .jquerybubblepopup-innerHtml, + .jquerybubblepopup-violet .jquerybubblepopup-innerHtml, + .jquerybubblepopup-yellow .jquerybubblepopup-innerHtml + { + font-family:'Trebuchet MS',Arial; + font-size:11px; + font-weight:normal; + color:#000000; + background-color:#FFFFFF; + } + .jquerybubblepopup-all-azure .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-black .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-blue .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-green .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-grey .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-orange .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-violet .jquerybubblepopup-innerHtml, + .jquerybubblepopup-all-yellow .jquerybubblepopup-innerHtml + { + font-family:'Trebuchet MS',Arial; + font-size:11px; + font-weight:normal; + color:#FFFFFF; + } + .jquerybubblepopup-all-azure .jquerybubblepopup-innerHtml{background-color:#0099FF;} + .jquerybubblepopup-all-black .jquerybubblepopup-innerHtml{background-color:#000000;} + .jquerybubblepopup-all-blue .jquerybubblepopup-innerHtml{background-color:#0066CC;} + .jquerybubblepopup-all-green .jquerybubblepopup-innerHtml{background-color:#66FF00;} + .jquerybubblepopup-all-grey .jquerybubblepopup-innerHtml{background-color:#666666;} + .jquerybubblepopup-all-orange .jquerybubblepopup-innerHtml{background-color:#FF9933;} + .jquerybubblepopup-all-violet .jquerybubblepopup-innerHtml{background-color:#FF33FF;} + .jquerybubblepopup-all-yellow .jquerybubblepopup-innerHtml{background-color:#FFCC00;} + diff --git a/views/css/gamification-1.6.css b/views/css/gamification-1.6.css index 34ce113..f6a5d0f 100644 --- a/views/css/gamification-1.6.css +++ b/views/css/gamification-1.6.css @@ -1,338 +1,14 @@ -#notifs_icon_wrapper { - width: 115px !important +.material-icons { + display: none; } -#gamification_notif { - background: url('../img/notif_gadges.png') no-repeat center top; +#gamification_notif .icon-chevron-right { + display: inline; + font-size: 12px !important; } -#gamification_notif_wrapper { - width:340px -} - -#gamification_notif.open_notifs { - background-color: #FFFFFF; - border: 1px solid #000000; - position: relative; - display: block; - background-position:center bottom; -} - -.gamification_badges_title { - font-weight: bold; - color: #000; - margin-top:10px -} - -#gamification_see_more { - border-top: 1px solid #E5E5E5; - display: block; - margin-top: 10px; - padding-top: 7px; - text-align: right; - text-decoration: none; - width: 100%; -} - -.gamification_badges_img{ - text-align: center; - margin-top: 0; -} - -.gamification_badges_name{ - text-align: center; - font-weight: bold; - margin-top: 3px; -} - -#gamification_top h3 { - border:none -} - -#gamification_top { - padding-bottom: 5px; - border-bottom: 1px solid #E5E5E5; -} - -#gamification_badges_container{float:left;margin-top:10px} - -ul#gamification_badges_list { - list-style-type:none; - height: 300px; - width: 315px; - padding-top:10px; - overflow: auto; -} - -ul#gamification_badges_list li { - display: block; - min-height: 165px; - padding: 5px; - width: 132px; - margin-bottom:10px; - margin-left: 10px; - position:relative; -} - -ul#gamification_badges_list li span{ - display: block; - text-align: center; -} - -ul#gamification_badges_list li.unlocked { - background:#fffbe2; - border:1px solid #ebdfab; - margin-right: 7px; -} - -ul#gamification_badges_list li.unlocked span{ - color:#a88417; - font-size:11px; - font-weight:bold; - text-shadow: 1px 1px 1px #fff; - text-transform:uppercase -} - -ul#gamification_badges_list li.unlocked span.unlocked_img{ - background:url(../img/badge_unlocked.png) no-repeat 0 0; - display: block; - height: 15px; - width: 109px; - position: absolute; - top: -8px; - width: 109px; - left:24px -} - -ul#gamification_badges_list li.locked { - background:url(../img/bg_locked_badge.png) repeat; - border:1px solid #acaeb5; - margin-right: 5px; -} - -ul#gamification_badges_list li.locked span{ - color:#343943; - font-size:11px; - font-weight:bold; - text-shadow: 1px 1px 1px #fff; - text-transform:uppercase -} - -ul#gamification_badges_list li.locked span.locked_img{ - background:url(../img/badge_locked.png) no-repeat 0 0; - display: block; - height: 15px; - width: 109px; - position: absolute; - top: -8px; - width: 109px; - left:18px -} - -ul#gamification_badges_list li.locked .gamification_badges_name{ - color:#acaeb5 -} - - -#gamification_progressbar { - height: 20px; - margin-top: 5px; - position: relative; - width: 100%; -} - -#gamification_progressbar { - height: 19px; - position: relative; - -moz-border-radius: 15px; - -o-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; - background-image:url(../img/bg_bar_global.png) -} - -#gamification_progressbar .gamification_progress-label { - top: 2px; - font-size:14px -} - -#gamification_progressbar .ui-progressbar-value{ - -moz-border-radius: 15px; - -o-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; - border:1px solid #8aa96d -} - -#gamification_progressbar .ui-widget-header{ - background-image:url(../img/gamification-bar-bg.png); - margin-top: -18px; -} - -#gamification_progressbar_tab { - -moz-border-radius: 15px; - -o-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; - background-image:url(../img/bg_bar_global.png); - float: left; - height: 25px; - position: relative; - width: 87%; -} - -#completion_gamification #gamification_progress-label_tab{ - float:left; - width:10%; - margin-left: 15px; - text-align: left; -} - -#gamification_progressbar_tab .ui-progressbar-value{ - -moz-border-radius: 15px; - -o-border-radius: 15px; - -webkit-border-radius: 15px; - border-radius: 15px; - border:1px solid #8aa96d; - position: absolute; - top: 0; -} - -#gamification_progressbar_tab .ui-widget-header{ - background-image:url(../img/gamification-bar-bg.png); -} - -/******* intro gamification *******/ - -#intro_gamification{ - border-bottom:1px solid #CCCED7; - float: left; -} - -#intro_gamification h4, #completion_gamification h4{ - margin-top:10px; - font-weight:bold; - font-size:18px; - color:#343943; - text-shadow: 1px 1px 1px #fff -} -#intro_gamification h4 { - margin-top:0; -} - -#intro_gamification #left_intro{ - float:left; - width:67%; - padding-right:20px; - border-right:1px solid #CCCED7; -} - -#intro_gamification #left_intro p{ - text-align:justify; - float: left; - width:100%; - margin-bottom: 20px -} -#intro_gamification #right_intro{ - float:left; - padding-left:20px; - border-left:1px solid #ffffff; - width:23% -} - -#intro_gamification #right_intro a{ - color:#268ccd; - font-size:15px; - font-weight:bold - -} -#intro_gamification #right_intro li{ - color:#343943; - font-size:15px; - font-weight:bold -} - -#intro_gamification #right_intro li span, #intro_gamification #right_intro li a{ - line-height:22px -} - -#completion_gamification{border-top:1px solid #ffffff;clear:both} - -.gamification_progress-label , .gamification_progress-label_tab { - text-align: center; - display: block; - top: 3px; - font-weight: bold; - text-shadow: 1px 1px 0 #fff; - position: relative; - z-index: 1000; - color:#68737f; - font-size:17px -} - -#gamification_progress-label { - text-align: center; - display: block; -} - - -ul.badge_list -{ - list-style-type:none; - padding:0; - margin:0; -} - -li.badge_square{ - display:block; - float:left; - height:110px; - width:100px; - background-color: transparent; - border:none; - padding: 5px 10px 5px 10px; - border-radius: 3px; - margin-right:10px; -} - -li.not_validated { - color: #ccc; -} - -.badges_filters div{ - float: left; - margin-bottom: 30px -} -.badges_filters select{ - margin-right: 30px; -} - -.icon-trophy-svg { - display:none; -} - -/* PrestaShop 1.7 - new theme adaptation */ -.gamification-component .icon-trophy-svg { - display:block; - width:24px; - height:24px; -} - -.gamification-component #gamification_notif { - list-style: outside none none; -} -.gamification-component #gamification_notif .gamification_notif::after { - display: none; -} - -.gamification-component > ul { - padding: 0; - margin: 0; -} -.gamification-component .icon-trophy-svg { - font-size: 1.5rem; - line-height: 1.375rem; - vertical-align: middle; - position: relative; - top: 0.375em; +.bootstrap #header_infos .gamification_notif #gamification_notif_number_wrapper { + right: 0; + line-height: 1rem; + border: none; } diff --git a/views/css/gamification.css b/views/css/gamification.css index 71338b8..10c5ed2 100644 --- a/views/css/gamification.css +++ b/views/css/gamification.css @@ -1,7 +1,10 @@ #gamification_notif.open {background: none} #gamification_notif.open a.dropdown-toggle{background: none !important} -#gamification_notif.open .material-icons {color: #6c868e; font-size: 24px} +#gamification_notif.open .material-icons { + color: #6c868e; + font-size: 24px +} #gamification_notif_number_wrapper { display: inline-block; @@ -9,7 +12,7 @@ top: 4px; top: -.3rem; right: .2rem; - color: #fff; + color: #fff; background: #25b9d7; font-size: 10px; font-size: .625rem; @@ -43,7 +46,7 @@ pointer-events: none; } -.gamification-component #gamification_notif .dropdown-menu:before, +.gamification-component #gamification_notif .dropdown-menu:before, .gamification-component #gamification_notif .dropdown-menu:after{ right: 9px; } @@ -120,7 +123,7 @@ } #gamification_notif_wrapper .panel-footer a i{ color: #25b9d7 !important; - font-size: 20px !important; + font-size: 20px; } #gamification_notif #gamification_notif_wrapper{ @@ -132,8 +135,8 @@ padding: 20px 20px 10px 20px; } -#gamification_notif_wrapper .notifs_panel_header p{font-weight: bold;} -#gamification_notif_wrapper .notifs_panel_header p span.notifs-level{color: #25b9d7; float: right;} +#gamification_notif_wrapper .notifs_panel_header p{font-weight: bold;} +#gamification_notif_wrapper .notifs_panel_header p span.notifs-level{color: #25b9d7; float: right;} .gamification_badges_title { margin-top: 10px @@ -152,7 +155,7 @@ ul#gamification_badges_list { list-style-type: none; - height: 400px; + min-height: 300px; width: 310px; margin: auto; overflow: hidden; @@ -174,8 +177,7 @@ ul#gamification_badges_list li span { } ul#gamification_badges_list li.unlocked { - background: #fffbe2; - border: 1px solid #ebdfab; + background: #fff; margin-right: 7px; } @@ -219,7 +221,6 @@ ul#gamification_badges_list li.locked .gamification_badges_name { -o-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; - background-image: url(../img/bg_bar_global.png) } #gamification_progressbar .gamification_progress-label { @@ -235,28 +236,27 @@ ul#gamification_badges_list li.locked .gamification_badges_name { border: 1px solid #8aa96d } -#gamification_progressbar .ui-widget-header { - background-image: url(../img/gamification-bar-bg.png); - margin-top: -18px; -} - #gamification_progressbar_tab { -moz-border-radius: 15px; -o-border-radius: 15px; -webkit-border-radius: 15px; border-radius: 15px; - background-image: url(../img/bg_bar_global.png); - float: left; - height: 25px; + border: none; + background: #ECECEC; + height: 23px; position: relative; - width: 87%; + width: 69%; } -#completion_gamification #gamification_progress-label_tab { - float: left; - width: 10%; - margin-left: 15px; - text-align: left; +#completion_gamification .gamification_progress-label, +#completion_gamification .gamification_progress-label_percent { + color: #251B5B +} + +#completion_gamification .gamification_progress-label_percent { + font-size: 30px; + font-weight: 600; + margin-left: 20px; } #gamification_progressbar_tab .ui-progressbar-value { @@ -270,86 +270,207 @@ ul#gamification_badges_list li.locked .gamification_badges_name { } #gamification_progressbar_tab .ui-widget-header { - background-image: url(../img/gamification-bar-bg.png); + background: linear-gradient(270deg, #3E2CA1 0%, #252B67 100%); + background: -moz-linear-gradient(270deg, #3E2CA1 0%, #252B67 100%); + background: -ms-linear-gradient(270deg, #3E2CA1 0%, #252B67 100%); + background: -o-linear-gradient(270deg, #3E2CA1 0%, #252B67 100%); + height: 17px; + margin: 3px; + border: none; } /******* intro gamification *******/ #intro_gamification { border-bottom: 1px solid #ccced7; - float: left; + display: flex; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + justify-content: space-between; + align-items: center; + padding-bottom: 10px; +} + +@media screen and (max-width: 768px) { + #intro_gamification { + flex-direction: column + } } -#intro_gamification h4, #completion_gamification h4 { +#intro_gamification h2, +#completion_gamification h2 { margin-top: 10px; - font-weight: bold; - font-size: 18px; color: #343943; - text-shadow: 1px 1px 1px #fff + font-family: Open Sans,sans-serif; + font-size: 20px; + font-weight: 600; + line-height: 27px; + white-space: nowrap; } -#intro_gamification h4 { +@media screen and (max-width: 768px){ + #completion_gamification h2 { + margin-bottom: 20px + } +} + +#intro_gamification p, +#intro_gamification li, +#intro_gamification a { + font-size: 14px; + line-height: 19px; +} + +#intro_gamification li:before { + font-weight: bold; +} + + +#intro_gamification h2 { margin-top: 0; + margin-bottom: 16px; + color: #252B67; } -#intro_gamification #left_intro { - float: left; - width: 67%; - padding-right: 20px; - border-right: 1px solid #ccced7; +#completion_gamification h2 { + margin-right: 10px; +} + +#intro_gamification .left_intro { + max-width: 350px; +} + +#intro_gamification .central_intro { + padding-right: 102px; + width: 60%; + padding-left: 30px; } -#intro_gamification #left_intro p { +@media screen and (max-width: 768px){ + #intro_gamification .central_intro { + width: auto; + margin: 30px; + } +} + +@media screen and (max-width: 1441px) { + #intro_gamification .central_intro { + padding-right: 50px; + } +} + +#intro_gamification .central_intro .central_intro_list{ + padding-left: 0; + list-style-type: none; + counter-reset: counting; +} + +#intro_gamification .central_intro .central_intro_list li:before { + counter-increment: counting 1; + content: counter(counting) " - "; +} + +#intro_gamification .central_intro p { text-align: justify; - float: left; width: 100%; margin-bottom: 20px } -#intro_gamification #right_intro { - float: left; +#intro_gamification .right_intro { padding-left: 20px; - border-left: 1px solid #ffffff; - width: 23% + max-width: 350px; + background-color: #F7F6FD; + border-radius: 4px; + padding: 56px 47px 34px; + position: relative; + min-height: 200px; } -#intro_gamification #right_intro a { - color: #268ccd; - font-size: 15px; - font-weight: bold +@media screen and (min-width: 1441px){ + #intro_gamification .right_intro { + margin-top: 30px; + } +} +#intro_gamification .right_intro img{ + display: block; + margin: 0 auto; + position: absolute; + top: -24px; + left: 0; + right: 0; } -#intro_gamification #right_intro li { - color: #343943; - font-size: 15px; - font-weight: bold +#intro_gamification .right_intro h3.right_intro_title { + color: #251B5B; + font-size: 16px; + font-weight: 600; + margin: 0 auto 26px; + text-transform: inherit; + border: none; + line-height: inherit; + height: auto; + max-width: 224px; +} + +#intro_gamification .right_intro .right_intro_btn-contact { + display: block; + margin: 0 auto; + color: #fff; + font-size: 16px; + font-weight: 600; + max-width: 227px; + border-radius: 2px; + background-color: #252B67; + padding: 10px; + position: relative; } -#intro_gamification #right_intro li span, #intro_gamification #right_intro li a { - line-height: 22px +#intro_gamification .right_intro .right_intro_btn-contact:before{ + position: absolute; + content:''; + width: 33px; + height: 33px; + background: url(../img/sparks.png) no-repeat; + top: -20px; + right: -27px; } #completion_gamification { - border-top: 1px solid #ffffff; - clear: both + display: flex; + display: -webkit-box; + display: -webkit-flex; + display: -ms-flexbox; + align-items: center; + justify-content: space-between; + margin-top: 20px; + margin-bottom: -11px; + padding: 0 10px; +} + +@media screen and (max-width: 768px){ + #completion_gamification { + flex-direction: column + } } -.gamification_progress-label, .gamification_progress-label_tab { +.gamification_progress-label, +.gamification_progress-label_tab { text-align: center; display: block; top: 3px; font-weight: bold; text-shadow: 1px 1px 0 #fff; position: relative; - z-index: 1000; + z-index: 1; color: #68737f; - font-size: 17px + font-size: 17px; } -#gamification_progress-label { - text-align: center; - display: block; +#completion_gamification .gamification_progress-label { + white-space: nowrap; + margin-left: 10px; } ul.badge_list { @@ -361,7 +482,7 @@ ul.badge_list { li.badge_square { display: block; float: left; - height: 110px; + height: 135px; width: 100px; background-color: transparent; border: none; @@ -447,3 +568,8 @@ li.not_validated { top: 22px !important; transform: translate3d(-328px, 20px, 0px) !important; } + +/* Hide for ps 1.7+ */ +#gamification_notif .icon-chevron-right { + display: none; +} diff --git a/views/img/badges/100_0.png b/views/img/badges/100_0.png index c248485..faa4962 100644 Binary files a/views/img/badges/100_0.png and b/views/img/badges/100_0.png differ diff --git a/views/img/badges/100_1.png b/views/img/badges/100_1.png index 1b0b0f3..a757323 100644 Binary files a/views/img/badges/100_1.png and b/views/img/badges/100_1.png differ diff --git a/views/img/badges/101_0.png b/views/img/badges/101_0.png index 581182c..8c9b09e 100644 Binary files a/views/img/badges/101_0.png and b/views/img/badges/101_0.png differ diff --git a/views/img/badges/101_1.png b/views/img/badges/101_1.png index c01e6db..3ccce66 100644 Binary files a/views/img/badges/101_1.png and b/views/img/badges/101_1.png differ diff --git a/views/img/badges/102_0.png b/views/img/badges/102_0.png index 1fd58f4..6c1a65c 100644 Binary files a/views/img/badges/102_0.png and b/views/img/badges/102_0.png differ diff --git a/views/img/badges/102_1.png b/views/img/badges/102_1.png index 0f724ce..f3ec7da 100644 Binary files a/views/img/badges/102_1.png and b/views/img/badges/102_1.png differ diff --git a/views/img/badges/103_0.png b/views/img/badges/103_0.png index 75c6825..ff6d206 100644 Binary files a/views/img/badges/103_0.png and b/views/img/badges/103_0.png differ diff --git a/views/img/badges/103_1.png b/views/img/badges/103_1.png index 56e278d..d799ed0 100644 Binary files a/views/img/badges/103_1.png and b/views/img/badges/103_1.png differ diff --git a/views/img/badges/104_0.png b/views/img/badges/104_0.png index 863e370..439081e 100644 Binary files a/views/img/badges/104_0.png and b/views/img/badges/104_0.png differ diff --git a/views/img/badges/104_1.png b/views/img/badges/104_1.png index bfb2a3a..859f51b 100644 Binary files a/views/img/badges/104_1.png and b/views/img/badges/104_1.png differ diff --git a/views/img/badges/105_0.png b/views/img/badges/105_0.png index 6a515d7..01838d8 100644 Binary files a/views/img/badges/105_0.png and b/views/img/badges/105_0.png differ diff --git a/views/img/badges/105_1.png b/views/img/badges/105_1.png index 510612b..7dd9eed 100644 Binary files a/views/img/badges/105_1.png and b/views/img/badges/105_1.png differ diff --git a/views/img/badges/106_0.png b/views/img/badges/106_0.png index 562013d..fdf2b87 100644 Binary files a/views/img/badges/106_0.png and b/views/img/badges/106_0.png differ diff --git a/views/img/badges/106_1.png b/views/img/badges/106_1.png index 8b3f73b..abcc888 100644 Binary files a/views/img/badges/106_1.png and b/views/img/badges/106_1.png differ diff --git a/views/img/badges/107_0.png b/views/img/badges/107_0.png index e2c397d..a0d3500 100644 Binary files a/views/img/badges/107_0.png and b/views/img/badges/107_0.png differ diff --git a/views/img/badges/107_1.png b/views/img/badges/107_1.png index b3d7e57..f6b8839 100644 Binary files a/views/img/badges/107_1.png and b/views/img/badges/107_1.png differ diff --git a/views/img/badges/108_0.png b/views/img/badges/108_0.png index 4cfbb79..18e7522 100644 Binary files a/views/img/badges/108_0.png and b/views/img/badges/108_0.png differ diff --git a/views/img/badges/108_1.png b/views/img/badges/108_1.png index 143a2f3..65fffc3 100644 Binary files a/views/img/badges/108_1.png and b/views/img/badges/108_1.png differ diff --git a/views/img/badges/109_0.png b/views/img/badges/109_0.png index ec543f9..00d573d 100644 Binary files a/views/img/badges/109_0.png and b/views/img/badges/109_0.png differ diff --git a/views/img/badges/109_1.png b/views/img/badges/109_1.png index 6e9b872..ee8b3a2 100644 Binary files a/views/img/badges/109_1.png and b/views/img/badges/109_1.png differ diff --git a/views/img/badges/10_0.png b/views/img/badges/10_0.png index 2962410..59ce40e 100644 Binary files a/views/img/badges/10_0.png and b/views/img/badges/10_0.png differ diff --git a/views/img/badges/10_1.png b/views/img/badges/10_1.png index ee66ca8..2ff28b2 100644 Binary files a/views/img/badges/10_1.png and b/views/img/badges/10_1.png differ diff --git a/views/img/badges/110_0.png b/views/img/badges/110_0.png index 2094b05..e739505 100644 Binary files a/views/img/badges/110_0.png and b/views/img/badges/110_0.png differ diff --git a/views/img/badges/110_1.png b/views/img/badges/110_1.png index 6b4458a..cc6d035 100644 Binary files a/views/img/badges/110_1.png and b/views/img/badges/110_1.png differ diff --git a/views/img/badges/111_0.png b/views/img/badges/111_0.png index 36fa8ed..c44376e 100644 Binary files a/views/img/badges/111_0.png and b/views/img/badges/111_0.png differ diff --git a/views/img/badges/111_1.png b/views/img/badges/111_1.png index 3246a02..caac7fb 100644 Binary files a/views/img/badges/111_1.png and b/views/img/badges/111_1.png differ diff --git a/views/img/badges/112_0.png b/views/img/badges/112_0.png index cf2f7b1..50e1bc2 100644 Binary files a/views/img/badges/112_0.png and b/views/img/badges/112_0.png differ diff --git a/views/img/badges/112_1.png b/views/img/badges/112_1.png index a60b3a8..1cda6e4 100644 Binary files a/views/img/badges/112_1.png and b/views/img/badges/112_1.png differ diff --git a/views/img/badges/113_0.png b/views/img/badges/113_0.png index 4a9c0ac..8db9c16 100644 Binary files a/views/img/badges/113_0.png and b/views/img/badges/113_0.png differ diff --git a/views/img/badges/113_1.png b/views/img/badges/113_1.png index ffbfc4c..a9ec2d9 100644 Binary files a/views/img/badges/113_1.png and b/views/img/badges/113_1.png differ diff --git a/views/img/badges/114_0.png b/views/img/badges/114_0.png index 8431636..bd5780d 100644 Binary files a/views/img/badges/114_0.png and b/views/img/badges/114_0.png differ diff --git a/views/img/badges/114_1.png b/views/img/badges/114_1.png index adfff0e..a1df868 100644 Binary files a/views/img/badges/114_1.png and b/views/img/badges/114_1.png differ diff --git a/views/img/badges/115_0.png b/views/img/badges/115_0.png index 23375f9..1a6ac9f 100644 Binary files a/views/img/badges/115_0.png and b/views/img/badges/115_0.png differ diff --git a/views/img/badges/115_1.png b/views/img/badges/115_1.png index c3b3568..785559b 100644 Binary files a/views/img/badges/115_1.png and b/views/img/badges/115_1.png differ diff --git a/views/img/badges/116_0.png b/views/img/badges/116_0.png index 80925c1..dadb31c 100644 Binary files a/views/img/badges/116_0.png and b/views/img/badges/116_0.png differ diff --git a/views/img/badges/116_1.png b/views/img/badges/116_1.png index 6dd9b43..c2c5396 100644 Binary files a/views/img/badges/116_1.png and b/views/img/badges/116_1.png differ diff --git a/views/img/badges/117_0.png b/views/img/badges/117_0.png index b3a52dd..0c156e4 100644 Binary files a/views/img/badges/117_0.png and b/views/img/badges/117_0.png differ diff --git a/views/img/badges/117_1.png b/views/img/badges/117_1.png index bb86c5f..3d40e48 100644 Binary files a/views/img/badges/117_1.png and b/views/img/badges/117_1.png differ diff --git a/views/img/badges/118_0.png b/views/img/badges/118_0.png index 7577102..ee61ae5 100644 Binary files a/views/img/badges/118_0.png and b/views/img/badges/118_0.png differ diff --git a/views/img/badges/118_1.png b/views/img/badges/118_1.png index 9b4ae86..4c88b53 100644 Binary files a/views/img/badges/118_1.png and b/views/img/badges/118_1.png differ diff --git a/views/img/badges/119_0.png b/views/img/badges/119_0.png index f97c689..1c5b59b 100644 Binary files a/views/img/badges/119_0.png and b/views/img/badges/119_0.png differ diff --git a/views/img/badges/119_1.png b/views/img/badges/119_1.png index f436b75..a488f6b 100644 Binary files a/views/img/badges/119_1.png and b/views/img/badges/119_1.png differ diff --git a/views/img/badges/11_0.png b/views/img/badges/11_0.png index 232926b..aa3ceda 100644 Binary files a/views/img/badges/11_0.png and b/views/img/badges/11_0.png differ diff --git a/views/img/badges/11_1.png b/views/img/badges/11_1.png index 0a5c2f3..92da31f 100644 Binary files a/views/img/badges/11_1.png and b/views/img/badges/11_1.png differ diff --git a/views/img/badges/120_0.png b/views/img/badges/120_0.png index 6f132bf..2888226 100644 Binary files a/views/img/badges/120_0.png and b/views/img/badges/120_0.png differ diff --git a/views/img/badges/120_1.png b/views/img/badges/120_1.png index ac18029..6cf0506 100644 Binary files a/views/img/badges/120_1.png and b/views/img/badges/120_1.png differ diff --git a/views/img/badges/121_0.png b/views/img/badges/121_0.png index e9cab3d..8f20c0b 100644 Binary files a/views/img/badges/121_0.png and b/views/img/badges/121_0.png differ diff --git a/views/img/badges/121_1.png b/views/img/badges/121_1.png index f4498ff..3b8ae18 100644 Binary files a/views/img/badges/121_1.png and b/views/img/badges/121_1.png differ diff --git a/views/img/badges/122_0.png b/views/img/badges/122_0.png index e46c1b3..1afdaae 100644 Binary files a/views/img/badges/122_0.png and b/views/img/badges/122_0.png differ diff --git a/views/img/badges/122_1.png b/views/img/badges/122_1.png index a8c322a..f65786c 100644 Binary files a/views/img/badges/122_1.png and b/views/img/badges/122_1.png differ diff --git a/views/img/badges/123_0.png b/views/img/badges/123_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/124_0.png b/views/img/badges/124_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/125_0.png b/views/img/badges/125_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/126_0.png b/views/img/badges/126_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/127_0.png b/views/img/badges/127_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/128_0.png b/views/img/badges/128_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/129_0.png b/views/img/badges/129_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/12_0.png b/views/img/badges/12_0.png index 10519ef..fb99e64 100644 Binary files a/views/img/badges/12_0.png and b/views/img/badges/12_0.png differ diff --git a/views/img/badges/12_1.png b/views/img/badges/12_1.png index 5f742d3..4cd4579 100644 Binary files a/views/img/badges/12_1.png and b/views/img/badges/12_1.png differ diff --git a/views/img/badges/130_0.png b/views/img/badges/130_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/131_0.png b/views/img/badges/131_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/132_0.png b/views/img/badges/132_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/133_0.png b/views/img/badges/133_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/134_0.png b/views/img/badges/134_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/135_0.png b/views/img/badges/135_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/136_0.png b/views/img/badges/136_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/137_0.png b/views/img/badges/137_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/138_0.png b/views/img/badges/138_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/139_0.png b/views/img/badges/139_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/13_0.png b/views/img/badges/13_0.png index 5374279..680a70c 100644 Binary files a/views/img/badges/13_0.png and b/views/img/badges/13_0.png differ diff --git a/views/img/badges/13_1.png b/views/img/badges/13_1.png index 4541cfc..bede77c 100644 Binary files a/views/img/badges/13_1.png and b/views/img/badges/13_1.png differ diff --git a/views/img/badges/140_0.png b/views/img/badges/140_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/141_0.png b/views/img/badges/141_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/142_0.png b/views/img/badges/142_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/143_0.png b/views/img/badges/143_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/144_0.png b/views/img/badges/144_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/145_0.png b/views/img/badges/145_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/146_0.png b/views/img/badges/146_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/147_0.png b/views/img/badges/147_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/148_0.png b/views/img/badges/148_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/149_0.png b/views/img/badges/149_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/14_0.png b/views/img/badges/14_0.png index 64c4080..980fad8 100644 Binary files a/views/img/badges/14_0.png and b/views/img/badges/14_0.png differ diff --git a/views/img/badges/14_1.png b/views/img/badges/14_1.png index 11f6012..a29489b 100644 Binary files a/views/img/badges/14_1.png and b/views/img/badges/14_1.png differ diff --git a/views/img/badges/150_0.png b/views/img/badges/150_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/151_0.png b/views/img/badges/151_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/152_0.png b/views/img/badges/152_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/153_0.png b/views/img/badges/153_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/154_0.png b/views/img/badges/154_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/155_0.png b/views/img/badges/155_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/156_0.png b/views/img/badges/156_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/157_0.png b/views/img/badges/157_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/158_0.png b/views/img/badges/158_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/159_0.png b/views/img/badges/159_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/15_0.png b/views/img/badges/15_0.png index e3d017e..c6fca64 100644 Binary files a/views/img/badges/15_0.png and b/views/img/badges/15_0.png differ diff --git a/views/img/badges/15_1.png b/views/img/badges/15_1.png index 425aec8..370d850 100644 Binary files a/views/img/badges/15_1.png and b/views/img/badges/15_1.png differ diff --git a/views/img/badges/160_0.png b/views/img/badges/160_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/161_0.png b/views/img/badges/161_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/162_0.png b/views/img/badges/162_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/163_0.png b/views/img/badges/163_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/164_0.png b/views/img/badges/164_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/165_0.png b/views/img/badges/165_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/166_0.png b/views/img/badges/166_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/167_0.png b/views/img/badges/167_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/168_0.png b/views/img/badges/168_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/169_0.png b/views/img/badges/169_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/16_0.png b/views/img/badges/16_0.png index cf79fa1..612cd08 100644 Binary files a/views/img/badges/16_0.png and b/views/img/badges/16_0.png differ diff --git a/views/img/badges/16_1.png b/views/img/badges/16_1.png index ffbdc6c..2bc1f6d 100644 Binary files a/views/img/badges/16_1.png and b/views/img/badges/16_1.png differ diff --git a/views/img/badges/170_0.png b/views/img/badges/170_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/171_0.png b/views/img/badges/171_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/172_0.png b/views/img/badges/172_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/173_0.png b/views/img/badges/173_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/174_0.png b/views/img/badges/174_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/175_0.png b/views/img/badges/175_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/176_0.png b/views/img/badges/176_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/177_0.png b/views/img/badges/177_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/178_0.png b/views/img/badges/178_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/179_0.png b/views/img/badges/179_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/17_0.png b/views/img/badges/17_0.png index f762d98..a79132d 100644 Binary files a/views/img/badges/17_0.png and b/views/img/badges/17_0.png differ diff --git a/views/img/badges/17_1.png b/views/img/badges/17_1.png index 26890b0..7c62e48 100644 Binary files a/views/img/badges/17_1.png and b/views/img/badges/17_1.png differ diff --git a/views/img/badges/180_0.png b/views/img/badges/180_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/181_0.png b/views/img/badges/181_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/182_0.png b/views/img/badges/182_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/183_0.png b/views/img/badges/183_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/184_0.png b/views/img/badges/184_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/185_0.png b/views/img/badges/185_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/186_0.png b/views/img/badges/186_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/187_0.png b/views/img/badges/187_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/188_0.png b/views/img/badges/188_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/189_0.png b/views/img/badges/189_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/18_0.png b/views/img/badges/18_0.png index 21724ae..6d15e06 100644 Binary files a/views/img/badges/18_0.png and b/views/img/badges/18_0.png differ diff --git a/views/img/badges/18_1.png b/views/img/badges/18_1.png index f56e59d..96a5265 100644 Binary files a/views/img/badges/18_1.png and b/views/img/badges/18_1.png differ diff --git a/views/img/badges/190_0.png b/views/img/badges/190_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/191_0.png b/views/img/badges/191_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/192_0.png b/views/img/badges/192_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/193_0.png b/views/img/badges/193_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/194_0.png b/views/img/badges/194_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/195_0.png b/views/img/badges/195_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/196_0.png b/views/img/badges/196_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/197_0.png b/views/img/badges/197_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/198_0.png b/views/img/badges/198_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/199_0.png b/views/img/badges/199_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/19_0.png b/views/img/badges/19_0.png index 9895f3f..690f180 100644 Binary files a/views/img/badges/19_0.png and b/views/img/badges/19_0.png differ diff --git a/views/img/badges/19_1.png b/views/img/badges/19_1.png index 0e3f9c5..21ddebf 100644 Binary files a/views/img/badges/19_1.png and b/views/img/badges/19_1.png differ diff --git a/views/img/badges/1_0.png b/views/img/badges/1_0.png index 47191bd..fe9581b 100644 Binary files a/views/img/badges/1_0.png and b/views/img/badges/1_0.png differ diff --git a/views/img/badges/1_1.png b/views/img/badges/1_1.png index a6f0dca..461d642 100644 Binary files a/views/img/badges/1_1.png and b/views/img/badges/1_1.png differ diff --git a/views/img/badges/200_0.png b/views/img/badges/200_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/201_0.png b/views/img/badges/201_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/202_0.png b/views/img/badges/202_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/203_0.png b/views/img/badges/203_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/204_0.png b/views/img/badges/204_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/205_0.png b/views/img/badges/205_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/206_0.png b/views/img/badges/206_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/207_0.png b/views/img/badges/207_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/208_0.png b/views/img/badges/208_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/209_0.png b/views/img/badges/209_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/20_0.png b/views/img/badges/20_0.png index e17418e..2838062 100644 Binary files a/views/img/badges/20_0.png and b/views/img/badges/20_0.png differ diff --git a/views/img/badges/20_1.png b/views/img/badges/20_1.png index 825945b..c6dc3a7 100644 Binary files a/views/img/badges/20_1.png and b/views/img/badges/20_1.png differ diff --git a/views/img/badges/210_0.png b/views/img/badges/210_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/211_0.png b/views/img/badges/211_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/212_0.png b/views/img/badges/212_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/213_0.png b/views/img/badges/213_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/214_0.png b/views/img/badges/214_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/215_0.png b/views/img/badges/215_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/216_0.png b/views/img/badges/216_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/217_0.png b/views/img/badges/217_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/218_0.png b/views/img/badges/218_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/219_0.png b/views/img/badges/219_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/21_0.png b/views/img/badges/21_0.png index f8339d5..a9c534c 100644 Binary files a/views/img/badges/21_0.png and b/views/img/badges/21_0.png differ diff --git a/views/img/badges/21_1.png b/views/img/badges/21_1.png index 12d5f2f..5f403bd 100644 Binary files a/views/img/badges/21_1.png and b/views/img/badges/21_1.png differ diff --git a/views/img/badges/220_0.png b/views/img/badges/220_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/221_0.png b/views/img/badges/221_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/222_0.png b/views/img/badges/222_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/223_0.png b/views/img/badges/223_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/224_0.png b/views/img/badges/224_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/225_0.png b/views/img/badges/225_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/226_0.png b/views/img/badges/226_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/227_0.png b/views/img/badges/227_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/228_0.png b/views/img/badges/228_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/229_0.png b/views/img/badges/229_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/22_0.png b/views/img/badges/22_0.png index 81301b8..36b366b 100644 Binary files a/views/img/badges/22_0.png and b/views/img/badges/22_0.png differ diff --git a/views/img/badges/22_1.png b/views/img/badges/22_1.png index 517e255..cfdcb0e 100644 Binary files a/views/img/badges/22_1.png and b/views/img/badges/22_1.png differ diff --git a/views/img/badges/230_0.png b/views/img/badges/230_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/231_0.png b/views/img/badges/231_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/232_0.png b/views/img/badges/232_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/233_0.png b/views/img/badges/233_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/234_0.png b/views/img/badges/234_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/235_0.png b/views/img/badges/235_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/236_0.png b/views/img/badges/236_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/23_0.png b/views/img/badges/23_0.png index a7faed2..3093b81 100644 Binary files a/views/img/badges/23_0.png and b/views/img/badges/23_0.png differ diff --git a/views/img/badges/23_1.png b/views/img/badges/23_1.png index 3956f94..abdd878 100644 Binary files a/views/img/badges/23_1.png and b/views/img/badges/23_1.png differ diff --git a/views/img/badges/241_0.png b/views/img/badges/241_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/242_0.png b/views/img/badges/242_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/243_0.png b/views/img/badges/243_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/244_0.png b/views/img/badges/244_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/249_0.png b/views/img/badges/249_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/24_0.png b/views/img/badges/24_0.png index 9432600..08d56c5 100644 Binary files a/views/img/badges/24_0.png and b/views/img/badges/24_0.png differ diff --git a/views/img/badges/24_1.png b/views/img/badges/24_1.png index 7db7348..1a71aa2 100644 Binary files a/views/img/badges/24_1.png and b/views/img/badges/24_1.png differ diff --git a/views/img/badges/250_0.png b/views/img/badges/250_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/251_0.png b/views/img/badges/251_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/252_0.png b/views/img/badges/252_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/253_0.png b/views/img/badges/253_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/254_0.png b/views/img/badges/254_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/255_0.png b/views/img/badges/255_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/256_0.png b/views/img/badges/256_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/25_0.png b/views/img/badges/25_0.png index 4a02609..a6e60bc 100644 Binary files a/views/img/badges/25_0.png and b/views/img/badges/25_0.png differ diff --git a/views/img/badges/25_1.png b/views/img/badges/25_1.png index 23b10d7..ec2a6ae 100644 Binary files a/views/img/badges/25_1.png and b/views/img/badges/25_1.png differ diff --git a/views/img/badges/261_0.png b/views/img/badges/261_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/262_0.png b/views/img/badges/262_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/263_0.png b/views/img/badges/263_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/264_0.png b/views/img/badges/264_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/269_0.png b/views/img/badges/269_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/26_0.png b/views/img/badges/26_0.png index 20548e1..6ddd79d 100644 Binary files a/views/img/badges/26_0.png and b/views/img/badges/26_0.png differ diff --git a/views/img/badges/26_1.png b/views/img/badges/26_1.png index b8be6fe..6ef70be 100644 Binary files a/views/img/badges/26_1.png and b/views/img/badges/26_1.png differ diff --git a/views/img/badges/270_0.png b/views/img/badges/270_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/271_0.png b/views/img/badges/271_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/272_0.png b/views/img/badges/272_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/273_0.png b/views/img/badges/273_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/274_0.png b/views/img/badges/274_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/275_0.png b/views/img/badges/275_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/276_0.png b/views/img/badges/276_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/277_0.png b/views/img/badges/277_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/278_0.png b/views/img/badges/278_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/279_0.png b/views/img/badges/279_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/27_0.png b/views/img/badges/27_0.png index 8820e11..5931710 100644 Binary files a/views/img/badges/27_0.png and b/views/img/badges/27_0.png differ diff --git a/views/img/badges/27_1.png b/views/img/badges/27_1.png index 8120d52..a6af9aa 100644 Binary files a/views/img/badges/27_1.png and b/views/img/badges/27_1.png differ diff --git a/views/img/badges/280_0.png b/views/img/badges/280_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/281_0.png b/views/img/badges/281_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/282_0.png b/views/img/badges/282_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/283_0.png b/views/img/badges/283_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/284_0.png b/views/img/badges/284_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/285_0.png b/views/img/badges/285_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/286_0.png b/views/img/badges/286_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/287_0.png b/views/img/badges/287_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/288_0.png b/views/img/badges/288_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/289_0.png b/views/img/badges/289_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/28_0.png b/views/img/badges/28_0.png index 2ca7804..ef2c33e 100644 Binary files a/views/img/badges/28_0.png and b/views/img/badges/28_0.png differ diff --git a/views/img/badges/28_1.png b/views/img/badges/28_1.png index fdfc0d1..8952e3b 100644 Binary files a/views/img/badges/28_1.png and b/views/img/badges/28_1.png differ diff --git a/views/img/badges/290_0.png b/views/img/badges/290_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/291_0.png b/views/img/badges/291_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/292_0.png b/views/img/badges/292_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/293_0.png b/views/img/badges/293_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/294_0.png b/views/img/badges/294_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/295_0.png b/views/img/badges/295_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/296_0.png b/views/img/badges/296_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/297_0.png b/views/img/badges/297_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/298_0.png b/views/img/badges/298_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/299_0.png b/views/img/badges/299_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/29_0.png b/views/img/badges/29_0.png index 0174390..2fee7aa 100644 Binary files a/views/img/badges/29_0.png and b/views/img/badges/29_0.png differ diff --git a/views/img/badges/29_1.png b/views/img/badges/29_1.png index 113d615..7a11711 100644 Binary files a/views/img/badges/29_1.png and b/views/img/badges/29_1.png differ diff --git a/views/img/badges/2_0.png b/views/img/badges/2_0.png index fceb347..9e78ea4 100644 Binary files a/views/img/badges/2_0.png and b/views/img/badges/2_0.png differ diff --git a/views/img/badges/2_1.png b/views/img/badges/2_1.png index 40626ff..910acca 100644 Binary files a/views/img/badges/2_1.png and b/views/img/badges/2_1.png differ diff --git a/views/img/badges/300_0.png b/views/img/badges/300_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/301_0.png b/views/img/badges/301_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/302_0.png b/views/img/badges/302_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/303_0.png b/views/img/badges/303_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/304_0.png b/views/img/badges/304_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/305_0.png b/views/img/badges/305_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/306_0.png b/views/img/badges/306_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/307_0.png b/views/img/badges/307_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/308_0.png b/views/img/badges/308_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/309_0.png b/views/img/badges/309_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/309_1.png b/views/img/badges/309_1.png old mode 100755 new mode 100644 diff --git a/views/img/badges/30_0.png b/views/img/badges/30_0.png index 76a88c7..5930692 100644 Binary files a/views/img/badges/30_0.png and b/views/img/badges/30_0.png differ diff --git a/views/img/badges/30_1.png b/views/img/badges/30_1.png index 442164b..4e7f38e 100644 Binary files a/views/img/badges/30_1.png and b/views/img/badges/30_1.png differ diff --git a/views/img/badges/310_0.png b/views/img/badges/310_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/311_0.png b/views/img/badges/311_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/312_0.png b/views/img/badges/312_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/313_0.png b/views/img/badges/313_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/314_0.png b/views/img/badges/314_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/315_0.png b/views/img/badges/315_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/316_0.png b/views/img/badges/316_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/317_0.png b/views/img/badges/317_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/318_0.png b/views/img/badges/318_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/319_0.png b/views/img/badges/319_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/31_0.png b/views/img/badges/31_0.png index 5f2be12..6957861 100644 Binary files a/views/img/badges/31_0.png and b/views/img/badges/31_0.png differ diff --git a/views/img/badges/31_1.png b/views/img/badges/31_1.png index c7f08b9..db21c5f 100644 Binary files a/views/img/badges/31_1.png and b/views/img/badges/31_1.png differ diff --git a/views/img/badges/320_0.png b/views/img/badges/320_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/321_0.png b/views/img/badges/321_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/322_0.png b/views/img/badges/322_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/323_0.png b/views/img/badges/323_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/324_0.png b/views/img/badges/324_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/325_0.png b/views/img/badges/325_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/326_0.png b/views/img/badges/326_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/327_0.png b/views/img/badges/327_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/328_0.png b/views/img/badges/328_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/329_0.png b/views/img/badges/329_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/32_0.png b/views/img/badges/32_0.png index 539381d..267224a 100644 Binary files a/views/img/badges/32_0.png and b/views/img/badges/32_0.png differ diff --git a/views/img/badges/32_1.png b/views/img/badges/32_1.png index 06ac08c..53632bc 100644 Binary files a/views/img/badges/32_1.png and b/views/img/badges/32_1.png differ diff --git a/views/img/badges/330_0.png b/views/img/badges/330_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/331_0.png b/views/img/badges/331_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/332_0.png b/views/img/badges/332_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/333_0.png b/views/img/badges/333_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/333_1.png b/views/img/badges/333_1.png old mode 100755 new mode 100644 diff --git a/views/img/badges/334_0.png b/views/img/badges/334_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/335_0.png b/views/img/badges/335_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/336_0.png b/views/img/badges/336_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/337_0.png b/views/img/badges/337_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/338_0.png b/views/img/badges/338_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/339_0.png b/views/img/badges/339_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/33_0.png b/views/img/badges/33_0.png index c0683ed..73457a9 100644 Binary files a/views/img/badges/33_0.png and b/views/img/badges/33_0.png differ diff --git a/views/img/badges/33_1.png b/views/img/badges/33_1.png index 6b7cd1b..521698b 100644 Binary files a/views/img/badges/33_1.png and b/views/img/badges/33_1.png differ diff --git a/views/img/badges/340_0.png b/views/img/badges/340_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/341_0.png b/views/img/badges/341_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/342_0.png b/views/img/badges/342_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/343_0.png b/views/img/badges/343_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/344_0.png b/views/img/badges/344_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/345_0.png b/views/img/badges/345_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/346_0.png b/views/img/badges/346_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/347_0.png b/views/img/badges/347_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/348_0.png b/views/img/badges/348_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/349_0.png b/views/img/badges/349_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/349_1.png b/views/img/badges/349_1.png old mode 100755 new mode 100644 diff --git a/views/img/badges/34_0.png b/views/img/badges/34_0.png index 18ef9eb..70d50a4 100644 Binary files a/views/img/badges/34_0.png and b/views/img/badges/34_0.png differ diff --git a/views/img/badges/34_1.png b/views/img/badges/34_1.png index a0fff38..9f4d698 100644 Binary files a/views/img/badges/34_1.png and b/views/img/badges/34_1.png differ diff --git a/views/img/badges/350_0.png b/views/img/badges/350_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/351_0.png b/views/img/badges/351_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/352_0.png b/views/img/badges/352_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/353_0.png b/views/img/badges/353_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/354_0.png b/views/img/badges/354_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/355_0.png b/views/img/badges/355_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/356_0.png b/views/img/badges/356_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/357_0.png b/views/img/badges/357_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/357_1.png b/views/img/badges/357_1.png old mode 100755 new mode 100644 diff --git a/views/img/badges/358_0.png b/views/img/badges/358_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/359_0.png b/views/img/badges/359_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/35_0.png b/views/img/badges/35_0.png index 5950419..b8a0460 100644 Binary files a/views/img/badges/35_0.png and b/views/img/badges/35_0.png differ diff --git a/views/img/badges/35_1.png b/views/img/badges/35_1.png index 2013957..8fb370f 100644 Binary files a/views/img/badges/35_1.png and b/views/img/badges/35_1.png differ diff --git a/views/img/badges/360_0.png b/views/img/badges/360_0.png old mode 100755 new mode 100644 diff --git a/views/img/badges/36_0.png b/views/img/badges/36_0.png index abf3d84..32386d3 100644 Binary files a/views/img/badges/36_0.png and b/views/img/badges/36_0.png differ diff --git a/views/img/badges/36_1.png b/views/img/badges/36_1.png index 4e6550c..ddf94b5 100644 Binary files a/views/img/badges/36_1.png and b/views/img/badges/36_1.png differ diff --git a/views/img/badges/37_0.png b/views/img/badges/37_0.png index 5462ad3..4f4007a 100644 Binary files a/views/img/badges/37_0.png and b/views/img/badges/37_0.png differ diff --git a/views/img/badges/37_1.png b/views/img/badges/37_1.png index bc7ae3f..7dc92aa 100644 Binary files a/views/img/badges/37_1.png and b/views/img/badges/37_1.png differ diff --git a/views/img/badges/38_0.png b/views/img/badges/38_0.png index ffc5b76..b1cc960 100644 Binary files a/views/img/badges/38_0.png and b/views/img/badges/38_0.png differ diff --git a/views/img/badges/38_1.png b/views/img/badges/38_1.png index 05d0f5f..ed87175 100644 Binary files a/views/img/badges/38_1.png and b/views/img/badges/38_1.png differ diff --git a/views/img/badges/39_0.png b/views/img/badges/39_0.png index 56f93f5..79db167 100644 Binary files a/views/img/badges/39_0.png and b/views/img/badges/39_0.png differ diff --git a/views/img/badges/39_1.png b/views/img/badges/39_1.png index d08521f..8cf1ad2 100644 Binary files a/views/img/badges/39_1.png and b/views/img/badges/39_1.png differ diff --git a/views/img/badges/3_0.png b/views/img/badges/3_0.png index 8038343..383bad0 100644 Binary files a/views/img/badges/3_0.png and b/views/img/badges/3_0.png differ diff --git a/views/img/badges/3_1.png b/views/img/badges/3_1.png index 1a1677d..9025166 100644 Binary files a/views/img/badges/3_1.png and b/views/img/badges/3_1.png differ diff --git a/views/img/badges/40_0.png b/views/img/badges/40_0.png index d8c37cc..ab1b29e 100644 Binary files a/views/img/badges/40_0.png and b/views/img/badges/40_0.png differ diff --git a/views/img/badges/40_1.png b/views/img/badges/40_1.png index eb1fc37..4bd9572 100644 Binary files a/views/img/badges/40_1.png and b/views/img/badges/40_1.png differ diff --git a/views/img/badges/41_0.png b/views/img/badges/41_0.png index 7c1f7ca..2113dc3 100644 Binary files a/views/img/badges/41_0.png and b/views/img/badges/41_0.png differ diff --git a/views/img/badges/41_1.png b/views/img/badges/41_1.png index 3af30a2..f2c9ddf 100644 Binary files a/views/img/badges/41_1.png and b/views/img/badges/41_1.png differ diff --git a/views/img/badges/42_0.png b/views/img/badges/42_0.png index 91354eb..016d0c6 100644 Binary files a/views/img/badges/42_0.png and b/views/img/badges/42_0.png differ diff --git a/views/img/badges/42_1.png b/views/img/badges/42_1.png index eb27073..46887c3 100644 Binary files a/views/img/badges/42_1.png and b/views/img/badges/42_1.png differ diff --git a/views/img/badges/43_0.png b/views/img/badges/43_0.png index d8210b3..22bebb4 100644 Binary files a/views/img/badges/43_0.png and b/views/img/badges/43_0.png differ diff --git a/views/img/badges/43_1.png b/views/img/badges/43_1.png index 15f249c..0907e59 100644 Binary files a/views/img/badges/43_1.png and b/views/img/badges/43_1.png differ diff --git a/views/img/badges/44_0.png b/views/img/badges/44_0.png index cc21ceb..6e65ae1 100644 Binary files a/views/img/badges/44_0.png and b/views/img/badges/44_0.png differ diff --git a/views/img/badges/44_1.png b/views/img/badges/44_1.png index 049df96..659e1cb 100644 Binary files a/views/img/badges/44_1.png and b/views/img/badges/44_1.png differ diff --git a/views/img/badges/45_0.png b/views/img/badges/45_0.png index 24d8c6d..0d4008f 100644 Binary files a/views/img/badges/45_0.png and b/views/img/badges/45_0.png differ diff --git a/views/img/badges/45_1.png b/views/img/badges/45_1.png index 37bea25..71247da 100644 Binary files a/views/img/badges/45_1.png and b/views/img/badges/45_1.png differ diff --git a/views/img/badges/46_0.png b/views/img/badges/46_0.png index eb6719c..a8ab0ec 100644 Binary files a/views/img/badges/46_0.png and b/views/img/badges/46_0.png differ diff --git a/views/img/badges/46_1.png b/views/img/badges/46_1.png index 3f62e7a..4a7a6c4 100644 Binary files a/views/img/badges/46_1.png and b/views/img/badges/46_1.png differ diff --git a/views/img/badges/47_0.png b/views/img/badges/47_0.png index 9c09cd2..1d80bd5 100644 Binary files a/views/img/badges/47_0.png and b/views/img/badges/47_0.png differ diff --git a/views/img/badges/47_1.png b/views/img/badges/47_1.png index 1bdfd8a..7441942 100644 Binary files a/views/img/badges/47_1.png and b/views/img/badges/47_1.png differ diff --git a/views/img/badges/48_0.png b/views/img/badges/48_0.png index 984d4e9..a8a5b3f 100644 Binary files a/views/img/badges/48_0.png and b/views/img/badges/48_0.png differ diff --git a/views/img/badges/48_1.png b/views/img/badges/48_1.png index c1dfa4e..d7fdd28 100644 Binary files a/views/img/badges/48_1.png and b/views/img/badges/48_1.png differ diff --git a/views/img/badges/49_0.png b/views/img/badges/49_0.png index 6e660e0..7f26e78 100644 Binary files a/views/img/badges/49_0.png and b/views/img/badges/49_0.png differ diff --git a/views/img/badges/49_1.png b/views/img/badges/49_1.png index ea3b18d..604fc88 100644 Binary files a/views/img/badges/49_1.png and b/views/img/badges/49_1.png differ diff --git a/views/img/badges/4_0.png b/views/img/badges/4_0.png index 7c7ea30..963e449 100644 Binary files a/views/img/badges/4_0.png and b/views/img/badges/4_0.png differ diff --git a/views/img/badges/4_1.png b/views/img/badges/4_1.png index 54a2022..0b8e779 100644 Binary files a/views/img/badges/4_1.png and b/views/img/badges/4_1.png differ diff --git a/views/img/badges/50_0.png b/views/img/badges/50_0.png index 6892eab..d6deda6 100644 Binary files a/views/img/badges/50_0.png and b/views/img/badges/50_0.png differ diff --git a/views/img/badges/50_1.png b/views/img/badges/50_1.png index 04224be..12c4c4b 100644 Binary files a/views/img/badges/50_1.png and b/views/img/badges/50_1.png differ diff --git a/views/img/badges/51_0.png b/views/img/badges/51_0.png index 7393281..190078f 100644 Binary files a/views/img/badges/51_0.png and b/views/img/badges/51_0.png differ diff --git a/views/img/badges/51_1.png b/views/img/badges/51_1.png index 4ffb1f0..3f42532 100644 Binary files a/views/img/badges/51_1.png and b/views/img/badges/51_1.png differ diff --git a/views/img/badges/52_0.png b/views/img/badges/52_0.png index 20127e6..2ad4d76 100644 Binary files a/views/img/badges/52_0.png and b/views/img/badges/52_0.png differ diff --git a/views/img/badges/52_1.png b/views/img/badges/52_1.png index 117c40c..b03e2bf 100644 Binary files a/views/img/badges/52_1.png and b/views/img/badges/52_1.png differ diff --git a/views/img/badges/53_0.png b/views/img/badges/53_0.png index a2cf1f4..c70bc94 100644 Binary files a/views/img/badges/53_0.png and b/views/img/badges/53_0.png differ diff --git a/views/img/badges/53_1.png b/views/img/badges/53_1.png index 6f075cc..c0486d6 100644 Binary files a/views/img/badges/53_1.png and b/views/img/badges/53_1.png differ diff --git a/views/img/badges/54_0.png b/views/img/badges/54_0.png index 567c8a1..faaa833 100644 Binary files a/views/img/badges/54_0.png and b/views/img/badges/54_0.png differ diff --git a/views/img/badges/54_1.png b/views/img/badges/54_1.png index f24a80d..ff00002 100644 Binary files a/views/img/badges/54_1.png and b/views/img/badges/54_1.png differ diff --git a/views/img/badges/55_0.png b/views/img/badges/55_0.png index 1b34362..c631226 100644 Binary files a/views/img/badges/55_0.png and b/views/img/badges/55_0.png differ diff --git a/views/img/badges/55_1.png b/views/img/badges/55_1.png index 180aea2..c6e86c7 100644 Binary files a/views/img/badges/55_1.png and b/views/img/badges/55_1.png differ diff --git a/views/img/badges/56_0.png b/views/img/badges/56_0.png index 3b8bf3b..e0cef45 100644 Binary files a/views/img/badges/56_0.png and b/views/img/badges/56_0.png differ diff --git a/views/img/badges/56_1.png b/views/img/badges/56_1.png index 9486292..87938c5 100644 Binary files a/views/img/badges/56_1.png and b/views/img/badges/56_1.png differ diff --git a/views/img/badges/57_0.png b/views/img/badges/57_0.png index 7b42da0..f812d52 100644 Binary files a/views/img/badges/57_0.png and b/views/img/badges/57_0.png differ diff --git a/views/img/badges/57_1.png b/views/img/badges/57_1.png index e60579b..3978ea5 100644 Binary files a/views/img/badges/57_1.png and b/views/img/badges/57_1.png differ diff --git a/views/img/badges/58_0.png b/views/img/badges/58_0.png index 5baad55..6500cdf 100644 Binary files a/views/img/badges/58_0.png and b/views/img/badges/58_0.png differ diff --git a/views/img/badges/58_1.png b/views/img/badges/58_1.png index bca005c..bca1613 100644 Binary files a/views/img/badges/58_1.png and b/views/img/badges/58_1.png differ diff --git a/views/img/badges/59_0.png b/views/img/badges/59_0.png index cb5ebeb..c3852bd 100644 Binary files a/views/img/badges/59_0.png and b/views/img/badges/59_0.png differ diff --git a/views/img/badges/59_1.png b/views/img/badges/59_1.png index 68620c2..852c153 100644 Binary files a/views/img/badges/59_1.png and b/views/img/badges/59_1.png differ diff --git a/views/img/badges/5_0.png b/views/img/badges/5_0.png index 1f11ffc..9df4137 100644 Binary files a/views/img/badges/5_0.png and b/views/img/badges/5_0.png differ diff --git a/views/img/badges/5_1.png b/views/img/badges/5_1.png index b98c331..d0e295f 100644 Binary files a/views/img/badges/5_1.png and b/views/img/badges/5_1.png differ diff --git a/views/img/badges/60_0.png b/views/img/badges/60_0.png index 4984b32..dcb5853 100644 Binary files a/views/img/badges/60_0.png and b/views/img/badges/60_0.png differ diff --git a/views/img/badges/60_1.png b/views/img/badges/60_1.png index a222adf..cf7dbb0 100644 Binary files a/views/img/badges/60_1.png and b/views/img/badges/60_1.png differ diff --git a/views/img/badges/61_0.png b/views/img/badges/61_0.png index 88f1894..9c1a490 100644 Binary files a/views/img/badges/61_0.png and b/views/img/badges/61_0.png differ diff --git a/views/img/badges/61_1.png b/views/img/badges/61_1.png index 3788e9f..de666b1 100644 Binary files a/views/img/badges/61_1.png and b/views/img/badges/61_1.png differ diff --git a/views/img/badges/62_0.png b/views/img/badges/62_0.png index 06b7772..ca3b7e8 100644 Binary files a/views/img/badges/62_0.png and b/views/img/badges/62_0.png differ diff --git a/views/img/badges/62_1.png b/views/img/badges/62_1.png index 4b8f019..ed5c186 100644 Binary files a/views/img/badges/62_1.png and b/views/img/badges/62_1.png differ diff --git a/views/img/badges/63_0.png b/views/img/badges/63_0.png index 3794cb1..324b4fb 100644 Binary files a/views/img/badges/63_0.png and b/views/img/badges/63_0.png differ diff --git a/views/img/badges/63_1.png b/views/img/badges/63_1.png index 9f05ef0..8a60e2e 100644 Binary files a/views/img/badges/63_1.png and b/views/img/badges/63_1.png differ diff --git a/views/img/badges/64_0.png b/views/img/badges/64_0.png index f61c6a3..5b246f3 100644 Binary files a/views/img/badges/64_0.png and b/views/img/badges/64_0.png differ diff --git a/views/img/badges/64_1.png b/views/img/badges/64_1.png index 7c2b3e7..db497a9 100644 Binary files a/views/img/badges/64_1.png and b/views/img/badges/64_1.png differ diff --git a/views/img/badges/65_0.png b/views/img/badges/65_0.png index 7fd9c02..14678f6 100644 Binary files a/views/img/badges/65_0.png and b/views/img/badges/65_0.png differ diff --git a/views/img/badges/65_1.png b/views/img/badges/65_1.png index 40f0e25..69f7f07 100644 Binary files a/views/img/badges/65_1.png and b/views/img/badges/65_1.png differ diff --git a/views/img/badges/66_0.png b/views/img/badges/66_0.png index 72882ff..8084c6f 100644 Binary files a/views/img/badges/66_0.png and b/views/img/badges/66_0.png differ diff --git a/views/img/badges/66_1.png b/views/img/badges/66_1.png index 76dd2f7..3ee2f0d 100644 Binary files a/views/img/badges/66_1.png and b/views/img/badges/66_1.png differ diff --git a/views/img/badges/67_0.png b/views/img/badges/67_0.png index 912e18e..bc8b0b7 100644 Binary files a/views/img/badges/67_0.png and b/views/img/badges/67_0.png differ diff --git a/views/img/badges/67_1.png b/views/img/badges/67_1.png index f0813cb..ce4d791 100644 Binary files a/views/img/badges/67_1.png and b/views/img/badges/67_1.png differ diff --git a/views/img/badges/68_0.png b/views/img/badges/68_0.png index 1477b87..c979d99 100644 Binary files a/views/img/badges/68_0.png and b/views/img/badges/68_0.png differ diff --git a/views/img/badges/68_1.png b/views/img/badges/68_1.png index ea110aa..1413413 100644 Binary files a/views/img/badges/68_1.png and b/views/img/badges/68_1.png differ diff --git a/views/img/badges/6_0.png b/views/img/badges/6_0.png index 680ed66..e7e6f5c 100644 Binary files a/views/img/badges/6_0.png and b/views/img/badges/6_0.png differ diff --git a/views/img/badges/6_1.png b/views/img/badges/6_1.png index 7d80638..0c076f2 100644 Binary files a/views/img/badges/6_1.png and b/views/img/badges/6_1.png differ diff --git a/views/img/badges/74_0.png b/views/img/badges/74_0.png index ca9b783..e442f73 100644 Binary files a/views/img/badges/74_0.png and b/views/img/badges/74_0.png differ diff --git a/views/img/badges/74_1.png b/views/img/badges/74_1.png index 95696ad..2a6d83d 100644 Binary files a/views/img/badges/74_1.png and b/views/img/badges/74_1.png differ diff --git a/views/img/badges/75_0.png b/views/img/badges/75_0.png index 6ed3e39..e442f73 100644 Binary files a/views/img/badges/75_0.png and b/views/img/badges/75_0.png differ diff --git a/views/img/badges/75_1.png b/views/img/badges/75_1.png index c9586bc..d5760c9 100644 Binary files a/views/img/badges/75_1.png and b/views/img/badges/75_1.png differ diff --git a/views/img/badges/7_0.png b/views/img/badges/7_0.png index b971905..b59682c 100644 Binary files a/views/img/badges/7_0.png and b/views/img/badges/7_0.png differ diff --git a/views/img/badges/7_1.png b/views/img/badges/7_1.png index c2c8cd6..96ccefb 100644 Binary files a/views/img/badges/7_1.png and b/views/img/badges/7_1.png differ diff --git a/views/img/badges/83_0.png b/views/img/badges/83_0.png index 97e25c8..e442f73 100644 Binary files a/views/img/badges/83_0.png and b/views/img/badges/83_0.png differ diff --git a/views/img/badges/83_1.png b/views/img/badges/83_1.png index d166814..f9e18f5 100644 Binary files a/views/img/badges/83_1.png and b/views/img/badges/83_1.png differ diff --git a/views/img/badges/84_0.png b/views/img/badges/84_0.png index ca9b783..e442f73 100644 Binary files a/views/img/badges/84_0.png and b/views/img/badges/84_0.png differ diff --git a/views/img/badges/84_1.png b/views/img/badges/84_1.png index 95696ad..d1012e1 100644 Binary files a/views/img/badges/84_1.png and b/views/img/badges/84_1.png differ diff --git a/views/img/badges/85_0.png b/views/img/badges/85_0.png index 4ee9957..e442f73 100644 Binary files a/views/img/badges/85_0.png and b/views/img/badges/85_0.png differ diff --git a/views/img/badges/85_1.png b/views/img/badges/85_1.png index b3e03bf..a99f5f5 100644 Binary files a/views/img/badges/85_1.png and b/views/img/badges/85_1.png differ diff --git a/views/img/badges/86_0.png b/views/img/badges/86_0.png index d30c2be..e442f73 100644 Binary files a/views/img/badges/86_0.png and b/views/img/badges/86_0.png differ diff --git a/views/img/badges/86_1.png b/views/img/badges/86_1.png index 3b8863a..eb69687 100644 Binary files a/views/img/badges/86_1.png and b/views/img/badges/86_1.png differ diff --git a/views/img/badges/87_0.png b/views/img/badges/87_0.png index d30c2be..e442f73 100644 Binary files a/views/img/badges/87_0.png and b/views/img/badges/87_0.png differ diff --git a/views/img/badges/87_1.png b/views/img/badges/87_1.png index 3b8863a..e080d6e 100644 Binary files a/views/img/badges/87_1.png and b/views/img/badges/87_1.png differ diff --git a/views/img/badges/88_0.png b/views/img/badges/88_0.png index d1f0bb6..e50a5bc 100644 Binary files a/views/img/badges/88_0.png and b/views/img/badges/88_0.png differ diff --git a/views/img/badges/88_1.png b/views/img/badges/88_1.png index 66ab0ed..209d0e4 100644 Binary files a/views/img/badges/88_1.png and b/views/img/badges/88_1.png differ diff --git a/views/img/badges/89_0.png b/views/img/badges/89_0.png index 6c92b97..e4b7b14 100644 Binary files a/views/img/badges/89_0.png and b/views/img/badges/89_0.png differ diff --git a/views/img/badges/89_1.png b/views/img/badges/89_1.png index 50d8e95..a1cafa1 100644 Binary files a/views/img/badges/89_1.png and b/views/img/badges/89_1.png differ diff --git a/views/img/badges/8_0.png b/views/img/badges/8_0.png index b891809..7ee7f99 100644 Binary files a/views/img/badges/8_0.png and b/views/img/badges/8_0.png differ diff --git a/views/img/badges/8_1.png b/views/img/badges/8_1.png index 1da0cd8..d298e0d 100644 Binary files a/views/img/badges/8_1.png and b/views/img/badges/8_1.png differ diff --git a/views/img/badges/90_0.png b/views/img/badges/90_0.png index e872368..c78e94c 100644 Binary files a/views/img/badges/90_0.png and b/views/img/badges/90_0.png differ diff --git a/views/img/badges/90_1.png b/views/img/badges/90_1.png index ce709cd..7d2c807 100644 Binary files a/views/img/badges/90_1.png and b/views/img/badges/90_1.png differ diff --git a/views/img/badges/91_0.png b/views/img/badges/91_0.png index d071a34..6018d87 100644 Binary files a/views/img/badges/91_0.png and b/views/img/badges/91_0.png differ diff --git a/views/img/badges/91_1.png b/views/img/badges/91_1.png index d862381..11300c9 100644 Binary files a/views/img/badges/91_1.png and b/views/img/badges/91_1.png differ diff --git a/views/img/badges/92_0.png b/views/img/badges/92_0.png index 7611a08..b4014fc 100644 Binary files a/views/img/badges/92_0.png and b/views/img/badges/92_0.png differ diff --git a/views/img/badges/92_1.png b/views/img/badges/92_1.png index d34b666..1b10547 100644 Binary files a/views/img/badges/92_1.png and b/views/img/badges/92_1.png differ diff --git a/views/img/badges/93_0.png b/views/img/badges/93_0.png index edfe41f..211eb5b 100644 Binary files a/views/img/badges/93_0.png and b/views/img/badges/93_0.png differ diff --git a/views/img/badges/93_1.png b/views/img/badges/93_1.png index 226c085..ed7e9f7 100644 Binary files a/views/img/badges/93_1.png and b/views/img/badges/93_1.png differ diff --git a/views/img/badges/94_0.png b/views/img/badges/94_0.png index 4d1cf46..916c00c 100644 Binary files a/views/img/badges/94_0.png and b/views/img/badges/94_0.png differ diff --git a/views/img/badges/94_1.png b/views/img/badges/94_1.png index 33a4ead..38cff48 100644 Binary files a/views/img/badges/94_1.png and b/views/img/badges/94_1.png differ diff --git a/views/img/badges/95_0.png b/views/img/badges/95_0.png index e876d20..793df4c 100644 Binary files a/views/img/badges/95_0.png and b/views/img/badges/95_0.png differ diff --git a/views/img/badges/95_1.png b/views/img/badges/95_1.png index 18e3a1a..29d66b3 100644 Binary files a/views/img/badges/95_1.png and b/views/img/badges/95_1.png differ diff --git a/views/img/badges/96_0.png b/views/img/badges/96_0.png index 638377c..6a26ca5 100644 Binary files a/views/img/badges/96_0.png and b/views/img/badges/96_0.png differ diff --git a/views/img/badges/96_1.png b/views/img/badges/96_1.png index d4589b2..8861578 100644 Binary files a/views/img/badges/96_1.png and b/views/img/badges/96_1.png differ diff --git a/views/img/badges/97_0.png b/views/img/badges/97_0.png index 91f22fd..6c62aec 100644 Binary files a/views/img/badges/97_0.png and b/views/img/badges/97_0.png differ diff --git a/views/img/badges/97_1.png b/views/img/badges/97_1.png index 4590836..8765fe9 100644 Binary files a/views/img/badges/97_1.png and b/views/img/badges/97_1.png differ diff --git a/views/img/badges/98_0.png b/views/img/badges/98_0.png index 6341ace..71a0dfc 100644 Binary files a/views/img/badges/98_0.png and b/views/img/badges/98_0.png differ diff --git a/views/img/badges/98_1.png b/views/img/badges/98_1.png index f8d2fd7..82a3c13 100644 Binary files a/views/img/badges/98_1.png and b/views/img/badges/98_1.png differ diff --git a/views/img/badges/99_0.png b/views/img/badges/99_0.png index fbe73ff..304deff 100644 Binary files a/views/img/badges/99_0.png and b/views/img/badges/99_0.png differ diff --git a/views/img/badges/99_1.png b/views/img/badges/99_1.png index 4eff4ce..e255b8d 100644 Binary files a/views/img/badges/99_1.png and b/views/img/badges/99_1.png differ diff --git a/views/img/badges/9_0.png b/views/img/badges/9_0.png index 35e77b7..c2ef1c8 100644 Binary files a/views/img/badges/9_0.png and b/views/img/badges/9_0.png differ diff --git a/views/img/badges/9_1.png b/views/img/badges/9_1.png index d4da29d..8f97b5c 100644 Binary files a/views/img/badges/9_1.png and b/views/img/badges/9_1.png differ diff --git a/views/img/checklist.png b/views/img/checklist.png new file mode 100644 index 0000000..1f17607 Binary files /dev/null and b/views/img/checklist.png differ diff --git a/views/img/gamification-bar-bg.png b/views/img/gamification-bar-bg.png deleted file mode 100755 index f84fa0b..0000000 Binary files a/views/img/gamification-bar-bg.png and /dev/null differ diff --git a/views/img/persona.png b/views/img/persona.png new file mode 100644 index 0000000..a3efd1e Binary files /dev/null and b/views/img/persona.png differ diff --git a/views/img/sparks.png b/views/img/sparks.png new file mode 100644 index 0000000..8573d4e Binary files /dev/null and b/views/img/sparks.png differ diff --git a/views/js/gamification.js b/views/js/gamification.js deleted file mode 100644 index c4a1058..0000000 --- a/views/js/gamification.js +++ /dev/null @@ -1,143 +0,0 @@ -$(document).ready( function () { - gamificationTasks(); -}); - -function gamificationTasks() -{ - $('#gamification_notif').remove(); - $('#notifs_icon_wrapper').append('
'); - $.ajax({ - type: 'POST', - url: admin_gamification_ajax_url, - dataType: 'json', - data: { - controller : 'AdminGamification', - action : 'gamificationTasks', - ajax : true, - id_tab : current_id_tab, - ids_ps_advice : ids_ps_advice, - }, - success: function(jsonData) - { - for (var i in jsonData.advices_to_display.advices) - { - ok = false; - selector = jsonData.advices_to_display.advices[i].selector.split(','); - for (var j in selector) - { - if (!ok) - { - if (jsonData.advices_to_display.advices[i].location == 'after') - $(selector[j]).after(jsonData.advices_to_display.advices[i].html); - else - $(selector[j]).before(jsonData.advices_to_display.advices[i].html); - - if ($(selector[j]).length) - ok = true; - } - } - } - - initHeaderNotification(jsonData.header_notification); - - var fancybox = $('.gamification_fancybox'); - if (fancybox.fancybox) { - fancybox.fancybox(); - } - } - }); -} - -function initHeaderNotification(html) -{ - $('#gamification_notif').remove(); - $('#notifs_icon_wrapper').append(html); - $('#gamification_notif').click(function () { - if ($('#gamification_notif_wrapper').css('display') == 'block') - { - $('#gamification_notif_wrapper').hide(); - } - else - { - disabledGamificationNotification(); - $('.notifs_wrapper').hide(); - $('#gamification_notif_number_wrapper').hide(); - $('#gamification_notif_wrapper').show(); - if (typeof(admintab_gamification) != "undefined") - { - $('#gamification_progressbar').progressbar({ - change: function() { - if (current_level_percent) - $( ".gamification_progress-label" ).html( gamification_level+' '+current_level+' : '+$('#gamification_progressbar').progressbar( "value" ) + "%" ); - else - $( ".gamification_progress-label" ).html(''); - }, - }); - $('#gamification_progressbar').progressbar("value", current_level_percent ); - } - } - }); - if ($('.dropdown-toggle').length) - $('.dropdown-toggle').dropdown(); -} - -function disabledGamificationNotification() -{ - $.ajax({ - type: 'POST', - url: admin_gamification_ajax_url, - data: { - controller : 'AdminGamification', - action : 'disableNotification', - ajax : true - }, - success: function(jsonData) - { - $('#gamification_notif_number_wrapper').hide(); - } - }); -} - -function initBubbleDescription() -{ - $('.badge_square').each( function () { - if ($(this).children('.gamification_badges_description').text().length) - { - $(this).CreateBubblePopup({ - position : 'top', - openingDelay:0, - alwaysVisible: false, - align : 'center', - innerHtml: $(this).children('.gamification_badges_description').text(), - innerHtmlStyle: { color:'#000', 'text-align':'center' }, - themeName: 'black', - themePath: '../modules/gamification/views/jquerybubblepopup-themes' - }); - } - }); -} - - -function filterBadge(type) -{ - group = '.'+$('#group_select_'+type+' option:selected').val(); - status = '.'+$('#status_select_'+type+' option:selected').val(); - level = '.'+$('#level_select_'+type+' option:selected').val(); - - if (group == '.undefined') - group = ''; - if (status == '.undefined') - status = ''; - if (level == '.undefined') - level = ''; - - $('#list_'+type).isotope({filter: '.badge_square'+group+status+level, animationEngine : 'css'}); - - if (!$('#list_'+type+' li').not('.isotope-hidden').length) - $('#no_badge_'+type).fadeIn(); - else - $('#no_badge_'+type).fadeOut(); -} - - - diff --git a/views/js/gamification_bt.js b/views/js/gamification_bt.js index 226ea42..c3dcb5f 100644 --- a/views/js/gamification_bt.js +++ b/views/js/gamification_bt.js @@ -4,9 +4,6 @@ $(document).ready( function () { function gamificationTasks() { - if (typeof ids_ps_advice == 'undefined') - ids_ps_advice = new Array(); - gamificationInsertOnBackOfficeDOM('
'); $.ajax({ type: 'POST', @@ -17,7 +14,6 @@ function gamificationTasks() action : 'gamificationTasks', ajax : true, id_tab : current_id_tab, - ids_ps_advice : ids_ps_advice, }, success: function(jsonData) { diff --git a/views/templates/admin/gamification/helpers/view/filters.tpl b/views/templates/admin/gamification/helpers/view/filters.tpl index ac23981..ed36e7a 100644 --- a/views/templates/admin/gamification/helpers/view/filters.tpl +++ b/views/templates/admin/gamification/helpers/view/filters.tpl @@ -1,33 +1,31 @@
{if $type == 'badges_feature' || $type == 'badges_achievement'} -
{l s='Type:' mod='gamification'} - -
-{/if} -
{l s='Status:' mod='gamification'} - -
+
{l s='Type:' mod='gamification'} + +
+{/if} +
{l s='Status:' mod='gamification'} + +
{if $type == 'badges_feature' || $type == 'badges_achievement'} -
{l s="Level:" mod='gamification'} - -
+
{l s="Level:" mod='gamification'} + +
{/if}
- - diff --git a/views/templates/admin/gamification/helpers/view/filters_bt.tpl b/views/templates/admin/gamification/helpers/view/filters_bt.tpl index 0d72e27..6df11da 100644 --- a/views/templates/admin/gamification/helpers/view/filters_bt.tpl +++ b/views/templates/admin/gamification/helpers/view/filters_bt.tpl @@ -1,39 +1,39 @@ {if isset($type)}
- {if $type == 'badges_feature' || $type == 'badges_achievement'} -
- - -
- {/if} -
- - -
- {if $type == 'badges_feature' || $type == 'badges_achievement'} -
- - -
- {/if} + {if $type == 'badges_feature' || $type == 'badges_achievement'} +
+ + +
+ {/if} +
+ + +
+ {if $type == 'badges_feature' || $type == 'badges_achievement'} +
+ + +
+ {/if}
{/if} diff --git a/views/templates/admin/gamification/helpers/view/view.tpl b/views/templates/admin/gamification/helpers/view/view.tpl index c8eda82..d6bdd67 100644 --- a/views/templates/admin/gamification/helpers/view/view.tpl +++ b/views/templates/admin/gamification/helpers/view/view.tpl @@ -23,74 +23,74 @@ * International Registered Trademark & Property of PrestaShop SA *} {include file="toolbar.tpl" toolbar_btn=$toolbar_btn toolbar_scroll=$toolbar_scroll title=$title}
-
-
-

{l s="Become an e-commerce expert in leaps and bounds!" mod='gamification'}


-

- {l s="With all of the great features and benefits that PrestaShop offers, it's important to keep up!" mod='gamification'}

- {l s="The main goal of all of the features we offer is to make you succeed in the e-commerce world. In order to accomplish this, we have created a system of badges and points that make it easy to monitor your progress as a merchant. We have broken down the system into three levels, all of which are integral to success in the e-commerce world: (i) Your use of key e-commerce features on your store; (ii) Your sales performance; (iii) Your presence in international markets." mod='gamification'}

- {l s="The more progress your store makes, the more badges and points you earn. No need to submit any information or fill out any forms; we know how busy you are, everything is automatic!" mod='gamification'}

- {l s="Now, with the click of a button, you will be able to see sales-enhancing features that you may be missing out on. Take advantage and check it out below!" mod='gamification'} -

-
-
-

{l s="Our team is available to help. Contact us today!" mod='gamification'}


- -
-
-
-

{l s='Completion level' mod='gamification'}

-
- {l s="Level" mod='gamification' mod='gamification'} {$current_level|intval} : {$current_level_percent|intval} % -
+
+
+

{l s="Become an e-commerce expert in leaps and bounds!" mod='gamification'}


+

+ {l s="With all of the great features and benefits that PrestaShop offers, it's important to keep up!" mod='gamification'}

+ {l s="The main goal of all of the features we offer is to make you succeed in the e-commerce world. In order to accomplish this, we have created a system of badges and points that make it easy to monitor your progress as a merchant. We have broken down the system into three levels, all of which are integral to success in the e-commerce world: (i) Your use of key e-commerce features on your store; (ii) Your sales performance; (iii) Your presence in international markets." mod='gamification'}

+ {l s="The more progress your store makes, the more badges and points you earn. No need to submit any information or fill out any forms; we know how busy you are, everything is automatic!" mod='gamification'}

+ {l s="Now, with the click of a button, you will be able to see sales-enhancing features that you may be missing out on. Take advantage and check it out below!" mod='gamification'} +

+
+
+

{l s="Our team of experts is available to help, feel free to contact them!" mod='gamification'}


+ +
+
+
+

{l s='Completion level' mod='gamification'}

+
+ {l s="Level" mod='gamification' mod='gamification'} {$current_level|intval} : {$current_level_percent|intval} % +

{foreach from=$badges_type key=key item=type}
- {$type.name|escape:html:'UTF-8'} {$type.name|escape:html:'UTF-8'} - {include file='./filters.tpl' type=$key} -
    - {foreach from=$type.badges item=badge} -
  • -
    -
    {$badge->name|escape:html:'UTF-8'}
    - -
  • - {foreachelse} -
  • -
    {l s="No badge in this section" mod='gamification'}
    -
  • - {/foreach} -
- + {$type.name|escape:html:'UTF-8'} {$type.name|escape:html:'UTF-8'} + {include file='./filters.tpl' type=$key} +
    + {foreach from=$type.badges item=badge} +
  • +
    +
    {$badge->name|escape:html:'UTF-8'}
    + +
  • + {foreachelse} +
  • +
    {l s="No badge in this section" mod='gamification'}
    +
  • + {/foreach} +
+

{/foreach} diff --git a/views/templates/admin/gamification/helpers/view/view_bt.tpl b/views/templates/admin/gamification/helpers/view/view_bt.tpl index b80d2f9..633674f 100644 --- a/views/templates/admin/gamification/helpers/view/view_bt.tpl +++ b/views/templates/admin/gamification/helpers/view/view_bt.tpl @@ -1,100 +1,114 @@ {* -* 2007-2016 PrestaShop -* -* NOTICE OF LICENSE -* -* This source file is subject to the Academic Free License (AFL 3.0) -* that is bundled with this package in the file LICENSE.txt. -* It is also available through the world-wide-web at this URL: -* http://opensource.org/licenses/afl-3.0.php -* If you did not receive a copy of the license and are unable to -* obtain it through the world-wide-web, please send an email -* to license@prestashop.com so we can send you a copy immediately. -* -* DISCLAIMER -* -* Do not edit or add to this file if you wish to upgrade PrestaShop to newer -* versions in the future. If you wish to customize PrestaShop for your -* needs please refer to http://www.prestashop.com for more information. -* -* @author PrestaShop SA -* @copyright 2007-2016 PrestaShop SA -* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) -* International Registered Trademark & Property of PrestaShop SA -*} + * 2007-2016 PrestaShop + * + * NOTICE OF LICENSE + * + * This source file is subject to the Academic Free License (AFL 3.0) + * that is bundled with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://opensource.org/licenses/afl-3.0.php + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@prestashop.com so we can send you a copy immediately. + * + * DISCLAIMER + * + * Do not edit or add to this file if you wish to upgrade PrestaShop to newer + * versions in the future. If you wish to customize PrestaShop for your + * needs please refer to http://www.prestashop.com for more information. + * + * @author PrestaShop SA + * @copyright 2007-2016 PrestaShop SA + * @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0) + * International Registered Trademark & Property of PrestaShop SA + *}
-
-
-

{l s="Become an e-commerce expert in leaps and bounds!" mod='gamification'}


-

- {l s="With all of the great features and benefits that PrestaShop offers, it's important to keep up!" mod='gamification'}

- {l s="The main goal of all of the features we offer is to make you succeed in the e-commerce world. In order to accomplish this, we have created a system of badges and points that make it easy to monitor your progress as a merchant. We have broken down the system into three levels, all of which are integral to success in the e-commerce world: (i) Your use of key e-commerce features on your store; (ii) Your sales performance; (iii) Your presence in international markets." mod='gamification'}

- {l s="The more progress your store makes, the more badges and points you earn. No need to submit any information or fill out any forms; we know how busy you are, everything is automatic!" mod='gamification'}

- {l s="Now, with the click of a button, you will be able to see sales-enhancing features that you may be missing out on. Take advantage and check it out below!" mod='gamification'} -

-
-
-

{l s="Our team is available to help. Contact us today!" mod='gamification'}


- -
-
-
-

{l s='Completion level' mod='gamification'}

-
- {l s="Level" mod='gamification' mod='gamification'} {$current_level|intval} : {$current_level_percent|intval} % -
-   +
+
+ {l s='Email' mod='gamification'} +
+
+

{l s="Become an e-commerce expert in leaps and bounds!" mod='gamification'}

+

+ {l s="In order to make you succeed in the e-commerce world, we have created a system of badges and points to help you monitor your progress as a merchant. The system has three levels:" mod='gamification'} + +

+
    +
  1. {l s="Your use of key e-commerce features on your store" mod='gamification'}
  2. +
  3. {l s="Your sales performances" mod='gamification'}
  4. +
  5. {l s="Your presence in international markets" mod='gamification'}
  6. +
+

{l s="The more progress your store makes, the more badges and points you earn. Take advantage and check it out below!" mod='gamification'}

+
+
+ {l s= +

{l s="Our team of experts is available to help, feel free to contact them!" mod='gamification'}

+ {l s="Find an expert" mod='gamification'} +
+
+ +
+

{l s='Completion level' mod='gamification'}

+
+

{l + s="Level %s:" + sprintf=[ + $current_level|intval + ] + mod='gamification' + } + + + {$current_level_percent|intval}% + +

+
+  

{foreach from=$badges_type key=key item=type} -
-

{$type.name|escape:html:'UTF-8'}

-
-
- {include file='./filters_bt.tpl' type=$key} -
-
-
    - {foreach from=$type.badges item=badge} -
  • -
    {$badge->name|escape:html:'UTF-8'}
    -
    {$badge->name|escape:html:'UTF-8'}
    -
  • - {foreachelse} -
  • -
    {l s="No badge in this section" mod='gamification'}
    -
  • - {/foreach} -
-
- -
-
-

+
+

{$type.name|escape:html:'UTF-8'}

+
+
+ {include file='./filters_bt.tpl' type=$key} +
+
+
    + {foreach from=$type.badges item=badge} +
  • +
    {$badge->name|escape:html:'UTF-8'}
    +
    {$badge->name|escape:html:'UTF-8'}
    +
  • + {foreachelse} +
  • +
    {l s="No badge in this section" mod='gamification'}
    +
  • + {/foreach} +
+
+ +
+
+

{/foreach} diff --git a/views/templates/hook/notification.tpl b/views/templates/hook/notification.tpl index 27ba778..69ab3c7 100644 --- a/views/templates/hook/notification.tpl +++ b/views/templates/hook/notification.tpl @@ -27,7 +27,7 @@ {if $badge->id}
  • -
    {if $badge->validated} {l s='Last badge :' mod='gamification'} {else} {l s='Next badge :' mod='gamification'} {/if}
    +
    {if $badge->validated} {l s='Last badge:' mod='gamification'} {else} {l s='Next badge:' mod='gamification'} {/if}
    {$badge->name|escape:html:'UTF-8'}
  • diff --git a/views/templates/hook/notification_bt.tpl b/views/templates/hook/notification_bt.tpl index 806839a..b54d3c4 100644 --- a/views/templates/hook/notification_bt.tpl +++ b/views/templates/hook/notification_bt.tpl @@ -50,10 +50,10 @@ @@ -65,7 +65,7 @@ {if $badge->id}
  • validated}style="left: 12px;"{/if}> -
    {if $badge->validated} {l s='Last badge :' mod='gamification'} {else} {l s='Next badge :' mod='gamification'} {/if}
    +
    {if $badge->validated} {l s='Last badge:' mod='gamification'} {else} {l s='Next badge:' mod='gamification'} {/if}
    {$badge->name|escape:html:'UTF-8'}
  • @@ -79,7 +79,7 @@ {if $badge->id && !$badge->awb}
  • validated}style="left: 12px;"{/if}> -
    {if $badge->validated} {l s='Last badge :' mod='gamification'} {else} {l s='Next badge :' mod='gamification'} {/if}
    +
    {if $badge->validated} {l s='Last badge:' mod='gamification'} {else} {l s='Next badge:' mod='gamification'} {/if}
    {$badge->name|escape:html:'UTF-8'}
  • @@ -90,7 +90,7 @@