diff --git a/oss/piwik/trunk/plugins/API/API.php b/oss/piwik/trunk/plugins/API/API.php
new file mode 100644
index 00000000..4a0c4de2
--- /dev/null
+++ b/oss/piwik/trunk/plugins/API/API.php
@@ -0,0 +1,29 @@
+ Piwik_Translate('API_PluginDescription'),
+ 'homepage' => 'misc/redirectToUrl.php?url=http://dev.piwik.org/trac/wiki/API/Reference',
+ 'author' => 'Piwik',
+ 'author_homepage' => 'http://piwik.org/',
+ 'version' => Piwik_Version::VERSION,
+ );
+ }
+}
diff --git a/oss/piwik/trunk/plugins/API/Controller.php b/oss/piwik/trunk/plugins/API/Controller.php
new file mode 100644
index 00000000..5d1a977a
--- /dev/null
+++ b/oss/piwik/trunk/plugins/API/Controller.php
@@ -0,0 +1,46 @@
+General->API_datatable_default_limit;
+ }
+ $request = new Piwik_API_Request('token_auth='.Piwik_Common::getRequestVar('token_auth', 'anonymous', 'string'));
+ echo $request->process();
+ }
+
+ public function listAllMethods()
+ {
+ $ApiDocumentation = new Piwik_API_DocumentationGenerator();
+ echo $ApiDocumentation->getAllInterfaceString( $outputExampleUrls = true, $prefixUrls = Piwik_Common::getRequestVar('prefixUrl', '') );
+ }
+
+ public function listAllAPI()
+ {
+ $view = Piwik_View::factory("listAllAPI");
+ $this->setGeneralVariablesView($view);
+
+ $ApiDocumentation = new Piwik_API_DocumentationGenerator();
+ $view->countLoadedAPI = Piwik_API_Proxy::getInstance()->getCountRegisteredClasses();
+ $view->list_api_methods_with_links = $ApiDocumentation->getAllInterfaceString();
+ echo $view->render();
+ }
+}
diff --git a/oss/piwik/trunk/plugins/API/templates/listAllAPI.tpl b/oss/piwik/trunk/plugins/API/templates/listAllAPI.tpl
new file mode 100644
index 00000000..68d51b66
--- /dev/null
+++ b/oss/piwik/trunk/plugins/API/templates/listAllAPI.tpl
@@ -0,0 +1,25 @@
+{assign var=showSitesSelection value=true}
+{assign var=showPeriodSelection value=false}
+{assign var=showMenu value=false}
+{include file="CoreAdminHome/templates/header.tpl"}
+
+
+
+
+{ajaxRequestErrorDiv}
+{if !isset($showMenu) || $showMenu}
+ {include file="CoreAdminHome/templates/menu.tpl"}
+{/if}
+
+{if !empty($configFileNotWritable)}
+
+
{'General_ConfigFileIsNotWritable'|translate:"(config/config.ini.php)":"
"}
+
+{elseif strpos($url, 'updated=1')}
+
+
{'General_YourChangesHaveBeenSaved'|translate}
+
+{/if}
+
diff --git a/oss/piwik/trunk/plugins/CoreAdminHome/templates/menu.css b/oss/piwik/trunk/plugins/CoreAdminHome/templates/menu.css
new file mode 100644
index 00000000..8ecc659a
--- /dev/null
+++ b/oss/piwik/trunk/plugins/CoreAdminHome/templates/menu.css
@@ -0,0 +1,40 @@
+#tablist {
+ padding-bottom: 1px;
+ margin-left: 0;
+ margin-bottom: 0;
+ margin-top: 0.1em;
+ border-bottom: 1px solid gray;
+}
+
+#tablist li {
+ list-style: none;
+ display: inline;
+ margin: 0;
+ padding-bottom:3px;
+}
+
+#tablist li a {
+ text-decoration: none;
+ padding: 3px 0.5em;
+ margin-right: 3px;
+ border: 1px solid #778;
+ border-bottom: none;
+ background: white;
+ font: bold 16px Georgia;
+}
+
+#tablist li a:link,#tablist li a:visited {
+ color: black;
+ -moz-border-radius:4px 4px 0 0;
+ -webkit-border-radius:4px 4px 0 0;
+}
+
+#tablist li a:hover, #tablist li a.active {
+ color: black;
+ background: #defdbb;
+ border-color: black;
+}
+
+#tablist li a.current {
+ background: #defdbb;
+}
diff --git a/oss/piwik/trunk/plugins/CoreAdminHome/templates/menu.tpl b/oss/piwik/trunk/plugins/CoreAdminHome/templates/menu.tpl
new file mode 100644
index 00000000..9200e816
--- /dev/null
+++ b/oss/piwik/trunk/plugins/CoreAdminHome/templates/menu.tpl
@@ -0,0 +1,9 @@
+{if count($menu) > 1}
+
+{/if}
\ No newline at end of file
diff --git a/oss/piwik/trunk/plugins/CoreAdminHome/templates/styles.css b/oss/piwik/trunk/plugins/CoreAdminHome/templates/styles.css
new file mode 100644
index 00000000..3c2bbdda
--- /dev/null
+++ b/oss/piwik/trunk/plugins/CoreAdminHome/templates/styles.css
@@ -0,0 +1,211 @@
+img {
+ vertical-align: baseline;
+}
+textarea {
+ font-size: 1em;
+}
+a {
+ color: black;
+}
+
+table.admin {
+ font-size: 0.9em;
+ font-family: Arial, Helvetica, verdana sans-serif;
+ background-color: #fff;
+ border-collapse: collapse;
+}
+
+table.admin thead th {
+ border-right: 1px solid #fff;
+ color: #fff;
+ text-align: center;
+ padding: 5px;
+ text-transform: uppercase;
+ height: 25px;
+ background-color: #a3c159;
+ font-weight:bold;
+}
+
+table.admin tbody tr {
+ background-color: #fff;
+ border-bottom: 1px solid #f0f0f0;
+}
+
+table.admin tbody td {
+ color: #414141;
+ text-align: left;
+ vertical-align:top;
+}
+
+table.admin tbody th {
+ text-align: left;
+ padding: 2px;
+}
+table.admin tbody td, table.admin tbody th {
+ color: #536C2A;
+ text-decoration: none;
+ font-weight: normal;
+ padding: 10px;
+ padding:10px;
+}
+
+table.admin tbody td:hover, table.admin tbody th:hover {
+ color: #009193;
+ text-decoration: none;
+}
+
+#submit input {
+ font-size: 2em;
+ border-top: 2px solid #8cb648;
+ border-left: 2px solid #8cb648;
+ border-bottom: 2px solid #4a6026;
+ border-right: 2px solid #4a6026;
+ background-color: #6c8c37;
+ color: #fff;
+}
+
+#submit {
+ padding-top: 10px;
+ padding-left: 70px;
+}
+
+.warning {
+ border: 1px dotted gray;
+ padding: 15px;
+ font-size: .8em;
+}
+
+.warning ul {
+ margin-left: 50px;
+}
+
+.access_error {
+ font-size: .7em;
+ padding: 15px;
+}
+
+h2 {
+ border-bottom-color:#DADADA;
+ color:#666666;
+ border-bottom-style:solid;
+ border-bottom-width:1px;
+ clear:both;
+ font-family:Georgia,"Times New Roman",Times,serif;
+ font-size:24px;
+ font-size-adjust:none;
+ font-style:normal;
+ font-weight:normal;
+ margin:5px 0pt 0pt -4px;
+ padding:0pt 0px 7px 0pt;
+}
+
+p {
+ margin-top:10px;
+ line-height:140%;
+ padding-bottom:0.8em;
+}
+#content {
+ margin:0pt 15px;
+ padding:0pt;
+}
+textarea, input, select {
+ background-color:#FFFFFF;
+ border-color:#939EA5;
+ -moz-border-radius:4px;
+ -webkit-border-radius:4px;
+ border-style:solid;
+ border-width:1px;
+ margin:1px;
+ padding:3px;
+}
+input[disabled] {
+ background-color:#F7F7F7;
+}
+.adminTable {
+ border-width: 1px;
+ border-style: solid;
+ border-collapse: collapse;
+ width: 100%;
+ clear: both;
+ margin: 0;
+}
+.adminTable a {
+ text-decoration: none;
+}
+.adminTable abbr {
+ white-space: nowrap;
+}
+.adminTable td, .adminTable th {
+ border-bottom-width: 1px;
+ border-bottom-style: solid;
+ border-bottom-color: #ccc;
+ font-size: 13px;
+ vertical-align: text-top;
+ vertical-align:top;
+}
+.adminTable td {
+ padding: 7px 15px 9px 10px;
+ vertical-align: top;
+}
+.adminTable th {
+ padding: 9px 15px 6px 10px;
+ text-align: left;
+ line-height: 1.3em;
+}
+.adminTable th input {
+ margin: 0 0 0 8px;
+ padding: 0;
+}
+.adminTable .check-column {
+ text-align: right;
+ width: 1.5em;
+ padding: 0;
+}
+.adminTable {
+ border-color: #ccc;
+}
+.adminTable tbody th.check-column {
+ padding: 8px 0 22px;
+}
+.adminTable .num {
+ text-align: center;
+}
+.adminTable td, .adminTable th {
+ border-bottom-color: #ccc;
+}
+.adminTable thead {
+ background-color: #464646;
+ color: #d7d7d7;
+}
+.adminTable td.action-links, .adminTable th.action-links {
+ text-align: right;
+}
+.adminTable .name {
+ font-weight: bold;
+}
+.adminTable a {
+ color:#2583AD;
+}
+.adminTable .active {
+ background-color: #ECF9DD;
+}
+
+.adminTable .ui-inline-help {
+ margin-top:0;
+ width:100%;
+}
+/* admin table, without borders */
+.adminTableNoBorder {
+ border:0;
+}
+.adminTableNoBorder td, .adminTableNoBorder th {
+ border:0;
+}
+
+/* other styles */
+
+.form-description {
+ color:#666666;
+ font-style:italic;
+ margin-left:10px;
+}
\ No newline at end of file