As reported on github, this is also happening on 3.0.4. I also appended this to an existing thread, but thought it best to open a new one (https://forum.piwik.org/t/installation-failed-with-3-0-1-error-message-website-time-zone-is-not-valid/22968/5).
Tried setting date.timezone in php.ini (even tried a few).
Same behavior with Chrome and Firefox.
The <select>
tag is there in the HTML, but it's not being displayed for some reason. Might be related to the javascript error/s below.
Errors in chrome console (which prevents Next from succeeding, resulting in the same error as others have complained about):
index.php:331 Uncaught SyntaxError: Unexpected token return
menudropdown.directive.js:20 Uncaught ReferenceError: angular is not defined
at menudropdown.directive.js:20
at menudropdown.directive.js:76
languageselector.directive.js:14 Uncaught ReferenceError: angular is not defined
at languageselector.directive.js:14
at languageselector.directive.js:36
Here's the entire HTML from index.php (some clipped so I could post):
<!DOCTYPE html>
<html id="ng-app" ng-app="piwikApp">
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex,nofollow">
<title>Piwik 3.0.4 › Installation</title>
<link rel="stylesheet" type="text/css" href="index.php?module=Installation&action=getInstallationCss&cb=ab82c878009c11737d9de5de9a43f1b1" />
<script type="text/javascript" src="index.php?module=Installation&action=getInstallationJs&cb=a4c6a5725baaaddd52b68ca0aa68b277"></script>
<link rel="shortcut icon" href="plugins/CoreHome/images/favicon.png"/>
</head>
<body ng-app="app" id="installation">
<div class="container">
<div class="header">
<div class="logo">
<img title="Piwik 3.0.4 - free/libre analytics platform" src="plugins/Morpheus/images/logo.png"/>
<p>free/libre analytics platform</p>
</div>
<div class="language-selector">
<script type='text/javascript'>if (!window.piwik) window.piwik={};</script><script type="text/javascript" src="plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.js?cb=a4c6a5725baaaddd52b68ca0aa68b277"></script><script type="text/javascript" src="plugins/LanguagesManager/angularjs/languageselector/languageselector.directive.js?cb=a4c6a5725baaaddd52b68ca0aa68b277"></script><div class="languageSelection"
ng-cloak
menu-title="English"
piwik-menudropdown>
<a class="item"
href="?module=Proxy&action=redirect&url=http://piwik.org/translations/">About Piwik translations</a>
<a class="item "
value="am"
title="አማርኛ (Amharic)">አማርኛ</a>
<a class="item "
value="ar"
title="العربية (Arabic)">العربية</a>
<a class="item "
value="be"
title="Беларуская (Belarusian)">Беларуская</a>
<a class="item "
value="bg"
title="Български (Bulgarian)">Български</a>
<a class="item "
value="bn"
title="বাংলা (Bangla)">বাংলা</a>
<a class="item "
value="bs"
title="Bosanski (Bosnian)">Bosanski</a>
<a class="item "
value="ca"
title="Català (Catalan)">Català</a>
<a class="item "
value="cs"
title="Čeština (Czech)">Čeština</a>
<a class="item "
value="cy"
title="Cymraeg (Welsh)">Cymraeg</a>
<a class="item "
value="da"
title="Dansk (Danish)">Dansk</a>
<a class="item "
value="de"
title="Deutsch (German)">Deutsch</a>
<a class="item "
value="el"
title="Ελληνικά (Greek)">Ελληνικά</a>
<a class="item active"
value="en"
title="English (English)">English</a>
<a class="item "
value="es"
title="Español (Spanish)">Español</a>
<a class="item "
value="et"
title="Eesti (Estonian)">Eesti</a>
<a class="item "
value="eu"
title="Euskara (Basque)">Euskara</a>
<a class="item "
value="fa"
title="فارسی (Persian)">فارسی</a>
<a class="item "
value="fi"
title="Suomi (Finnish)">Suomi</a>
<a class="item "
value="fr"
title="Français (French)">Français</a>
<a class="item "
value="gl"
title="Galego (Galician)">Galego</a>
<a class="item "
value="he"
title="עברית (Hebrew)">עברית</a>
<a class="item "
value="hi"
title="हिन्दी (Hindi)">हिन्दी</a>
<a class="item "
value="hr"
title="Hrvatski (Croatian)">Hrvatski</a>
<a class="item "
value="hu"
title="Magyar (Hungarian)">Magyar</a>
<a class="item "
value="id"
title="Indonesia (Indonesian)">Indonesia</a>
<a class="item "
value="is"
title="Íslenska (Icelandic)">Íslenska</a>
<a class="item "
value="it"
title="Italiano (Italian)">Italiano</a>
<a class="item "
value="ja"
title="日本語 (Japanese)">日本語</a>
<a class="item "
value="ka"
title="ქართული (Georgian)">ქართული</a>
<a class="item "
value="ko"
title="한국어 (Korean)">한국어</a>
<a class="item "
value="lt"
title="Lietuvių (Lithuanian)">Lietuvių</a>
<a class="item "
value="lv"
title="Latviešu (Latvian)">Latviešu</a>
<a class="item "
value="nb"
title="Norsk bokmål (Norwegian Bokmål)">Norsk bokmål</a>
<a class="item "
value="nl"
title="Nederlands (Dutch)">Nederlands</a>
<a class="item "
value="nn"
title="Nynorsk (Norwegian Nynorsk)">Nynorsk</a>
<a class="item "
value="pl"
title="Polski (Polish)">Polski</a>
<a class="item "
value="pt-br"
title="Português (Brasil) (Brazilian Portuguese)">Português (Brasil)</a>
<a class="item "
value="pt"
title="Português (Portuguese)">Português</a>
<a class="item "
value="ro"
title="Română (Romanian)">Română</a>
<a class="item "
value="ru"
title="Русский (Russian)">Русский</a>
<a class="item "
value="sk"
title="Slovenčina (Slovak)">Slovenčina</a>
<a class="item "
value="sl"
title="Slovenščina (Slovenian)">Slovenščina</a>
<a class="item "
value="sq"
title="Shqip (Albanian)">Shqip</a>
<a class="item "
value="sr"
title="Српски (Serbian)">Српски</a>
<a class="item "
value="sv"
title="Svenska (Swedish)">Svenska</a>
<a class="item "
value="ta"
title="தமிழ் (Tamil)">தமிழ்</a>
<a class="item "
value="te"
title="తెలుగు (Telugu)">తెలుగు</a>
<a class="item "
value="th"
title="ไทย (Thai)">ไทย</a>
<a class="item "
value="tl"
title="Tagalog (Tagalog)">Tagalog</a>
<a class="item "
value="tr"
title="Türkçe (Turkish)">Türkçe</a>
<a class="item "
value="uk"
title="Українська (Ukrainian)">Українська</a>
<a class="item "
value="vi"
title="Tiếng Việt (Vietnamese)">Tiếng Việt</a>
<a class="item "
value="zh-cn"
title="简体中文 (Simplified Chinese)">简体中文</a>
<a class="item "
value="zh-tw"
title="繁體中文 (Traditional Chinese)">繁體中文</a>
<form action="index.php?module=LanguagesManager&action=saveLanguage" method="post">
<input type="hidden" name="language" id="language">
<input type="hidden" name="token_auth" value="anonymous"/> </form>
</div>
</div>
<div class="installation-progress">
<h4>
Installation status
<small>71%</small>
</h4>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 71%;"></div>
</div>
</div>
<div class="clearfix"></div>
</div>
<div class="row">
<div class="col s3">
<ul class="list-group">
<li class="list-group-item disabled">1. Welcome!</li>
<li class="list-group-item disabled">2. System Check</li>
<li class="list-group-item disabled">3. Database Setup</li>
<li class="list-group-item disabled">4. Creating the Tables</li>
<li class="list-group-item disabled">5. Super User</li>
<li class="list-group-item active">6. Setup a Website</li>
<li class="list-group-item ">7. JavaScript Tracking Code</li>
<li class="list-group-item ">8. Congratulations</li>
</ul>
</div>
<div class="col s9 content">
<h2>Setup a Website</h2>
<div id="feedback" class="alert alert-success">
Super User created successfully!
</div>
<p>Please setup the first website you would like to track and analyse with Piwik:</p>
<form action="?action=firstWebsiteSetup&module=Installation&deleteTables=1" name="websitesetupform" id="websitesetupform" method="post">
<div class="row form-group">
<div class="col s12 m12 l6">
<label>
Website name
</label>
<input type="text" name="siteName" id="siteName-0" />
</div>
</div>
<div class="row form-group">
<div class="col s12 m12 l6">
<label>
Website URL
</label>
<input type="text" name="url" id="url-0" style="color:rgb(153, 153, 153);" onfocus="javascript:if (this.value=='http://example.org'){this.value='http://';} this.style.color='black';" onclick="javascript:if (this.value=='http://example.org'){this.value='http://';} this.style.color='black';" value="http://example.org" />
</div>
</div>
<div class="row form-group">
<div class="col s12 m12 l6">
<label>
Website time zone
</label>
<select name="timezone" id="timezone-0">
<option value="No timezone">Select a city</option>
<optgroup label="Africa">
<option value="Africa/Abidjan">Abidjan</option>
<option value="Africa/Accra">Accra</option>
<option value="Africa/Addis_Ababa">Addis Ababa</option>
<option value="Africa/Algiers">Algiers</option>
<option value="Africa/Asmara">Asmara</option>
<option value="Africa/Bamako">Bamako</option>
<option value="Africa/Bangui">Bangui</option>
<option value="Africa/Banjul">Banjul</option>
<option value="Africa/Bissau">Bissau</option>
<option value="Africa/Blantyre">Blantyre</option>
<option value="Africa/Brazzaville">Brazzaville</option>
<option value="Africa/Bujumbura">Bujumbura</option>
<option value="Africa/Cairo">Cairo</option>
<option value="Africa/Casablanca">Casablanca</option>
<option value="Africa/Ceuta">Ceuta</option>
<option value="Africa/Conakry">Conakry</option>
<option value="Africa/Dakar">Dakar</option>
<option value="Africa/Dar_es_Salaam">Dar es Salaam</option>
<option value="Africa/Djibouti">Djibouti</option>
<option value="Africa/Douala">Douala</option>
<option value="Africa/El_Aaiun">El Aaiun</option>
<option value="Africa/Freetown">Freetown</option>
<option value="Africa/Gaborone">Gaborone</option>
<option value="Africa/Harare">Harare</option>
<option value="Africa/Johannesburg">Johannesburg</option>
<option value="Africa/Juba">Juba</option>
<option value="Africa/Kampala">Kampala</option>
<option value="Africa/Khartoum">Khartoum</option>
<option value="Africa/Kigali">Kigali</option>
<option value="Africa/Kinshasa">Kinshasa</option>
<option value="Africa/Lagos">Lagos</option>
<option value="Africa/Libreville">Libreville</option>
<option value="Africa/Lome">Lome</option>
<option value="Africa/Luanda">Luanda</option>
<option value="Africa/Lubumbashi">Lubumbashi</option>
<option value="Africa/Lusaka">Lusaka</option>
<option value="Africa/Malabo">Malabo</option>
<option value="Africa/Maputo">Maputo</option>
<option value="Africa/Maseru">Maseru</option>
<option value="Africa/Mbabane">Mbabane</option>
<option value="Africa/Mogadishu">Mogadishu</option>
<option value="Africa/Monrovia">Monrovia</option>
<option value="Africa/Nairobi">Nairobi</option>
<option value="Africa/Ndjamena">Ndjamena</option>
<option value="Africa/Niamey">Niamey</option>
<option value="Africa/Nouakchott">Nouakchott</option>
<option value="Africa/Ouagadougou">Ouagadougou</option>
<option value="Africa/Porto-Novo">Porto-Novo</option>
<option value="Africa/Sao_Tome">Sao Tome</option>
<option value="Africa/Tripoli">Tripoli</option>
<option value="Africa/Tunis">Tunis</option>
<option value="Africa/Windhoek">Windhoek</option>
</optgroup>
<optgroup label="America">
<option value="America/Adak">Adak</option>
<option value="America/Yellowknife">Yellowknife</option>
</optgroup>
<optgroup label="Antarctica">
<option value="Antarctica/Casey">Casey</option>
<option value="Antarctica/Davis">Davis</option>
<option value="Antarctica/DumontDUrville">DumontDUrville</option>
<option value="Antarctica/Macquarie">Macquarie</option>
<option value="Antarctica/Mawson">Mawson</option>
<option value="Antarctica/McMurdo">McMurdo</option>
<option value="Antarctica/Palmer">Palmer</option>
<option value="Antarctica/Rothera">Rothera</option>
<option value="Antarctica/Syowa">Syowa</option>
<option value="Antarctica/Troll">Troll</option>
<option value="Antarctica/Vostok">Vostok</option>
</optgroup>
<optgroup label="Arctic">
<option value="Arctic/Longyearbyen">Longyearbyen</option>
</optgroup>
<optgroup label="Asia">
<option value="Asia/Aden">Aden</option>
<option value="Asia/Yerevan">Yerevan</option>
</optgroup>
<optgroup label="Atlantic">
<option value="Atlantic/Azores">Azores</option>
<option value="Atlantic/Bermuda">Bermuda</option>
<option value="Atlantic/Canary">Canary</option>
<option value="Atlantic/Cape_Verde">Cape Verde</option>
<option value="Atlantic/Faroe">Faroe</option>
<option value="Atlantic/Madeira">Madeira</option>
<option value="Atlantic/Reykjavik">Reykjavik</option>
<option value="Atlantic/South_Georgia">South Georgia</option>
<option value="Atlantic/St_Helena">St Helena</option>
<option value="Atlantic/Stanley">Stanley</option>
</optgroup>
<optgroup label="Australia">
<option value="Australia/Adelaide">Adelaide</option>
<option value="Australia/Brisbane">Brisbane</option>
<option value="Australia/Broken_Hill">Broken Hill</option>
<option value="Australia/Currie">Currie</option>
<option value="Australia/Darwin">Darwin</option>
<option value="Australia/Eucla">Eucla</option>
<option value="Australia/Hobart">Hobart</option>
<option value="Australia/Lindeman">Lindeman</option>
<option value="Australia/Lord_Howe">Lord Howe</option>
<option value="Australia/Melbourne">Melbourne</option>
<option value="Australia/Perth">Perth</option>
<option value="Australia/Sydney">Sydney</option>
</optgroup>
<optgroup label="Europe">
<option value="Europe/Amsterdam">Amsterdam</option>
<option value="Europe/Zurich">Zurich</option>
</optgroup>
<optgroup label="Indian">
<option value="Indian/Antananarivo">Antananarivo</option>
<option value="Pacific/Wallis">Wallis</option>
</optgroup>
<optgroup label="UTC">
<option value="UTC-12">UTC-12</option>
<option value="UTC+14">UTC+14</option>
</optgroup>
</select>
</div>
</div>
<div class="row form-group">
<div class="col s12 m12 l6">
<label>
Ecommerce
</label>
<select name="ecommerce" id="ecommerce-0">
<option value="0">Not an Ecommerce site</option>
<option value="1">Ecommerce enabled</option>
</select>
</div>
</div>
<div class="row">
<div class="col s12">
<input type="submit" value="Next »" class="btn" name="submit" id="submit-0" />
</div>
</div>
</form>
<div class="clearfix"></div>
<p><em>Note: once the Piwik Install is finished, you will be able to add more Websites to track!</em></p>
</div>
</div>
</div>
</body>
</html>
Here's the menudropdown.directive.js:
/*!
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <div piwik-menudropdown menu-title="MyMenuItem" tooltip="My Tooltip" show-search="false">
* <a class="item" href="/url">An Item</a>
* <a class="item disabled">Disabled</a>
* <a class="item active">Active item</a>
* <hr class="item separator"/>
* <a class="item disabled category">Category</a>
* <a class="item" href="/url"></a>
* </div>
*/
(function () {
angular.module('piwikApp').directive('piwikMenudropdown', piwikMenudropdown);
function piwikMenudropdown(){
return {
transclude: true,
replace: true,
restrict: 'A',
scope: {
menuTitle: '@',
tooltip: '@',
showSearch: '=',
menuTitleChangeOnClick: '='
},
templateUrl: 'plugins/CoreHome/angularjs/menudropdown/menudropdown.directive.html?cb=' + piwik.cacheBuster,
link: function(scope, element, attrs) {
scope.selectItem = function (event) {
var $self = angular.element(event.target);
if (!$self.hasClass('item') || $self.hasClass('disabled') || $self.hasClass('separator')) {
return;
}
if (scope.menuTitleChangeOnClick !== false) {
scope.menuTitle = $self.text().replace(/[\u0000-\u2666]/g, function(c) {
return '&#'+c.charCodeAt(0)+';';
});
}
scope.$eval('view.showItems = false');
setTimeout(function () {
scope.$apply();
}, 0);
element.find('.item').removeClass('active');
$self.addClass('active');
};
scope.searchItems = function (searchTerm)
{
searchTerm = searchTerm.toLowerCase();
element.find('.item').each(function (index, node) {
var $node = angular.element(node);
if (-1 === $node.text().toLowerCase().indexOf(searchTerm)) {
$node.hide();
} else {
$node.show();
}
});
};
}
};
}
})();
and lastly languageselector.directive.js:
/*!
* Piwik - free/libre analytics platform
*
* @link http://piwik.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
/**
* Usage:
* <div class="languageSelection">
* </div>
*/
(function () {
angular.module('piwikApp').directive('languageSelection', languageSelection);
function languageSelection() {
return {
restrict: 'C',
link: function(scope, element, attr, ctrl) {
function postLanguageChange () {
var value = $(this).attr('value');
if (value) {
element.find('#language').val(value).parents('form').submit();
}
}
element.on('click', 'a[value]', postLanguageChange);
scope.$on('$destroy', function() {
element.off('click', 'a[value]', postLanguageChange);
});
}
};
}
})();