summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gapczynski <GapczynskiM@gmail.com>2011-08-12 21:00:41 -0400
committerMichael Gapczynski <GapczynskiM@gmail.com>2011-08-12 21:00:41 -0400
commit122018889a054e2cc7222ce123edd859fd3511f4 (patch)
tree0dff0f4745828df16156e3900222e2ae11e3a0cb
parentffe9da91af72e7f7953f41968f536d15390edffe (diff)
parent67156f87e3757fbd5e692e7d6b2209cfafc6c3cf (diff)
downloadnextcloud-server-122018889a054e2cc7222ce123edd859fd3511f4.tar.gz
nextcloud-server-122018889a054e2cc7222ce123edd859fd3511f4.zip
Merge branch 'master' into sharing
Conflicts: files/css/files.css
-rw-r--r--.htaccess4
-rw-r--r--admin/templates/users.php4
-rw-r--r--apps/media/css/music.css3
-rw-r--r--apps/media/css/player.css16
-rw-r--r--apps/media/js/collection.js27
-rw-r--r--apps/media/js/player.js48
-rw-r--r--core/css/jquery-tipsy.css7
-rw-r--r--core/img/actions/pause-big.pngbin0 -> 183 bytes
-rw-r--r--core/img/actions/pause-big.svg73
-rw-r--r--core/img/actions/pause.pngbin0 -> 182 bytes
-rw-r--r--core/img/actions/pause.svg72
-rw-r--r--core/img/actions/play-big.pngbin0 -> 212 bytes
-rw-r--r--core/img/actions/play-big.svg73
-rw-r--r--core/img/actions/play-next.pngbin0 -> 253 bytes
-rw-r--r--core/img/actions/play-next.svg79
-rw-r--r--core/img/actions/play-previous.pngbin0 -> 260 bytes
-rw-r--r--core/img/actions/play-previous.svg79
-rw-r--r--core/img/actions/sound-off.pngbin0 -> 217 bytes
-rw-r--r--core/img/actions/sound-off.svg73
-rw-r--r--core/img/actions/sound.pngbin0 -> 292 bytes
-rw-r--r--core/img/actions/sound.svg78
-rw-r--r--core/img/jquery-tipsy.gifbin0 -> 867 bytes
-rw-r--r--core/js/jquery-showpassword.js113
-rw-r--r--core/js/jquery-tipsy.js108
-rw-r--r--core/js/js.js132
-rw-r--r--core/js/listview.js71
-rw-r--r--files/css/files.css25
-rw-r--r--files/js/fileactions.js9
-rw-r--r--files/js/filelist.js4
-rw-r--r--files/js/files.js10
-rw-r--r--files/templates/index.php11
-rw-r--r--lib/base.php5
-rw-r--r--lib/config.php9
-rwxr-xr-xlib/crypt.php2
-rw-r--r--lib/files.php2
-rw-r--r--settings/ajax/changepassword.php25
36 files changed, 964 insertions, 198 deletions
diff --git a/.htaccess b/.htaccess
index 23c90b26d8c..92825ea92d5 100644
--- a/.htaccess
+++ b/.htaccess
@@ -1,5 +1,5 @@
ErrorDocument 404 //owncloud/core/templates/404.php
-php_value upload_max_filesize 2048G
-php_value post_max_size 2048G
+php_value upload_max_filesize 512M
+php_value post_max_size 512M
SetEnv htaccessWorking true
Options -Indexes
diff --git a/admin/templates/users.php b/admin/templates/users.php
index 8d6b1efe6e2..77a4f0c0d57 100644
--- a/admin/templates/users.php
+++ b/admin/templates/users.php
@@ -6,8 +6,8 @@ foreach($_["groups"] as $group) {
?>
<table data-groups="<?php echo implode(', ',$allGroups);?>">
- <tbody id="controls">
- <tr><form id="newuser">
+ <tbody>
+ <tr id="controls"><form id="newuser">
<th class="name"><input id="newusername" placeholder="<?php echo $l->t('Name')?>"></input></th>
<th class="password"><input type="password" id="newuserpassword" placeholder="<?php echo $l->t('Password')?>"></input></th>
<th class="groups"><select id="newusergroups" data-placeholder="groups" title="<?php echo $l->t('Groups')?>" multiple="multiple">
diff --git a/apps/media/css/music.css b/apps/media/css/music.css
index c78ab200719..f9c3b955d6c 100644
--- a/apps/media/css/music.css
+++ b/apps/media/css/music.css
@@ -12,4 +12,5 @@ li button.right.prettybutton{font-size:1em;}
#collection li{padding-right:10px;}
#searchresults input.play, #searchresults input.add{float:right; height:16px; width:16px;}
#collection tr.collapsed td.album, #collection tr.collapsed td.title{color:#ddd}
-a.expander{float:right;display:block}
+a.expander{ float:right; display:block; }
+tr.active { background-color:#ccc; }
diff --git a/apps/media/css/player.css b/apps/media/css/player.css
index 6cf424a8ea1..42ef219994c 100644
--- a/apps/media/css/player.css
+++ b/apps/media/css/player.css
@@ -1,25 +1,25 @@
#controls ul.jp-controls{list-style-type:none;padding:0;}
#controls ul.jp-controls li{display:inline;}
#controls ul.jp-controls a{position:absolute;overflow:hidden;text-indent:-9999px;}
-a.jp-play,a.jp-pause{width:40px;height:40px;z-index:1;top:0;left:48px;}
+a.jp-play,a.jp-pause{width:3.1em;height:3.1em;z-index:1;top:0;left:3.8em;}
a.jp-play{background:url("../img/jplayer.blue.monday.png") 0 0 no-repeat;}
a.jp-play:hover{background:url("../img/jplayer.blue.monday.png") -41px 0 no-repeat;}
a.jp-pause{background:url("../img/jplayer.blue.monday.png") 0 -42px no-repeat;display:none;}
a.jp-pause:hover{background:url("../img/jplayer.blue.monday.png") -41px -42px no-repeat;}
-a.jp-previous{left:20px;top:.5em;background:url("../img/jplayer.blue.monday.png") 0 -112px no-repeat;width:28px;height:28px;}
+a.jp-previous{left:20px;top:.5em;background:url("../img/jplayer.blue.monday.png") 0 -112px no-repeat;width:2.3em;height:2.3em;}
a.jp-previous:hover{background:url("../img/jplayer.blue.monday.png") -29px -112px no-repeat;}
-a.jp-next{left:88px;top:.5em;background:url("../img/jplayer.blue.monday.png") 0 -141px no-repeat;width:28px;height:28px;}
+a.jp-next{left:88px;top:.5em;background:url("../img/jplayer.blue.monday.png") 0 -141px no-repeat;width:2.3em;height:2.3em;}
a.jp-next:hover{background:url("../img/jplayer.blue.monday.png") -29px -141px no-repeat;}
-div.jp-progress{position:absolute;overflow:hidden;background-color:#293b51;top:1em;left:164px;width:122px;height:15px;}
+div.jp-progress{position:absolute;overflow:hidden;background-color:#293b51;top:1em;left:10em;width:15em;height:1.2em;}
div.jp-seek-bar{background:url("../img/jplayer.blue.monday.png") 0 -202px repeat-x;width:0;height:100%;cursor:pointer;}
div.jp-play-bar{background:url("../img/jplayer.blue.monday.png") 0 -218px repeat-x;width:0;height:100%;}
div.jp-seeking-bg{background:url("../img/pbar-ani.gif");}
-a.jp-mute,a.jp-unmute{height:15px;width:18px;top:1em;left:296px;}
+a.jp-mute,a.jp-unmute{height:1.2em;width:1.5em;top:1em;left:26em;}
a.jp-mute{background:url("../img/jplayer.blue.monday.png") 0 -186px no-repeat;}
a.jp-mute:hover{background:url("../img/jplayer.blue.monday.png") -19px -170px no-repeat;}
a.jp-unmute{background:url("../img/jplayer.blue.monday.png") 0 -170px no-repeat;display:none;}
a.jp-unmute:hover{background:url("../img/jplayer.blue.monday.png") -19px -186px no-repeat;}
-div.jp-volume-bar{position:absolute;overflow:hidden;background:url("../img/jplayer.blue.monday.png") 0 -250px repeat-x;width:46px;height:5px;cursor:pointer;top:1.3em;left:324px;}
-div.jp-volume-bar-value{background:url("../img/jplayer.blue.monday.png") 0 -256px repeat-x;width:0;height:5px;}
-div.jp-current-time,div.jp-duration{position:absolute;font-size:.64em;font-style:oblique;top:1em;left:164px;width:122px;}
+div.jp-volume-bar{position:absolute;overflow:hidden;background:url("../img/jplayer.blue.monday.png") 0 -250px repeat-x;width:4em;height:0.4em;cursor:pointer;top:1.3em;left:28em;}
+div.jp-volume-bar-value{background:url("../img/jplayer.blue.monday.png") 0 -256px repeat-x;width:0;height:0.4em;}
+div.jp-current-time,div.jp-duration{position:absolute;font-size:.64em;font-style:oblique;top:1em;left:16.8em;width:22em;}
div.jp-duration{text-align:right;}
diff --git a/apps/media/js/collection.js b/apps/media/js/collection.js
index e49024973fa..8ef10951b6b 100644
--- a/apps/media/js/collection.js
+++ b/apps/media/js/collection.js
@@ -60,14 +60,18 @@ Collection={
tr.find('td.title a').text(song.song_name);
tr.find('td.title a').click(function(event){
event.preventDefault();
- PlayList.add(song);
- PlayList.render();
+ PlayList.add(song,true);
+ PlayList.play(0);
+ Collection.parent.find('tr').removeClass('active');
+ tr.addClass('active');
});
if(artist.artist_name!=lastArtist){
tr.find('td.artist a').click(function(event){
event.preventDefault();
- PlayList.add(artist);
- PlayList.render();
+ PlayList.add(artist,true);
+ PlayList.play(0);
+ Collection.parent.find('tr').removeClass('active');
+ $('tr[data-artist="'+artist.artist_name+'"]').addClass('active');
});
tr.find('td.artist a').text(artist.artist_name);
if(artist.albums.length>1){
@@ -87,8 +91,10 @@ Collection={
if(album.album_name!=lastAlbum){
tr.find('td.album a').click(function(event){
event.preventDefault();
- PlayList.add(album);
- PlayList.render();
+ PlayList.add(album,true);
+ PlayList.play(0);
+ Collection.parent.find('tr').removeClass('active');
+ $('tr[data-album="'+album.album_name+'"]').addClass('active');
});
tr.find('td.album a').text(album.album_name);
if(album.songs.length>1){
@@ -149,10 +155,11 @@ Collection={
Collection.parent.hide();
}
},
- registerPlay:function(){
- var item=PlayList.items[PlayList.current];
- var song=Collection.findSong(item.artist,item.album,item.name);
- song.song_playcount++;
+ registerPlay:function(item){
+ if(item){
+ var song=Collection.findSong(item.artist,item.album,item.name);
+ song.song_playcount++;
+ }
},
addButtons:function(parent){
parent.children('button.add').click(function(){
diff --git a/apps/media/js/player.js b/apps/media/js/player.js
index 8298db56e61..d37196a89f5 100644
--- a/apps/media/js/player.js
+++ b/apps/media/js/player.js
@@ -5,48 +5,53 @@ var PlayList={
player:null,
volume:0.8,
active:false,
+ tempPlaylist:[],
+ isTemp:true,
next:function(){
+ var items=(PlayList.isTemp)?PlayList.tempPlaylist:PlayList.items;
var next=PlayList.current+1;
- if(next>=PlayList.items.length){
+ if(next>=items.length){
next=0;
}
PlayList.play(next);
PlayList.render();
},
previous:function(){
+ var items=(PlayList.isTemp)?PlayList.tempPlaylist:PlayList.items;
var next=PlayList.current-1;
if(next<0){
- next=PlayList.items.length-1;
+ next=items.length-1;
}
PlayList.play(next);
PlayList.render();
},
play:function(index,time,ready){
+ var items=(PlayList.isTemp)?PlayList.tempPlaylist:PlayList.items;
if(index==null){
index=PlayList.current;
}
- if(index>-1 && index<PlayList.items.length){
+ if(index>-1 && index<items.length){
PlayList.current=index;
if(PlayList.player){
- if(PlayList.player.data('jPlayer').options.supplied!=PlayList.items[index].type){//the the audio type changes we need to reinitialize jplayer
+ if(PlayList.player.data('jPlayer').options.supplied!=items[index].type){//the the audio type changes we need to reinitialize jplayer
PlayList.player.jPlayer("destroy");
- PlayList.init(PlayList.items[index].type,function(){PlayList.play(null,time,ready)});
+ PlayList.init(items[index].type,function(){PlayList.play(null,time,ready)});
}else{
- PlayList.player.jPlayer("setMedia", PlayList.items[PlayList.current]);
- PlayList.items[index].playcount++;
+ PlayList.player.jPlayer("setMedia", items[PlayList.current]);
+ items[index].playcount++;
PlayList.player.jPlayer("play",time);
if(index>0){
var previous=index-1;
}else{
- var previous=PlayList.items.length-1;
+ var previous=items.length-1;
}
- if(index+1<PlayList.items.length){
+ if(index+1<items.length){
var next=index+1;
}else{
var next=0;
}
- $('.jp-next').attr('title',PlayList.items[next].name);
- $('.jp-previous').attr('title',PlayList.items[previous].name);
+ $('.jp-next').attr('title',items[next].name);
+ $('.jp-previous').attr('title',items[previous].name);
if (typeof Collection !== 'undefined') {
Collection.registerPlay();
}
@@ -55,7 +60,7 @@ var PlayList={
}
}
}else{
- PlayList.init(PlayList.items[index].type,PlayList.play);
+ PlayList.init(items[index].type,PlayList.play);
}
}
},
@@ -95,28 +100,37 @@ var PlayList={
swfPath:OC.linkTo('media','js'),
});
},
- add:function(song){
+ add:function(song,temp,dontReset){
+ if(!dontReset){
+ PlayList.tempPlaylist=[];//clear the temp playlist
+ }
+ PlayList.isTemp=temp;
+ PlayList.isTemp=true;
if(!song){
return;
}
if(song.substr){//we are passed a string, asume it's a url to a song
- PlayList.addFile(song);
+ PlayList.addFile(song,temp,true);
}
if(song.albums){//a artist object was passed, add all albums inside it
$.each(song.albums,function(index,album){
- PlayList.add(album);
+ PlayList.add(album,temp,true);
});
}
if(song.songs){//a album object was passed, add all songs inside it
$.each(song.songs,function(index,song){
- PlayList.add(song);
+ PlayList.add(song,temp,true);
});
}
if(song.song_name){
var type=musicTypeFromFile(song.song_path);
var item={name:song.song_name,type:type,artist:song.artist_name,album:song.album_name,length:song.song_length,playcount:song.song_playcount};
item[type]=PlayList.urlBase+encodeURIComponent(song.song_path);
- PlayList.items.push(item);
+ if(PlayList.isTemp){
+ PlayList.tempPlaylist.push(item);
+ }else{
+ PlayList.items.push(item);
+ }
}
},
addFile:function(path){
diff --git a/core/css/jquery-tipsy.css b/core/css/jquery-tipsy.css
new file mode 100644
index 00000000000..5075f41c9f6
--- /dev/null
+++ b/core/css/jquery-tipsy.css
@@ -0,0 +1,7 @@
+.tipsy { padding: 5px; font-size: 10px; opacity: 0.8; filter: alpha(opacity=80); background-repeat: no-repeat; background-image: url(../img/jquery-tipsy.gif); }
+ .tipsy-inner { padding: 5px 8px 4px 8px; background-color: black; color: white; max-width: 200px; text-align: center; }
+ .tipsy-inner { -moz-border-radius:3px; -webkit-border-radius:3px; }
+ .tipsy-north { background-position: top center; }
+ .tipsy-south { background-position: bottom center; }
+ .tipsy-east { background-position: right center; }
+ .tipsy-west { background-position: left center; }
diff --git a/core/img/actions/pause-big.png b/core/img/actions/pause-big.png
new file mode 100644
index 00000000000..9bcfd0406d8
--- /dev/null
+++ b/core/img/actions/pause-big.png
Binary files differ
diff --git a/core/img/actions/pause-big.svg b/core/img/actions/pause-big.svg
new file mode 100644
index 00000000000..b521057a35c
--- /dev/null
+++ b/core/img/actions/pause-big.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="play-big.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/play-add.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="2.2402344"
+ inkscape:cx="110.24162"
+ inkscape:cy="54.102269"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ inkscape:connector-curvature="0"
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 1,1037.3622 0,14 5,0 0,-14 z m 9,0 0,14 5,0 0,-14 z"
+ id="path3086-7"
+ sodipodi:nodetypes="cccccccccc" />
+ </g>
+</svg>
diff --git a/core/img/actions/pause.png b/core/img/actions/pause.png
new file mode 100644
index 00000000000..ced8c43ab34
--- /dev/null
+++ b/core/img/actions/pause.png
Binary files differ
diff --git a/core/img/actions/pause.svg b/core/img/actions/pause.svg
new file mode 100644
index 00000000000..ff3c69d6c71
--- /dev/null
+++ b/core/img/actions/pause.svg
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="play-next.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/play-big.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="17.921875"
+ inkscape:cx="-5.3403178"
+ inkscape:cy="10.148736"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="M 3 3 L 3 13 L 7 13 L 7 3 L 3 3 z M 9 3 L 9 13 L 13 13 L 13 3 L 9 3 z "
+ transform="translate(0,1036.3622)"
+ id="path3086" />
+ </g>
+</svg>
diff --git a/core/img/actions/play-big.png b/core/img/actions/play-big.png
new file mode 100644
index 00000000000..3ccd36129ec
--- /dev/null
+++ b/core/img/actions/play-big.png
Binary files differ
diff --git a/core/img/actions/play-big.svg b/core/img/actions/play-big.svg
new file mode 100644
index 00000000000..2ef67415323
--- /dev/null
+++ b/core/img/actions/play-big.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="play.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/play-add.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="17.921875"
+ inkscape:cx="-5.3403178"
+ inkscape:cy="10.148736"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 0,1036.3622 16,8 -16,8 z"
+ id="path3086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/core/img/actions/play-next.png b/core/img/actions/play-next.png
new file mode 100644
index 00000000000..0c0ccc87cdc
--- /dev/null
+++ b/core/img/actions/play-next.png
Binary files differ
diff --git a/core/img/actions/play-next.svg b/core/img/actions/play-next.svg
new file mode 100644
index 00000000000..9a41e4bd9d0
--- /dev/null
+++ b/core/img/actions/play-next.svg
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="play-big.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/play-big.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="17.921875"
+ inkscape:cx="-5.3403178"
+ inkscape:cy="10.148736"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 7,1038.3622 7,6 -7,6 z"
+ id="path3086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 2,1038.3622 7,6 -7,6 z"
+ id="path3086-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/core/img/actions/play-previous.png b/core/img/actions/play-previous.png
new file mode 100644
index 00000000000..d98cedaa1e8
--- /dev/null
+++ b/core/img/actions/play-previous.png
Binary files differ
diff --git a/core/img/actions/play-previous.svg b/core/img/actions/play-previous.svg
new file mode 100644
index 00000000000..31d45dedb4d
--- /dev/null
+++ b/core/img/actions/play-previous.svg
@@ -0,0 +1,79 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="next.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/play-next.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="17.921875"
+ inkscape:cx="-5.3403178"
+ inkscape:cy="10.148736"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 9,1038.3622 -7,6 7,6 z"
+ id="path3086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 14,1038.3622 -7,6 7,6 z"
+ id="path3086-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ </g>
+</svg>
diff --git a/core/img/actions/sound-off.png b/core/img/actions/sound-off.png
new file mode 100644
index 00000000000..7900e500c90
--- /dev/null
+++ b/core/img/actions/sound-off.png
Binary files differ
diff --git a/core/img/actions/sound-off.svg b/core/img/actions/sound-off.svg
new file mode 100644
index 00000000000..053291311fa
--- /dev/null
+++ b/core/img/actions/sound-off.svg
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="sound.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/sound.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="3.1681698"
+ inkscape:cx="17.017228"
+ inkscape:cy="33.367762"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 1,1042.3622 0,4 3,0 3,3 1,0 0,-10 -1,0 -3,3 z"
+ id="path3086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccc" />
+ </g>
+</svg>
diff --git a/core/img/actions/sound.png b/core/img/actions/sound.png
new file mode 100644
index 00000000000..838c9cee171
--- /dev/null
+++ b/core/img/actions/sound.png
Binary files differ
diff --git a/core/img/actions/sound.svg b/core/img/actions/sound.svg
new file mode 100644
index 00000000000..6feea076a44
--- /dev/null
+++ b/core/img/actions/sound.svg
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="16"
+ height="16"
+ id="svg3875"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="sound-off.svg"
+ inkscape:export-filename="/home/jancborchardt/owncloud/core/img/actions/pause.png"
+ inkscape:export-xdpi="90"
+ inkscape:export-ydpi="90">
+ <defs
+ id="defs3877" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="3.1681698"
+ inkscape:cx="17.017228"
+ inkscape:cy="33.367762"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ inkscape:window-width="1280"
+ inkscape:window-height="776"
+ inkscape:window-x="0"
+ inkscape:window-y="24"
+ inkscape:window-maximized="1">
+ <inkscape:grid
+ type="xygrid"
+ id="grid3883"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata3880">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-1036.3622)">
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 1,1042.3622 0,4 3,0 3,3 1,0 0,-10 -1,0 -3,3 z"
+ id="path3086"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccc" />
+ <path
+ style="fill:#000000;fill-opacity:1;stroke:none"
+ d="m 13.25,1039.3622 -0.78125,0.625 c 0.965189,1.1998 1.53125,2.7153 1.53125,4.375 0,1.6597 -0.566061,3.1752 -1.53125,4.375 l 0.78125,0.625 c 1.098257,-1.3697 1.75,-3.1078 1.75,-5 0,-1.8922 -0.651743,-3.6303 -1.75,-5 z m -1.5625,1.25 -0.8125,0.6563 c 0.687912,0.8565 1.125,1.9096 1.125,3.0937 0,1.1841 -0.437088,2.2372 -1.125,3.0938 l 0.8125,0.6562 c 0.823121,-1.0271 1.3125,-2.3314 1.3125,-3.75 0,-1.4186 -0.489379,-2.7229 -1.3125,-3.75 z m -1.5625,1.25 -0.78125,0.625 c 0.411273,0.5135 0.65625,1.1659 0.65625,1.875 0,0.7091 -0.244977,1.3615 -0.65625,1.875 l 0.78125,0.625 c 0.545316,-0.6836 0.875,-1.5576 0.875,-2.5 0,-0.9424 -0.329684,-1.8164 -0.875,-2.5 z"
+ id="path3105"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/core/img/jquery-tipsy.gif b/core/img/jquery-tipsy.gif
new file mode 100644
index 00000000000..eb7718dfc16
--- /dev/null
+++ b/core/img/jquery-tipsy.gif
Binary files differ
diff --git a/core/js/jquery-showpassword.js b/core/js/jquery-showpassword.js
new file mode 100644
index 00000000000..0f4678327a3
--- /dev/null
+++ b/core/js/jquery-showpassword.js
@@ -0,0 +1,113 @@
+/*
+* @name Show Password
+* @descripton
+* @version 1.3
+* @requires Jquery 1.5
+*
+* @author Jan Jarfalk
+* @author-email jan.jarfalk@unwrongest.com
+* @author-website http://www.unwrongest.com
+*
+* @special-thanks Michel Gratton
+*
+* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
+*/
+(function($){
+ $.fn.extend({
+ showPassword: function(c) {
+
+ // Setup callback object
+ var callback = {'fn':null,'args':{}}
+ callback.fn = c;
+
+ // Clones passwords and turn the clones into text inputs
+ var cloneElement = function( element ) {
+
+ var $element = $(element);
+
+ $clone = $("<input />");
+
+ // Name added for JQuery Validation compatibility
+ // Element name is required to avoid script warning.
+ $clone.attr({
+ 'type' : 'text',
+ 'class' : $element.attr('class'),
+ 'style' : $element.attr('style'),
+ 'size' : $element.attr('size'),
+ 'name' : $element.attr('name')+'-clone',
+ 'tabindex' : $element.attr('tabindex')
+ });
+
+ return $clone;
+
+ };
+
+ // Transfers values between two elements
+ var update = function(a,b){
+ b.val(a.val());
+ };
+
+ // Shows a or b depending on checkbox
+ var setState = function( checkbox, a, b ){
+
+ if(checkbox.is(':checked')){
+ update(a,b);
+ b.show();
+ a.hide();
+ } else {
+ update(b,a);
+ b.hide();
+ a.show();
+ }
+
+ };
+
+ return this.each(function() {
+
+ var $input = $(this),
+ $checkbox = $($input.data('typetoggle'));
+
+ // Create clone
+ var $clone = cloneElement($input);
+ $clone.insertAfter($input);
+
+ // Set callback arguments
+ if(callback.fn){
+ callback.args.input = $input;
+ callback.args.checkbox = $checkbox;
+ callback.args.clone = $clone;
+ }
+
+
+
+ $checkbox.bind('click', function() {
+ setState( $checkbox, $input, $clone );
+ });
+
+ $input.bind('keyup', function() {
+ update( $input, $clone )
+ });
+
+ $clone.bind('keyup', function(){
+ update( $clone, $input );
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for keyup event
+ $input.trigger('keyup');
+
+ });
+
+ // Added for JQuery Validation compatibility
+ // This will trigger validation if it's ON for blur event
+ $clone.bind('blur', function() { $input.trigger('focusout'); });
+
+ setState( $checkbox, $input, $clone );
+
+ if( callback.fn ){
+ callback.fn( callback.args );
+ }
+
+ });
+ }
+ });
+})(jQuery);
diff --git a/core/js/jquery-tipsy.js b/core/js/jquery-tipsy.js
new file mode 100644
index 00000000000..58d834771ff
--- /dev/null
+++ b/core/js/jquery-tipsy.js
@@ -0,0 +1,108 @@
+// tipsy - Facebook-style tooltip plugin for jQuery
+// (c) 2008-2009 Jason Frame (jason@onehackoranother.com)
+// Released under The MIT License.
+
+(function($) {
+ $.fn.tipsy = function(options) {
+
+ options = $.extend({}, $.fn.tipsy.defaults, options);
+
+ return this.each(function() {
+
+ var opts = $.fn.tipsy.elementOptions(this, options);
+
+ $(this).hover(function() {
+
+ $.data(this, 'cancel.tipsy', true);
+
+ var tip = $.data(this, 'active.tipsy');
+ if (!tip) {
+ tip = $('<div class="tipsy"><div class="tipsy-inner"/></div>');
+ tip.css({position: 'absolute', zIndex: 100000});
+ $.data(this, 'active.tipsy', tip);
+ }
+
+ if ($(this).attr('title') || typeof($(this).attr('original-title')) != 'string') {
+ $(this).attr('original-title', $(this).attr('title') || '').removeAttr('title');
+ }
+
+ var title;
+ if (typeof opts.title == 'string') {
+ title = $(this).attr(opts.title == 'title' ? 'original-title' : opts.title);
+ } else if (typeof opts.title == 'function') {
+ title = opts.title.call(this);
+ }
+
+ tip.find('.tipsy-inner')[opts.html ? 'html' : 'text'](title || opts.fallback);
+
+ var pos = $.extend({}, $(this).offset(), {width: this.offsetWidth, height: this.offsetHeight});
+ tip.get(0).className = 'tipsy'; // reset classname in case of dynamic gravity
+ tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body);
+ var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight;
+ var gravity = (typeof opts.gravity == 'function') ? opts.gravity.call(this) : opts.gravity;
+
+ switch (gravity.charAt(0)) {
+ case 'n':
+ tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-north');
+ break;
+ case 's':
+ tip.css({top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-south');
+ break;
+ case 'e':
+ tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}).addClass('tipsy-east');
+ break;
+ case 'w':
+ tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}).addClass('tipsy-west');
+ break;
+ }
+
+ if (opts.fade) {
+ tip.css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: 0.8});
+ } else {
+ tip.css({visibility: 'visible'});
+ }
+
+ }, function() {
+ $.data(this, 'cancel.tipsy', false);
+ var self = this;
+ setTimeout(function() {
+ if ($.data(this, 'cancel.tipsy')) return;
+ var tip = $.data(self, 'active.tipsy');
+ if (opts.fade) {
+ tip.stop().fadeOut(function() { $(this).remove(); });
+ } else {
+ tip.remove();
+ }
+ }, 100);
+
+ });
+
+ });
+
+ };
+
+ // Overwrite this method to provide options on a per-element basis.
+ // For example, you could store the gravity in a 'tipsy-gravity' attribute:
+ // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
+ // (remember - do not modify 'options' in place!)
+ $.fn.tipsy.elementOptions = function(ele, options) {
+ return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
+ };
+
+ $.fn.tipsy.defaults = {
+ fade: false,
+ fallback: '',
+ gravity: 'n',
+ html: false,
+ title: 'title'
+ };
+
+ $.fn.tipsy.autoNS = function() {
+ return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
+ };
+
+ $.fn.tipsy.autoWE = function() {
+ return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
+ };
+
+})(jQuery);
diff --git a/core/js/js.js b/core/js/js.js
index 30cf01d0b22..677cd5fbb7f 100644
--- a/core/js/js.js
+++ b/core/js/js.js
@@ -283,12 +283,25 @@ $(document).ready(function(){
});
if($('body').attr("id")=="body-user") { $('#settings #expanddiv').hide(); }
- $('#settings #expand').click(function() {
+ $('#settings #expand').click(function(event) {
$('#settings #expanddiv').slideToggle();
+ event.stopPropagation();
});
+ $('#settings #expanddiv').click(function(event){
+ event.stopPropagation();
+ })
$('#settings #expand').hover(function(){
$('#settings #expand+span').fadeToggle();
- })
+ });
+ $(window).click(function(){//hide the settings menu when clicking oustide it
+ if($('body').attr("id")=="body-user"){
+ $('#settings #expanddiv').slideUp();
+ }
+ });
+
+ $('.file_action').tipsy({gravity:'s', live:true});
+ $('.selectedActions a').tipsy({gravity:'n', live:true});
+ $('.selectedActions a.delete').tipsy({gravity: 'ne', live:true});
});
if (!Array.prototype.map){
@@ -314,118 +327,3 @@ if (!Array.prototype.map){
return res;
};
}
-
-
-/*
-* @name Show Password
-* @descripton
-* @version 1.3
-* @requires Jquery 1.5
-*
-* @author Jan Jarfalk
-* @author-email jan.jarfalk@unwrongest.com
-* @author-website http://www.unwrongest.com
-*
-* @special-thanks Michel Gratton
-*
-* @licens MIT License - http://www.opensource.org/licenses/mit-license.php
-*/
-(function($){
- $.fn.extend({
- showPassword: function(c) {
-
- // Setup callback object
- var callback = {'fn':null,'args':{}}
- callback.fn = c;
-
- // Clones passwords and turn the clones into text inputs
- var cloneElement = function( element ) {
-
- var $element = $(element);
-
- $clone = $("<input />");
-
- // Name added for JQuery Validation compatibility
- // Element name is required to avoid script warning.
- $clone.attr({
- 'type' : 'text',
- 'class' : $element.attr('class'),
- 'style' : $element.attr('style'),
- 'size' : $element.attr('size'),
- 'name' : $element.attr('name')+'-clone',
- 'tabindex' : $element.attr('tabindex')
- });
-
- return $clone;
-
- };
-
- // Transfers values between two elements
- var update = function(a,b){
- b.val(a.val());
- };
-
- // Shows a or b depending on checkbox
- var setState = function( checkbox, a, b ){
-
- if(checkbox.is(':checked')){
- update(a,b);
- b.show();
- a.hide();
- } else {
- update(b,a);
- b.hide();
- a.show();
- }
-
- };
-
- return this.each(function() {
-
- var $input = $(this),
- $checkbox = $($input.data('typetoggle'));
-
- // Create clone
- var $clone = cloneElement($input);
- $clone.insertAfter($input);
-
- // Set callback arguments
- if(callback.fn){
- callback.args.input = $input;
- callback.args.checkbox = $checkbox;
- callback.args.clone = $clone;
- }
-
-
-
- $checkbox.bind('click', function() {
- setState( $checkbox, $input, $clone );
- });
-
- $input.bind('keyup', function() {
- update( $input, $clone )
- });
-
- $clone.bind('keyup', function(){
- update( $clone, $input );
-
- // Added for JQuery Validation compatibility
- // This will trigger validation if it's ON for keyup event
- $input.trigger('keyup');
-
- });
-
- // Added for JQuery Validation compatibility
- // This will trigger validation if it's ON for blur event
- $clone.bind('blur', function() { $input.trigger('focusout'); });
-
- setState( $checkbox, $input, $clone );
-
- if( callback.fn ){
- callback.fn( callback.args );
- }
-
- });
- }
- });
-})(jQuery);
diff --git a/core/js/listview.js b/core/js/listview.js
new file mode 100644
index 00000000000..e3e5ebdab8f
--- /dev/null
+++ b/core/js/listview.js
@@ -0,0 +1,71 @@
+function ListView(element){
+ this.element=element;
+}
+
+ListView.generateTable=function(collumns){
+ var html='<table>';
+ html+='<thead>';
+ $.each(collumns,function(index,collumn){
+ html+='<th>'+collumn+'</th>';
+ });
+ html+='<thead>';
+ html+='</head>';
+ html+='<tbody>';
+ html+'<tr class="template">'
+ $.each(collumns,function(index,collumn){
+ html+='<th class="'+collumn.toLower()+'"</th>';
+ });
+ html+'</tr>'
+ html+='</tbody>';
+ html='</table>';
+ return $(html);
+}
+
+ListView.prototype={
+ rows:{},
+ hoverElements:{},
+ addRow:function(id,data,extraData){
+ var tr=this.element.find('tr.template').clone();
+ tr.removeClass('template');
+ $.each(data,function(name,value){
+ tr.children('td.'+name).text(value);
+ tr.attr('data-'+name,value);
+ });
+ $.each(extraData,function(name,value){
+ tr.attr('data-'+name,value);
+ });
+ this.rows[id]=data;
+ tr.data('id',id);
+ this.element.children('tbody').append(tr);
+ },
+ removeRow:function(id){
+ this.rows[id].remove();
+ delete this.rows[id];
+ },
+ hoverHandeler:function(tr){
+ $.each(this.hoverElement,function(index,collumn){
+ $.each(collumn,function(index,element){
+ var html='<a href="#" title="'+element.title+'" class="hoverElement"/>';
+ var element=$(html);
+ element.append($('<img src="'+element.icon+'"/>'));
+ element.click(element.callback);
+ tr.children('td.'+collumn).append(element)
+ });
+ });
+ if(this.deleteCallback){
+
+ }
+ },
+ hoverHandelerOut:function(tr){
+ tr.find('*.hoverElement').remove();
+ },
+ addHoverElement:function(collumn,icon,title,callback){
+ if(!this.hoverElements[collumn]){
+ this.hoverElements[collumn]=[];
+ }
+ this.hoverElements[row].push({icon:icon,callback:callback,title:title});
+ },
+ empty:function(){
+ this.element.children('tr:not(.template)').remove();
+ }
+} \ No newline at end of file
diff --git a/files/css/files.css b/files/css/files.css
index e878cc01d03..9fcc24a80af 100644
--- a/files/css/files.css
+++ b/files/css/files.css
@@ -11,7 +11,7 @@
#fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; }
.file_upload_wrapper, #file_newfolder_name { background-repeat:no-repeat; background-position:.5em .3em; padding-left:2em; }
.file_upload_wrapper { font-weight:bold; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; padding-left:0; overflow:hidden; position:relative; margin-right:1.5em;}
-.file_upload_wrapper #file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; }
+.file_upload_wrapper .file_upload_button_wrapper { position:absolute; top:0; left:0; width:100%; height:100%; cursor:pointer; z-index:1000; }
#file_newfolder_name { background-image:url('../../core/img/places/folder.svg'); font-weight:bold; width:8em; }
.file_upload_start, .file_upload_filename { font-size:1em; }
@@ -26,9 +26,13 @@
/* FILE TABLE */
span#emptyfolder { position:absolute; margin:10em 0 0 10em; font-size:1.5em; font-weight:bold; color:#888; text-shadow:#fff 0 1px 0; }
table { position:relative; top:37px; width:100%; }
-tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#eee; height:1em; }
+table tr { -webkit-transition:background-color 500ms; -moz-transition:background-color 500ms; -o-transition:background-color 500ms; transition:background-color 500ms; }
+tbody tr:hover, tbody tr:active, tbody tr.selected { background-color:#f8f8f8; height:1em; }
+tbody tr.selected { background-color:#eee; }
tbody a { color:#000; }
span.extention, td.date { color:#999; }
+span.extention { opacity:0; -webkit-transition:opacity 500ms; -moz-transition:opacity 500ms; -o-transition:opacity 500ms; transition:opacity 500ms; }
+tr:hover span.extention { opacity:1; }
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; }
@@ -38,22 +42,23 @@ table th .name { float:left; margin-left:.5em; }
table th.multiselect { background:#ddd; color:#000; font-weight:bold; }
table th, table td { border-bottom:1px solid #ddd; text-align:left; font-weight:normal; }
table td { border-bottom:1px solid #eee; font-style:normal; background-position:1em .5em; background-repeat:no-repeat; }
-table th#headerSize, table td.filesize { width:5em; padding:0 1em; text-align:right; }
+table th#headerSize, table td.filesize { width:3em; padding:0 1em; text-align:right; }
table th#headerDate, table td.date { width:11em; padding:0 .1em 0 1em; text-align:left; }
table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; }
table td.filename a.name { display:block; height:1.5em; vertical-align:middle; margin-left:3em; }
table tr[data-type="dir"] td.filename a.name {font-weight:bold; }
-table td.filename a.name input, table td.filename a.name form { width:100%; cursor:text }
+table td.filename a.name input, table td.filename a.name form { width:100%; cursor:text; }
table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:.2em .5em .5em 0; }
table td.filename .nametext, .modified { float:left; padding:.3em 0; }
table td.filename .nametext { width:60%; }
table td.filename form { float:left; font-size:.85em; }
-table thead.fixed tr{position:fixed; top:6.3em; z-index:49; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000;}
-table thead.fixed {height:2em}
-#fileList tr td.filename>input[type=checkbox]:first-child { display:none; float:left; margin:.7em 0 0 1em; /* bigger clickable area doesn’t work in FF width:2.8em; height:2.4em;*/ }
-#fileList tr td.filename>input[type=checkbox]:checked:first-child, #fileList tr:hover td.filename>input[type=checkbox]:first-child { display:inline; }
-#fileList tr.selected td.filename , #fileList tr:hover td.filename { background-image:none !important }
-#select_all { float:left; margin:0.2em; margin-left:0.6em; }
+table thead.fixed tr{ position:fixed; top:6.3em; z-index:49; -moz-box-shadow:0 -3px 7px #000; -webkit-box-shadow:0 -3px 7px #000; box-shadow:0 -3px 7px #000; }
+table thead.fixed { height:2em; }
+#fileList tr td.filename>input[type=checkbox]:first-child { opacity:0; float:left; margin:.7em 0 0 1em; /* bigger clickable area doesn’t work in FF width:2.8em; height:2.4em;*/ -webkit-transition:opacity 500ms; -moz-transition:opacity 500ms; -o-transition:opacity 500ms; transition:opacity 500ms; }
+#fileList tr td.filename>input[type="checkbox"]:checked:first-child, #fileList tr:hover td.filename>input[type="checkbox"]:first-child { opacity:1; }
+#fileList tr td.filename { -webkit-transition:background-image 500ms; -moz-transition:background-image 500ms; -o-transition:background-image 500ms; transition:background-image 500ms; }
+#fileList tr.selected td.filename, #fileList tr:hover td.filename { background-image:url('') !important; }
+#select_all { float:left; margin:.2em; margin-left:.6em; }
#uploadsize-message,#delete-confirm { display:none; }
.selectedActions a, a.file_action { float:right; display:inline; margin:0 .5em; padding:.3em .3em 0 .3em !important; }
.selectedActions { display:none; }
diff --git a/files/js/fileactions.js b/files/js/fileactions.js
index 744ffd8cfed..2bc79abe723 100644
--- a/files/js/fileactions.js
+++ b/files/js/fileactions.js
@@ -53,6 +53,7 @@ FileActions={
},
display:function(parent){
FileActions.currentFile=parent;
+ $('.file_action').remove();
var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
var file=FileActions.getCurrentFile();
if($('tr[data-file="'+file+'"]').data('renaming')){
@@ -100,10 +101,14 @@ FileActions={
});
parent.parent().children().last().append(element);
}
+ $('.file_action').hide();
+ $('.file_action').fadeIn(200);
return false;
},
hide:function(){
- $('.file_action').remove();
+ $('.file_action').fadeOut(200,function(){
+ $(this).remove();
+ });
},
getCurrentFile:function(){
return FileActions.currentFile.parent().attr('data-file');
@@ -128,7 +133,7 @@ FileActions.register('all','Rename',OC.imagePath('core','actions/rename'),functi
FileList.rename(filename);
});
-FileActions.setDefault('all','Download');
+//FileActions.setDefault('all','Download');
FileActions.register('dir','Open','',function(filename){
window.location='index.php?dir='+$('#dir').val()+'/'+filename;
diff --git a/files/js/filelist.js b/files/js/filelist.js
index 50a995bf254..b89bc9b57b6 100644
--- a/files/js/filelist.js
+++ b/files/js/filelist.js
@@ -3,7 +3,7 @@ FileList={
$('#fileList').empty().html(fileListHtml);
},
addFile:function(name,size,lastModified,loading){
- var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file.png');
+ var img=(loading)?OC.imagePath('core', 'loading.gif'):OC.imagePath('core', 'filetypes/file');
var html='<tr data-file="'+name+'" data-type="file" data-size="'+size+'">';
if(name.indexOf('.')!=-1){
var basename=name.substr(0,name.indexOf('.'));
@@ -38,7 +38,7 @@ FileList={
},
addDir:function(name,size,lastModified){
var html='<tr data-file="'+name+'" data-type="dir" data-size="'+size+'">';
- html+='<td class="filename" style="background-image:url(img/folder.png)"><input type="checkbox" /><a class="name" href="index.php?dir='+$('#dir').val()+'/'+name+'">'+name+'</a></td>';
+ html+='<td class="filename" style="background-image:url('+OC.imagePath('core', 'places/folder')+')"><input type="checkbox" /><a class="name" href="index.php?dir='+$('#dir').val()+'/'+name+'">'+name+'</a></td>';
if(size!='Pending'){
simpleSize=simpleFileSize(size);
}else{
diff --git a/files/js/files.js b/files/js/files.js
index 950f06a31a1..8fdbd418462 100644
--- a/files/js/files.js
+++ b/files/js/files.js
@@ -13,10 +13,14 @@ $(document).ready(function() {
$('#plugins>ul>li:first-child').droppable(crumbDropOptions);
// Triggers invisible file input
- $('#file_upload_button_wrapper').bind('click', function() {
- $('#file_upload_start').trigger('click');
+ $('.file_upload_button_wrapper').live('click', function() {
+ $(this).parent().children('.file_upload_start').trigger('click');
return false;
});
+
+ $('#file_upload_button_wrapper').tipsy({gravity:'e'});
+ $('td.filesize').tipsy({gravity:'se', live:true});
+ $('td .modified').tipsy({gravity:'s', live:true});
// Sets the file-action buttons behaviour :
$('tr').live('mouseenter',function(event) {
@@ -419,5 +423,5 @@ function getMimeIcon(mime){
if(knownMimes.indexOf(mime)==-1){
mime='file';
}
- return OC.imagePath('core','mimetypes/'+mime+'.png');
+ return OC.imagePath('core','filetypes/'+mime);
}
diff --git a/files/templates/index.php b/files/templates/index.php
index 008051492d0..f5a212add48 100644
--- a/files/templates/index.php
+++ b/files/templates/index.php
@@ -6,10 +6,9 @@
<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" class="svg">
- <input type="submit" class="file_upload_filename" value="<?php echo $l->t('Upload');
- if($_['uploadMaxFilesize']<(10000000000)){echo ' (max. '.$_['uploadMaxHumanFilesize'].')';}?>"/>
- <input id="file_upload_start" class="file_upload_start" type="file" name='files[]'/>
- <a href="#" id="file_upload_button_wrapper" onclick="return false;"></a>
+ <input type="submit" class="file_upload_filename" value="<?php echo $l->t('Upload'); ?>"/>
+ <input class="file_upload_start" class="file_upload_start" type="file" name='files[]'/>
+ <a href="#" class="file_upload_button_wrapper" onclick="return false;" title="<?php echo 'max. '.$_['uploadMaxHumanFilesize'] ?>"></a>
</div>
<iframe name="file_upload_target_1" class='file_upload_target' src=""></iframe>
</form>
@@ -33,8 +32,8 @@
<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="<?php echo $l->t('Delete')?>" src="../core/img/actions/delete.svg" /></a></span></th>
+ <th id="headerSize"><?php echo $l->t( 'Size' ); ?></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">
diff --git a/lib/base.php b/lib/base.php
index 2e735514347..dc3ed4129cd 100644
--- a/lib/base.php
+++ b/lib/base.php
@@ -148,12 +148,15 @@ OC_Group::setBackend( OC_Config::getValue( "groupbackend", "database" ));
// Add the stuff we need always
OC_Util::addScript( "jquery-1.6.2.min" );
OC_Util::addScript( "jquery-ui-1.8.14.custom.min" );
+OC_Util::addScript( "jquery-showpassword" );
+OC_Util::addScript( "jquery-tipsy" );
OC_Util::addScript( "js" );
OC_Util::addScript( "multiselect" );
OC_Util::addScript('search','result');
-OC_Util::addStyle( "jquery-ui-1.8.14.custom" );
OC_Util::addStyle( "styles" );
OC_Util::addStyle( "multiselect" );
+OC_Util::addStyle( "jquery-ui-1.8.14.custom" );
+OC_Util::addStyle( "jquery-tipsy" );
// Load Apps
// This includes plugins for users and filesystems as well
diff --git a/lib/config.php b/lib/config.php
index 16e9ea441d5..dafb37edd33 100644
--- a/lib/config.php
+++ b/lib/config.php
@@ -177,8 +177,13 @@ class OC_Config{
$content .= ");\n?>\n";
// Write the file
- file_put_contents( "$SERVERROOT/config/config.php", $content );
-
+ $result=@file_put_contents( "$SERVERROOT/config/config.php", $content );
+ if(!$result) {
+ $tmpl = new OC_Template( '', 'error', 'guest' );
+ $tmpl->assign('errors',array(1=>array('error'=>"Can't write into config directory 'config'",'hint'=>"You can usually fix this by setting the owner of 'config' to the user that the web server uses (".exec('whoami').")")));
+ $tmpl->printPage();
+ exit;
+ }
return true;
}
}
diff --git a/lib/crypt.php b/lib/crypt.php
index 83e6ac4cde0..de1f6c73387 100755
--- a/lib/crypt.php
+++ b/lib/crypt.php
@@ -61,7 +61,7 @@ class OC_Crypt {
// Write the file
$username=OC_USER::getUser();
- file_put_contents(OC_Config::getValue( "datadirectory").'/'.$username.'/encryption.key', $enckey );
+ @file_put_contents(OC_Config::getValue( "datadirectory").'/'.$username.'/encryption.key', $enckey );
}
}
diff --git a/lib/files.php b/lib/files.php
index eec1007de1f..bdcae419189 100644
--- a/lib/files.php
+++ b/lib/files.php
@@ -121,7 +121,7 @@ class OC_Files {
$filename=$dir.'/'.$files;
}
if($zip or OC_Filesystem::is_readable($filename)){
- header('Content-Disposition: attachment; filename='.basename($filename));
+ header('Content-Disposition: attachment; filename="'.basename($filename).'"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
diff --git a/settings/ajax/changepassword.php b/settings/ajax/changepassword.php
index 750edf17696..b9b2417ad9a 100644
--- a/settings/ajax/changepassword.php
+++ b/settings/ajax/changepassword.php
@@ -6,33 +6,32 @@ require_once('../../lib/base.php');
$l=new OC_L10N('settings');
// We send json data
-header( "Content-Type: application/jsonrequest" );
+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" ) )));
+if(!OC_User::isLoggedIn()){
+ echo json_encode(array("status" => "error", "data" => array("message" => $l->t("Authentication error"))));
exit();
}
// Get data
-if( !isset( $_POST["password"] ) && !isset( $_POST["oldpassword"] )){
- echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t( "You have to enter the old and the new password!" ) )));
+if(!isset($_POST["password"]) && !isset($_POST["oldpassword"])){
+ echo json_encode(array("status" => "error", "data" => array("message" => $l->t("You have to enter the old and the new password!"))));
exit();
}
// Check if the old password is correct
-if( !OC_User::checkPassword( $_SESSION["user_id"], $_POST["oldpassword"] )){
- echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Your old password is wrong!") )));
+if(!OC_User::checkPassword($_SESSION["user_id"], $_POST["oldpassword"])){
+ echo json_encode(array("status" => "error", "data" => array("message" => $l->t("Your old password is wrong!"))));
exit();
}
// Change password
-if( OC_User::setPassword( $_SESSION["user_id"], $_POST["password"] )){
- echo json_encode( array( "status" => "success", "data" => array( "message" => $l->t("Password changed") )));
- OC_Crypt::changekeypasscode( $_POST["password"]) {
-}
-else{
- echo json_encode( array( "status" => "error", "data" => array( "message" => $l->t("Unable to change password") )));
+if(OC_User::setPassword($_SESSION["user_id"], $_POST["password"])){
+ echo json_encode(array("status" => "success", "data" => array("message" => $l->t("Password changed"))));
+ OC_Crypt::changekeypasscode($_POST["password"]);
+}else{
+ echo json_encode(array("status" => "error", "data" => array("message" => $l->t("Unable to change password"))));
}
?>