diff options
-rw-r--r-- | core/Common.php | 3 | ||||
-rw-r--r-- | core/Translate.php | 2 | ||||
-rw-r--r-- | misc/TODO | 57 | ||||
-rw-r--r-- | plugins/Goals/Controller.php | 30 | ||||
-rw-r--r-- | plugins/Goals/templates/release_notes.tpl | 9 | ||||
-rw-r--r-- | plugins/Goals/templates/single_goal.tpl | 4 | ||||
-rw-r--r-- | plugins/Live/API.php | 2 | ||||
-rw-r--r-- | plugins/Live/Controller.php | 10 | ||||
-rw-r--r-- | plugins/Live/templates/index.tpl | 9 | ||||
-rw-r--r-- | plugins/Referers/API.php | 2 | ||||
-rw-r--r-- | plugins/Referers/Controller.php | 4 | ||||
-rw-r--r-- | plugins/Referers/Referers.php | 11 | ||||
-rw-r--r-- | plugins/UserCountry/functions.php | 10 |
13 files changed, 74 insertions, 79 deletions
diff --git a/core/Common.php b/core/Common.php index e22ebd8e2c..0ef1f38efd 100644 --- a/core/Common.php +++ b/core/Common.php @@ -140,7 +140,8 @@ class Piwik_Common } /** - * ending WITHOUT slashs + * ending WITHOUT slash + * @return string */ static public function getPathToPiwikRoot() { diff --git a/core/Translate.php b/core/Translate.php index e12150f492..7960b408ca 100644 --- a/core/Translate.php +++ b/core/Translate.php @@ -71,7 +71,7 @@ class Piwik_Translate $language = null; Piwik_PostEvent('Translate.getLanguageToLoad', $language); - if(is_null($language)) + if(is_null($language) || empty($language)) { $language = Zend_Registry::get('config')->General->default_language; } @@ -1,38 +1,27 @@ To fix ====== +- Lors de la génération des données sur mon site de test : +Fatal error: Call to undefined method Piwik_Tracker_Db::prefixTable() in E:\Projects\wowww\piwik\core\Tracker\Db.php on line 241 +- keywords duplicated +- On the dashboard, the pie graph for the browsers by family widget is very small. +- Problème de traduction dans Visiteurs > Récapitulatifs +Évolution sur les 30 derniers __ days __ +- trim keywords - cron should return errors when token doesn't have any website - need documentation about campaigns, inline help link to FAQ - <idsubdatatable>1</idsubdatatable> shouldnt be in api response - when used with visitsGenerator, in dowloads export XML, full_url and url is 0 -- post 29 There seems not to be a way to export the pages information widget. - I wanted to download the entry pages to see where my visitors entered my site from, - but there is no option to do so. - ADD forward of non true show_values to forward when specified from URL to ajax - disable show icon in some iframes and/or dashboard - clarify 'false' '0' values etc. //convert all JS datatable footer parameter values to '1' or '0' +- why widgetize inherits Piwik_Widgetize_Controller +- plugins should listen to user delete/ site delete and delete their own user/site related data +- postEvent smarty doc is not clear, + feature we're not using (filter but what we need is simply way to print out html in templates from plugins) -Bugs -==== - actions for year seems to not load (memory issue?) -- all graphic showing data evolution are labelled with the text "nb_uniq_visitors" - no matter if youre watching last visits graph, global visits graph or any other. - Its happening in every graph under Visitors subpages and in the Dashboard. -- In Referers->Evolution page, in addition, I think its melting titles because I read - in spanish "Entrada directa nb_uniq_visitors" for the first graph, - "Paginas web nb_uniq_visitors" for the second and so on. Reports improvements ==================== -- add new column "overall visits with conversion" -- add visits with conversion sparkline in VisitsSummary overview -- add link under widgets to report (optional display) -- link under goal conversion to full goal reports (optional display) -- think of ways to show entry / exit pages and bounce rate. -- show unique visitors when available, otherwise show nb_visits by default -- bounce count should be bounce rate -- idem in 222 times that a returning visit has bounced (left the site after one page) -- show new vs returning more clearly in UI -- see also #421 - add "days since last visit" - add "visit count until conversion" - add best search engines, keywords, campaigns, websites in referers overview @@ -45,40 +34,14 @@ Test page - test datatable with low population disabled - without footer - without all columns icon - -high priority features -==== -- Goal tracking -- Entry/Exit pages -- sync update + email install + automatic update -- tester clickheat http://www.labsmedia.com/clickheat/piwik-clickheat.tar.gz + add FAQ -- Live! -- new JS tagging API -- Exclude webmaster -- Loyalty (Most people visited: 1 times) and Recency (Most people last visited: X days ago) - http://en.wikipedia.org/wiki/RFM -- simple MultiSites report plugin. User Interface improvements =========================== - add icon calendar http://developer.yahoo.com/ypatterns/pattern.php?pattern=calendar#Solution - something is wrong in JS calendar when year selected -piwik.org -==== -- 404 more useful -- fix Piwik changelog -- www.piwik.org/demo/ is 404 - Code improvements ================= -- plugins should listen to user delete/ site delete and delete their own user/site related data -- why widgetize inherits Piwik_Widgetize_Controller -- plugins could have their own tests, read automatically from the test suite - -Documentation -============= -- postEvent smarty doc is not clear, + feature we're not using (filter but what we need is simply way to print out html in templates from plugins) changes between 2 versions http://dev.piwik.org/trac/changeset?old_path=tags%2F0.2.23&old=&new_path=tags%2F0.2.24&new= diff --git a/plugins/Goals/Controller.php b/plugins/Goals/Controller.php index 935d616258..869b66b540 100644 --- a/plugins/Goals/Controller.php +++ b/plugins/Goals/Controller.php @@ -26,7 +26,26 @@ class Piwik_Goals_Controller extends Piwik_Controller $view->title = $goalDefinition['name'] . ' - Conversions'; $view->graphEvolution = $this->getLastNbConversionsGraph(true); $view->nameGraphEvolution = 'GoalsgetLastNbConversionsGraph'; // must be the function name used above + $view->topSegments = $this->getTopSegments($idGoal); + // conversion rate for new and returning visitors + $request = new Piwik_API_Request("method=Goals.getConversionRateReturningVisitors&format=original"); + $view->conversion_rate_returning = round( $request->process(), self::CONVERSION_RATE_PRECISION ); + $request = new Piwik_API_Request("method=Goals.getConversionRateNewVisitors&format=original"); + $view->conversion_rate_new = round( $request->process(), self::CONVERSION_RATE_PRECISION ); + + $verticalSlider = array(); + // string label + // array parameters to ajax call on click (module, action) + // specific order + // (intermediate labels) + // automatically load the first from the list, highlights it + $view->tableByConversion = Piwik_FrontController::getInstance()->fetchDispatch('Referers', 'getKeywords', array(false, 'tableGoals')); + echo $view->render(); + } + + protected function getTopSegments($idGoal) + { $columnNbConversions = 'goal_'.$idGoal.'_nb_conversions'; $columnConversionRate = 'goal_'.$idGoal.'_conversion_rate'; @@ -57,17 +76,8 @@ class Piwik_Goals_Controller extends Piwik_Controller ); } $topSegments[$segmentName] = $topSegment; -// echo $datatable; } - - $request = new Piwik_API_Request("method=Goals.getConversionRateReturningVisitors&format=original"); - $view->conversion_rate_returning = round( $request->process(), self::CONVERSION_RATE_PRECISION ); - $request = new Piwik_API_Request("method=Goals.getConversionRateNewVisitors&format=original"); - $view->conversion_rate_new = round( $request->process(), self::CONVERSION_RATE_PRECISION ); - - $view->topSegments = $topSegments; - echo $view->render(); - //todo next: nice legends for graphs + return $topSegments; } protected function getMetricsForGoal($goalId) diff --git a/plugins/Goals/templates/release_notes.tpl b/plugins/Goals/templates/release_notes.tpl index 8e8c73dfa4..edb046dd54 100644 --- a/plugins/Goals/templates/release_notes.tpl +++ b/plugins/Goals/templates/release_notes.tpl @@ -1,15 +1,22 @@ <hr> <b>About the Goal Tracking Plugin</b><br> <pre> + +bug = http://forum.piwik.org/index.php?showtopic=150 + The Goal Tracking Plugin is in alpha release. There is more coming soon! +- Test summary row works ok with subtables campaigns - The Goal Report page will display conversion table by search engines, country, keyword, campaign, etc. - The Goal Overview page will link to a Goal Report page with a "(more)" link that will ajax reload the page - Goals could be triggered using javascript event, with custom revenue - internationalization of all strings - provide documentation, screenshots, blog post + add screenshot and inline help in "Add a New Goal" - provide widgets for the dashboard, general goal overview, and one widget for each goal. With: graph evolution, sparklines. Widget with top segments for each goal. +- add visits with conversion sparkline in VisitsSummary overview +- link under goal conversion to full goal reports (optional display) Known bugs +- Your top converting keyword include keyword without conversions - The Goal total nb conversions should be sum of all goal conversions (wrong number when deleting a Goal) - After adding goal, the window should refresh to the goal report page, and not to the dashboard - Outlink trailing slash is automatically deleted from the URL, there would be a problem when trying to exact match a URL with trailing slash @@ -17,4 +24,4 @@ Known bugs Give us Feedback! If you find any other bug, or if you have suggestions, please send us a message using the "Give us feedback" link at the top of the Piwik pages. -</pre> + diff --git a/plugins/Goals/templates/single_goal.tpl b/plugins/Goals/templates/single_goal.tpl index 2cb3ddde27..3ded5e4165 100644 --- a/plugins/Goals/templates/single_goal.tpl +++ b/plugins/Goals/templates/single_goal.tpl @@ -9,8 +9,10 @@ <li>Returning visitors conversion rate is <b>{$conversion_rate_returning}%</b>, New Visitors conversion rate is <b>{$conversion_rate_new}%</b></li> </ul> {/if} +<hr> +{$tableByConversion} - +<hr> {literal} <style> ul.ulGoalTopElements { diff --git a/plugins/Live/API.php b/plugins/Live/API.php index 3ff93c223a..9757cf3db2 100644 --- a/plugins/Live/API.php +++ b/plugins/Live/API.php @@ -100,7 +100,7 @@ class Piwik_Live_API $whereBind[] = $visitorId; } - if(!$minIdVisit) + if(!is_null($minIdVisit)) { $where[] = " idvisit > ? "; $whereBind[] = $minIdVisit; diff --git a/plugins/Live/Controller.php b/plugins/Live/Controller.php index aeb13829d9..facb89bc11 100644 --- a/plugins/Live/Controller.php +++ b/plugins/Live/Controller.php @@ -13,11 +13,17 @@ class Piwik_Live_Controller extends Piwik_Controller function getLastVisits($fetch = false) { $idSite = Piwik_Common::getRequestVar('idSite', null, 'int'); + $minIdVisit = Piwik_Common::getRequestVar('minIdVisit', 0, 'int'); $limit = 10; - $api = new Piwik_API_Request("method=Live.getLastVisits&idSite=$idSite&limit=$limit&format=php&serialize=0&disable_generic_filters=1"); + $api = new Piwik_API_Request("method=Live.getLastVisits&idSite=$idSite&limit=$limit&minIdVisit=$minIdVisit&format=php&serialize=0&disable_generic_filters=1"); $view = new Piwik_View('Live/templates/lastVisits.tpl'); - $view->visitors = $api->process(); + $visitors = $api->process(); + if($minIdVisit == 0) + { + $visitors = array_slice($visitors, 3); + } + $view->visitors = $visitors; $rendered = $view->render($fetch); if($fetch) diff --git a/plugins/Live/templates/index.tpl b/plugins/Live/templates/index.tpl index a30eef0739..fe67bd510f 100644 --- a/plugins/Live/templates/index.tpl +++ b/plugins/Live/templates/index.tpl @@ -9,7 +9,14 @@ <script type="text/javascript" charset="utf-8"> $(document).ready(function() { - $('#visits').spy({ limit: 10, 'fadeInSpeed': '1400', ajax: 'index.php?module=Live&idSite=1&action=getLastVisits', timeout: 5000, customParameterName: 'minIdVisit', customParameterValueCallback: lastIdVisit, fadeInSpeed: 1400 }); + $('#visits').spy({ + limit: 10, + ajax: 'index.php?module=Live&idSite=1&action=getLastVisits', + timeout: 500, + customParameterName: 'minIdVisit', + customParameterValueCallback: lastIdVisit, + fadeInSpeed: 1400 } + ); }); function lastIdVisit() diff --git a/plugins/Referers/API.php b/plugins/Referers/API.php index ab60cc8c83..4eaac34f24 100644 --- a/plugins/Referers/API.php +++ b/plugins/Referers/API.php @@ -31,7 +31,7 @@ class Piwik_Referers_API /** * @return Piwik_DataTable */ - private function getDataTable($name, $idSite, $period, $date, $expanded, $idSubtable = null) + protected function getDataTable($name, $idSite, $period, $date, $expanded, $idSubtable = null) { Piwik::checkUserHasViewAccess( $idSite ); $archive = Piwik_Archive::build($idSite, $period, $date ); diff --git a/plugins/Referers/Controller.php b/plugins/Referers/Controller.php index c064e8b83e..a9ba225e28 100644 --- a/plugins/Referers/Controller.php +++ b/plugins/Referers/Controller.php @@ -63,9 +63,9 @@ class Piwik_Referers_Controller extends Piwik_Controller return $this->renderView($view, $fetch); } - function getKeywords( $fetch = false) + function getKeywords( $fetch = false, $viewDataTable = null) { - $view = Piwik_ViewDataTable::factory(); + $view = Piwik_ViewDataTable::factory($viewDataTable); $view->init( $this->pluginName, __FUNCTION__, 'Referers.getKeywords', 'getSearchEnginesFromKeywordId' diff --git a/plugins/Referers/Referers.php b/plugins/Referers/Referers.php index 5c5c307b8a..840280fbdd 100644 --- a/plugins/Referers/Referers.php +++ b/plugins/Referers/Referers.php @@ -14,6 +14,7 @@ */ class Piwik_Referers extends Piwik_Plugin { + public $archiveProcessing; public function getInformation() { $info = array( @@ -124,17 +125,17 @@ class Piwik_Referers extends Piwik_Plugin } } - public function archiveDay( $notification ) { /** * @var Piwik_ArchiveProcessing_Day */ - $archiveProcessing = $notification->getNotificationObject(); + $this->archiveProcessing = $notification->getNotificationObject(); - $this->archiveDayAggregateVisits($archiveProcessing); - $this->archiveDayAggregateGoals($archiveProcessing); - $this->archiveDayRecordInDatabase($archiveProcessing); + $this->archiveDayAggregateVisits($this->archiveProcessing); + $this->archiveDayAggregateGoals($this->archiveProcessing); + Piwik_PostEvent('Referers.archiveDay', $this); + $this->archiveDayRecordInDatabase($this->archiveProcessing); } protected function archiveDayAggregateVisits($archiveProcessing) diff --git a/plugins/UserCountry/functions.php b/plugins/UserCountry/functions.php index b75d80a9b3..4c882abaab 100644 --- a/plugins/UserCountry/functions.php +++ b/plugins/UserCountry/functions.php @@ -2,12 +2,10 @@ function Piwik_getFlagFromCode($code) { - $path = PIWIK_INCLUDE_PATH . '/plugins/UserCountry/flags/%s.png'; - - $normalPath = sprintf($path,$code); - - // flags not in the package ! - if(!file_exists($normalPath)) + $path = 'plugins/UserCountry/flags/%s.png'; + $normalPath = sprintf($path, $code); + $absolutePath = PIWIK_INCLUDE_PATH . "/" . $normalPath; + if(!file_exists($absolutePath)) { return sprintf($path, 'xx'); } |