diff --git a/lib/private/app.php b/lib/private/app.php
index 34c00e97fb9462eaf40272a2600c2d109ed4c03a..0c60557914aa3e6b00b1659ee06f61b0423b71a1 100644
--- a/lib/private/app.php
+++ b/lib/private/app.php
@@ -555,6 +555,10 @@ class OC_App{
 			}elseif($child->getName()=='description') {
 				$xml=(string)$child->asXML();
 				$data[$child->getName()]=substr($xml, 13, -14);//script <description> tags
+			}elseif($child->getName()=='documentation') {
+				foreach($child as $subchild) {
+					$data["documentation"][$subchild->getName()] = (string)$subchild;
+				}
 			}else{
 				$data[$child->getName()]=(string)$child;
 			}
diff --git a/settings/css/settings.css b/settings/css/settings.css
index a93c675d4669b5f4d4391d89c70f5cd6f5bae377..8a96885b78957b7cd12876fa470c94c75a184056 100644
--- a/settings/css/settings.css
+++ b/settings/css/settings.css
@@ -131,6 +131,12 @@ span.version { margin-left:1em; margin-right:1em; color:#555; }
 .appslink { text-decoration: underline; }
 .score { color:#666; font-weight:bold; font-size:0.8em; }
 
+.appinfo .documentation {
+	margin-top: 1em;
+	margin-bottom: 1em;
+}
+
+
 /* LOG */
 #log { white-space:normal; }
 #lessLog { display:none; }
diff --git a/settings/js/apps.js b/settings/js/apps.js
index a55c55e24cf4ccd64462fe722754570490d6fef2..1d05d01e1f2660cb3b4a1a3fe58d8bce73eb806f 100644
--- a/settings/js/apps.js
+++ b/settings/js/apps.js
@@ -37,6 +37,24 @@ OC.Settings.Apps = OC.Settings.Apps || {
 		}
 		page.find('span.licence').text(appLicense);
 
+		var userDocumentation = false;
+		var adminDocumentation = false;
+		if (typeof(app.documentation.user) !== 'undefined') {
+			userDocumentation = true;
+			page.find('span.userDocumentation').html("<a href='" + app.documentation.user + "'>" + t('settings', 'User Documentation') + "</a>");
+			page.find('p.documentation').show();
+		}
+		if (typeof(app.documentation.admin) !== 'undefined') {
+			adminDocumentation = true;
+			page.find('span.adminDocumentation').html("<a href='" + app.documentation.admin + "'>" + t('settings', 'Admin Documentation') + "</a>");
+			page.find('p.documentation').show();
+		}
+
+		if(userDocumentation && adminDocumentation) {
+			page.find('span.userDocumentation').after(', ');
+		}
+
+
 		if (app.update !== false) {
 			page.find('input.update').show();
 			page.find('input.update').data('appid', app.id);
@@ -110,7 +128,7 @@ OC.Settings.Apps = OC.Settings.Apps || {
 					element.val(t('settings','Disable'));
 				}
 			},'json')
-			.fail(function() { 
+			.fail(function() {
 				OC.Settings.Apps.showErrorMessage(t('settings', 'Error while enabling app'));
 				appitem.data('errormsg', t('settings', 'Error while enabling app'));
 				appitem.data('active',false);
diff --git a/settings/templates/apps.php b/settings/templates/apps.php
index 0b76f775fea4802ec635b42e69a27d9438fbc73d..ce48ef77d12f5346129a3ff0990a5a63cc204744 100644
--- a/settings/templates/apps.php
+++ b/settings/templates/apps.php
@@ -34,6 +34,11 @@
 		class="version"></span><small class="externalapp" style="visibility:hidden;"></small></h3>
 	<span class="score"></span>
 	<p class="description"></p>
+	<p class="documentation hidden">
+		<?php p($l->t("Documentation:"));?>
+		<span class="userDocumentation appslink"></span>
+		<span class="adminDocumentation appslink"></span>
+	</p>
 	<img src="" class="preview hidden" />
 	<p class="appslink hidden"><a href="#" target="_blank"><?php
 		p($l->t('See application page at apps.owncloud.com'));?></a></p>