diff options
author | Michael Gapczynski <GapczynskiM@gmail.com> | 2011-08-12 21:00:41 -0400 |
---|---|---|
committer | Michael Gapczynski <GapczynskiM@gmail.com> | 2011-08-12 21:00:41 -0400 |
commit | 122018889a054e2cc7222ce123edd859fd3511f4 (patch) | |
tree | 0dff0f4745828df16156e3900222e2ae11e3a0cb | |
parent | ffe9da91af72e7f7953f41968f536d15390edffe (diff) | |
parent | 67156f87e3757fbd5e692e7d6b2209cfafc6c3cf (diff) | |
download | nextcloud-server-122018889a054e2cc7222ce123edd859fd3511f4.tar.gz nextcloud-server-122018889a054e2cc7222ce123edd859fd3511f4.zip |
Merge branch 'master' into sharing
Conflicts:
files/css/files.css
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 Binary files differnew file mode 100644 index 00000000000..9bcfd0406d8 --- /dev/null +++ b/core/img/actions/pause-big.png 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 Binary files differnew file mode 100644 index 00000000000..ced8c43ab34 --- /dev/null +++ b/core/img/actions/pause.png 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 Binary files differnew file mode 100644 index 00000000000..3ccd36129ec --- /dev/null +++ b/core/img/actions/play-big.png 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 Binary files differnew file mode 100644 index 00000000000..0c0ccc87cdc --- /dev/null +++ b/core/img/actions/play-next.png 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 Binary files differnew file mode 100644 index 00000000000..d98cedaa1e8 --- /dev/null +++ b/core/img/actions/play-previous.png 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 Binary files differnew file mode 100644 index 00000000000..7900e500c90 --- /dev/null +++ b/core/img/actions/sound-off.png 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 Binary files differnew file mode 100644 index 00000000000..838c9cee171 --- /dev/null +++ b/core/img/actions/sound.png 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 Binary files differnew file mode 100644 index 00000000000..eb7718dfc16 --- /dev/null +++ b/core/img/jquery-tipsy.gif 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")))); } ?> |