diff --git a/apps/media/js/loader.js b/apps/media/js/loader.js
index c49d90cf3eba02430327a51fc71d6bb1bd78a44e..b7ef2fb7be4c9905afbaffc1b95964858995bf9c 100644
--- a/apps/media/js/loader.js
+++ b/apps/media/js/loader.js
@@ -50,7 +50,7 @@ $(document).ready(function() {
 		FileActions.setDefault('application/ogg','Play');
 	}
 	if(typeof PlayList==='undefined'){
-		if(typeof localStorage !== 'undefined'){
+		if(typeof localStorage !== 'undefined' && localStorage){
 			if(localStorage.hasOwnProperty(oc_current_user+'oc_playlist_items') && localStorage.getItem(oc_current_user+'oc_playlist_items')!='[]' && localStorage.getItem(oc_current_user+'oc_playlist_active')!='true'){
 				loadPlayer();
 			}
diff --git a/apps/media/js/player.js b/apps/media/js/player.js
index ec22b0eaf97eec1416f440dd13744fa884897e60..4e1cc3cd75450395a146be417b778660f54cb4c5 100644
--- a/apps/media/js/player.js
+++ b/apps/media/js/player.js
@@ -143,7 +143,7 @@ var PlayList={
 		}
 	},
 	save:function(){
-		if(typeof localStorage !== 'undefined'){
+		if(typeof localStorage !== 'undefined' && localStorage){
 			localStorage.setItem(oc_current_user+'oc_playlist_items',JSON.stringify(PlayList.items));
 			localStorage.setItem(oc_current_user+'oc_playlist_current',PlayList.current);
 			var time=Math.round(PlayList.player.data('jPlayer').status.currentTime);
@@ -156,7 +156,7 @@ var PlayList={
 		}
 	},
 	load:function(){
-		if(typeof localStorage !== 'undefined'){
+		if(typeof localStorage !== 'undefined' && localStorage){
 			PlayList.active=true;
 			localStorage.setItem(oc_current_user+'oc_playlist_active','true');
 			if(localStorage.hasOwnProperty(oc_current_user+'oc_playlist_items')){
diff --git a/apps/user_openid/appinfo/app.php b/apps/user_openid/appinfo/app.php
index 74c13402caf3c07f3315b64890ff6784373283e0..93b178ac7063fd94f6ba5e310f74de00bf04e1af 100644
--- a/apps/user_openid/appinfo/app.php
+++ b/apps/user_openid/appinfo/app.php
@@ -6,12 +6,20 @@ if (!in_array ('curl', get_loaded_extensions())){
 }
 
 $urlBase=((isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == 'on') ? 'https' : 'http').'://'.$_SERVER['HTTP_HOST'];
-OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'));
-OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'));
 
-require_once 'apps/user_openid/user_openid.php';
+$userName='';
+if(strpos($_SERVER["REQUEST_URI"],'?') and !strpos($_SERVER["REQUEST_URI"],'=')){
+	if(strpos($_SERVER["REQUEST_URI"],'/?')){
+		$userName=substr($_SERVER["REQUEST_URI"],strpos($_SERVER["REQUEST_URI"],'/?')+2);
+	}elseif(strpos($_SERVER["REQUEST_URI"],'.php?')){
+		$userName=substr($_SERVER["REQUEST_URI"],strpos($_SERVER["REQUEST_URI"],'.php?')+5);
+	}
+}
 
-OC_App::addSettingsPage( array( "id" => "user_openid_settings", 'order'=>1, "href" => OC_Helper::linkTo( "user_openid", "settings.php" ), "name" => "OpenID"));
+OC_Util::addHeader('link',array('rel'=>'openid.server', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'.$userName));
+OC_Util::addHeader('link',array('rel'=>'openid.delegate', 'href'=>$urlBase.OC_Helper::linkTo( "user_openid", "user.php" ).'/'.$userName));
+
+require_once 'apps/user_openid/user_openid.php';
 
 //active the openid backend
 OC_User::useBackend('openid');
diff --git a/apps/user_openid/phpmyid.php b/apps/user_openid/phpmyid.php
index bcab9e55cbbf06ff733c3834dafaf459318ed5c6..24fab44ca7aa0281d33834bb804c33e9fa7c53ec 100644
--- a/apps/user_openid/phpmyid.php
+++ b/apps/user_openid/phpmyid.php
@@ -1646,12 +1646,12 @@ $profile['req_url'] = sprintf("%s://%s%s",
 // 		      $port,//host  already includes the path
 		      $_SERVER["REQUEST_URI"]);
 
-$fullId='user.php/'.$USERNAME.'/';
-$incompleteId='user.php/';
+// $fullId='user.php/'.$USERNAME.'/';
+// $incompleteId='user.php/';
 
-if(!strpos($profile['req_url'],$fullId)){
-	$profile['req_url']=str_replace($incompleteId,$fullId,$profile['req_url']);
-}
+// if(!strpos($profile['req_url'],$fullId)){
+// 	$profile['req_url']=str_replace($incompleteId,$fullId,$profile['req_url']);
+// }
 
 // error_log('inc id: '.$fullId);
 // error_log('req url: '.$profile['req_url']);
diff --git a/apps/user_openid/settings.php b/apps/user_openid/settings.php
deleted file mode 100644
index 4293a6c8aaf8d46523878edba5b45f60fac5ced3..0000000000000000000000000000000000000000
--- a/apps/user_openid/settings.php
+++ /dev/null
@@ -1,23 +0,0 @@
-<?php
-
-require_once('../../lib/base.php');
-if( !OC_User::isLoggedIn()){
-    header( "Location: ".OC_Helper::linkTo( "index.php" ));
-    exit();
-}
-
-if(isset($_POST['input_identity'])){
-	OC_Preferences::setValue(OC_User::getUser(),'user_openid','identity',$_POST['input_identity']);
-}
-
-OC_App::setActiveNavigationEntry( "user_openid_settings" );
-
-$identity=OC_Preferences::getValue(OC_User::getUser(),'user_openid','identity','');
-
-$tmpl = new OC_Template( "user_openid", "settings", "admin");
-$tmpl->assign('identity',$identity);
-$tmpl->assign('user',OC_User::getUser());
-
-$tmpl->printPage();
-
-?>
diff --git a/apps/user_openid/templates/settings.php b/apps/user_openid/templates/settings.php
deleted file mode 100644
index 7a1b530fbcaa6071e7fc7d82c5fa39c0424740a9..0000000000000000000000000000000000000000
--- a/apps/user_openid/templates/settings.php
+++ /dev/null
@@ -1,7 +0,0 @@
-<form id="identity" action='#' method='post'>
-	<fieldset>
-		<legend><?php echo $l->t( 'OpenID identity' );?></legend>
-		<label for='input_identity'>OpenID identity for <b><?php echo $_['user'];?></b></label><br/>
-		<input name='input_identity' id='input_identity' value="<?php echo $_['identity'];?>"/><input type='submit' value='Save'/>
-	</fieldset>
-</form>
diff --git a/files/css/files.css b/files/css/files.css
index 61af30b74ea8c712248de5c87f96ccac5a016d6f..813fb4dd7dccc2ecb700e8026cd6dd81345bceaa 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -8,8 +8,8 @@
 .file_upload_filename { background-image:url("../img/file.png"); font-weight:bold; }.file_upload_start { opacity:0;filter:alpha(opacity = 0); }
 input.highlight{ background-color:#ffc100; border:#dda600 1px solid; }
 
-#file_newfolder_name { background-image:url("../img/folder.png"); font-weight:bold; width:11em; }
-.file_upload_start, .file_upload_filename { position:absolute; top:0px; left:0px; width:11em; font-size:0.9em; }
+#file_newfolder_name { background-image:url("../img/folder.png"); font-weight:bold; width:12em; }
+.file_upload_start, .file_upload_filename { position:absolute; top:0px; left:0px; width:12em; font-size:0.9em; }
 .file_upload_wrapper { position:relative; top:-1.2em; left:-2em; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; width:12em; }
 #file_newfolder_submit, #file_upload_submit { width:3em; }
 .file_upload_target { display:none; }
@@ -52,16 +52,6 @@ table thead.fixed {height:2em}
 
 /* add breadcrumb divider to the File item in navigation panel */
 #navigation>ul>li:first-child { background:url('../../core/img/breadcrumb-divider-start.png') no-repeat 12.5em 0px; width:12.5em; padding-right:1em; }
-
-#notification{
-	z-index:150;
-	border-radius:10px;
-	background-color:#eee;
-	border:1px solid #ccc;
-	padding-left:1em;
-	padding-right:1em;
-	display:none;
-	position:fixed;
-	top:2.8em;
-	left:40%;
-}
\ No newline at end of file
+#notification{ z-index:150; background-color:#fc4; border:0; padding:0 .7em .3em; display:block; position:fixed; left:50%; top:0;
+-moz-border-radius-bottomleft:1em; -webkit-border-bottom-left-radius:1em; border-bottom-left-radius:1em;
+-moz-border-radius-bottomright:1em; -webkit-border-bottom-right-radius:1em; border-bottom-right-radius:1em; }
diff --git a/files/js/filelist.js b/files/js/filelist.js
index b4d0adf982ce35d7190636860d35df84115a08d4..8fd3bceafb1899b2d1ec4165af0ac7aa94d593f3 100644
--- a/files/js/filelist.js
+++ b/files/js/filelist.js
@@ -168,9 +168,8 @@ FileList={
 		procesSelection();
 		FileList.deleteCanceled=false;
 		FileList.deleteFiles=files;
-		$('#notification').text(files.length+' file'+((files.length>1)?'s':'')+' deleted, click here to undo');
-		
-		$('#notification').show();
+		$('#notification').text('undo deletion');
+		$('#notification').fadeIn();
 	},
 	finishDelete:function(ready,sync){
 		if(!FileList.deleteCanceled && FileList.deleteFiles){
@@ -181,7 +180,7 @@ FileList={
 				data: "dir="+$('#dir').val()+"&files="+encodeURIComponent(fileNames),
 				complete: function(data){
 					boolOperationFinished(data, function(){
-						$('#notification').hide();
+						$('#notification').fadeOut();
 						$.each(FileList.deleteFiles,function(index,file){
 // 							alert(file);
 							FileList.remove(file);
@@ -199,9 +198,10 @@ FileList={
 }
 
 $(document).ready(function(){
+	$('#notification').hide();
 	$('#notification').click(function(){
 		FileList.deleteCanceled=true;
-		$('#notification').hide();
+		$('#notification').fadeOut();
 		$.each(FileList.deleteFiles,function(index,file){
 			$('tr[data-file="'+file+'"]').show();
 // 			alert(file);
diff --git a/index.php b/index.php
index 46dc990af68fb2c04b795b44b5491301228266ea..a804a25d95b23200c7ef1c71d3c8d328a2b59a5d 100644
--- a/index.php
+++ b/index.php
@@ -40,6 +40,11 @@ elseif($not_installed OR $install_called) {
 	require_once('setup.php');
 }
 
+if($_SERVER['REQUEST_METHOD']=='PROPFIND'){//handle webdav
+	header('location: '.OC_Helper::linkTo('files','webdav.php'));
+	exit();
+}
+
 // Someone is logged in :
 elseif(OC_User::isLoggedIn()) {
 	if(isset($_GET["logout"]) and ($_GET["logout"])) {
diff --git a/lib/template.php b/lib/template.php
index 045ecdaf13086828304cfc533fda07577ad220cd..b8adba0833f78fb5c3007a1b1ace4f324ebdbe65 100644
--- a/lib/template.php
+++ b/lib/template.php
@@ -82,19 +82,19 @@ function relative_modified_date($timestamp) {
 	$diffdays = round($diffhours/24);
 	$diffmonths = round($diffdays/31);
 	$diffyears = round($diffdays/365);
+
 	if($timediff < 60) { return 'seconds ago'; }
 	else if($timediff < 120) { return '1 minute ago'; }
 	else if($timediff < 3600) { return $diffminutes.' minutes ago'; }
 	//else if($timediff < 7200) { return '1 hour ago'; }
 	//else if($timediff < 86400) { return $diffhours.' hours ago'; }
-	else if($timediff < 86400) { return 'today'; }
-	else if($timediff < 172800) { return 'yesterday'; }
+	else if((date('G')-$diffhours) > 0) { return 'today'; }
+	else if((date('G')-$diffhours) > -24) { return 'yesterday'; }
 	else if($timediff < 2678400) { return $diffdays.' days ago'; }
 	else if($timediff < 5184000) { return 'last month'; }
-	//else if($timediff < 31556926) { return $diffmonths.' months ago'; }
-	else if($timediff < 31556926) { return 'months ago'; }
+	else if((date('n')-$diffmonths) > 0) { return 'months ago'; }
 	else if($timediff < 63113852) { return 'last year'; }
-	else { return $diffyears.' years ago'; }
+	else { return 'years ago'; }
 }
 
 
diff --git a/settings/ajax/openid.php b/settings/ajax/openid.php
new file mode 100644
index 0000000000000000000000000000000000000000..021fe35d8ec23e24637cc020a1d1808365af62d8
--- /dev/null
+++ b/settings/ajax/openid.php
@@ -0,0 +1,26 @@
+<?php
+
+// Init owncloud
+require_once('../../lib/base.php');
+
+$l=new OC_L10N('settings');
+
+// We send json data
+header( "Content-Type: application/jsonrequest" );
+
+// Check if we are a user
+if( !OC_User::isLoggedIn()){
+	echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Authentication error") )));
+	exit();
+}
+
+// Get data
+if( isset( $_POST['identity'] ) ){
+	$identity=$_POST['identity'];
+	OC_Preferences::setValue(OC_User::getUser(),'user_openid','identity',$identity);
+	echo json_encode( array( "status" => "success", "data" => array( "message" => $l->t("OpenID Changed") )));
+}else{
+	echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Invalid request") )));
+}
+
+?>
diff --git a/settings/index.php b/settings/index.php
index a37ae7e6ea2e3d12cfde569e25a9bb14299a1b7a..8b970a13c586ea6f56cf7f13d238aa87542a318f 100644
--- a/settings/index.php
+++ b/settings/index.php
@@ -29,6 +29,11 @@ $tmpl->assign('usage',OC_Helper::humanFileSize($used));
 $tmpl->assign('total_space',OC_Helper::humanFileSize($total));
 $tmpl->assign('usage_relative',$relative);
 $tmpl->assign('languages',$languages);
+$tmpl->assign('hasopenid',OC_App::isEnabled( 'user_openid' ));
+if(OC_App::isEnabled( 'user_openid' )){
+	$identity=OC_Preferences::getValue(OC_User::getUser(),'user_openid','identity','');
+	$tmpl->assign('identity',$identity);
+}
 $tmpl->printPage();
 
 ?>
diff --git a/settings/js/main.js b/settings/js/main.js
index 010225bcb273ed499a13810be65e428fc748f173..e6ca30d0ce4c5d96119fbe01f45d87b035e69ca7 100644
--- a/settings/js/main.js
+++ b/settings/js/main.js
@@ -18,7 +18,18 @@ $(document).ready(function(){
 		});
 		return false;
 	});
-
+	
+	$('#openidform').submit(function(event){
+		event.preventDefault();
+		var post = $( "#openidform" ).serialize();
+		$.post( 'ajax/openid.php', post, function(data){
+			if( data.status == "success" ){
+			}else{
+				alert('error while setting OpenID');
+			}
+		});
+	});
+	
 	$("#languageinput").change( function(){
 		// Serialize the data
 		var post = $( "#languageinput" ).serialize();
diff --git a/settings/templates/index.php b/settings/templates/index.php
index 761289acefaaf9a9564a20028b2588595187b5e4..819b71c8943154afe451bbd645e717f4b8c00660 100644
--- a/settings/templates/index.php
+++ b/settings/templates/index.php
@@ -29,6 +29,17 @@
 	</fieldset>
 </form>
 
+<?php if($_['hasopenid']):?>
+	<form id="openidform">
+		<fieldset>
+			<legend><?php echo $l->t( 'OpenID' );?></legend>
+			<p>OpenID identity for <b><?php echo OC_User::getUser();?></b></p>
+			<p><input name='identity' id='identity' value='<?php echo $_['identity']; ?>'></input></p>
+			<p><input type='submit' value='Save'></input></p>
+		</fieldset>
+	</form>
+<?php endif;?>
+
 <form id="languageform">
 	<fieldset>
 		<legend><?php echo $l->t( 'Language' );?></legend>