diff --git a/3rdparty/Sabre/CardDAV/Card.php b/3rdparty/Sabre/CardDAV/Card.php
index 98189aa9fd8327e28c204555695ca84963f438d6..52d8b79d7ddbc27914c432e79bbbf42089ce4f14 100644
--- a/3rdparty/Sabre/CardDAV/Card.php
+++ b/3rdparty/Sabre/CardDAV/Card.php
@@ -122,7 +122,7 @@ class Sabre_CardDAV_Card extends Sabre_DAV_File implements Sabre_CardDAV_ICard,
      */
     public function getETag() {
 
-        return md5($this->cardData['carddata']);
+        return '"' . md5($this->cardData['carddata']) . '"';
 
     }
 
diff --git a/3rdparty/Sabre/DAV/Browser/Plugin.php b/3rdparty/Sabre/DAV/Browser/Plugin.php
index 81a90558f930bf3580e215d6bdfd32ff3f0861cd..8e0ca24cff25176fcb96d021e013c13f272f653a 100644
--- a/3rdparty/Sabre/DAV/Browser/Plugin.php
+++ b/3rdparty/Sabre/DAV/Browser/Plugin.php
@@ -94,7 +94,7 @@ class Sabre_DAV_Browser_Plugin extends Sabre_DAV_ServerPlugin {
     public function httpPOSTHandler($method, $uri) {
 
         if ($method!='POST') return true;
-        if (isset($_POST['action'])) switch($_POST['action']) {
+        if (isset($_POST['sabreAction'])) switch($_POST['sabreAction']) {
 
             case 'mkcol' :
                 if (isset($_POST['name']) && trim($_POST['name'])) {
@@ -249,13 +249,13 @@ class Sabre_DAV_Browser_Plugin extends Sabre_DAV_ServerPlugin {
   if ($this->enablePost) {
       $html.= '<tr><td><form method="post" action="">
             <h3>Create new folder</h3>
-            <input type="hidden" name="action" value="mkcol" />
+            <input type="hidden" name="sabreAction" value="mkcol" />
             Name: <input type="text" name="name" /><br />
             <input type="submit" value="create" />
             </form>
             <form method="post" action="" enctype="multipart/form-data">
             <h3>Upload file</h3>
-            <input type="hidden" name="action" value="put" />
+            <input type="hidden" name="sabreAction" value="put" />
             Name (optional): <input type="text" name="name" /><br />
             File: <input type="file" name="file" /><br />
             <input type="submit" value="upload" />
diff --git a/3rdparty/Sabre/DAV/Server.php b/3rdparty/Sabre/DAV/Server.php
index e5e9e482fee3da8d7d5052e3ace5e0ecbc1aa2b4..c6c63143d13572c0b1487f429d23b7246b1266b0 100644
--- a/3rdparty/Sabre/DAV/Server.php
+++ b/3rdparty/Sabre/DAV/Server.php
@@ -1396,6 +1396,18 @@ class Sabre_DAV_Server {
         $this->broadcastEvent('afterBind',array($uri));
     }
 
+    /**
+     * This method is invoked by sub-systems creating a new directory.
+     *
+     * @param string $uri 
+     * @return void
+     */
+    public function createDirectory($uri) {
+
+        $this->createCollection($uri,array('{DAV:}collection'),array());
+
+    }
+
     /**
      * Use this method to create a new collection
      *
diff --git a/admin/apps.php b/admin/apps.php
index de11dccc3d56989e266040af6d32636d9bf5c3ae..83a48b65245ecbed45b3af6446a21d6723a901eb 100644
--- a/admin/apps.php
+++ b/admin/apps.php
@@ -31,76 +31,21 @@ if( !OC_User::isLoggedIn() || !OC_Group::inGroup( OC_User::getUser(), 'admin' ))
 OC_Util::addStyle( "admin", "apps" );
 OC_Util::addScript( "admin", "apps" );
 
+$registeredApps=OC_App::getAllApps();
+$apps=array();
+foreach($registeredApps as $app){
+	$info=OC_App::getAppInfo($app);
+	$active=(OC_Appconfig::getValue($app,'enabled','no')=='yes')?true:false;
+	$info['active']=$active;
+	$apps[]=$info;
+}
 
-if(isset($_GET['id']))  $id=$_GET['id']; else $id=0;
-if(isset($_GET['cat'])) $cat=$_GET['cat']; else $cat=0;
-if(isset($_GET['installed'])) $installed=true; else $installed=false;
-
-if($installed){
-	global $SERVERROOT;
-	OC_Installer::installShippedApps(false);
-	$apps = OC_Appconfig::getApps();
-	$records = array();
-
-	OC_App::setActiveNavigationEntry( "core_apps" );
-	foreach($apps as $app){
-		$info=OC_App::getAppInfo("$SERVERROOT/apps/$app/appinfo/info.xml");
-		$record = array( 'id' => $app,
-				 'name' => $info['name'],
-				 'version' => $info['version'],
-				 'author' => $info['author'],
-				 'enabled' => OC_App::isEnabled( $app ));
-		$records[]=$record;
-	}
-
-	$tmpl = new OC_Template( "admin", "appsinst", "user" );
-	$tmpl->assign( "apps", $records );
-	$tmpl->printPage();
-	unset($tmpl);
-	exit();
-}else{
-	$categories=OC_OCSClient::getCategories();
-	if($categories==NULL){
-		OC_App::setActiveNavigationEntry( "core_apps" );
-
-		$tmpl = new OC_Template( "admin", "app_noconn", "user" );
-		$tmpl->printPage();
-		unset($tmpl);
-		exit();
-	}
-
-
-	if($id==0) {
-		OC_App::setActiveNavigationEntry( "core_apps_get" );
-
-		if($cat==0){
-			$numcats=array();
-			foreach($categories as $key=>$value) $numcats[]=$key;
-			$apps=OC_OCSClient::getApplications($numcats);
-		}else{
-			$apps=OC_OCSClient::getApplications($cat);
-		}
-
-		// return template
-		$tmpl = new OC_Template( "admin", "apps", "user" );
-
-		$tmpl->assign( "categories", $categories );
-		$tmpl->assign( "apps", $apps );
-		$tmpl->printPage();
-		unset($tmpl);
-
-	}else{
-		OC_App::setActiveNavigationEntry( "core_apps" );
-
-		$app=OC_OCSClient::getApplication($id);
+$categories=OC_OCSClient::getCategories();
+// print_r($categories);
 
-		$tmpl = new OC_Template( "admin", "app", "user" );
-		$tmpl->assign( "categories", $categories );
-		$tmpl->assign( "app", $app );
-		$tmpl->printPage();
-		unset($tmpl);
+$tmpl = new OC_Template( "admin", "apps", "user" );
+$tmpl->assign('apps',$apps);
 
-	}
-}
+$tmpl->printPage();
 
 ?>
diff --git a/admin/css/apps.css b/admin/css/apps.css
index 92ab64df55232c1c7f3781c807de5b0d6271adc6..6106ff3f7ec5e40aaed6118ced267ef3d876ce94 100644
--- a/admin/css/apps.css
+++ b/admin/css/apps.css
@@ -1,14 +1,3 @@
-/* APPS TABLE */
-table td.date { width:5em; padding:.5em 1em; text-align:left; }
-table td.version, table td.enabled, table td.disabled { padding:.5em 1em; text-align:left; }
-.preview  { padding:3px; text-align:left; }
-table td.date { width:11em; color:#555; }
-table td.selection, table th.selection, table td.fileaction { width:2em; text-align:left; }
-table td.name a { padding:6px; text-decoration:none; color:#555; }
-.type  { text-decoration:none; color:#888; font-size:.8em; }
-.description  { text-decoration:none; color:#666; font-size:.9em; }
-
-#content ul#apps { width:40em; list-style:none; }
-#content ul#apps li { display:block; padding:.2em; clear:right; }
-#content ul#apps em { color:#555; }
-#content ul#apps input { float:right; }
+li{color:#888}
+li.active{color:#000}
+span.version{margin-left:3em;color:#ddd}
diff --git a/admin/js/apps.js b/admin/js/apps.js
index 4def5ed5553aae28f111e8f77a788fa69efb2213..069681e1cd17558e053512c5f25c710946f7110d 100644
--- a/admin/js/apps.js
+++ b/admin/js/apps.js
@@ -1,17 +1,38 @@
-$("input[x-use='appenablebutton']").live( "click", function(){
-	appid = $(this).parent().data("uid");
-
-	//alert("dsfsdfsdf");
-	if($(this).val() == "enabled"){
-		$(this).attr("value","disabled");
-		$(this).removeClass( "enabled" );
-		$(this).addClass( "disabled" );
-		$.post( "ajax/disableapp.php", 'appid='+appid);
-	}
-	else if($(this).val() == "disabled"){
-		$(this).attr("value","enabled");
-		$(this).removeClass( "disabled" );
-		$(this).addClass( "enabled" );
-		$.post( "ajax/enableapp.php", 'appid='+appid);
-	}
-});
\ No newline at end of file
+$(document).ready(function(){
+	$('#leftcontent li').each(function(index,li){
+		var app=$.parseJSON($(this).children('span').text());
+		$(li).data('app',app);
+	});
+	$('#leftcontent li').click(function(){
+		var app=$(this).data('app');
+		$('#rightcontent p').show();
+		$('#rightcontent span.name').text(app.name);
+		$('#rightcontent span.version').text(app.version);
+		$('#rightcontent p.description').text(app.description);
+		$('#rightcontent span.author').text(app.author);
+		$('#rightcontent span.licence').text(app.licence);
+		
+		$('#rightcontent input.enable').show();
+		$('#rightcontent input.enable').val((app.active)?t('admin','Disable'):t('admin','Enable'));
+		$('#rightcontent input.enable').data('appid',app.id);
+		$('#rightcontent input.enable').data('active',app.active);
+	});
+	$('#rightcontent input.enable').click(function(){
+		var app=$(this).data('appid');
+		var active=$(this).data('active');
+		if(app){
+			if(active){
+				$.post(OC.filePath('admin','ajax','disableapp.php'),{appid:app});
+				$('#leftcontent li[data-id="'+app+'"]').removeClass('active');
+			}else{
+				$.post(OC.filePath('admin','ajax','enableapp.php'),{appid:app});
+				$('#leftcontent li[data-id="'+app+'"]').addClass('active');
+			}
+			active=!active;
+			$(this).data('active',active);
+			$(this).val((active)?t('admin','Disable'):t('admin','Enable'));
+			var appData=$('#leftcontent li[data-id="'+app+'"]');
+			appData.active=active;
+		}
+	});
+});
diff --git a/admin/l10n/xgettextfiles b/admin/l10n/xgettextfiles
deleted file mode 100644
index 37acbc25deb3285d4245813259214e202af0570f..0000000000000000000000000000000000000000
--- a/admin/l10n/xgettextfiles
+++ /dev/null
@@ -1,5 +0,0 @@
-../templates/app.php
-../templates/app_noconn.php
-../templates/apps.php
-../templates/system.php
-../templates/users.php
diff --git a/admin/templates/app.php b/admin/templates/app.php
deleted file mode 100644
index 06896121d0927719c83d0895e99bcfe90fd5f974..0000000000000000000000000000000000000000
--- a/admin/templates/app.php
+++ /dev/null
@@ -1,22 +0,0 @@
-<?php $app=$_['app']; ?>
-<h1><?php echo $app["name"]; ?></h1>
-<?php  echo('<span class="type">'.$app['typename'].'</span>'); ?><br />
-<span class="date"><?php echo $l->l('datetime', $app["changed"]); ?></span><br />
-
-
-<table cellspacing="6" border="0" width="100%">
-	<tr>
-		<td width="1" valign="top">
-			<?php if($app["preview1"]<>"") { echo('<img class="preview" border="0" src="'.$app["preview1"].'" /><br />'); } ?> 
-			<?php if($app["preview2"]<>"") { echo('<img class="preview" border="0" src="'.$app["preview2"].'" /><br />'); } ?> 
-			<?php if($app["preview3"]<>"") { echo('<img class="preview" border="0" src="'.$app["preview3"].'" /><br />'); } ?> 
-		</td>
-		<td class="description" valign="top">
-		<?php echo $app["description"]; ?>
-		<br />
-		<?php  echo('<a class="description" target="_blank" href="'.$app["detailpage"].'">'.$l->t( 'read more' ).'</a><br />');  ?>
-		</td>
-		<td width="1" valign="top"><a class="prettybutton" href=""><?php echo $l->t( 'Install' ); ?></a></td>
-	</tr>
-</table>
-
diff --git a/admin/templates/app_noconn.php b/admin/templates/app_noconn.php
deleted file mode 100644
index f22d36562876dde81b4089290a4bfba05b6cc28d..0000000000000000000000000000000000000000
--- a/admin/templates/app_noconn.php
+++ /dev/null
@@ -1 +0,0 @@
-<h2><?php echo $l->t( 'Cannot connect to apps repository' ); ?></h2>
diff --git a/admin/templates/apps.php b/admin/templates/apps.php
index 732326f659aae231654d307b6014543796683361..025fbc4c81fbf9abfe4a08d1d3bf5ee775dc664f 100644
--- a/admin/templates/apps.php
+++ b/admin/templates/apps.php
@@ -1,19 +1,16 @@
-<table cellspacing="0">
-	<thead>
-		<tr>
-			<th></th>
-			<th><?php echo $l->t( 'Name' ); ?></th>
-			<th><?php echo $l->t( 'Modified' ); ?></th>
-		</tr>
-	</thead>
-	<tbody>
-		<?php foreach($_["apps"] as $app): ?>
-			<tr>
-				<td width="1"><?php if($app["preview"] <> "") { echo('<a href="'.OC_Helper::linkTo( "admin", "apps.php" ).'?id='.$app['id'].'"><img class="preview" border="0" src="'.$app["preview"].'" /></a>'); } ?> </a></td>
-				<td class="name"><a href="<?php echo(OC_Helper::linkTo( "admin", "apps.php" ).'?id='.$app['id']); ?>" title=""><?php echo $app["name"]; ?></a><br /><?php  echo('<span class="type">'.$app['typename'].'</span>'); ?></td>
-				<td class="date"><?php echo $l->l('datetime', $app["changed"]); ?></td>
-			</tr>
-		<?php endforeach; ?>
-	</tbody>
-</table>
-
+<ul id="leftcontent">
+	<?php foreach($_['apps'] as $app):?>
+		<li <?php if($app['active']) echo 'class="active"'?> data-id="<?php echo $app['id'] ?>">
+			<?php  echo $app['name'] ?>
+			<span class="hidden">
+				<?php echo json_encode($app) ?>
+			</span>
+		</li>
+	<?php endforeach;?>
+</ul>
+<div id="rightcontent">
+	<h3><strong><span class="name"><?php echo $l->t('Select an App');?></span></strong><span class="version"></span></h3>
+	<p class="description"></p>
+	<p class="hidden"><span class="licence"></span><?php echo $l->t('-licensed');?> <?php echo $l->t('by');?> <span class="author"></span></p>
+	<input class="enable hidden" type="submit"></input>
+</div>
diff --git a/admin/templates/appsinst.php b/admin/templates/appsinst.php
deleted file mode 100644
index 035a75c9e8d997fb1bad3986ad0268fc9ecd534b..0000000000000000000000000000000000000000
--- a/admin/templates/appsinst.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<ul id="apps">
-<?php foreach($_["apps"] as $app): ?>
-	<li data-uid="<?php echo($app['id']); ?>"><strong><?php echo($app['name']); ?></strong> <?php echo($app['version']); ?> <em>by <?php echo($app['author']); ?></em>
-	<input x-use="appenablebutton" type="submit" value="<?php echo $l->t( $app['enabled'] ? 'enabled' : 'disabled' ); ?>" class="appbutton <?php echo( $app['enabled'] ? 'enabled' : 'disabled' ); ?>" />
-	</li>
-<?php endforeach; ?>
-</ul>
diff --git a/admin/templates/users.php b/admin/templates/users.php
index 8e34c908fcdcefc660903f3b796078e2e8674c63..00daf4c52638676096763b838e0f29ace2fb7915 100644
--- a/admin/templates/users.php
+++ b/admin/templates/users.php
@@ -1,17 +1,17 @@
 <div id="controls">
 	<form id="newgroup">
-		<input id="newgroupname" placeholder="name"></input>
-		<input type="submit" value="create"></input>
+		<input id="newgroupname" placeholder="<?php echo $l->t('Name')?>"></input>
+		<input type="submit" value="<?php echo $l->t('Create')?>"></input>
 	</form>
 	<form id="newuser">
-		<input id="newusername" placeholder="username"></input>
-		<input type="password" id="newuserpassword" placeholder="password"></input>
-		<select id="newusergroups" data-placeholder="groups" title="groups" multiple="multiple">
+		<input id="newusername" placeholder="<?php echo $l->t('Name')?>"></input>
+		<input type="password" id="newuserpassword" placeholder="<?php echo $l->t('Password')?>"></input>
+		<select id="newusergroups" data-placeholder="groups" title="<?php echo $l->t('Groups')?>" multiple="multiple">
 			<?php foreach($_["groups"] as $group): ?>
 				<option value="<?php echo $group['name'];?>"><?php echo $group['name'];?></option>
 			<?php endforeach;?>
 		</select>
-		<input type="submit" value="Create"></input>
+		<input type="submit" value="<?php echo $l->t('Create')?>"></input>
 	</form>
 </div>
 <ul id="leftcontent">
@@ -30,10 +30,13 @@
 				<td class="groups"><?php if( $user["groups"] ){ echo $user["groups"]; }else{echo "&nbsp";} ?></td>
 				<td class="remove">
 					<?php if($user['name']!=OC_User::getUser()):?>
-						<img alt="Remove" title="Remove" class='svg' src='<?php echo image_path('core','actions/delete.svg') ?>'/>
+						<img alt="Remove" title="<?php echo $l->t('Remove')?>" class='svg' src='<?php echo image_path('core','actions/delete.svg') ?>'/>
 					<?php endif;?>
 				</td>
 			</tr>
 		<?php endforeach; ?>
 	</table>
 </div>
+<div id="#selecteduser">
+	
+</div>
diff --git a/apps/contacts/ajax/addphoto.php b/apps/contacts/ajax/addphoto.php
deleted file mode 100644
index 03d5e6b3ceb40f5da5c8160def34bcac580ceb28..0000000000000000000000000000000000000000
--- a/apps/contacts/ajax/addphoto.php
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php
-/**
- * ownCloud - Addressbook
- *
- * @author Jakob Sack
- * @copyright 2011 Jakob Sack mail@jakobsack.de
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-// Init owncloud
-require_once('../../../lib/base.php');
-
-$id = $_POST['id'];
-$l10n = new OC_L10N('contacts');
-
-// Check if we are a user
-if( !OC_User::isLoggedIn()){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!'))));
-	exit();
-}
-
-$card = OC_Contacts_Addressbook::findCard( $id );
-if( $card === false ){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!'))));
-	exit();
-}
-
-$addressbook = OC_Contacts_Addressbook::findAddressbook( $card['addressbookid'] );
-if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!'))));
-	exit();
-}
-
-$vcard = Sabre_VObject_Reader::read($card['carddata']);
-$mimetype = $_FILES['photo']['type'] ? $_FILES['photo']['type'] : 'image/jpeg';
-$photobase = base64_encode(file_get_contents($_FILES['photo']['tmp_name']));
-$photo = new Sabre_VObject_Property( 'PHOTO', $photobase );
-$photo->parameters[] = new Sabre_VObject_Parameter('TYPE',$mimetype);
-$photo->parameters[] = new Sabre_VObject_Parameter('ENCODING','b');
-$vcard->add($photo);
-
-$line = count($vcard->children) - 1;
-$checksum = md5($vcard->children[$line]->serialize());
-
-OC_Contacts_Addressbook::editCard($id,$vcard->serialize());
-echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id, 'line' => $line, 'checksum' => $checksum )));
diff --git a/apps/contacts/ajax/deletebook.php b/apps/contacts/ajax/deletebook.php
index ba36c494cdf95456b655df99be57d5c1ff4d267c..8506284cc0d1a7d1205ed7d50c07fa55bc699019 100644
--- a/apps/contacts/ajax/deletebook.php
+++ b/apps/contacts/ajax/deletebook.php
@@ -33,7 +33,6 @@ if( !OC_User::isLoggedIn()){
 	exit();
 }
 
-
 $addressbook = OC_Contacts_Addressbook::findAddressbook( $id );
 if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){
 	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!'))));
diff --git a/apps/contacts/ajax/deleteproperty.php b/apps/contacts/ajax/deleteproperty.php
index 9f8b5dbbaf11c8f9daf981d287f21182d0ce218f..d141cc00b8d557e3d405ba829b98709060cb2756 100644
--- a/apps/contacts/ajax/deleteproperty.php
+++ b/apps/contacts/ajax/deleteproperty.php
@@ -24,7 +24,6 @@
 require_once('../../../lib/base.php');
 
 $id = $_GET['id'];
-$line = $_GET['line'];
 $checksum = $_GET['checksum'];
 
 
@@ -50,8 +49,13 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){
 }
 
 $vcard = Sabre_VObject_Reader::read($card['carddata']);
-
-if(md5($vcard->children[$line]->serialize()) != $checksum ){
+$line = null;
+for($i=0;$i<count($vcard->children);$i++){
+	if(md5($vcard->children[$i]->serialize()) == $checksum ){
+		$line = $i;
+	}
+}
+if(is_null($line)){
 	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!'))));
 	exit();
 }
diff --git a/apps/contacts/ajax/setphoto.php b/apps/contacts/ajax/setphoto.php
deleted file mode 100644
index c29b532602795f77f53a4702e41808232c20d5e0..0000000000000000000000000000000000000000
--- a/apps/contacts/ajax/setphoto.php
+++ /dev/null
@@ -1,77 +0,0 @@
-<?php
-/**
- * ownCloud - Addressbook
- *
- * @author Jakob Sack
- * @copyright 2011 Jakob Sack mail@jakobsack.de
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-// Init owncloud
-require_once('../../../lib/base.php');
-
-$id = $_POST['id'];
-$line = $_POST['line'];
-$checksum = $_POST['checksum'];
-$l10n = new OC_L10N('contacts');
-
-// Check if we are a user
-if( !OC_User::isLoggedIn()){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('You need to log in!'))));
-	exit();
-}
-
-$card = OC_Contacts_Addressbook::findCard( $id );
-if( $card === false ){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Can not find Contact!'))));
-	exit();
-}
-
-$addressbook = OC_Contacts_Addressbook::findAddressbook( $card['addressbookid'] );
-if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('This is not your contact!'))));
-	exit();
-}
-
-$vcard = Sabre_VObject_Reader::read($card['carddata']);
-$mimetype = $_FILES['photo']['type'] ? $_FILES['photo']['type'] : 'image/jpeg';
-$photobase = base64_encode(file_get_contents($_FILES['photo']['tmp_name']));
-
-if(md5($vcard->children[$line]->serialize()) != $checksum){
-	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!'))));
-	exit();
-}
-
-// replace photo
-$vcard->children[$line]->setValue($photobase);
-$encoding = $type = false;
-foreach($vcard->children[$line]->parameters as &$parameter){
-	if($parameter->name == 'TYPE'){
-		$parameter->value = $mimetype;
-		$type = true;
-	}
-	elseif($parameter->name == 'ENCODING'){
-		$parameter->value = 'b';
-		$encoding = true;
-	}
-} unset($parameter);
-if(!$encoding) $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter('ENCODING','b');
-if(!$type) $vcard->children[$line]->parameters[] = new Sabre_VObject_Parameter('TYPE',$mimetype);
-
-$checksum = md5($vcard->children[$line]->serialize());
-
-OC_Contacts_Addressbook::editCard($id,$vcard->serialize());
-echo json_encode( array( 'status' => 'success', 'data' => array( 'id' => $id, 'line' => $line, 'checksum' => $checksum )));
diff --git a/apps/contacts/ajax/setproperty.php b/apps/contacts/ajax/setproperty.php
index 6f33c68631ac0daf16a6491051477dd3530c2d90..08d8892254ef4fa6ca4d3b20c98178bad612dc77 100644
--- a/apps/contacts/ajax/setproperty.php
+++ b/apps/contacts/ajax/setproperty.php
@@ -24,7 +24,6 @@
 require_once('../../../lib/base.php');
 
 $id = $_POST['id'];
-$line = $_POST['line'];
 $checksum = $_POST['checksum'];
 $l10n = new OC_L10N('contacts');
 
@@ -47,8 +46,13 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){
 }
 
 $vcard = Sabre_VObject_Reader::read($card['carddata']);
-
-if(md5($vcard->children[$line]->serialize()) != $checksum){
+$line = null;
+for($i=0;$i<count($vcard->children);$i++){
+	if(md5($vcard->children[$i]->serialize()) == $checksum ){
+		$line = $i;
+	}
+}
+if(is_null($line)){
 	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!'))));
 	exit();
 }
diff --git a/apps/contacts/ajax/showsetproperty.php b/apps/contacts/ajax/showsetproperty.php
index 75c3ff88f5ffef3a096e1e87e65a3bea9d61d0e0..a00043384f33aa43ea498da32d49755a82e9db55 100644
--- a/apps/contacts/ajax/showsetproperty.php
+++ b/apps/contacts/ajax/showsetproperty.php
@@ -24,7 +24,6 @@
 require_once('../../../lib/base.php');
 
 $id = $_GET['id'];
-$line = $_GET['line'];
 $checksum = $_GET['checksum'];
 $l10n = new OC_L10N('contacts');
 
@@ -47,7 +46,13 @@ if( $addressbook === false || $addressbook['userid'] != OC_USER::getUser()){
 }
 
 $vcard = Sabre_VObject_Reader::read($card['carddata']);
-if(md5($vcard->children[$line]->serialize()) != $checksum){
+$line = null;
+for($i=0;$i<count($vcard->children);$i++){
+	if(md5($vcard->children[$i]->serialize()) == $checksum ){
+		$line = $i;
+	}
+}
+if(is_null($line)){
 	echo json_encode( array( 'status' => 'error', 'data' => array( 'message' => $l10n->t('Information about vCard is incorrect. Please reload page!'))));
 	exit();
 }
@@ -56,7 +61,7 @@ if(md5($vcard->children[$line]->serialize()) != $checksum){
 $tmpl = new OC_Template('contacts','part.setpropertyform');
 $tmpl->assign('id',$id);
 $tmpl->assign('checksum',$checksum);
-$tmpl->assign('property',OC_Contacts_Addressbook::structureProperty($vcard->children[$line],$line));
+$tmpl->assign('property',OC_Contacts_Addressbook::structureProperty($vcard->children[$line]));
 $page = $tmpl->fetchPage();
 
 echo json_encode( array( 'status' => 'success', 'data' => array( 'page' => $page )));
diff --git a/apps/contacts/appinfo/app.php b/apps/contacts/appinfo/app.php
index 7ff472652561bc440537b07616b0749429c0ff11..30aa0e1aaa1b2192fd0f3483af0058d13ea3daa1 100644
--- a/apps/contacts/appinfo/app.php
+++ b/apps/contacts/appinfo/app.php
@@ -1,7 +1,9 @@
 <?php
 
 OC::$CLASSPATH['OC_Contacts_Addressbook'] = 'apps/contacts/lib/addressbook.php';
+OC::$CLASSPATH['OC_Contacts_Hooks'] = 'apps/contacts/lib/hooks.php';
 OC::$CLASSPATH['OC_Connector_Sabre_CardDAV'] = 'apps/contacts/lib/connector_sabre.php';
+OC_HOOK::connect('OC_User', 'post_createUser', 'OC_Contacts_Hooks', 'deleteUser');
 
 OC_App::register( array( 
   'order' => 10,
@@ -14,5 +16,3 @@ OC_App::addNavigationEntry( array(
   'href' => OC_Helper::linkTo( 'contacts', 'index.php' ),
   'icon' => OC_Helper::imagePath( 'contacts', 'icon.png' ),
   'name' => 'Contacts' ));
-
-?>
diff --git a/apps/contacts/appinfo/info.xml b/apps/contacts/appinfo/info.xml
index 93463b9cf090cd418e9982f6a7b5b03292534645..77c9dc91bfc7420bef0b45de8fbf708b155d3a46 100644
--- a/apps/contacts/appinfo/info.xml
+++ b/apps/contacts/appinfo/info.xml
@@ -6,4 +6,5 @@
 	<licence>AGPL</licence>
 	<author>Jakob Sack</author>
 	<require>2</require>
+	<description>Address book with CardDAV support.</description>
 </info>
diff --git a/apps/contacts/js/interface.js b/apps/contacts/js/interface.js
index 0aae7d15d4559a482974c745a2f467e52b68a707..bab71eec42253e0474c481725083e17881ebd525 100644
--- a/apps/contacts/js/interface.js
+++ b/apps/contacts/js/interface.js
@@ -5,10 +5,10 @@ $(document).ready(function(){
 	});*/
 
 	$('#contacts_contacts li').live('click',function(){
-		var id = $(this).attr('x-id');
+		var id = $(this).data('id');
 		$.getJSON('ajax/getdetails.php',{'id':id},function(jsondata){
 			if(jsondata.status == 'success'){
-				$('#contacts_details').attr('x-id',jsondata.data.id);
+				$('#contacts_details').data('id',jsondata.data.id);
 				$('#contacts_details').html(jsondata.data.page);
 			}
 			else{
@@ -19,11 +19,11 @@ $(document).ready(function(){
 	});
 
 	$('#contacts_deletecard').live('click',function(){
-		var id = $('#contacts_details').attr('x-id');
+		var id = $('#contacts_details').data('id');
 		$.getJSON('ajax/deletecard.php',{'id':id},function(jsondata){
 			if(jsondata.status == 'success'){
-				$('#contacts_contacts [x-id="'+jsondata.data.id+'"]').remove();
-				$('#contacts_details').attr('x-id','');
+				$('#contacts_contacts [data-id="'+jsondata.data.id+'"]').remove();
+				$('#contacts_details').data('id','');
 				$('#contacts_details').html('');
 			}
 			else{
@@ -34,7 +34,7 @@ $(document).ready(function(){
 	});
 
 	$('#contacts_addproperty').live('click',function(){
-		var id = $('#contacts_details').attr('x-id');
+		var id = $('#contacts_details').data('id');
 		$.getJSON('ajax/showaddproperty.php',{'id':id},function(jsondata){
 			if(jsondata.status == 'success'){
 				$('#contacts_details').append(jsondata.data.page);
@@ -57,9 +57,6 @@ $(document).ready(function(){
 		else if($(this).val() == 'TEL'){
 			$('#contacts_phonepart').clone().insertBefore($('#contacts_addpropertyform input[type="submit"]'));
 		}
-		else if($(this).val() == 'NOTE'){
-			$('#contacts_fieldpart').clone().insertBefore($('#contacts_addpropertyform input[type="submit"]'));
-		}
 		else{
 			$('#contacts_generic').clone().insertBefore($('#contacts_addpropertyform input[type="submit"]'));
 		}
@@ -68,8 +65,9 @@ $(document).ready(function(){
 	$('#contacts_addpropertyform input[type="submit"]').live('click',function(){
 		$.post('ajax/addproperty.php',$('#contacts_addpropertyform').serialize(),function(jsondata){
 			if(jsondata.status == 'success'){
-				$('#contacts_details').append(jsondata.data.page);
+				$('#contacts_cardoptions').before(jsondata.data.page);
 				$('#contacts_addpropertyform').remove();
+				$('#contacts_addcontactsparts').remove();
 			}
 			else{
 				alert(jsondata.data.message);
@@ -81,7 +79,7 @@ $(document).ready(function(){
 	$('#contacts_newcontact').click(function(){
 		$.getJSON('ajax/showaddcard.php',{},function(jsondata){
 			if(jsondata.status == 'success'){
-				$('#contacts_details').attr('x-id','');
+				$('#contacts_details').data('id','');
 				$('#contacts_details').html(jsondata.data.page);
 			}
 			else{
@@ -94,7 +92,7 @@ $(document).ready(function(){
 	$('#contacts_addcardform input[type="submit"]').live('click',function(){
 		$.post('ajax/addcard.php',$('#contacts_addcardform').serialize(),function(jsondata){
 			if(jsondata.status == 'success'){
-				$('#contacts_details').attr('x-id',jsondata.data.id);
+				$('#contacts_details').data('id',jsondata.data.id);
 				$('#contacts_details').html(jsondata.data.page);
 			}
 			else{
@@ -104,13 +102,12 @@ $(document).ready(function(){
 		return false;
 	});
 
-	$('.contacts_property [x-use="edit"]').live('click',function(){
-		var id = $('#contacts_details').attr('x-id');
-		var checksum = $(this).parent().parent().attr('x-checksum');
-		var line = $(this).parent().parent().attr('x-line');
-		$.getJSON('ajax/showsetproperty.php',{'id': id, 'checksum': checksum, 'line': line },function(jsondata){
+	$('.contacts_property [data-use="edit"]').live('click',function(){
+		var id = $('#contacts_details').data('id');
+		var checksum = $(this).parent().parent().data('checksum');
+		$.getJSON('ajax/showsetproperty.php',{'id': id, 'checksum': checksum },function(jsondata){
 			if(jsondata.status == 'success'){
-				$('.contacts_property[x-line="'+line+'"][x-checksum="'+checksum+'"] .contacts_propertyvalue').html(jsondata.data.page);
+				$('.contacts_property[data-checksum="'+checksum+'"] .contacts_propertyvalue').html(jsondata.data.page);
 			}
 			else{
 				alert(jsondata.data.message);
@@ -122,7 +119,7 @@ $(document).ready(function(){
 	$('#contacts_setpropertyform input[type="submit"]').live('click',function(){
 		$.post('ajax/setproperty.php',$('#contacts_setpropertyform').serialize(),function(jsondata){
 			if(jsondata.status == 'success'){
-				$('.contacts_property[x-line="'+jsondata.data.line+'"][x-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page);
+				$('.contacts_property[data-checksum="'+jsondata.data.oldchecksum+'"]').replaceWith(jsondata.data.page);
 			}
 			else{
 				alert(jsondata.data.message);
@@ -131,13 +128,12 @@ $(document).ready(function(){
 		return false;
 	});
 
-	$('.contacts_property [x-use="delete"]').live('click',function(){
-		var id = $('#contacts_details').attr('x-id');
-		var checksum = $(this).parent().parent().attr('x-checksum');
-		var line = $(this).parent().parent().attr('x-line');
-		$.getJSON('ajax/deleteproperty.php',{'id': id, 'checksum': checksum, 'line': line },function(jsondata){
+	$('.contacts_property [data-use="delete"]').live('click',function(){
+		var id = $('#contacts_details').data('id');
+		var checksum = $(this).parent().parent().data('checksum');
+		$.getJSON('ajax/deleteproperty.php',{'id': id, 'checksum': checksum },function(jsondata){
 			if(jsondata.status == 'success'){
-				$('.contacts_property[x-line="'+line+'"][x-checksum="'+checksum+'"]').remove();
+				$('.contacts_property[data-checksum="'+checksum+'"]').remove();
 			}
 			else{
 				alert(jsondata.data.message);
diff --git a/apps/contacts/lib/addressbook.php b/apps/contacts/lib/addressbook.php
index cb7b0b4671aac7922bc9562fae979498ddef5423..8b91cdbd6f5e43442422915490a3cf42cadd4326 100644
--- a/apps/contacts/lib/addressbook.php
+++ b/apps/contacts/lib/addressbook.php
@@ -291,32 +291,35 @@ class OC_Contacts_Addressbook{
 
 	public static function structureContact($object){
 		$details = array();
-		$line = 0;
 		foreach($object->children as $property){
-			$temp = self::structureProperty($property,$line);
+			$temp = self::structureProperty($property);
 			if(array_key_exists($property->name,$details)){
 				$details[$property->name][] = $temp;
 			}
 			else{
 				$details[$property->name] = array($temp);
 			}
-			$line++;
 		}
 		return $details;
 	}
 	
-	public static function structureProperty($property,$line=null){
+	public static function structureProperty($property){
 		$value = $property->value;
-		if($property->name == 'ADR'){
+		$value = htmlspecialchars($value);
+		if($property->name == 'ADR' || $property->name == 'N'){
 			$value = self::unescapeSemicolons($value);
 		}
 		$temp = array(
 			'name' => $property->name,
 			'value' => $value,
-			'line' => $line,
 			'parameters' => array(),
 			'checksum' => md5($property->serialize()));
 		foreach($property->parameters as $parameter){
+			// Faulty entries by kaddressbook
+			if($parameter->name == 'TYPE' && $parameter->value == 'PREF'){
+				$parameter->name = 'PREF';
+				$parameter->value = '1';
+			}
 			$temp['parameters'][$parameter->name] = $parameter->value;
 		}
 		return $temp;
diff --git a/apps/contacts/lib/hooks.php b/apps/contacts/lib/hooks.php
new file mode 100644
index 0000000000000000000000000000000000000000..70f1fe185187b1caceca034dede5466d547973f4
--- /dev/null
+++ b/apps/contacts/lib/hooks.php
@@ -0,0 +1,41 @@
+<?php
+/**
+ * ownCloud - Addressbook
+ *
+ * @author Jakob Sack
+ * @copyright 2011 Jakob Sack mail@jakobsack.de
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
+ * License as published by the Free Software Foundation; either
+ * version 3 of the License, or any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public
+ * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+
+/**
+ * This class contains all hooks.
+ */
+class OC_Contacts_Hooks{
+	/**
+	 * @brief Deletes all Addressbooks of a certain user
+	 * @param paramters parameters from postDeleteUser-Hook
+	 * @return array
+	 */
+	public function deleteUser($parameters) {
+		$addressbooks = OC_Contacts_Addressbook::allAddressbooks($parameters['uid']);
+		
+		foreach($addressbooks as $addressbook) {
+			OC_Contacts_Addressbook::deleteAddressbook($addressbook['id']);
+		}
+
+		return true;
+	}
+}
diff --git a/apps/contacts/templates/index.php b/apps/contacts/templates/index.php
index e6dd45739bc5a5c82f53727978d770a2456eea57..ea76621674aafb1b6fa7fd283bd936ee524c9c89 100644
--- a/apps/contacts/templates/index.php
+++ b/apps/contacts/templates/index.php
@@ -3,25 +3,15 @@ OC_Util::addScript('contacts','interface');
 OC_Util::addStyle('contacts','styles');
 ?>
 
-<?php
-/*<div class="contacts_addressbooks">
-	<div class="contacts_addressbooksexpander">
-		Addressbooks
-	</div>
-	<div class="contacts_addressbooksdetails" style="display:none;">
-		<?php foreach($_['addressbooks'] as $addressbook): ?>
-			<?php echo $addressbook['displayname']; ?>: <?php echo $addressbook['description']; ?><br>
-		<?php endforeach; ?>
-		<br>To use this addressbook, use .../apps/contacts/carddav.php/addressbooks/USERNAME/addressbookname.php
-	</div>
-</div>*/
-?>
 <div id="contacts_contacts" class="leftcontent">
 	<ul>
 		<?php echo $this->inc("part.contacts"); ?>
 	</ul>
 	<a id="contacts_newcontact"><?php echo $l->t('Add Contact'); ?></a>
 </div>
-<div id="contacts_details" class="rightcontent" x-id="<?php echo $_['id']; ?>">
+<div id="contacts_details" class="rightcontent" data-id="<?php echo $_['id']; ?>">
 	<?php echo $this->inc("part.details"); ?>
 </div>
+<?php if(count($_['addressbooks']) == 1 ): ?>
+	<?php echo $l->t('The path to this addressbook is %s', array(OC::$WEBROOT.'/apps/contacts/carddav.php/addressbooks/'.$_['addressbooks'][0]['uri'])); ?>
+<?php endif; ?>
diff --git a/apps/contacts/templates/part.addpropertyform.php b/apps/contacts/templates/part.addpropertyform.php
index ff9090b76d87c530ecc18774eba1b6efb8c69289..32affde952688024d7c529a7b75c68ae981b5f59 100644
--- a/apps/contacts/templates/part.addpropertyform.php
+++ b/apps/contacts/templates/part.addpropertyform.php
@@ -1,7 +1,6 @@
 <form id="contacts_addpropertyform">
 	<input type="hidden" name="id" value="<?php echo $_['id']; ?>">
 	<select name="name" size="1">
-		<option value="BDAY"><?php echo $l->t('Birthday'); ?></option>
 		<option value="ADR"><?php echo $l->t('Address'); ?></option>
 		<option value="TEL"><?php echo $l->t('Telephone'); ?></option>
 		<option value="EMAIL" selected="selected"><?php echo $l->t('Email'); ?></option>
@@ -15,8 +14,8 @@
 <div id="contacts_addcontactsparts" style="display:none;">
 	<div id="contacts_addresspart">
 		<select name="parameters[TYPE]" size="1">
-			<option value="WORK"><?php echo $l->t('Work'); ?></option>
-			<option value="HOME" selected="selected"><?php echo $l->t('Home'); ?></option>
+			<option value="adr_work"><?php echo $l->t('Work'); ?></option>
+			<option value="adr_home" selected="selected"><?php echo $l->t('Home'); ?></option>
 		</select>
 		<?php echo $l->t('PO Box'); ?> <input type="text" name="value[0]" value="">
 		<?php echo $l->t('Extended Address'); ?> <input type="text" name="value[1]" value="">
@@ -28,15 +27,17 @@
 	</div>
 	<div id="contacts_phonepart">
 		<select name="parameters[TYPE]" size="1">
-			<option value="WORK"><?php echo $l->t('Work'); ?></option>
-			<option value="CELL" selected="selected"><?php echo $l->t('Mobile'); ?></option>
-			<option value="HOME"><?php echo $l->t('Home'); ?></option>
+			<option value="home"><?php echo $l->t('tel_home'); ?></option>
+			<option value="cell" selected="selected"><?php echo $l->t('tel_cell'); ?></option>
+			<option value="work"><?php echo $l->t('tel_work'); ?></option>
+			<option value="text"><?php echo $l->t('tel_text'); ?></option>
+			<option value="voice"><?php echo $l->t('tel_voice'); ?></option>
+			<option value="fax"><?php echo $l->t('tel_fax'); ?></option>
+			<option value="video"><?php echo $l->t('tel_video'); ?></option>
+			<option value="pager"><?php echo $l->t('tel_pager'); ?></option>
 		</select>
 		<input type="text" name="value" value="">
 	</div>
-	<div id="contacts_fieldpart">
-		<textarea type="text" name="value"></textarea>
-	</div>
 	<div id="contacts_generic">
 		<input type="text" name="value" value="">
 	</div>
diff --git a/apps/contacts/templates/part.contacts.php b/apps/contacts/templates/part.contacts.php
index fa6d4790cfc8ebf54113abe2e5af25cf4efb8c62..6664a3671acddda8c70d6e0df5d4183ce27fd6ec 100644
--- a/apps/contacts/templates/part.contacts.php
+++ b/apps/contacts/templates/part.contacts.php
@@ -1,3 +1,3 @@
 <?php foreach( $_['contacts'] as $contact ): ?>
-	<li x-id="<?php echo $contact['id']; ?>"><a href="index.php?id=<?php echo $contact['id']; ?>"><?php echo $contact['name']; ?></a> </li>
+	<li data-id="<?php echo $contact['id']; ?>"><a href="index.php?id=<?php echo $contact['id']; ?>"><?php echo $contact['name']; ?></a> </li>
 <?php endforeach; ?>
diff --git a/apps/contacts/templates/part.details.php b/apps/contacts/templates/part.details.php
index 4aca8dbc7901f15f47ac333a24a1beb7331f0a7e..e463459e78c8c380694ed8f463682a64bfb6f1c1 100644
--- a/apps/contacts/templates/part.details.php
+++ b/apps/contacts/templates/part.details.php
@@ -1,10 +1,15 @@
 <?php if(array_key_exists('PHOTO',$_['details'])): ?>
 	<img src="photo.php?id=<?php echo $_['id']; ?>">
 <?php endif; ?>
-<?php echo $this->inc('part.property', array('property' => $_['details']['FN'][0])); ?>
+
+<?php if(array_key_exists('FN',$_['details'])): ?>
+	<?php echo $this->inc('part.property', array('property' => $_['details']['FN'][0])); ?>
+<?php endif; ?>
+
 <?php if(isset($_['details']['BDAY'])): // Emails first ?>
 	<?php echo $this->inc('part.property', array('property' => $_['details']['BDAY'][0])); ?>
 <?php endif; ?>
+
 <?php if(isset($_['details']['ORG'])): // Emails first ?>
 	<?php echo $this->inc('part.property', array('property' => $_['details']['ORG'][0])); ?>
 <?php endif; ?>
@@ -18,5 +23,7 @@
 	<?php endif; ?>
 <?php endforeach; ?>
 
-<a id="contacts_deletecard"><img src="../../core/img/actions/delete.png"></a>
-<a id="contacts_addproperty"><img src="../../core/img/actions/download.png"></a>
+<div id="contacts_cardoptions">
+	<a id="contacts_deletecard"><img src="../../core/img/actions/delete.png"></a>
+	<a id="contacts_addproperty"><img src="../../core/img/actions/download.png"></a>
+</div>
diff --git a/apps/contacts/templates/part.property.php b/apps/contacts/templates/part.property.php
index 1a4266b3a2b86ce28e490c5a6004f954f2738130..1611e54b65fec8a80147f89313c0ce2682ab5932 100644
--- a/apps/contacts/templates/part.property.php
+++ b/apps/contacts/templates/part.property.php
@@ -1,40 +1,48 @@
-<div class="contacts_property" x-line="<?php echo $_['property']['line']; ?>" x-checksum="<?php echo $_['property']['checksum']; ?>">
+<div class="contacts_property" data-checksum="<?php echo $_['property']['checksum']; ?>">
 	<?php if($_['property']['name'] == 'FN'): ?>
 		<div class="contacts_propertyname"><?php echo $l->t('Name'); ?></div>
 		<div class="contacts_propertyvalue">
-			<span style="display:none;" x-use="edit"><img src="../../core/img/actions/rename.png"></span>
 			<?php echo $_['property']['value']; ?>
+			<span style="display:none;" data-use="edit"><img src="../../core/img/actions/rename.png"></span>
 		</div>
 	<?php elseif($_['property']['name'] == 'BDAY'): ?>
 		<div class="contacts_propertyname"><?php echo $l->t('Birthday'); ?></div>
 		<div class="contacts_propertyvalue">
 		<?php echo $l->l('date',new DateTime($_['property']['value'])); ?>
-			<span style="display:none;" x-use="edit"><img src="../../core/img/actions/rename.png"></span>
-			<span style="display:none;" x-use="delete"><img src="../../core/img/actions/delete.png"></span>
+			<span style="display:none;" data-use="delete"><img src="../../core/img/actions/delete.png"></span>
 		</div>
 	<?php elseif($_['property']['name'] == 'ORG'): ?>
 		<div class="contacts_propertyname"><?php echo $l->t('Organisation'); ?></div>
 		<div class="contacts_propertyvalue">
 			<?php echo $_['property']['value']; ?>
-			<span style="display:none;" x-use="edit"><img src="../../core/img/actions/rename.png"></span>
-			<span style="display:none;" x-use="delete"><img src="../../core/img/actions/delete.png"></span>
+			<span style="display:none;" data-use="edit"><img src="../../core/img/actions/rename.png"></span>
+			<span style="display:none;" data-use="delete"><img src="../../core/img/actions/delete.png"></span>
 		</div>
 	<?php elseif($_['property']['name'] == 'EMAIL'): ?>
 		<div class="contacts_propertyname"><?php echo $l->t('Email'); ?></div>
 		<div class="contacts_propertyvalue">
 			<?php echo $_['property']['value']; ?>
-			<span style="display:none;" x-use="edit"><img src="../../core/img/actions/rename.png"></span>
-			<span style="display:none;" x-use="delete"><img src="../../core/img/actions/delete.png"></span>
+			<span style="display:none;" data-use="edit"><img src="../../core/img/actions/rename.png"></span>
+			<span style="display:none;" data-use="delete"><img src="../../core/img/actions/delete.png"></span>
 		</div>
 	<?php elseif($_['property']['name'] == 'TEL'): ?>
-		<div class="contacts_propertyname"><?php echo $l->t('Telefon'); ?></div>
+		<div class="contacts_propertyname"><?php echo $l->t('Telephone'); ?></div>
 		<div class="contacts_propertyvalue">
 			<?php echo $_['property']['value']; ?>
-			<span style="display:none;" x-use="edit"><img src="../../core/img/actions/rename.png"></span>
-			<span style="display:none;" x-use="delete"><img src="../../core/img/actions/delete.png"></span>
+			<?php if(isset($_['property']['parameters']['TYPE'])): ?>
+				(<?php echo $l->t('tel_'.strtolower($_['property']['parameters']['TYPE'])); ?>)
+			<?php endif; ?>
+			<span style="display:none;" data-use="edit"><img src="../../core/img/actions/rename.png"></span>
+			<span style="display:none;" data-use="delete"><img src="../../core/img/actions/delete.png"></span>
 		</div>
 	<?php elseif($_['property']['name'] == 'ADR'): ?>
-		<div class="contacts_propertyname"><?php echo $l->t('Address'); ?></div>
+		<div class="contacts_propertyname">
+			<?php echo $l->t('Address'); ?>
+			<?php if(isset($_['property']['parameters']['TYPE'])): ?>
+				<br>
+				(<?php echo $l->t('adr_'.strtolower($_['property']['parameters']['TYPE'])); ?>)
+			<?php endif; ?>
+		</div>
 		<div class="contacts_propertyvalue">
 			<?php echo $l->t('PO Box'); ?> <?php echo $_['property']['value'][0]; ?><br>
 			<?php echo $l->t('Extended Address'); ?> <?php echo $_['property']['value'][1]; ?><br>
@@ -43,8 +51,8 @@
 			<?php echo $l->t('Region'); ?> <?php echo $_['property']['value'][4]; ?><br>
 			<?php echo $l->t('Postal Code'); ?> <?php echo $_['property']['value'][5]; ?><br>
 			<?php echo $l->t('Country'); ?> <?php echo $_['property']['value'][6]; ?> 
-			<span style="display:none;" x-use="edit"><img src="../../core/img/actions/rename.png"></span>
-			<span style="display:none;" x-use="delete"><img src="../../core/img/actions/delete.png"></span>
+			<span style="display:none;" data-use="edit"><img src="../../core/img/actions/rename.png"></span>
+			<span style="display:none;" data-use="delete"><img src="../../core/img/actions/delete.png"></span>
 		</div>
 	<?php endif; ?>
 </div>
diff --git a/apps/contacts/templates/part.setpropertyform.php b/apps/contacts/templates/part.setpropertyform.php
index cd774ee659350a5caaeee5b71e87071100be3c17..d8127bb08b034211dfdda1cf38ba0c91a38a9317 100644
--- a/apps/contacts/templates/part.setpropertyform.php
+++ b/apps/contacts/templates/part.setpropertyform.php
@@ -1,6 +1,5 @@
 <form id="contacts_setpropertyform">
 	<input type="hidden" name="checksum" value="<?php echo $_['property']['checksum']; ?>">
-	<input type="hidden" name="line" value="<?php echo $_['property']['line']; ?>">
 	<input type="hidden" name="id" value="<?php echo $_['id']; ?>">
 	<?php if($_['property']['name']=='ADR'): ?>
 		<?php echo $l->t('PO Box'); ?> <input type="text" name="value[0]" value="<?php echo $_['property']['value'][0]; ?>">
@@ -12,8 +11,6 @@
 		<?php echo $l->t('Country'); ?> <input type="text" name="value[6]" value="<?php echo $_['property']['value'][6]; ?>">
 	<?php elseif($_['property']['name']=='TEL'): ?>
 		<input type="text" name="value" value="<?php echo $_['property']['value']; ?>">
-	<?php elseif($_['property']['name']=='NOTE'): ?>
-		<textarea type="text" name="value"><?php echo $_['property']['value']; ?></textarea>
 	<?php else: ?>
 		<input type="text" name="value" value="<?php echo $_['property']['value']; ?>">
 	<?php endif; ?>
diff --git a/apps/files_textviewer/appinfo/info.xml b/apps/files_textviewer/appinfo/info.xml
index 112a416c3579400edec4268445ac0bc76887cf27..209b414034639a609d82b535a9cd26bf6ab3a73b 100644
--- a/apps/files_textviewer/appinfo/info.xml
+++ b/apps/files_textviewer/appinfo/info.xml
@@ -4,6 +4,6 @@
 	<name>Text viewer</name>
 	<version>0.3</version>
 	<licence>AGPL</licence>
-	<author>Icewind</author>
+	<author>Robin Appelman</author>
 	<require>2</require>
 </info>
diff --git a/apps/media/appinfo/app.php b/apps/media/appinfo/app.php
index bc80536a9696fc8bd525aad235c9ae8032bba0e1..ebd360eccb3665732e1c79601684f36af650399b 100644
--- a/apps/media/appinfo/app.php
+++ b/apps/media/appinfo/app.php
@@ -20,11 +20,13 @@
  *
  */
 
+$l=new OC_L10N('media');
+
 require_once('apps/media/lib_media.php');
 
 OC_Util::addScript('media','loader');
 
 OC_App::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' ));
 
-OC_App::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo( 'media', 'index.php' ), 'icon' => OC_Helper::imagePath( 'media', 'media.png' ), 'name' => 'Music' ));
+OC_App::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_Helper::linkTo( 'media', 'index.php' ), 'icon' => OC_Helper::imagePath( 'media', 'media.png' ), 'name' => $l->t('Music') ));
 ?>
diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js
index df7b79e332dcb0616c53de899473271c61af0a65..e49024973fa844691407ab52b175bf1b8d8d1d7f 100644
--- a/apps/media/js/collection.js
+++ b/apps/media/js/collection.js
@@ -33,7 +33,7 @@ Collection={
 						Collection.loadedListeners[i]();
 					}
 					if(collection.length==0){
-						$('#scan input.start').val('Scan Collection');
+						$('#scan input.start').val(t('media','Scan Collection'));
 						$('#plugins a[href="#collection"]').trigger('click');
 					}
 					
diff --git a/apps/media/js/music.js b/apps/media/js/music.js
index 7034824cad8960456543717adc5f36aed213e596..c04c579d1ca04805d164a3f16b1d8f9c4b1cce98 100644
--- a/apps/media/js/music.js
+++ b/apps/media/js/music.js
@@ -15,7 +15,7 @@ $(document).ready(function(){
 			PlayList.play(oldSize);
 			PlayList.render();
 		});
-		var button=$('<input type="button" title="Add to playlist" class="add"></input>');
+		var button=$('<input type="button" title="'+t('media','Add to playlist')+'" class="add"></input>');
 		button.css('background-image','url('+OC.imagePath('core','actions/play-add')+')')
 		button.click(function(event){
 			event.stopPropagation();
diff --git a/apps/media/js/playlist.js b/apps/media/js/playlist.js
index 636ae29c5558025df9d72b086eebf0d090c7bec3..ad6c63a0333de86ff2d8ab8daef88a820c8f7ec8 100644
--- a/apps/media/js/playlist.js
+++ b/apps/media/js/playlist.js
@@ -19,7 +19,7 @@ PlayList.render=function(){
 			PlayList.render();
 		});
 		tr.hover(function(){
-			var button=$('<img class="remove" title="Remove"/>');
+			var button=$('<img class="remove" title="'+t('media','Remove')+'"/>');
 			button.attr('src',OC.imagePath('core','actions/delete'));
 			$(this).children().last().append(button);
 			button.click(function(event){
@@ -74,14 +74,14 @@ $(document).ready(function(){
 function procesSelection(){
 	var selected=PlayList.getSelected();
 	if(selected.length==0){
-		$('th.name span').text('Name');
-		$('th.artist').text('Artist');
-		$('th.album').text('Album');
-		$('th.time').text('Time');
+		$('th.name span').text(t('media','Name'));
+		$('th.artist').text(t('media','Artist'));
+		$('th.album').text(t('media','Album'));
+		$('th.time').text(t('media','Time'));
 		$('th.plays').empty();
-		$('th.plays').text('Plays');
+		$('th.plays').text(t('media','Plays'));
 	}else{
-		var name=selected.length+' selected';
+		var name=selected.length+' '+t('media','selected');
 		var artist=$(selected[0]).data('artist');
 		var album=$(selected[0]).data('album');
 		var time=$(selected[0]).data('time');
diff --git a/apps/media/js/scanner.js b/apps/media/js/scanner.js
index 165f86d05f5177c053df3c618649e64963ddf4e7..0ebf408e702070d809bded61874aee436090dd3c 100644
--- a/apps/media/js/scanner.js
+++ b/apps/media/js/scanner.js
@@ -68,10 +68,10 @@ Scanner={
 	toggle:function(){
 		if(Scanner.stopScanning){
 			Scanner.start();
-			$('#scan input.stop').val('Pause');
+			$('#scan input.stop').val(t('media','Pause'));
 		}else{
 			Scanner.stop();
-			$('#scan input.stop').val('Resume');
+			$('#scan input.stop').val(t('media','Resume'));
 		}
 	}
 
diff --git a/apps/media/l10n/xgettextfiles b/apps/media/l10n/xgettextfiles
new file mode 100644
index 0000000000000000000000000000000000000000..39a310a4537ee23f5eca14a616e70b60d8f94417
--- /dev/null
+++ b/apps/media/l10n/xgettextfiles
@@ -0,0 +1,6 @@
+../appinfo/app.php
+../templates/music.php
+../js/scanner.js
+../js/collection.js
+../js/music.js
+../js/playlist.js
diff --git a/apps/media/templates/music.php b/apps/media/templates/music.php
index 5d0b0b6f0c4150a87e34ba73257f7f6ea869d3f7..d103e10b7502bfb27cf1f8487b8656723bdde202 100644
--- a/apps/media/templates/music.php
+++ b/apps/media/templates/music.php
@@ -24,14 +24,14 @@
 <table id="playlist">
 	<thead>
 		<tr>
-			<th class="name"><input id="selectAll" type="checkbox">Name</th>
-			<th class="artist">Artist</th>
+			<th class="name"><input id="selectAll" type="checkbox"><?php echo $l->t('Name')?></th>
+			<th class="artist"><?php echo $l->t('Artist')?></th>
 		</tr>
 	</thead>
 	<tbody>
 		<tr>
 			<td>
-				The playlist is empty
+				<?php echo $l->t('The playlist is empty')?>
 			</td>
 		</tr>
 	</tbody>
@@ -49,16 +49,16 @@
 
 <div id="rightcontent">
 <div id="scan">
-	<p id="scancount" style="display:none"><span class="songCount">0</span> Songs scanned</p>
+	<p id="scancount" style="display:none"><span class="songCount">0</span> <?php echo $l->t('Songs scanned')?></p>
 	<div id="scanprogressbar"></div>
-	<input type="button" class="start" value="Rescan Collection"></input>
-	<input type="button" class="stop" style="display:none" value="Pause"></input>
+	<input type="button" class="start" value="<?php echo $l->t('Rescan Collection')?>"></input>
+	<input type="button" class="stop" style="display:none" value="<?php echo $l->t('Pause')?>"></input>
 </div>
 <table id="collection">
 	<thead>
-		<th>Artist</th>
-		<th>Album</th>
-		<th>Title</th>
+		<th><?php echo $l->t('Artist')?></th>
+		<th><?php echo $l->t('Album')?></th>
+		<th><?php echo $l->t('Title')?></th>
 	</thead>
 	<tbody>
 		<tr class="template">
diff --git a/core/css/styles.css b/core/css/styles.css
index 4cb630d4a934677f71c8053f68ba7ca345527d3c..9da216a80d2b83897173628e3896d91131204fda 100644
--- a/core/css/styles.css
+++ b/core/css/styles.css
@@ -2,12 +2,20 @@
  This file is licensed under the Affero General Public License version 3 or later.
  See the COPYING-README file. */
 
-* { margin:0; padding:0; border:0; outline:0; cursor:default; }
+html, body, div, span, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, code, del, dfn, em, img, q, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, dialog, figure, footer, header, hgroup, nav, section { margin:0; padding:0; border:0; outline:0; font-weight:inherit; font-style:inherit; font-size:100%; font-family:inherit; vertical-align:baseline; cursor:default; }
+article, aside, dialog, figure, footer, header, hgroup, nav, section { display:block; }
+body { line-height:1.5; }
+table { border-collapse:separate; border-spacing:0; white-space:nowrap; }
+caption, th, td { text-align:left; font-weight:normal; }
+table, td, th { vertical-align:middle; }
+a { border:0; color:#000; text-decoration:none;}
+a, a img, a strong, a span, input, select, li { cursor:pointer; }
+ul { list-style:none; }
 body { background:#fefefe; font:normal 80%/1.6em "Lucida Grande", Arial, Verdana, sans-serif; color:#000; margin-bottom:2em; }
 
 
 /* HEADERS */
-#body-user #header, #body-settings #header { position:fixed; top:0; z-index:100; width:100%; height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; box-shadow:0 0 10px #000, inset 0 -2px 10px #222; }
+#body-user #header, #body-settings #header { position:fixed; top:0; z-index:300; width:100%; height:2.5em; padding:.5em; background:#1d2d44; -moz-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; box-shadow:0 0 10px #000, inset 0 -2px 10px #222; }
 #body-login #header { margin:-2em auto 0; text-align:center; height:10em;
  -moz-box-shadow:0 0 1em #000; -webkit-box-shadow:0 0 1em #000; box-shadow:0 0 1em #000;
 background: #1d2d44; /* Old browsers */
@@ -21,20 +29,16 @@ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', end
 
 #owncloud { float:left; }
 h1 { margin:1em 3em 1em 0; border-bottom:1px solid #666; text-transform:uppercase; font-weight:normal; font-style:italic; color:#666; }
-p.center { text-align:center; }
-a { color:#000; text-decoration:none; }
-table { white-space:nowrap; }
-a, a img, a strong, a span, input, button, select, li { cursor:pointer; }
 
 
 /* INPUTS */
 input[type="text"], input[type="password"] { cursor:text; }
-input, select { font-size:1em; width:10em; margin:.3em; padding:.5em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
+input, select { font-size:1em; width:10em; margin:.3em; padding:.6em .5em .4em; background:#fff; color:#333; border:1px solid #ddd; -moz-box-shadow:0 1px 1px #fff, 0 2px 0 #bbb inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; box-shadow:0 1px 1px #fff, 0 1px 0 #bbb inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
 input[type="text"], input[type="password"] { background:#f8f8f8; color:#555; cursor:text; }
 input[type="text"]:hover, input[type="text"]:focus, input[type="password"]:hover, input[type="password"]:focus { background:#fff; color:#333; }
 
-input[type="submit"] { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
-input[type="submit"]:hover, input[type="submit"]:focus { background:#fff; color:#333; }
+input[type="submit"], input[type="button"] { width:auto; padding:.4em; border:1px solid #ddd; font-weight:bold; cursor:pointer; background:#f8f8f8; color:#555; text-shadow:#fff 0 1px 0; -moz-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -webkit-box-shadow:0 1px 1px #fff, 0 1px 1px #fff inset; -moz-border-radius:.5em; -webkit-border-radius:.5em; border-radius:.5em; }
+input[type="submit"]:hover, input[type="submit"]:focus, input[type="button"]:hover, input[type="button"]:focus { background:#fff; color:#333; }
 input[type="checkbox"] { width:auto; }
 
 #body-login input { font-size:1.5em; }
@@ -48,8 +52,8 @@ input[type="submit"].highlight{ background:#ffc100; border:1px solid #db0; text-
 
 
 form#user_settings { max-width:600px; }
-form#user_settings p label { display:block; float:left; width:35%; padding:0.4em 0.5em 0 0; text-align:right; }
-form p { padding:0.5em 4em 0.5em 0.5em; text-align:left; }
+form#user_settings p label { display:block; float:left; width:35%; padding:.4em .5em 0 0; text-align:right; }
+form p { padding:.5em 4em .5em .5em; text-align:left; }
 form p.form_footer { margin:1em 0 0 0; text-align:right; }
 form label { cursor:pointer; }
 #body-settings fieldset { padding:1em; width:40em; margin:1em;
@@ -58,47 +62,46 @@ legend { padding:.2em; font-size:1.2em; }
 .template{display:none;}
 
 /* CONTENT ------------------------------------------------------------------ */
-#controls { width:100%; top:3.5em; height:3em; margin:0; background-color:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:2; }
-#content { margin:3.5em 0 0 12.5em; }
-#body-settings #content { padding:1em; }
-#leftcontent { position:absolute; top:6.5em; width:50em; }
-#rightcontent { position:absolute; top:6.5em; left:32em; }
+#controls { width:100%; top:3.5em; height:2.8em; margin:0; background:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:200; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; }
+#content { margin:3.5em 0 0 12.5em; padding-bottom:10em; }
+#leftcontent { position:absolute; top:6.5em; width:20em; background:#f8f8f8; height:100%; border-right:1px solid #ddd; }
+#rightcontent { position:absolute; top:6.5em; left:33em; }
 
 /* LOG IN & INSTALLATION ------------------------------------------------------------ */
-#body-login { background-color:#ddd; }
-#body-login p.info { width:16em; margin:2em auto; padding:1em; background-color:#eee; -moz-box-shadow:0 1px 0 #bbb inset; -webkit-box-shadow:0 1px 0 #bbb inset; box-shadow:0 1px 0 #bbb inset; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; }
+#body-login { background:#ddd; }
+#body-login p.info { width:16em; margin:2em auto; padding:1em; background:#eee; -moz-box-shadow:0 1px 0 #bbb inset; -webkit-box-shadow:0 1px 0 #bbb inset; box-shadow:0 1px 0 #bbb inset; -moz-border-radius:1em; -webkit-border-radius:1em; border-radius:1em; }
 #body-login p.info a { font-weight:bold; }
 
 #login { min-height:30em; margin:2em auto 0; border-bottom:1px solid #f8f8f8; background:#eee; }
 #login form { width:18em; margin:2em auto 5em; padding:0; }
-#login form fieldset { background-color:transparent; border:0; margin-bottom:2em; padding:0; }
+#login form fieldset { background:0; border:0; margin-bottom:2em; padding:0; }
 #login form fieldset legend { font-weight:bold; }
-#login form p { position:relative; padding:0; }
 #login form label { position:absolute; margin:.8em .8em; font-size:1.5em; color:#666; }
+#login form label#directorylabel { display:block; margin:.95em 0 .8em -5.5em; }
+
 #login form input[type="checkbox"]+label { position:relative; margin:0; font-size:1em; text-shadow:#fff 0 1px 0; }
 
 #login form ul.errors { background:#fed7d7; border:1px solid #f00; list-style-indent:inside; margin:0 0 4em 0; padding:1em 1em 1em 5em; }
 
 /* META NAVIGATION (Settings, Log out) ---------------------------------------------------------------- */ 
-#metanav { float:right; position:relative; top:.5em; right:1em; list-style:none; margin:0; padding:0; }
+#metanav { float:right; position:relative; top:.5em; right:1em; margin:0; padding:0; }
 #metanav li { display:inline; }
 #metanav li a { margin:.2em; padding:.7em; }
 #metanav li a:hover, #metanav li a:focus { background:rgba(0,0,0,.5); -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:#555 0 1px 0; -moz-box-shadow:#555 0 1px 0; -webkit-box-shadow:#555 0 1px 0; }
 #metanav li a img { vertical-align:middle; }
 
 /* NAVIGATION ------------------------------------------------------------- */
-#navigation { position:fixed; top:3.5em; float:left; width:12.5em; padding:0; z-index:50; height:100%; background:#eee; border-right: 1px #ccc solid; -moz-box-shadow: -3px 0 7px #000; -webkit-box-shadow: -3px 0 7px #000; box-shadow: -3px 0 7px #000; } }
-#navigation ul { list-style-type:none; border-top:1px solid #ccc; }
-#navigation a { display:block; padding:.5em .5em .5em 2.5em; background-position:1em center; background-repeat:no-repeat; border-bottom:1px solid #ddd; border-top:1px solid #fff; text-decoration:none; font-size:1.2em; color:#666; }
+#navigation { position:fixed; top:3.5em; float:left; width:12.5em; padding:0; z-index:250; height:100%; background:#eee; border-right: 1px #ccc solid; -moz-box-shadow: -3px 0 7px #000; -webkit-box-shadow: -3px 0 7px #000; box-shadow: -3px 0 7px #000; } }
+#navigation ul { border-top:1px solid #ccc; }
+#navigation a { display:block; padding:.6em .5em .4em 2.5em; background:1em center no-repeat; border-bottom:1px solid #ddd; border-top:1px solid #fff; text-decoration:none; font-size:1.2em; color:#666; text-shadow:#f8f8f8 0 1px 0; }
 #navigation a.active, #navigation a:hover, #navigation a:focus, #navigation a.selected { background-color:#ccc; border-top:1px solid #c8c8c8; border-bottom:1px solid #ccc; color:#000; }
-#navigation .subentry { background-color:#ddd; border-top:1px solid #aaa; color:#555; }
-#navigation .subentry.active { background-color:#bbb; border-top:1px solid #888; border-bottom:1px solid #bbb; }
-#navigation .subentry a { padding-left:3.1em; font-size:1em; }
 #navigation #settings { position:absolute; bottom:3.5em; width:100%; }
-#navigation #expand { margin:0 0 .2em 1.2em; cursor:pointer; }
+#expand { margin:0 0 .2em 1.2em; cursor:pointer; }
+#expand+span { position:relative; bottom:.4em; left:.2em; font-size:1.2em; color:#666; text-shadow:#f8f8f8 0 1px 0; }
 
 /* USER SETTINGS ------------------------------------------------------------ */
-#quota_indicator { margin:0 4em 1em 0; padding:0; border:1px solid #ddd; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; }
-#quota_indicator div { background-color:#76A9EA; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; }
+#quota_indicator { margin:0 4em 1em 0; padding:0; border:1px solid #ccc; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; }
+#quota_indicator div { background:#76a9ea; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; }
 
-li.error { list-style:none; width:640px; margin:4em auto; padding:1em 1em 1em 4em; background-color:#fee; background-image:url('../img/task-attention.png'); background-position:0.8em 0.8em; background-repeat:no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
+li.error { width:640px; margin:4em auto; padding:1em 1em 1em 4em; background:#fee url('../img/task-attention.png') .8em .8em no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
+.hidden{ display:none; }
diff --git a/core/js/js.js b/core/js/js.js
index 952c1b86ea988aeeddaf52b773b33caad99834f2..f4756d97b25d660fb24ac3991eb9d1b4f6e674ca 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -266,11 +266,13 @@ $(document).ready(function(){
 		}
 	});
 
-	if($('body').attr("id")=="body-user") { $('#settings li').hide(); }
-	$('#expand').click(function() {
-		$('#settings li').slideToggle();
+	if($('body').attr("id")=="body-user") { $('#settings #expanddiv').hide(); }
+	$('#settings #expand').click(function() {
+		$('#settings #expanddiv').slideToggle();
 	});
-	
+	$('#settings #expand').hover(function(){
+		$('#settings #expand+span').fadeToggle();
+	})
 });
 
 
diff --git a/core/l10n/xgettextfiles b/core/l10n/xgettextfiles
index b5d83a880d43fd5a4cb48c7ccb36534ddfee70ed..932042b337065823fbef5f9eab61d5ea6524e9ac 100644
--- a/core/l10n/xgettextfiles
+++ b/core/l10n/xgettextfiles
@@ -5,3 +5,4 @@
 ../templates/logout.php
 ../templates/part.pagenavi.php
 ../templates/part.searchbox.php
+../../lib/app.php
diff --git a/core/templates/installation.php b/core/templates/installation.php
index e9f7daf7b891e2b7d3ab6bccaa172f2f4c4db491..80c3c2730841932d4140fa04795a746793695e6c 100644
--- a/core/templates/installation.php
+++ b/core/templates/installation.php
@@ -18,8 +18,8 @@
 
 	<fieldset>
 		<legend><?php echo $l->t( 'Create an <strong>admin account</strong>' ); ?></legend>
-		<input type="text" name="adminlogin" id="adminlogin" value="<?php print OC_Helper::init_var('adminlogin'); ?>" placeholder="<?php echo $l->t( 'Username' ); ?>" autofocus required /></p>
-		<input type="password" name="adminpass" id="adminpass" value="<?php print OC_Helper::init_var('adminpass'); ?>" placeholder="<?php echo $l->t( 'Password' ); ?>" required /></p>
+		<input type="text" name="adminlogin" id="adminlogin" value="<?php print OC_Helper::init_var('adminlogin'); ?>" placeholder="<?php echo $l->t( 'Username' ); ?>" autocomplete="off" autofocus required />
+		<input type="password" name="adminpass" id="adminpass" value="<?php print OC_Helper::init_var('adminpass'); ?>" placeholder="<?php echo $l->t( 'Password' ); ?>" required />
 	</fieldset>
 	
 	<fieldset id='databaseField'>
@@ -56,11 +56,10 @@
 
 		<?php if($hasOtherDB): ?>
 		<div id="use_other_db">
-			<input type="text" name="dbuser" id="dbuser" value="<?php print OC_Helper::init_var('dbuser'); ?>" placeholder="<?php echo $l->t( 'Database user' ); ?>" required />
+			<input type="text" name="dbuser" id="dbuser" value="<?php print OC_Helper::init_var('dbuser'); ?>" placeholder="<?php echo $l->t( 'Database user' ); ?>" autocomplete="off" />
 			<input type="password" name="dbpass" id="dbpass" value="<?php print OC_Helper::init_var('dbpass'); ?>" placeholder="<?php echo $l->t( 'Database password' ); ?>" />
-			<input type="text" name="dbname" id="dbname" value="<?php print OC_Helper::init_var('dbname'); ?>" placeholder="<?php echo $l->t( 'Database name' ); ?>" required />
-			<input type="text" name="dbhost" id="dbhost" value="<?php print OC_Helper::init_var('dbhost', 'localhost'); ?>" placeholder="<?php echo $l->t( 'Host' ); ?>" required />
-			<input type="text" name="dbtableprefix" id="dbtableprefix" value="<?php print OC_Helper::init_var('dbtableprefix', 'oc_'); ?>" placeholder="<?php echo $l->t( 'Table prefix' ); ?>" />
+			<input type="text" name="dbname" id="dbname" value="<?php print OC_Helper::init_var('dbname'); ?>" placeholder="<?php echo $l->t( 'Database name' ); ?>" autocomplete="off" />
+			
 			
 		</div>
 		<?php endif; ?>
@@ -70,8 +69,10 @@
 	<a id='showAdvanced'><strong><?php echo $l->t( 'Advanced' ); ?> ▾</strong></a>
 
 	<fieldset id='datadirField'>
-		<legend><?php echo $l->t( 'Set data folder' ); ?></legend>
-		<input type="text" name="directory" id="directory" value="<?php print OC_Helper::init_var('directory', $_['directory']); ?>" placeholder="<?php echo $l->t( 'Data folder' ); ?>" required /></p>
+		<input type="text" name="dbhost" id="dbhost" value="<?php print OC_Helper::init_var('dbhost', 'localhost'); ?>" placeholder="<?php echo $l->t( 'Host' ); ?>" />
+		<input type="text" name="dbtableprefix" id="dbtableprefix" value="<?php print OC_Helper::init_var('dbtableprefix', 'oc_'); ?>" placeholder="<?php echo $l->t( 'Table prefix' ); ?>" />
+
+		<label id="directorylabel" for="directory"><?php echo $l->t( 'Data folder' ); ?></label><input type="text" name="directory" id="directory" value="<?php print OC_Helper::init_var('directory', $_['directory']); ?>" placeholder="<?php echo $l->t( 'Data folder' ); ?>" />
 	</fieldset>
 
 	<input type="submit" value="<?php echo $l->t( 'Finish setup' ); ?>" />
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php
index 2dce647873fce93c2bacc29abd9661fb39013097..f172e894e76bf448322ad331d175f245ec0c90d9 100644
--- a/core/templates/layout.user.php
+++ b/core/templates/layout.user.php
@@ -32,7 +32,7 @@
 			<a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img src="<?php echo image_path('', 'owncloud-logo-small-white.png'); ?>" alt="ownCloud" /></a>
 			<?php echo $_['searchbox']?>
 			<ul id="metanav">
-				<li><a href="<?php echo link_to('', 'index.php'); ?>?logout=true" title="Log out"><img class='svg' src="<?php echo image_path('', 'actions/logout.svg'); ?>" /></a></li>
+				<li><a href="<?php echo link_to('', 'index.php'); ?>?logout=true" title="<?php echo $l->t('Log out');?>"><img class='svg' src="<?php echo image_path('', 'actions/logout.svg'); ?>" /></a></li>
 			</ul>
 		</div></header>
 
@@ -50,8 +50,11 @@
 					</li>
 				<?php endforeach; ?>
 			</ul>
+
 			<ul id="settings">
 				<img id="expand" class='svg' src="<?php echo image_path('', 'actions/settings.svg'); ?>" />
+				<span style="display:none"><?php echo $l->t('Settings');?></span>
+				<div id="expanddiv">
 				<?php foreach($_['settingsnavigation'] as $entry):?>
 					<li><a style="background-image:url(<?php echo $entry['icon']; ?>)" href="<?php echo $entry['href']; ?>" title="" <?php if( $entry["active"] ): ?> class="active"<?php endif; ?>><?php echo $entry['name'] ?></a></li>
 					<?php if( sizeof( $entry["subnavigation"] )): ?>
@@ -60,6 +63,7 @@
 						<?php endforeach; ?>
 					<?php endif; ?>
 				<?php endforeach; ?>
+				</div>
 			</ul>
 		</div></nav>
 
diff --git a/docs/TODO b/docs/TODO
deleted file mode 100644
index 1165ed7e72a6a5fa46aff7de098b32c310459567..0000000000000000000000000000000000000000
--- a/docs/TODO
+++ /dev/null
@@ -1,2 +0,0 @@
-Database:
-    - Stored procedures!
diff --git a/docs/owncloud.sql b/docs/owncloud.sql
deleted file mode 100644
index 8037e4a25d1be2da178dfa550daaac6650ace484..0000000000000000000000000000000000000000
--- a/docs/owncloud.sql
+++ /dev/null
@@ -1,134 +0,0 @@
--- phpMyAdmin SQL Dump
--- version 3.4.3.1deb1
--- http://www.phpmyadmin.net
---
--- Host: localhost
--- Generation Time: Jul 22, 2011 at 10:38 PM
--- Server version: 5.1.58
--- PHP Version: 5.3.6-13
-
-SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
-SET time_zone = "+00:00";
-
---
--- Database: `owncloud`
---
-
--- --------------------------------------------------------
-
---
--- Table structure for table `appconfig`
---
-
-CREATE TABLE IF NOT EXISTS `appconfig` (
-  `appid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `configkey` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `configvalue` varchar(255) COLLATE utf8_unicode_ci NOT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `foldersize`
---
-
-CREATE TABLE IF NOT EXISTS `foldersize` (
-  `path` varchar(512) COLLATE utf8_unicode_ci NOT NULL,
-  `size` int(11) NOT NULL,
-  KEY `PATH_INDEX` (`path`(333))
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `groups`
---
-
-CREATE TABLE IF NOT EXISTS `groups` (
-  `gid` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
-  PRIMARY KEY (`gid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `group_user`
---
-
-CREATE TABLE IF NOT EXISTS `group_user` (
-  `gid` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
-  `uid` varchar(64) COLLATE utf8_unicode_ci NOT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `locks`
---
-
-CREATE TABLE IF NOT EXISTS `locks` (
-  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `userid` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,
-  `owner` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
-  `timeout` int(10) unsigned DEFAULT NULL,
-  `created` int(11) DEFAULT NULL,
-  `token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
-  `scope` tinyint(4) DEFAULT NULL,
-  `depth` tinyint(4) DEFAULT NULL,
-  `uri` text COLLATE utf8_unicode_ci,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1 ;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `log`
---
-
-CREATE TABLE IF NOT EXISTS `log` (
-  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `moment` datetime NOT NULL,
-  `appid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `user` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `action` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `info` text COLLATE utf8_unicode_ci NOT NULL,
-  PRIMARY KEY (`id`)
-) ENGINE=MyISAM  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3437 ;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `preferences`
---
-
-CREATE TABLE IF NOT EXISTS `preferences` (
-  `userid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `appid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `configkey` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `configvalue` varchar(255) COLLATE utf8_unicode_ci NOT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `properties`
---
-
-CREATE TABLE IF NOT EXISTS `properties` (
-  `userid` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
-  `propertypath` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `propertyname` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  `propertyvalue` text COLLATE utf8_unicode_ci NOT NULL
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
-
--- --------------------------------------------------------
-
---
--- Table structure for table `users`
---
-
-CREATE TABLE IF NOT EXISTS `users` (
-  `uid` varchar(64) COLLATE utf8_unicode_ci NOT NULL,
-  `password` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
-  PRIMARY KEY (`uid`)
-) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
diff --git a/docs/skeleton/admin.php b/docs/skeleton/admin.php
deleted file mode 100644
index 20df8a0c71d82b58ef9ece575a26ec26ac0be45b..0000000000000000000000000000000000000000
--- a/docs/skeleton/admin.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-/**
-* ownCloud - Sample application
-*
-* @author Jakob Sack
-* @copyright 2011 Jakob Sack kde@jakobsack.de
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-*
-*/
-
-// Do not prepare the file system (for demonstration purpose)
-// We HAVE TO set this var before including base.php
-$RUNTIME_NOSETUPFS = true;
-
-// Init owncloud
-require_once('../lib/base.php');
-
-// We need the file system although we said do not load it! Do it by hand now
-OC_Util::setupFS();
-
-// The user should have admin rights. This is an admin page!
-if( !OC_User::isLoggedIn() || !OC_User::ingroup( $_SESSION['username'], 'admin' )){
-	// Bad boy! Go to the very first page of owncloud
-	header( "Location: ".OC_Helper::linkTo( "index.php" ));
-	exit();
-}
-
-// Do some crazy Stuff over here
-$myvar = 2;
-$myarray = array( "foo" => array( 0, 1, 2 ), "bar" => "baz" );
-
-// Preparing for output!
-$tmpl = new OC_Template( "skeleton", "admin", "admin" ); // Programname, template, mode
-// Assign the vars
-$tmpl->assign( "var", $myvar );
-$tmpl->assign( "array", $myarray );
-// Print page
-$tmpl->printPage();
-
-?>
diff --git a/docs/skeleton/appinfo/app.sample.php b/docs/skeleton/appinfo/app.sample.php
deleted file mode 100644
index ce310996b05083ffd6951420b6dc39e4c41c5250..0000000000000000000000000000000000000000
--- a/docs/skeleton/appinfo/app.sample.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-/*
- * This file is required. It makes owncloud aware of the app.
- */
-
-// Hello, we are here
-OC_App::register( array( "id" => "skeleton", "name" => "Files", "order" => 1000 ));
-
-// Add application to navigation
-OC_Util::addNavigationEntry( array( "id" => "skeleton_index", "order" => 1000, "href" => OC_Helper::linkTo( "skeleton", "index.php" ), "icon" => OC_Helper::imagePath( "skeleton", "app.png" ), "name" => "Example app" ));
-
-// Add an admin page
-OC_Util::addAdminPage( array( "order" => 1, "href" => OC_Helper::linkTo( "skeleton", "admin.php" ), "name" => "Example app options" ));
-
-?>
diff --git a/docs/skeleton/css/skeleton.css b/docs/skeleton/css/skeleton.css
deleted file mode 100644
index aa68a8be86706bc2d10abc3329c7bbb7ca319353..0000000000000000000000000000000000000000
--- a/docs/skeleton/css/skeleton.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*
- * To include this css file, call "OC_UTIL::addStyle( "skeleton", "skeleton" )"
- * in your app.                                       (appname)   (cssname)
- */
\ No newline at end of file
diff --git a/docs/skeleton/css/special.css b/docs/skeleton/css/special.css
deleted file mode 100644
index 8fd75917bf25994b15df107342d599ed2a4148d3..0000000000000000000000000000000000000000
--- a/docs/skeleton/css/special.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/*
- * If you want to you can use more css files ...
- */
diff --git a/docs/skeleton/img/put_images_here.txt b/docs/skeleton/img/put_images_here.txt
deleted file mode 100644
index 8d1c8b69c3fce7bea45c73efd06983e3c419a92f..0000000000000000000000000000000000000000
--- a/docs/skeleton/img/put_images_here.txt
+++ /dev/null
@@ -1 +0,0 @@
- 
diff --git a/docs/skeleton/index.php b/docs/skeleton/index.php
deleted file mode 100644
index 10043887845e0a0882d12cde7ed7a5a6570391d0..0000000000000000000000000000000000000000
--- a/docs/skeleton/index.php
+++ /dev/null
@@ -1,63 +0,0 @@
-<?php
-
-/**
-* ownCloud - ajax frontend
-*
-* @author Robin Appelman
-* @copyright 2010 Robin Appelman icewind1991@gmail.com
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-*
-*/
-
-
-// Init owncloud
-require_once('../lib/base.php');
-
-// Check if we are a user
-if( !OC_User::isLoggedIn()){
-	header( "Location: ".OC_Helper::linkTo( "index.php" ));
-	exit();
-}
-
-// Load the files we need
-OC_Util::addStyle( "files", "files" );
-OC_Util::addScript( "files", "files" );
-
-// Load the files
-$dir = isset( $_GET['dir'] ) ? $_GET['dir'] : '';
-
-$files = array();
-foreach( OC_Files::getdirectorycontent( $dir ) as $i ){
-	$i["date"] = date( $CONFIG_DATEFORMAT, $i["mtime"] );
-	$files[] = $i;
-}
-
-// Make breadcrumb
-$breadcrumb = array();
-$pathtohere = "/";
-foreach( explode( "/", $dir ) as $i ){
-	if( $i != "" ){
-		$pathtohere .= "$i/";
-		$breadcrumb[] = array( "dir" => $pathtohere, "name" => $i );
-	}
-}
-
-// return template
-$tmpl = new OC_Template( "files", "index", "user" );
-$tmpl->assign( "files", $files );
-$tmpl->assign( "breadcrumb", $breadcrumb );
-$tmpl->printPage();
-
-?>
diff --git a/docs/skeleton/js/app.js b/docs/skeleton/js/app.js
deleted file mode 100644
index 5d5b668eeb5bb647da6c0b9c24a220bfe1a51c25..0000000000000000000000000000000000000000
--- a/docs/skeleton/js/app.js
+++ /dev/null
@@ -1,3 +0,0 @@
-// Include this file whenever you need it. A simple
-// "OC_UTIL::addScript( "skeleton", "app" )" will do this.
-// Put your jquery-Stuff here
diff --git a/docs/skeleton/templates/admin.php b/docs/skeleton/templates/admin.php
deleted file mode 100644
index 63fcd5cd39f88f4b4e4f4a20d1fdd84fd8aae375..0000000000000000000000000000000000000000
--- a/docs/skeleton/templates/admin.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-/*
- * Template for files admin page
- *
- * See index.php for details
- */
-?>
-<h1>Admin</h1>
diff --git a/docs/skeleton/templates/index.php b/docs/skeleton/templates/index.php
deleted file mode 100644
index fb0544e76ed6aad8bde10e61a99c1c2d4f8d5648..0000000000000000000000000000000000000000
--- a/docs/skeleton/templates/index.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/*
- * Template for files
- */
-?>
-<h1>Skeleton</h1>
-
-<?php foreach($_["array"] as $item): ?>
-	<p><?php echo $item; ?></p>
-<?php endforeach; ?>
-
-<?php echo $_["anothervar"]; ?>
diff --git a/files/appinfo/app.php b/files/appinfo/app.php
index a4cec3d6ec2812590b72209c183dd788966b04bd..94cd43ab0a2f9dac1ddba0b9a9a54cf6c0affa92 100644
--- a/files/appinfo/app.php
+++ b/files/appinfo/app.php
@@ -1,7 +1,9 @@
 <?php
 
+$l=new OC_L10N('files');
+
 OC_App::register( array( "order" => 2, "id" => "files", "name" => "Files" ));
 
-OC_App::addNavigationEntry( array( "id" => "files_index", "order" => 1, "href" => OC_Helper::linkTo( "files", "index.php" ), "icon" => OC_Helper::imagePath( "files", "home.png" ), "name" => "Files" ));
+OC_App::addNavigationEntry( array( "id" => "files_index", "order" => 1, "href" => OC_Helper::linkTo( "files", "index.php" ), "icon" => OC_Helper::imagePath( "files", "home.png" ), "name" => $l->t("Files") ));
 
 ?>
diff --git a/files/css/files.css b/files/css/files.css
index 883fed5be4abd558fd488bf36e9df155aadd613d..d6241b749edcf28bcae8378dc9fff73c33605c57 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -20,7 +20,7 @@ table { position:relative; top:37px; width:100%; }
 tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#eee; height:1em; }
 tbody a { color:#000; }
 span.extention, td.date { color:#999; }
-div.crumb { float:left; display:block; background:no-repeat right 0; padding:8px 1.5em 0 1em; height:28px; /*36-8*/ }
+div.crumb { float:left; display:block; background:no-repeat right 0; padding:.75em 1.5em 0 1em; height:2.9em; }
 div.crumb:first-child { padding-left:1.5em; }
 div.crumb:last-child { font-weight:bold; }
 table tr.mouseOver td { background-color:#eee; }
diff --git a/files/js/filelist.js b/files/js/filelist.js
index ce9595d3495716ca0d91dc9840020b18f9c21452..4a34385fd0bdbd55315da5b0619514227eff7a27 100644
--- a/files/js/filelist.js
+++ b/files/js/filelist.js
@@ -168,7 +168,7 @@ FileList={
 		procesSelection();
 		FileList.deleteCanceled=false;
 		FileList.deleteFiles=files;
-		$('#notification').text('undo deletion');
+		$('#notification').text(t('files','undo deletion'));
 		$('#notification').fadeIn();
 	},
 	finishDelete:function(ready,sync){
diff --git a/files/js/files.js b/files/js/files.js
index 49e7cecd090fca236f24156e2dad85c61d95c901..519d48a523dfefb9ecf9cc985af4703d931714a5 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -137,7 +137,7 @@ $(document).ready(function() {
 				if(files[i].size>0){
 					var size=files[i].size;
 				}else{
-					var size='Pending';
+					var size=t('files','Pending');
 				}
 				FileList.addFile(files[i].name,size,date,true);
 			}
@@ -306,8 +306,8 @@ function procesSelection(){
 	var selectedFolders=selected.filter(function(el){return el.type=='dir'});
 	if(selectedFiles.length==0 && selectedFolders.length==0){
 		$('#headerName>span.name').text('Name');
-		$('#headerSize').text('Size MB');
-		$('#modified').text('Modified');
+		$('#headerSize').text(t('files','Size MB'));
+		$('#modified').text(t('files','Modified'));
 		$('th').removeClass('multiselect');
 		$('.selectedActions').hide();
 		$('thead').removeClass('fixed');
@@ -336,9 +336,9 @@ function procesSelection(){
 		var selection='';
 		if(selectedFolders.length>0){
 			if(selectedFolders.length==1){
-				selection+='1 folder';
+				selection+='1 '+t('files','folder');
 			}else{
-				selection+=selectedFolders.length+' folders';
+				selection+=selectedFolders.length+' '+t('files','folders');
 			}
 			if(selectedFiles.length>0){
 				selection+=' & ';
@@ -346,9 +346,9 @@ function procesSelection(){
 		}
 		if(selectedFiles.length>0){
 			if(selectedFiles.length==1){
-				selection+='1 file';
+				selection+='1 '+t('files','file');
 			}else{
-				selection+=selectedFiles.length+' files';
+				selection+=selectedFiles.length+' '+t('files','files');
 			}
 		}
 		$('#headerName>span.name').text(selection);
diff --git a/files/l10n/xgettextfiles b/files/l10n/xgettextfiles
new file mode 100644
index 0000000000000000000000000000000000000000..9e22680e4556aaf686cc29c1bca32c1991857e64
--- /dev/null
+++ b/files/l10n/xgettextfiles
@@ -0,0 +1,5 @@
+../appinfo/app.php
+../templates/index.php
+../templates/part.list.php
+../js/filelist.js
+../js/files.js
diff --git a/files/templates/index.php b/files/templates/index.php
index 1d059d88501865b428a84098a6d27250b55f0904..137c5ce592208434cfda92b86c9420ea4208340d 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -1,20 +1,18 @@
 <div id="controls">
-	<span class="nav">
-		<?php echo($_['breadcrumb']); ?>
-	</span>
+	<?php echo($_['breadcrumb']); ?>
 	<div class="actions">
 		<form data-upload-id='1' class="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target_1">
 			<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_['uploadMaxFilesize'] ?>" id="max_upload">
 			<input type="hidden" class="max_human_file_size" value="(max <?php echo $_['uploadMaxHumanFilesize']; ?>)">
 			<input type="hidden" name="dir" value="<?php echo $_['dir'] ?>" id="dir">
 			<div class="file_upload_wrapper">
-				<input type="submit" class="file_upload_filename" value="Upload (max. <?php echo $_['uploadMaxHumanFilesize'];?>)"/>
+				<input type="submit" class="file_upload_filename" value="<?php echo $l->t('Upload');?> (max. <?php echo $_['uploadMaxHumanFilesize'];?>)"/>
 				<input class="file_upload_start" type="file" name='files[]'/>
 			</div>
 			<iframe name="file_upload_target_1" class='file_upload_target' src=""></iframe>
 		</form>
 		<form id="file_newfolder_form">
-			<input type="text" name="file_newfolder_name" id="file_newfolder_name" value="" placeholder="New Folder" />
+			<input type="text" name="file_newfolder_name" id="file_newfolder_name" value="" placeholder="<?php echo $l->t('New Folder')?>" />
 		</form>
 	</div>
 	<div id="file_action_panel">
@@ -29,12 +27,12 @@
 				<input type="checkbox" id="select_all" />
 				<span class='name'><?php echo $l->t( 'Name' ); ?></span>
 				<span class='selectedActions'>
-					<a href="" title="Download" class="download"><img class='svg' alt="Download" src="../core/img/actions/download.svg" /></a>
+					<a href="" title="<?php echo $l->t('Download')?>" class="download"><img class='svg' alt="Download" src="../core/img/actions/download.svg" /></a>
 					<a href="" title="Share" class="share"><img class='svg' alt="Share" src="../core/img/actions/share.svg" /></a>
 				</span>
 			</th>
 			<th id='headerSize'><?php echo $l->t( 'Size MB' ); ?></th>
-			<th id='headerDate'><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class='selectedActions'><a href="" title="Delete" class="delete"><img class='svg' alt="Delete" src="../core/img/actions/delete.svg" /></a></span></th>
+			<th id='headerDate'><span id="modified"><?php echo $l->t( 'Modified' ); ?></span><span class='selectedActions'><a href="" title="Delete" class="delete"><img class='svg' alt="<?php echo $l->t('Delete')?>" src="../core/img/actions/delete.svg" /></a></span></th>
 		</tr>
 	</thead>
 	<tbody id="fileList">
@@ -42,14 +40,10 @@
 	</tbody>
 </table>
 
-<div id="uploadsize-message" title="Upload too large">
+<div id="uploadsize-message" title="<?php echo $l->t('Upload too large')?>">
 	<p>
 		<?php echo $l->t( 'The files you are trying to upload exceed the maximum size for file uploads on this server.' ); ?>
 	</p>
 </div>
 
-<div id="delete-confirm" title="">
-	<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
-</div>
-
 <span id="file_menu"/>
diff --git a/files/templates/part.list.php b/files/templates/part.list.php
index 5051c19949a3378f127c88dd0b2300980292f081..8b3823f391bea340eefe6b2e53664ed29afa6f70 100644
--- a/files/templates/part.list.php
+++ b/files/templates/part.list.php
@@ -1,4 +1,4 @@
-		<span id="emptyfolder" <?php if(count($_['files'])) echo 'style="display:none;"';?>>Nothing in here. Upload something!</span>
+		<span id="emptyfolder" <?php if(count($_['files'])) echo 'style="display:none;"';?>><?php echo $l->t('Nothing in here. Upload something!')?></span>
 		<?php foreach($_['files'] as $file):
 			$simple_file_size = simple_file_size($file['size']);
 			$simple_size_color = intval(200-$file['size']/(1024*1024)*2); // the bigger the file, the darker the shade of grey; megabytes*2
diff --git a/help/l10n/xgettextfiles b/help/l10n/xgettextfiles
deleted file mode 100644
index a24bcc89a85637ce1ab63e924794ae28d086ab1b..0000000000000000000000000000000000000000
--- a/help/l10n/xgettextfiles
+++ /dev/null
@@ -1 +0,0 @@
-../templates/index.php 
diff --git a/l10n/l10n.pl b/l10n/l10n.pl
index b993727e8f1ad5ec1197bcdf1faf87a33d9db8e4..736a7bc04351951fc3d53d00b4fbe5dfd6bccaa4 100644
--- a/l10n/l10n.pl
+++ b/l10n/l10n.pl
@@ -5,7 +5,28 @@ use Cwd;
 use Data::Dumper;
 use File::Path;
 
-sub crawl{
+sub crawlPrograms{
+	my( $dir, $ignore ) = @_;
+	my @found = ();
+
+	opendir( DIR, $dir );
+	my @files = readdir( DIR );
+	closedir( DIR );
+
+	foreach my $i ( @files ){
+		next if substr( $i, 0, 1 ) eq '.';
+		if( $i eq 'l10n' && !$ignore ){
+			push( @found, $dir );
+		}
+		elsif( -d $dir.'/'.$i ){
+			push( @found, crawlPrograms( $dir.'/'.$i ));
+		}
+	}
+
+	return @found;
+}
+
+sub crawlFiles{
 	my( $dir ) = @_;
 	my @found = ();
 
@@ -15,17 +36,31 @@ sub crawl{
 
 	foreach my $i ( @files ){
 		next if substr( $i, 0, 1 ) eq '.';
+		
 		if( -d $dir.'/'.$i ){
-			push( @found, crawl( $dir.'/'.$i ));
+			push( @found, crawlFiles( $dir.'/'.$i ));
 		}
-		elsif( $i eq 'xgettextfiles' ){
-			push( @found, $dir );
+		else{
+			push(@found,$dir.'/'.$i) if $i =~ /\.js$/ || $i =~ /\.php$/;
 		}
 	}
 
 	return @found;
 }
 
+sub readIgnorelist{
+	return () unless -e 'l10n/ignorelist';
+	my %ignore = ();
+	open(IN,'l10n/ignorelist');
+	while(<IN>){
+		my $line = $_;
+		chomp($line);
+		$ignore{"./$line"}++;
+	}
+	close(IN);
+	return %ignore;
+}
+
 my $task = shift( @ARGV );
 my $place = '..';
 
@@ -36,7 +71,7 @@ my $whereami = cwd();
 die( "Program must be executed in a l10n-folder called 'l10n'" ) unless $whereami =~ m/\/l10n$/;
 
 # Where are i18n-files?
-my @dirs = crawl( $place );
+my @dirs = crawlPrograms( $place, 1 );
 
 # Languages
 rmtree( 'templates' );
@@ -51,28 +86,41 @@ foreach my $i ( @files ){
 }
 
 if( $task eq 'read' ){
+	print "Mode: reading\n";
 	foreach my $dir ( @dirs ){
 		my @temp = split( /\//, $dir );
-		pop( @temp );
 		my $app = pop( @temp );
 		chdir( $dir );
+		my @totranslate = crawlFiles('.');
+		my %ignore = readIgnorelist();
 		my $output = "${whereami}/templates/$app.pot";
-		`xgettext --files-from=xgettextfiles --output="$output" --keyword=t`;
+		print "  Processing $app\n";
+
+		foreach my $file ( @totranslate ){
+			next if $ignore{$file};
+			my $keyword = ( $file =~ /\.js$/ ? 't:2' : 't');
+			my $language = ( $file =~ /\.js$/ ? 'C' : 'PHP');
+			my $joinexisting = ( -e $output ? '--join-existing' : '');
+			print "    Reading $file\n";
+			`xgettext --output="$output" $joinexisting --keyword=$keyword --language=$language "$file"`;
+		}
 		chdir( $whereami );
 	}
 }
 elsif( $task eq 'write' ){
+	print "Mode: write\n";
 	foreach my $dir ( @dirs ){
 		my @temp = split( /\//, $dir );
-		pop( @temp );
 		my $app = pop( @temp );
-		chdir( $dir );
+		chdir( $dir.'/l10n' );
+		print "  Processing $app\n";
 		foreach my $language ( @languages ){
 			next if $language eq 'templates';
 			
 			my $input = "${whereami}/$language/$app.po";
 			next unless -e $input;
 
+			print "    Language $language\n";
 			my $array = Locale::PO->load_file_asarray( $input );
 			# Create array
 			my @strings = ();
diff --git a/l10n/templates/admin.pot b/l10n/templates/admin.pot
new file mode 100644
index 0000000000000000000000000000000000000000..e28b1eb7ae464e293a41ad2d195607f880d15306
--- /dev/null
+++ b/l10n/templates/admin.pot
@@ -0,0 +1,58 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-09 17:52+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../templates/app.php:17
+msgid "read more"
+msgstr ""
+
+#: ../templates/app.php:19
+msgid "Install"
+msgstr ""
+
+#: ../templates/app_noconn.php:1
+msgid "Cannot connect to apps repository"
+msgstr ""
+
+#: ../templates/apps.php:5 ../templates/users.php:3 ../templates/users.php:7
+msgid "Name"
+msgstr ""
+
+#: ../templates/apps.php:6
+msgid "Modified"
+msgstr ""
+
+#: ../templates/system.php:1
+msgid "System Settings"
+msgstr ""
+
+#: ../templates/users.php:4 ../templates/users.php:14
+msgid "Create"
+msgstr ""
+
+#: ../templates/users.php:8
+msgid "Password"
+msgstr ""
+
+#: ../templates/users.php:9
+msgid "Groups"
+msgstr ""
+
+#: ../templates/users.php:33
+msgid "Remove"
+msgstr ""
diff --git a/l10n/templates/core.pot b/l10n/templates/core.pot
new file mode 100644
index 0000000000000000000000000000000000000000..7189eb498890ee45f382342914cd16d240536476
--- /dev/null
+++ b/l10n/templates/core.pot
@@ -0,0 +1,136 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-09 17:52+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../templates/404.php:12
+msgid "Cloud not found"
+msgstr ""
+
+#: ../templates/installation.php:20
+msgid "Create an <strong>admin account</strong>"
+msgstr ""
+
+#: ../templates/installation.php:21
+msgid "Username"
+msgstr ""
+
+#: ../templates/installation.php:22
+msgid "Password"
+msgstr ""
+
+#: ../templates/installation.php:27
+msgid "Configure the database"
+msgstr ""
+
+#: ../templates/installation.php:31
+msgid "SQLite will be used."
+msgstr ""
+
+#: ../templates/installation.php:34
+msgid "SQLite"
+msgstr ""
+
+#: ../templates/installation.php:41
+msgid "MySQL will be used."
+msgstr ""
+
+#: ../templates/installation.php:50
+msgid "PostgreSQL will be used."
+msgstr ""
+
+#: ../templates/installation.php:59
+msgid "Database user"
+msgstr ""
+
+#: ../templates/installation.php:60
+msgid "Database password"
+msgstr ""
+
+#: ../templates/installation.php:61
+msgid "Database name"
+msgstr ""
+
+#: ../templates/installation.php:62
+msgid "Host"
+msgstr ""
+
+#: ../templates/installation.php:63
+msgid "Table prefix"
+msgstr ""
+
+#: ../templates/installation.php:70
+msgid "Advanced"
+msgstr ""
+
+#: ../templates/installation.php:73
+msgid "Set data folder"
+msgstr ""
+
+#: ../templates/installation.php:74
+msgid "Data folder"
+msgstr ""
+
+#: ../templates/installation.php:77
+msgid "Finish setup"
+msgstr ""
+
+#: ../templates/layout.guest.php:38
+msgid ""
+"<a href=\"http://owncloud.org/\">ownCloud</a> is a personal cloud which runs "
+"on your own server.</p>"
+msgstr ""
+
+#: ../templates/login.php:4
+msgid "Login failed!"
+msgstr ""
+
+#: ../templates/login.php:9 ../templates/login.php:13
+msgid "remember"
+msgstr ""
+
+#: ../templates/logout.php:1
+msgid "You are logged out."
+msgstr ""
+
+#: ../templates/part.pagenavi.php:6
+msgid "prev"
+msgstr ""
+
+#: ../templates/part.pagenavi.php:26
+msgid "next"
+msgstr ""
+
+#: ../../lib/app.php:204
+msgid "Users"
+msgstr ""
+
+#: ../../lib/app.php:205
+msgid "Apps"
+msgstr ""
+
+#: ../../lib/app.php:206
+msgid "Files"
+msgstr ""
+
+#: ../../lib/app.php:209
+msgid "Help"
+msgstr ""
+
+#: ../../lib/app.php:210
+msgid "Personal"
+msgstr ""
diff --git a/l10n/templates/files.pot b/l10n/templates/files.pot
new file mode 100644
index 0000000000000000000000000000000000000000..271ca0fcb40140b1ac538860cecc136a48e25fe7
--- /dev/null
+++ b/l10n/templates/files.pot
@@ -0,0 +1,64 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-09 17:52+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../appinfo/app.php:7
+msgid "Files"
+msgstr ""
+
+#: ../templates/index.php:11
+msgid "Upload"
+msgstr ""
+
+#: ../templates/index.php:17
+msgid "New Folder"
+msgstr ""
+
+#: ../templates/index.php:30
+msgid "Name"
+msgstr ""
+
+#: ../templates/index.php:32
+msgid "Download"
+msgstr ""
+
+#: ../templates/index.php:36
+msgid "Size MB"
+msgstr ""
+
+#: ../templates/index.php:37
+msgid "Modified"
+msgstr ""
+
+#: ../templates/index.php:37
+msgid "Delete"
+msgstr ""
+
+#: ../templates/index.php:45
+msgid "Upload too large"
+msgstr ""
+
+#: ../templates/index.php:47
+msgid ""
+"The files you are trying to upload exceed the maximum size for file uploads "
+"on this server."
+msgstr ""
+
+#: ../templates/part.list.php:1
+msgid "Nothing in here. Upload something!"
+msgstr ""
diff --git a/l10n/templates/help.pot b/l10n/templates/help.pot
new file mode 100644
index 0000000000000000000000000000000000000000..0e24e1c96554240e80b9a164676f0dc515a7af0a
--- /dev/null
+++ b/l10n/templates/help.pot
@@ -0,0 +1,22 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-09 17:52+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../templates/index.php:21
+msgid "Ask a question"
+msgstr ""
diff --git a/l10n/templates/settings.pot b/l10n/templates/settings.pot
new file mode 100644
index 0000000000000000000000000000000000000000..dc438e488c2a8e460e8bbfdef821419edeb18e17
--- /dev/null
+++ b/l10n/templates/settings.pot
@@ -0,0 +1,86 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2011-08-09 17:52+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../templates/index.php:3
+msgid "Account information"
+msgstr ""
+
+#: ../templates/index.php:5
+msgid "You're currently using"
+msgstr ""
+
+#: ../templates/index.php:5
+msgid "of your"
+msgstr ""
+
+#: ../templates/index.php:5
+msgid "space"
+msgstr ""
+
+#: ../templates/index.php:11 ../templates/index.php:17
+msgid "Change Password"
+msgstr ""
+
+#: ../templates/index.php:12
+msgid "Your password got changed"
+msgstr ""
+
+#: ../templates/index.php:14
+msgid "Old password"
+msgstr ""
+
+#: ../templates/index.php:15
+msgid "New password"
+msgstr ""
+
+#: ../templates/index.php:16
+msgid "show"
+msgstr ""
+
+#: ../templates/index.php:23
+msgid "Language"
+msgstr ""
+
+#: ../ajax/changepassword.php:13 ../ajax/setlanguage.php:13
+msgid "Authentication error"
+msgstr ""
+
+#: ../ajax/changepassword.php:19
+msgid "You have to enter the old and the new password!"
+msgstr ""
+
+#: ../ajax/changepassword.php:25
+msgid "Your old password is wrong!"
+msgstr ""
+
+#: ../ajax/changepassword.php:31
+msgid "Password changed"
+msgstr ""
+
+#: ../ajax/changepassword.php:34
+msgid "Unable to change password"
+msgstr ""
+
+#: ../ajax/setlanguage.php:21
+msgid "Language changed"
+msgstr ""
+
+#: ../ajax/setlanguage.php:23
+msgid "Invalid request"
+msgstr ""
diff --git a/lib/app.php b/lib/app.php
index f1363c8af5ad321430359f731f535562ceb5e079..6a2e3078596f42a06efef5c8593bbfc8f6696213 100644
--- a/lib/app.php
+++ b/lib/app.php
@@ -52,7 +52,7 @@ class OC_App{
 		}
 
 		// Our very own core apps are hardcoded
-		foreach( array( 'admin', 'files', 'log', 'help', 'settings' ) as $app ){
+		foreach( array( 'admin', 'files', 'help', 'settings' ) as $app ){
 			require( $app.'/appinfo/app.php' );
 		}
 
@@ -136,7 +136,6 @@ class OC_App{
 	 * This function returns all data it got via register().
 	 */
 	public static function get(){
-		// TODO: write function
 		return OC_App::$apps;
 	}
 
@@ -199,14 +198,15 @@ class OC_App{
 	 * entries are sorted by the key 'order' ascending.
 	 */
 	public static function getSettingsNavigation(){
+		$l=new OC_L10N('core');
 		$admin=array(
-			array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "admin", "users.php" ), "name" => "Users", "icon" => OC_Helper::imagePath( "admin", "users.png" )),
-			array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "admin", "apps.php?installed" ), "name" => "Apps", "icon" => OC_Helper::imagePath( "admin", "apps.png" )),
-			array( "id" => "files_administration", "order" => 3, "href" => OC_Helper::linkTo( "files", "admin.php" ), "name" => "Files", "icon" => OC_Helper::imagePath( "files", "folder.png" )),
+			array( "id" => "core_users", "order" => 2, "href" => OC_Helper::linkTo( "admin", "users.php" ), "name" => $l->t("Users"), "icon" => OC_Helper::imagePath( "admin", "users.png" )),
+			array( "id" => "core_apps", "order" => 3, "href" => OC_Helper::linkTo( "admin", "apps.php?installed" ), "name" => $l->t("Apps"), "icon" => OC_Helper::imagePath( "admin", "apps.png" )),
+			array( "id" => "files_administration", "order" => 3, "href" => OC_Helper::linkTo( "files", "admin.php" ), "name" => $l->t("Files"), "icon" => OC_Helper::imagePath( "files", "folder.png" )),
 		);
 		$settings=array(
-			array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "help", "index.php" ), "name" => "Help", "icon" => OC_Helper::imagePath( "help", "help.png" )),
-			array( "id" => "settings", "order" => 1, "href" => OC_Helper::linkTo( "settings", "index.php" ), "name" => "Personal", "icon" => OC_Helper::imagePath( "settings", "personal.png" ))
+			array( "id" => "help", "order" => 1000, "href" => OC_Helper::linkTo( "help", "index.php" ), "name" => $l->t("Help"), "icon" => OC_Helper::imagePath( "help", "help.png" )),
+			array( "id" => "settings", "order" => 1, "href" => OC_Helper::linkTo( "settings", "index.php" ), "name" => $l->t("Personal"), "icon" => OC_Helper::imagePath( "settings", "personal.png" ))
 		);
 		if( OC_Group::inGroup( $_SESSION["user_id"], "admin" )){
 			$settings=array_merge($admin,$settings);
@@ -241,7 +241,7 @@ class OC_App{
 		if(is_file($appid)){
 			$file=$appid;
 		}else{
-			$file='apps/'.$appid.'/appinfo/info.xml';
+			$file=OC::$SERVERROOT.'/apps/'.$appid.'/appinfo/info.xml';
 			if(!is_file($file)){
 				return array();
 			}
@@ -331,4 +331,18 @@ class OC_App{
 	public static function registerPersonal($app,$page){
 		self::$personalForms[]='apps/'.$app.'/'.$page.'.php';
 	}
+	
+	/**
+	 * get a list of all apps in the apps folder
+	 */
+	public static function getAllApps(){
+		$apps=array();
+		$dh=opendir(OC::$SERVERROOT.'/apps');
+		while($file=readdir($dh)){
+			if(is_file(OC::$SERVERROOT.'/apps/'.$file.'/appinfo/app.php')){
+				$apps[]=$file;
+			}
+		}
+		return $apps;
+	}
 }
diff --git a/lib/base.php b/lib/base.php
index 51dee60d67276be60a5025b600c56f6afb7485f9..93b8e0b584d4a231bb7da955ef0e3dd1b3ffed33 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -90,12 +90,19 @@ if(substr($scriptName,-1)=='/'){
 }
 $WEBROOT=substr($scriptName,0,strlen($scriptName)-strlen($SUBURI));
 
-
+OC::$SERVERROOT=$SERVERROOT;
+OC::$WEBROOT=$WEBROOT;
 
 if($WEBROOT!='' and $WEBROOT[0]!=='/'){
 	$WEBROOT='/'.$WEBROOT;
 }
 
+// We are going to use OC::* instead of globels soon
+OC::$WEBROOT = $WEBROOT;
+OC::$SERVERROOT = $SERVERROOT;
+OC::$DOCUMENTROOT = $DOCUMENTROOT;
+OC::$SUBURI = $SUBURI;
+
 // set the right include path
 set_include_path($SERVERROOT.'/lib'.PATH_SEPARATOR.$SERVERROOT.'/config'.PATH_SEPARATOR.$SERVERROOT.'/3rdparty'.PATH_SEPARATOR.get_include_path().PATH_SEPARATOR.$SERVERROOT);
 
diff --git a/lib/crypt.php b/lib/crypt.php
index baa433f9dcc63c3a63011b31e428fe99b2dd8781..d75515cf2deabf233a6e37d0664fec93182774f3 100755
--- a/lib/crypt.php
+++ b/lib/crypt.php
@@ -3,7 +3,6 @@
  * ownCloud
  *
  * @author Frank Karlitschek
- * @author Jakob Sack
  * @copyright 2010 Frank Karlitschek karlitschek@kde.org
  *
  * This library is free software; you can redistribute it and/or
@@ -21,6 +20,15 @@
  *
  */
 
+
+
+// Todo:
+//  Crypt/decrypt button in the userinterface
+//  transparent decrypt/encrpt in filesystem.php
+//  don't use a password directly as encryption key. but a key which is stored on the server and encrypted with the user password. -> password change faster
+
+
+
 require_once('Crypt_Blowfish/Blowfish.php');
 
 /**
@@ -28,6 +36,19 @@ require_once('Crypt_Blowfish/Blowfish.php');
  */
 class OC_Crypt {
 
+        static $encription_extension='.encrypted';
+
+	public static function createkey( $passcode) {
+		// generate a random key
+		$key=mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999).mt_rand(10000,99999);
+
+		// encrypt the key with the passcode of the user
+		$enckey=OC_Crypt::encrypt($key,$passcode);
+
+		// Write the file
+		file_put_contents( "$SERVERROOT/config/encryption.key", $enckey );
+	}
+
 	/**
 	 * @brief encrypts an content
 	 * @param $content the cleartext message you want to encrypt
@@ -51,11 +72,56 @@ class OC_Crypt {
          * This function decrypts an content
          */
         public static function decrypt( $content, $key) {
-                $bf = new Crypt_Blowfish($key);
-                return($bf->encrypt($contents));
+		$bf = new Crypt_Blowfish($key);
+		return($bf->encrypt($contents));
         }       
 
 
+        /**
+         * @brief encryption of a file
+         * @param $filename
+         * @param $key the encryption key
+         *
+         * This function encrypts a file
+         */
+	public static function encryptfile( $filename, $key) {
+		$handleread  = fopen($filename, "rb");
+		if($handleread<>FALSE) {
+			$handlewrite = fopen($filename.OC_Crypt::$encription_extension, "wb");
+			while (!feof($handleread)) {
+				$content = fread($handleread, 8192);
+				$enccontent=OC_CRYPT::encrypt( $content, $key);
+				fwrite($handlewrite, $enccontent);
+			}
+			fclose($handlewrite);
+			unlink($filename);
+		}
+		fclose($handleread);
+	}
+
+
+        /**
+         * @brief decryption of a file
+         * @param $filename
+         * @param $key the decryption key
+         *
+         * This function decrypts a file
+         */
+	public static function decryptfile( $filename, $key) {
+		$handleread  = fopen($filename.OC_Crypt::$encription_extension, "rb");
+		if($handleread<>FALSE) {
+			$handlewrite = fopen($filename, "wb");
+			while (!feof($handleread)) {
+				$content = fread($handleread, 8192);
+				$enccontent=OC_CRYPT::decrypt( $content, $key);
+				fwrite($handlewrite, $enccontent);
+			}
+			fclose($handlewrite);
+			unlink($filename.OC_Crypt::$encription_extension);
+		}
+		fclose($handleread);
+	}
+
 
 
 
diff --git a/lib/files.php b/lib/files.php
index d189a96fd8907319c37d3942596d9fc8fe0eabf7..eec1007de1f0fe96cb1790a825f4bc705d61dd12 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -144,7 +144,6 @@ class OC_Files {
 			die('403 Forbidden');
 		}
 		ob_end_clean();
-// 		OC_Log::event($_SESSION['username'],3,"$dir/$files");
 		if($zip){
 			readfile($filename);
 			unlink($filename);
@@ -206,7 +205,6 @@ class OC_Files {
 				$fileHandle=OC_Filesystem::fopen($file, 'w');
 				if($fileHandle){
 					fclose($fileHandle);
-// 					OC_Log::event($_SESSION['username'],4,"$dir/$name");
 					return true;
 				}else{
 					return false;
diff --git a/lib/l10n.php b/lib/l10n.php
index 5271bd4e58937b3be4c814c8587d0ca0aaaea587..2d565ad0799b94538d84ace98cf965068fc9e092 100644
--- a/lib/l10n.php
+++ b/lib/l10n.php
@@ -97,16 +97,17 @@ class OC_L10N{
 	/**
 	 * @brief Translating
 	 * @param $text The text we need a translation for
+	 * @param $parameters default:array() Parameters for sprintf
 	 * @returns Translation or the same text
 	 *
 	 * Returns the translation. If no translation is found, $text will be
 	 * returned.
 	 */
-	public function t($text){
+	public function t($text, $parameters = array()){
 		if(array_key_exists($text, $this->translations)){
-			return $this->translations[$text];
+			return vsprintf( $this->translations[$text], $parameters );
 		}
-		return $text;
+		return vsprintf( $text, $parameters );
 	}
 
 	/**
diff --git a/lib/log.php b/lib/log.php
deleted file mode 100644
index 1ed8e0e33c259a0416e7b46e57988548f55305eb..0000000000000000000000000000000000000000
--- a/lib/log.php
+++ /dev/null
@@ -1,151 +0,0 @@
-<?php
-/**
- * ownCloud
- *
- * @author Frank Karlitschek
- * @author Jakob Sack
- * @copyright 2010 Frank Karlitschek karlitschek@kde.org
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
- * License as published by the Free Software Foundation; either
- * version 3 of the License, or any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
- *
- * You should have received a copy of the GNU Affero General Public
- * License along with this library.  If not, see <http://www.gnu.org/licenses/>.
- *
- */
-/*
- *
- * The following SQL statement is just a help for developers and will not be
- * executed!
- *
- * CREATE TABLE `log` (
- * `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
- * `moment` DATETIME NOT NULL ,
- * `appid` VARCHAR( 255 ) NOT NULL ,
- * `user` VARCHAR( 255 ) NOT NULL ,
- * `action` VARCHAR( 255 ) NOT NULL ,
- * `info` TEXT NOT NULL
- * ) ENGINE = MYISAM ;
- *
- */
-
-/**
- * This class is for logging
- */
-class OC_Log {
-	/**
-	 * @brief adds an entry to the log
-	 * @param $appid id of the app
-	 * @param $subject username
-	 * @param $predicate action
-	 * @param $object = null; additional information
-	 * @returns true/false
-	 *
-	 * This function adds another entry to the log database
-	 */
-	public static function add( $appid, $subject, $predicate, $object = ' ' ){
-		$query=OC_DB::prepare("INSERT INTO `*PREFIX*log`(moment,appid,`user`,action,info) VALUES(NOW(),?,?,?,?)");
-		$result=$query->execute(array($appid,$subject,$predicate,$object));
-		// Die if we have an error
-		if( PEAR::isError($result)) {
-			$entry = 'DB Error: "'.$result->getMessage().'"<br />';
-			$entry .= 'Offending command was: '.$query.'<br />';
-			error_log( $entry );
-			die( $entry );
-		}
-		return true;
-	}
-
-	/**
-	 * @brief Fetches log entries
-	 * @param $filter = array(); array with filter options
-	 * @returns array with entries
-	 *
-	 * This function fetches the log entries according to the filter options
-	 * passed.
-	 *
-	 * $filter is an associative array.
-	 * The following keys are optional:
-	 *   - from: all entries after this date
-	 *   - until: all entries until this date
-	 *   - user: username (default: current user)
-	 *   - app: only entries for this app
-	 */
-	public static function get( $filter = array()){
-		$queryString='SELECT * FROM `*PREFIX*log` WHERE 1=1 ORDER BY moment DESC';
-		$params=array();
-		if(isset($filter['from'])){
-			$queryString.='AND moment>? ';
-			array_push($params,$filter('from'));
-		}
-		if(isset($filter['until'])){
-			$queryString.='AND moment<? ';
-			array_push($params,$filter('until'));
-		}
-		if(isset($filter['user'])){
-			$queryString.='AND `user`=? ';
-			array_push($params,$filter('user'));
-		}
-		if(isset($filter['app'])){
-			$queryString.='AND appid=? ';
-			array_push($params,$filter('app'));
-		}
-		$query=OC_DB::prepare($queryString);
-		$result=$query->execute($params)->fetchAll();
-		if(count($result)>0 and is_numeric($result[0]['moment'])){
-			foreach($result as &$row){
-				$row['moment']=OC_Util::formatDate($row['moment']);
-			}
-		}
-		return $result;
-		
-	}
-
-	/**
-	 * @brief removes log entries
-	 * @param $date delete entries older than this date
-	 * @returns true/false
-	 *
-	 * This function deletes all entries that are older than $date.
-	 */
-	public static function deleteBefore( $date ){
-		$query=OC_DB::prepare("DELETE FROM `*PREFIX*log` WHERE moment<?");
-		$query->execute(array($date));
-		return true;
-	}
-
-	/**
-	 * @brief removes all log entries
-	 * @returns true/false
-	 *
-	 * This function deletes all log entries.
-	 */
-	public static function deleteAll(){
-		$query=OC_DB::prepare("DELETE FROM `*PREFIX*log`");
-		$query->execute();
-		return true;
-	}
-	
-	/**
-	 * @brief filter an array of log entries on action
-	 * @param array $logs the log entries to filter
-	 * @param array $actions an array of actions to filter for
-	 * @returns array
-	 */
-	public static function filterAction($logs,$actions){
-		$filteredLogs=array();
-		foreach($logs as $log){
-			if(array_search($log['action'],$actions)!==false){
-				$filteredLogs[]=$log;
-			}
-		}
-		return $filteredLogs;
-	}
-}
diff --git a/lib/ocs.php b/lib/ocs.php
index bcacfe704c0bd4f099868e40eed50ff49ac648e4..536ee754e8438b6d268881c2275ebbc0b76644eb 100644
--- a/lib/ocs.php
+++ b/lib/ocs.php
@@ -402,33 +402,7 @@ class OC_OCS {
   private static function activityGet($format,$page,$pagesize) {
     $user=OC_OCS::checkpassword();
     
-	$query = OC_DB::prepare('select count(*) as co from *PREFIX*log');
-    $result = $query->execute();
-    $entry=$result->fetchRow();
-    $totalcount=$entry['co'];
-	
-	$query=OC_DB::prepare('select id,timestamp,`user`,type,message from *PREFIX*log order by timestamp desc limit ?,?');
-    $result = $query->execute(array(($page*$pagesize),$pagesize))->fetchAll();
-    
-    $itemscount=count($result);
-
-    $url='http://'.substr($_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'],0,-11).'';
-    $xml=array();
-    foreach($result as $i=>$log) {
-      $xml[$i]['id']=$log['id'];
-      $xml[$i]['personid']=$log['user'];
-      $xml[$i]['firstname']=$log['user'];
-      $xml[$i]['lastname']='';
-      $xml[$i]['profilepage']=$url;
-
-      $pic=$url.'/img/owncloud-icon.png';
-      $xml[$i]['avatarpic']=$pic;
-
-      $xml[$i]['timestamp']=date('c',$log['timestamp']);
-      $xml[$i]['type']=1;
-      $xml[$i]['message']=OC_Log::$TYPE[$log['type']].' '.strip_tags($log['message']);
-      $xml[$i]['link']=$url;
-    }
+	//TODO
 
     $txt=OC_OCS::generatexml($format,'ok',100,'',$xml,'activity','full',2,$totalcount,$pagesize);
     echo($txt);
diff --git a/lib/user.php b/lib/user.php
index 9b8f5fb13e709604d6daa3846357baf98936cc4f..a2ede8234be335aeb2d5c368231728a8f7dcbe6f 100644
--- a/lib/user.php
+++ b/lib/user.php
@@ -193,7 +193,6 @@ class OC_User {
 
 		if( $run && self::checkPassword( $uid, $password )){
 			$_SESSION['user_id'] = $uid;
-			OC_Log::add( "core", $_SESSION['user_id'], "login" );
 			OC_Hook::emit( "OC_User", "post_login", array( "uid" => $uid ));
 			return true;
 		}
@@ -210,7 +209,6 @@ class OC_User {
 	 */
 	public static function logout(){
 		OC_Hook::emit( "OC_User", "logout", array());
-		OC_Log::add( "core", $_SESSION['user_id'], "logout" );
 		$_SESSION['user_id'] = false;
 		return true;
 	}
diff --git a/log/appinfo/app.php b/log/appinfo/app.php
deleted file mode 100644
index a3aa19d528d8b13dec159dc766191d73693a169e..0000000000000000000000000000000000000000
--- a/log/appinfo/app.php
+++ /dev/null
@@ -1,6 +0,0 @@
-<?php /*
-
-OC_App::register( array( "order" => 1, "id" => "log", "name" => "Log" ));
-OC_App::addSettingsPage( array( "id" => "log", "order" => 999, "href" => OC_Helper::linkTo( "log", "index.php" ), "name" => "Log", "icon" => OC_Helper::imagePath( "log", "logs.png" )));
-
-*/ ?>
diff --git a/log/img/logs.png b/log/img/logs.png
deleted file mode 100644
index c3fad71133a3de35266b1c28328212cde86f09cd..0000000000000000000000000000000000000000
Binary files a/log/img/logs.png and /dev/null differ
diff --git a/log/index.php b/log/index.php
deleted file mode 100644
index a4fbc36470311d0b2f8ed93e3e218b5e653f2d89..0000000000000000000000000000000000000000
--- a/log/index.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-/**
-* ownCloud - ajax frontend
-*
-* @author Robin Appelman
-* @copyright 2010 Robin Appelman icewind1991@gmail.com
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
-* License as published by the Free Software Foundation; either
-* version 3 of the License, or any later version.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
-*
-* You should have received a copy of the GNU Affero General Public
-* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
-*
-*/
-
-//require_once('../../config/config.php');
-/*
-require_once('../lib/base.php');
-
-if( !OC_User::isLoggedIn()){
-	header( 'Location: '.OC_Helper::linkTo( 'index.php' ));
-	exit();
-}
-
-//load the script
-OC_Util::addScript( "log", "log" );
-
-$allActions=array('login','logout','read','write','create','delete');
-
-//check for a submitted config
-if(isset($_POST['save'])){
-	$selectedActions=array();
-	foreach($allActions as $action){
-		if(isset($_POST[$action]) and $_POST[$action]=='on'){
-			$selectedActions[]=$action;
-		}
-	}
-	OC_Preferences::setValue(OC_User::getUser(),'log','actions',implode(',',$selectedActions));
-	OC_Preferences::setValue(OC_User::getUser(),'log','pagesize',$_POST['size']);
-}
-//clear log entries
-elseif(isset($_POST['clear'])){
-	$removeBeforeDate=(isset($_POST['removeBeforeDate']))?$_POST['removeBeforeDate']:0;
-	if($removeBeforeDate!==0){
-		$removeBeforeDate=strtotime($removeBeforeDate);
-		OC_Log::deleteBefore($removeBeforeDate);
-	}
-}
-elseif(isset($_POST['clearall'])){
-	OC_Log::deleteAll();
-}
-
-OC_App::setActiveNavigationEntry( 'log' );
-$logs=OC_Log::get();
-
-
-$selectedActions=explode(',',OC_Preferences::getValue(OC_User::getUser(),'log','actions',implode(',',$allActions)));
-$logs=OC_Log::filterAction($logs,$selectedActions);
-
-$pageSize=OC_Preferences::getValue(OC_User::getUser(),'log','pagesize',20);
-$pageCount=ceil(count($logs)/$pageSize);
-$page=isset($_GET['page'])?$_GET['page']:0;
-if($page>=$pageCount){
-	$page=$pageCount-1;
-}
-
-$logs=array_slice($logs,$page*$pageSize,$pageSize);
-
-foreach( $logs as &$i ){
-	$i['date'] =$i['moment'];
-}
-
-$url=OC_Helper::linkTo( 'log', 'index.php' ).'?page=';
-$pager=OC_Util::getPageNavi($pageCount,$page,$url);
-if($pager){
-	$pagerHTML=$pager->fetchPage();
-}
-else{
-	$pagerHTML='';
-}
-
-$showActions=array();
-foreach($allActions as $action){
-	if(array_search($action,$selectedActions)!==false){
-		$showActions[$action]='checked="checked"';
-	}
-	else{
-		$showActions[$action]='';
-	}
-}
-
-$tmpl = new OC_Template( 'log', 'index', 'admin' );
-$tmpl->assign( 'logs', $logs );
-$tmpl->assign( 'pager', $pagerHTML );
-$tmpl->assign( 'size', $pageSize );
-$tmpl->assign( 'showActions', $showActions );
-$tmpl->printPage();
-
-*/ ?>
diff --git a/log/js/log.js b/log/js/log.js
deleted file mode 100644
index 42ae1b4c852caf777a90668ed0ebb07b14e1abb2..0000000000000000000000000000000000000000
--- a/log/js/log.js
+++ /dev/null
@@ -1,25 +0,0 @@
-$(document).ready(function() {
-	// Sets the select_all checkbox behaviour :
-	$('#all').click(function() {
-		if($(this).attr('checked')){
-			// Check all
-			$('input.action:checkbox').attr('checked', true);
-		}else{
-			// Uncheck all
-			$('input.action:checkbox').attr('checked', false);
-		}
-	});
-	$('input.action:checkbox').click(function() {
-		if(!$(this).attr('checked')){
-			$('#all').attr('checked',false);
-		}else{
-			if($('input.action:checkbox:checked').length==$('input.action:checkbox').length){
-				$('#all').attr('checked',true);
-			}
-		}
-	});
-	$('#removeBeforeDate').datepicker({
-		dateFormat:'MM d, yy',
-	});
-});
-
diff --git a/log/l10n/bg_BG.php b/log/l10n/bg_BG.php
deleted file mode 100644
index 407b447905fdd951500256039c84cd2e4a0a16b9..0000000000000000000000000000000000000000
--- a/log/l10n/bg_BG.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Филтър:",
-"Logins" => "Влизания:",
-"Logouts" => "Изходи:",
-"Downloads" => "Тегления",
-"Uploads" => "Качвания",
-"Creations" => "Създавания:",
-"Deletions" => "Изтривания:",
-"Show:" => "Показва:",
-"entries per page." => "записа на страница.",
-"What" => "Какво",
-"When" => "Кога",
-"Clear log entries before" => "Изчисти записите от журналите"
-);
diff --git a/log/l10n/da.php b/log/l10n/da.php
deleted file mode 100644
index 8fbfae67a6de4c0607c851fa6880b159a6e9442e..0000000000000000000000000000000000000000
--- a/log/l10n/da.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Filter:",
-"Logins" => "Logins",
-"Logouts" => "Logouts",
-"Downloads" => "Downloads",
-"Uploads" => "Uploads",
-"Creations" => "Oprettelser",
-"Deletions" => "Sletninger",
-"Show:" => "Vis:",
-"entries per page." => "poster pr side.",
-"What" => "Hvilket",
-"When" => "Hvornår",
-"Clear log entries before" => "Slet log poster før"
-);
diff --git a/log/l10n/de.php b/log/l10n/de.php
deleted file mode 100644
index 9cf804d6cf8b0997186157ee75824b2c38b64a4b..0000000000000000000000000000000000000000
--- a/log/l10n/de.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Filter:",
-"Logins" => "Anmeldungen",
-"Logouts" => "Abmeldungen",
-"Downloads" => "Downloads",
-"Uploads" => "Uploads",
-"Creations" => "Erstellungen",
-"Deletions" => "Löschungen",
-"Show:" => "Zeige",
-"entries per page." => "Einträge pro Seite",
-"What" => "Was",
-"When" => "Wann",
-"Clear log entries before" => "Lösche Einträge vor dem"
-);
diff --git a/log/l10n/es.php b/log/l10n/es.php
deleted file mode 100644
index 4a640871b8c3fc4b810b296248f2814ae145308f..0000000000000000000000000000000000000000
--- a/log/l10n/es.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Filtro:",
-"Logins" => "Inicios de sesión",
-"Logouts" => "Cierres de sesión",
-"Downloads" => "Descargas",
-"Uploads" => "Subidas",
-"Creations" => "Creaciones",
-"Deletions" => "Eliminaciones",
-"Show:" => "Mostrar",
-"entries per page." => "Entradas por página.",
-"What" => "Qué",
-"When" => "Cuándo",
-"Clear log entries before" => "Eliminar los registros anteriores a"
-);
diff --git a/log/l10n/fr.php b/log/l10n/fr.php
deleted file mode 100644
index d411a0e1599cdf10590ba8f49885b62abb532c2b..0000000000000000000000000000000000000000
--- a/log/l10n/fr.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Filtre :",
-"Logins" => "Connexions",
-"Logouts" => "Déconnexions",
-"Downloads" => "Téléchargements",
-"Uploads" => "Téléversements",
-"Creations" => "Créations",
-"Deletions" => "Suppressions",
-"Show:" => "Afficher :",
-"entries per page." => "entrées par page.",
-"What" => "Quoi",
-"When" => "Quand",
-"Clear log entries before" => "Effacer les entrées du journal au préalable"
-);
diff --git a/log/l10n/nl.php b/log/l10n/nl.php
deleted file mode 100644
index f381619b5fd9c01b50a2d33cc4495bf0acdb68ab..0000000000000000000000000000000000000000
--- a/log/l10n/nl.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Filter:",
-"Logins" => "Aanmeldingen",
-"Logouts" => "Afmeldingen",
-"Downloads" => "Downloads",
-"Uploads" => "Uploads",
-"Creations" => "Creaties",
-"Deletions" => "Verwijderingen",
-"Show:" => "Laat",
-"entries per page." => "resulaten per pagina zien",
-"What" => "Wat",
-"When" => "Wanneer",
-"Clear log entries before" => "Verwijder logboekitem ouder dan"
-);
diff --git a/log/l10n/pl.php b/log/l10n/pl.php
deleted file mode 100644
index 322e5df1add6d11f3f25d37751ee61e59e2ee5eb..0000000000000000000000000000000000000000
--- a/log/l10n/pl.php
+++ /dev/null
@@ -1,14 +0,0 @@
-<?php $TRANSLATIONS = array(
-"Filter:" => "Filtr:",
-"Logins" => "Zalogowania",
-"Logouts" => "Wylogowani",
-"Downloads" => "Pobrania",
-"Uploads" => "Wgrania",
-"Creations" => "Utworzenia",
-"Deletions" => "Usunięcia",
-"Show:" => "Pokaż:",
-"entries per page." => "wpisów na stronę.",
-"What" => "Co",
-"When" => "Kiedy",
-"Clear log entries before" => "Wyczyść spisy dziennika sprzed"
-);
diff --git a/log/l10n/xgettextfiles b/log/l10n/xgettextfiles
deleted file mode 100644
index a24bcc89a85637ce1ab63e924794ae28d086ab1b..0000000000000000000000000000000000000000
--- a/log/l10n/xgettextfiles
+++ /dev/null
@@ -1 +0,0 @@
-../templates/index.php 
diff --git a/log/templates/index.php b/log/templates/index.php
deleted file mode 100644
index 863ac73fdbb70ede782eb724163d540bf9464895..0000000000000000000000000000000000000000
--- a/log/templates/index.php
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php /*<div class="controls">
-	<form id="logs_options" method='post'>
-		<p>
-			<span><?php echo $l->t( 'Filter:' ); ?></span>
-
-			<input type="checkbox" checked="" name="all" id="all" /> <label for="all">All</label>
-			<input type="checkbox" class='action' <?php echo $_['showActions']['login']?> name="login" id="logins" /> <label for="logins"><?php echo $l->t( 'Logins' ); ?></label>
-			<input type="checkbox" class='action' <?php echo $_['showActions']['logout']?> name="logout" id="logouts" /> <label for="logouts"><?php echo $l->t( 'Logouts' ); ?></label>
-			<input type="checkbox" class='action' <?php echo $_['showActions']['read']?> name="read" id="downloads" /> <label for="downloads"><?php echo $l->t( 'Downloads' ); ?></label>
-			<input type="checkbox" class='action' <?php echo $_['showActions']['write']?> name="write" id="uploads" /> <label for="uploads"><?php echo $l->t( 'Uploads' ); ?></label>
-			<input type="checkbox" class='action' <?php echo $_['showActions']['create']?> name="create" id="creations" /> <label for="creations"><?php echo $l->t( 'Creations' ); ?></label>
-			<input type="checkbox" class='action' <?php echo $_['showActions']['delete']?> name="delete" id="deletions" /> <label for="deletions"><?php echo $l->t( 'Deletions' ); ?></label>
-		</p>
-		<p>
-			<span><?php echo $l->t( 'Show:' ); ?></span>
-			<input type="text" maxlength="3" size="3" value="<?php echo $_['size']?>" name='size'/>&nbsp;<?php echo $l->t( 'entries per page.' ); ?>
-			<input class="prettybutton" type="submit" name="save" value="Save" />
-
-		</p>
-	</form>
-</div>
-
-<table cellspacing="0">
-	<thead>
-		<tr>
-			<th><?php echo $l->t( 'What' ); ?></th>
-			<th><?php echo $l->t( 'When' ); ?></th>
-		</tr>
-	</thead>
-	<tbody>
-		<?php foreach($_["logs"] as $entry): ?>
-			<tr>
-				<td class="<?php echo $entry["action"]; ?>"><em><?php echo $entry["action"]; ?> <?php echo $entry["user"]; ?></em> <?php echo $entry["info"]; ?></td>
-				<td class="date"><?php echo $l->l('datetime', $entry["date"] ); ?></td>
-			</tr>
-		<?php endforeach; ?>
-	</tbody>
-</table>
-
-<?php echo $_['pager'];?>
-
-<div class="controls">
-	<form id="logs_options" method='post'>
-		<p>
-			<span><?php echo $l->t( 'Clear log entries before' ); ?> </span>
-			<input type="date" id="removeBeforeDate" name="removeBeforeDate"/>
-			<input class="prettybutton nofloat" type="submit" name="clear" value="Clear" />
-			<input class="prettybutton" type="submit" name="clearall" value="Clear All" />
-
-		</p>
-	</form>
-</div>
-*/ ?>
diff --git a/settings/l10n/xgettextfiles b/settings/l10n/xgettextfiles
deleted file mode 100644
index 8a2f185f23052ee4f5bb44677ee1732839d2c5b2..0000000000000000000000000000000000000000
--- a/settings/l10n/xgettextfiles
+++ /dev/null
@@ -1,3 +0,0 @@
-../templates/index.php
-../ajax/changepassword.php
-../ajax/setlanguage.php
\ No newline at end of file
diff --git a/settings/templates/index.php b/settings/templates/index.php
index 0b5a14626fe420c71805c52f4630dc315943818f..48c3f542018ed257a0b15a31ea897c1f3c233b43 100644
--- a/settings/templates/index.php
+++ b/settings/templates/index.php
@@ -14,7 +14,7 @@
 		<input type="password" id="pass1" name="oldpassword" placeholder="<?php echo $l->t( 'Old password' );?>" />
 		<input type="password" id="pass2" name="password" placeholder="<?php echo $l->t( 'New password' );?>" data-typetoggle="#show" />
 		<input type="checkbox" id="show" name="show" /><label for="show"><?php echo $l->t( 'show' );?></label>
-		<input id="passwordbutton" type="submit" value="Change password" />
+		<input id="passwordbutton" type="submit" value="<?php echo $l->t( 'Change Password' );?>" />
 	</fieldset>
 </form>