Merge branch 'master' into sharing

Conflicts:
	files/templates/index.php
This commit is contained in:
Michael Gapczynski 2011-07-29 10:23:15 -04:00
commit fcc9f50641
72 changed files with 1677 additions and 941 deletions

View File

@ -2,7 +2,7 @@
OC_APP::register( array( "order" => 1, "id" => "admin", "name" => "Administration" ));
OC_APP::addAdminPage( array( "id" => "core_system", "order" => 1, "href" => OC_HELPER::linkTo( "admin", "system.php" ), "name" =>"System", "icon" => OC_HELPER::imagePath( "admin", "administration.png" )));
// OC_APP::addAdminPage( array( "id" => "core_system", "order" => 1, "href" => OC_HELPER::linkTo( "admin", "system.php" ), "name" =>"System", "icon" => OC_HELPER::imagePath( "admin", "administration.png" )));
OC_APP::addAdminPage( array( "id" => "core_users", "order" => 2, "href" => OC_HELPER::linkTo( "admin", "users.php" ), "name" => "Users", "icon" => OC_HELPER::imagePath( "admin", "users.png" )));
OC_APP::addAdminPage( array( "id" => "core_apps", "order" => 3, "href" => OC_HELPER::linkTo( "admin", "apps.php?installed" ), "name" => "Apps", "icon" => OC_HELPER::imagePath( "admin", "apps.png" )));

View File

@ -7,7 +7,7 @@ $(document).ready(function() {
$( 'body' ).append(overlay);
var container=$('<div id="lightbox"/>');
$( 'body' ).append(container);
FileActions.register('image','View',function(filename){
FileActions.register('image','View','',function(filename){
var location='ajax/download.php?files='+filename+'&dir='+$('#dir').val();
overlay.show();
if(!images[location]){

View File

@ -25,4 +25,4 @@
</form>
</tr>
</tbody>
</table>
</table>

View File

@ -105,6 +105,9 @@ if($arguments['action']){
$ftype=OC_FILESYSTEM::getMimeType( $arguments['path'] );
$songId=OC_MEDIA_COLLECTION::getSongByPath($arguments['path']);
OC_MEDIA_COLLECTION::registerPlay($songId);
header('Content-Type:'.$ftype);
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');

View File

@ -29,5 +29,5 @@ if(OC_APP::getCurrentApp()=='files'){
OC_APP::register( array( 'order' => 3, 'id' => 'media', 'name' => 'Media' ));
OC_APP::addNavigationEntry( array( 'id' => 'media_index', 'order' => 2, 'href' => OC_HELPER::linkTo( 'media', 'index.php' ), 'icon' => OC_HELPER::imagePath( 'media', 'media.png' ), 'name' => 'Media' ));
OC_APP::addSettingsPage( array( 'id' => 'media_settings', 'order' => 5, 'href' => OC_HELPER::linkTo( 'media', 'settings.php' ), 'name' => 'Media', 'icon' => OC_HELPER::imagePath( 'files', 'media.png' )));
OC_APP::addSettingsPage( array( 'id' => 'media_settings', 'order' => 5, 'href' => OC_HELPER::linkTo( 'media', 'settings.php' ), 'name' => 'Media', 'icon' => OC_HELPER::imagePath( 'media', 'media.png' )));
?>

View File

@ -206,6 +206,24 @@
<length>4</length>
</field>
<field>
<name>song_playcount</name>
<type>integer</type>
<default>
</default>
<notnull>true</notnull>
<length>4</length>
</field>
<field>
<name>song_lastplayed</name>
<type>integer</type>
<default>
</default>
<notnull>true</notnull>
<length>4</length>
</field>
</declaration>
</table>

View File

@ -1,5 +1,5 @@
#jp-interface{position:fixed;z-index:100;width:25em;left:201px;top:-10px;height:80px;border-bottom:none;}
#jp-interface.player{display:hidden;}
#jp-interface{position:fixed;z-index:100;width:25em;left:201px;top:-20px;height:80px;border-bottom:none;}
#jp-interface div.player{height:0px}
#jp-interface ul.jp-controls{list-style-type:none;padding:0;}
#jp-interface ul.jp-controls li{display:inline;}
#jp-interface ul.jp-controls a{position:absolute;overflow:hidden;text-indent:-9999px;}
@ -25,5 +25,5 @@ a.jp-unmute{background:url("../img/jplayer.blue.monday.png") 0 -170px no-repeat;
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:37px;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:49px;left:164px;width:122px;}
div.jp-current-time,div.jp-duration{position:absolute;font-size:.64em;font-style:oblique;top:45px;left:164px;width:122px;}
div.jp-duration{text-align:right;}

BIN
apps/media/img/media.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

View File

@ -40,11 +40,11 @@ function loadPlayer(type,ready){
$(document).ready(function() {
loadPlayer.done=false
FileActions.register('audio','Add to playlist',addAudio);
FileActions.register('application/ogg','Add to playlist',addAudio);
// FileActions.register('audio','Add to playlist','',addAudio);
// FileActions.register('application/ogg','Add to playlist','',addAudio);
FileActions.register('audio','Play',playAudio);
FileActions.register('application/ogg','Play',playAudio);
FileActions.register('audio','Play','',playAudio);
FileActions.register('application/ogg','','Play',playAudio);
FileActions.setDefault('audio','Play');
FileActions.setDefault('application/ogg','Play');
});

File diff suppressed because one or more lines are too long

View File

@ -62,6 +62,7 @@ var PlayList={
}
},
cssSelectorAncestor:'#jp-interface',
swfPath:OC.linkTo('media','js'),
});
},
add:function(song){

View File

@ -270,7 +270,8 @@ class OC_MEDIA_COLLECTION{
if($songId!=0){
return $songId;
}else{
$query=OC_DB::prepare("INSERT INTO `*PREFIX*media_songs` (`song_id` ,`song_name` ,`song_artist` ,`song_album` ,`song_path` ,`song_user`,`song_length`,`song_track`,`song_size`) VALUES (NULL , ?, ?, ?, ?,?,?,?,?)");
$query=OC_DB::prepare("INSERT INTO `*PREFIX*media_songs` (`song_id` ,`song_name` ,`song_artist` ,`song_album` ,`song_path` ,`song_user`,`song_length`,`song_track`,`song_size`,`song_playcount`,`song_lastplayed`)
VALUES (NULL , ?, ?, ?, ?,?,?,?,?,0,0)");
$query->execute(array($name,$artist,$album,$path,$uid,$length,$track,$size));
$songId=OC_DB::insertid();
// self::setLastUpdated();
@ -346,6 +347,31 @@ class OC_MEDIA_COLLECTION{
$query=OC_DB::prepare("DELETE FROM *PREFIX*media_songs WHERE song_path LIKE ?");
$query->execute(array("$path%"));
}
/**
* increase the play count of a song
* @param int songId
*/
public static function registerPlay($songId){
$now=time();
$query=OC_DB::prepare('UPDATE *PREFIX*media_songs SET song_playcount=song_playcount+1, song_lastplayed=? WHERE song_id=? AND song_lastplayed<?');
$query->execute(array($now,$songId,$now-60));
}
/**
* get the id of the song by path
* @param string $path
* @return int
*/
public static function getSongByPath($path){
$query=OC_DB::prepare("SELECT song_id FROM *PREFIX*media_songs WHERE song_path = ?");
$result=$query->execute(array($path))->fetchAll();
if(count($result)>0){
return $result[0]['song_id'];
}else{
return 0;
}
}
}
?>

View File

@ -68,40 +68,79 @@ class OC_MEDIA_SCANNER{
* @return boolean
*/
public static function scanFile($path){
if(!self::$getID3){
self::$getID3=@new getID3();
}
$file=OC_FILESYSTEM::getLocalFile($path);
$data=@self::$getID3->analyze($file);
getid3_lib::CopyTagsToComments($data);
if(!isset($data['comments'])){
error_log("error reading id3 tags in '$file'");
return;
}
if(!isset($data['comments']['artist'])){
error_log("error reading artist tag in '$file'");
$artist='unknown';
}else{
$artist=stripslashes($data['comments']['artist'][0]);
$artist=utf8_encode($artist);
}
if(!isset($data['comments']['album'])){
error_log("error reading album tag in '$file'");
$album='unknown';
}else{
$album=stripslashes($data['comments']['album'][0]);
$album=utf8_encode($album);
}
if(!isset($data['comments']['title'])){
error_log("error reading title tag in '$file'");
if(substr($path,-3)=='mp3' and OC_HELPER::canExecute("id3info") and OC_HELPER::canExecute("mp3info")){//use the command line tool id3info if possible
$output=array();
$size=filesize($file);
$length=0;
$title='unknown';
$album='unknown';
$artist='unknown';
$track=0;
exec('id3info "'.$file.'"',$output);
$data=array();
foreach($output as $line) {
switch(substr($line,0,3)){
case '***'://comments
break;
case '==='://tag information
$key=substr($line,4,4);
$value=substr($line,strpos($line,':')+2);
switch(strtolower($key)){
case 'tit1':
case 'tit2':
$title=$value;
break;
case 'tpe1':
case 'tpe2':
$artist=$value;
break;
case 'talb':
$album=$value;
break;
case 'trck':
$track=$value;
break;
}
break;
}
}
$length=exec('mp3info -p "%S" "'.$file.'"');
}else{
$title=stripslashes($data['comments']['title'][0]);
$title=utf8_encode($title);
if(!self::$getID3){
self::$getID3=@new getID3();
}
$data=@self::$getID3->analyze($file);
getid3_lib::CopyTagsToComments($data);
if(!isset($data['comments'])){
error_log("error reading id3 tags in '$file'");
return;
}
if(!isset($data['comments']['artist'])){
error_log("error reading artist tag in '$file'");
$artist='unknown';
}else{
$artist=stripslashes($data['comments']['artist'][0]);
$artist=utf8_encode($artist);
}
if(!isset($data['comments']['album'])){
error_log("error reading album tag in '$file'");
$album='unknown';
}else{
$album=stripslashes($data['comments']['album'][0]);
$album=utf8_encode($album);
}
if(!isset($data['comments']['title'])){
error_log("error reading title tag in '$file'");
$title='unknown';
}else{
$title=stripslashes($data['comments']['title'][0]);
$title=utf8_encode($title);
}
$size=$data['filesize'];
$track=(isset($data['comments']['track']))?$data['comments']['track'][0]:0;
$length=isset($data['playtime_seconds'])?round($data['playtime_seconds']):0;
}
$size=$data['filesize'];
$track=(isset($data['comments']['track']))?$data['comments']['track'][0]:0;
$length=round($data['playtime_seconds']);
if(!isset(self::$artists[$artist])){
$artistId=OC_MEDIA_COLLECTION::addArtist($artist);
self::$artists[$artist]=$artistId;

View File

@ -17,7 +17,6 @@
<div class="jp-volume-bar-value"></div>
</div>
<div class="jp-current-time"></div>
<div class="jp-current-time"></div>
<div class="jp-duration"></div>
<div class='player'></div>
<div class='player' id='jp-player'></div>
</div>

View File

@ -329,27 +329,27 @@ function checkid ( $wait ) {
user_session();
// Get the options, use defaults as necessary
$return_to = @strlen($_REQUEST['openid_return_to'])
$return_to = isset($_REQUEST['openid_return_to'])
? $_REQUEST['openid_return_to']
: error_400('Missing return1_to');
: error_400('Missing return_to');
$identity = @strlen($_REQUEST['openid_identity'])
$identity = isset($_REQUEST['openid_identity'])
? $_REQUEST['openid_identity']
: error_get($return_to, 'Missing identity');
$assoc_handle = @strlen($_REQUEST['openid_assoc_handle'])
$assoc_handle = isset($_REQUEST['openid_assoc_handle'])
? $_REQUEST['openid_assoc_handle']
: null;
$trust_root = @strlen($_REQUEST['openid_trust_root'])
$trust_root = isset($_REQUEST['openid_trust_root'])
? $_REQUEST['openid_trust_root']
: $return_to;
$sreg_required = @strlen($_REQUEST['openid_sreg_required'])
$sreg_required = isset($_REQUEST['openid_sreg_required'])
? $_REQUEST['openid_sreg.required']
: '';
$sreg_optional = @strlen($_REQUEST['openid_sreg_optional'])
$sreg_optional = isset($_REQUEST['openid_sreg_optional'])
? $_REQUEST['openid_sreg.optional']
: '';

View File

@ -1,11 +1,15 @@
* { margin:0; padding:0; border:0; }
* { margin:0; padding:0; border:0; cursor:default; }
body { background:#fefefe url('../img/body_background.jpg') repeat-y left top; font:normal 80%/1.6em "Lucida Grande", Arial, Verdana, sans-serif; color:#000; }
#header { position:fixed; top:0; z-index:100; width:100%; height:5.5em; padding:0.5em 1.5em; background:url('../img/header-a.png') repeat-x left top; }
#body-settings #header { background-image:url('../img/header-settings-a.png'); }
#owncloud { float:left; margin:0 0 0 2em; }
#header { position:fixed; top:0; z-index:100; width:100%; height:2.5em; padding:0.5em 1.5em; background:#1d2d44; -moz-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; -webkit-box-shadow:0 0 10px #000, inset 0 -2px 10px #222; box-shadow:0 0 10px #000, inset 0 -2px 10px #222; }
#body-settings #header { background:#313131; }
#owncloud { float:left; }
h1 { margin:1em 3em 1em 0; border-bottom:1px solid #666; text-transform:uppercase; font-weight:normal; font-style:italic; color:#666; }
p.center { text-align:center; }
a { color:#000; text-decoration:none; }
a { color:#000; text-decoration:none; outline:0; }
table { white-space:nowrap; }
input, select { background:#fff; color:#333; }
a, a img, a strong, a span, input, button, select, li { cursor:pointer; }
input[type="text"], input[type="password"] { cursor:text; }
form#user_settings { max-width:600px; }
form#user_settings p label { display:block; float:left; width:35%; padding:0.4em 0.5em 0 0; text-align:right; }
@ -16,197 +20,69 @@ form input { padding:0.2em; border:1px solid #ddd; font-size:1.2em; }
form input[type="submit"] { padding:0.1em 1em; border:1px solid #999; font-weight:bold; font-size:0.9em; cursor:pointer; }
form input[type="submit"]:hover, form input[type="submit"]:focus { border:1px solid #999; background-color:#999; outline:0; }
form input[type="submit"]:active { outline:0; }
form input[type="button"], form input[type="text"] { font-size: 0.9em; }
form input[type="button"], form input[type="text"] { font-size:0.9em; }
fieldset { padding:1em; background-color:#f7f7f7; border:1px solid #ddd; max-width:600px; margin:2em 2em 2em 3em; }
legend { padding: 0.5em; font-size:1.2em; }
legend { padding:0.5em; font-size:1.2em; }
div.controls { width:91%; margin:1em 1em 1em 2em; padding:0.5em 0; background-color:#f7f7f7; border:1px solid #eee; }
div.controls { width:100%; margin:0px; background-color:#f7f7f7; border-bottom:1px solid #eee; position:fixed; z-index:2; }
/* LOG IN & INSTALLATION ------------------------------------------------------------ */
#body-login { width:100%; background-image:none; background-color:#ddd; }
#body-login p.info { width:16em; margin:4em auto; padding:1em; background-color:#eee; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
#login
{
margin: 0 auto 0 auto;
padding: 2em 0 0 0;
background-image: url(../img/header-login.png);
background-position: left 0;
background-repeat: repeat-x;
background-color: #EEE;
border-bottom: 1px solid #FFF;
text-align: center;
}
#login_form
{
width: 20em;
margin: 4em auto;
padding: 0;
}
#login_form fieldset
{
background-color: transparent;
border: 0;
}
#login_form fieldset p
{
margin: 0.5em 0 0 0;
padding: 0;
text-align: left;
}
#login_form fieldset p.submit
{
margin: 2em 0 0 0;
padding: 1em 0 0 0;
border-top: 1px solid #DDD;
text-align: right;
}
#login_form label
{
font-size: 1em;
color: #666;
}
#login_form input
{
width: 100%;
margin: 0 0 0.5em 0;
padding: 0.5em;
border: 1px solid #DDD;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
font-size: 1.5em;
color: #333;
text-align: center;
}
#login_form input[type=submit]
{
width: auto;
margin: 1em 0 0 0.5em;
text-align: center;
border: 1px solid #DDD;
background-color: #FFF;
-moz-border-radius: 15px;
-webkit-border-radius: 15px;
border-radius: 15px;
font-size: 1.5em
}
#login_form input[type=submit]:hover
{
border: 1px solid #666;
background-color: #666;
color: #FFF;
}
#login_form input[type="checkbox"]
{
width:15px;
}
#setup_form {
margin: 3em auto;
text-align: left;
width: 720px;
}
#setup_form #use_mysql {
font-size: 0.9em;
margin: 0 0 0 1em;
}
#setup_form p.intro {
color: #666;
font-size: 1.3em;
margin: 4em 0 3em 0;
padding: 0;
text-align: center;
}
#setup_form ul.errors {
background-image: url(images/no.png);
background-position: 1em 1em;
background-repeat: no-repeat;
background-color: #FED7D7;
border: 1px solid #F00;
font-size: 1.2em;
list-style-indent: inside;
margin: 0 0 4em 0;
padding: 1em 1em 1em 5em;
}
#setup_form fieldset {
margin: 0 0 3em 0;
}
#setup_form p {
line-height: 1.8em;
}
#setup_form legend {
font-weight: normal;
}
#setup_form label {
cursor: pointer;
display: block;
float: left;
margin: 0 0 0.2em 0;
text-align: right;
width: 40%;
}
#body-login p.info { width:16em; margin:2em auto; padding:1em; background-color:#eee; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
#body-login p.info a { font-weight:bold; }
#login header { margin-top:-2em; height:10em;
-moz-box-shadow:0 0 5px #000; -webkit-box-shadow:0 0 20px #000; box-shadow:0 0 20px #000;
background: #1d2d44; /* Old browsers */
background: -moz-linear-gradient(top, #35537a 0%, #1d2d42 100%); /* FF3.6+ */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#35537a), color-stop(100%,#1d2d42)); /* Chrome,Safari4+ */
background: -webkit-linear-gradient(top, #35537a 0%,#1d2d42 100%); /* Chrome10+,Safari5.1+ */
background: -o-linear-gradient(top, #35537a 0%,#1d2d42 100%); /* Opera11.10+ */
background: -ms-linear-gradient(top, #35537a 0%,#1d2d42 100%); /* IE10+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#35537a', endColorstr='#1d2d42',GradientType=0 ); /* IE6-9 */
background: linear-gradient(top, #35537a 0%,#1d2d42 100%); /* W3C */ }
#login { margin:0 auto 0 auto; padding:2em 0 0 0; border-bottom:1px solid #FFF; text-align:center; background:#eee; }
#login_form { width:20em; margin:4em auto; padding:0; }
#login_form fieldset { background-color:transparent; border:0; }
#login_form fieldset p { margin:0.5em 0 0 0; padding:0; text-align:left; }
#login_form fieldset p.submit { margin:2em 0 0 0; padding:1em 0 0 0; border-top:1px solid #DDD; text-align:right; }
#login_form label { font-size:1em; color:#666; }
#login_form input { width:100%; margin:0 0 0.5em 0; padding:0.5em; border:1px solid #DDD; -moz-border-radius:15px; -webkit-border-radius:15px; border-radius:15px; font-size:1.5em; color:#333; text-align:center; }
#login_form input[type=submit] { width:auto; margin:1em 0 0 0.5em; text-align:center; border:1px solid #DDD; background-color:#FFF; -moz-border-radius:15px; -webkit-border-radius:15px; border-radius:15px; font-size:1.5em }
#login_form input[type=submit]:hover { border:1px solid #666; background-color:#666; color:#FFF; }
#login_form input[type="checkbox"] { width:15px; }
#setup_form { margin:3em auto; text-align:left; width:720px; }
#setup_form #use_mysql { font-size:0.9em; margin:0 0 0 1em; }
#setup_form p.intro { color:#666; font-size:1.3em; margin:4em 0 3em 0; padding:0; text-align:center; }
#setup_form ul.errors { background-image:url(images/no.png); background-position:1em 1em; background-repeat:no-repeat; background-color:#FED7D7; border:1px solid #F00; font-size:1.2em; list-style-indent:inside; margin:0 0 4em 0; padding:1em 1em 1em 5em; }
#setup_form fieldset { margin:0 0 3em 0; }
#setup_form p { line-height:1.8em; }
#setup_form legend { font-weight:normal; }
#setup_form label { cursor:pointer; display:block; float:left; margin:0 0 0.2em 0; text-align:right; width:40%; }
#setup_form input[type='text'],
#setup_form input[type='password'] {
font-size: 1em;
margin: 0 0 0 0.5em;
padding: 0.3em;
}
#setup_form input[type='radio'] {
margin: 0 0 0 1em;
}
#setup_form input[type='submit'] {
background-color: #DDD;
border: 1px solid #999;
color: #666;
font-size: 1.2em;
}
#setup_form input[type='submit']:hover {
border-color: #000;
color: #000;
}
#setup_form p.submit {
padding: 0 0 1em 0;
text-align: center;
}
#setup_form input[type='password'] { font-size:1em; margin:0 0 0 0.5em; padding:0.3em; }
#setup_form input[type='radio'] { margin:0 0 0 1em; }
#setup_form input[type='submit'] { background-color:#DDD; border:1px solid #999; color:#666; font-size:1.2em; }
#setup_form input[type='submit']:hover { border-color:#000; color:#000; }
#setup_form p.submit { padding:0 0 1em 0; text-align:center; }
.prettybutton { margin:0.1em; padding:0.2em 0.5em; border:1px solid #ddd; -moz-border-radius:15px; -webkit-border-radius:15px; border-radius:15px; font-size:1.5em; text-decoration:none; color:#666; background-color:#fff; }
.prettybutton:hover, .prettybutton:focus { background-color:#ccc; outline:0; }
/* META NAVIGATION (Settings, Log out) ---------------------------------------------------------------- */
#metanav { float:right; position:relative; top:1.5em; right:2.5em; list-style:none; margin:0; padding:0; }
#metanav { float:right; position:relative; top:0.5em; right:2.5em; list-style:none; margin:0; padding:0; }
#metanav li { display:inline; }
#metanav li a { margin:.1em; padding:1em; }
#metanav li a:hover, #metanav li a:focus { background:rgba(0,0,0,.5); -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; outline:0; box-shadow:#555 0 1px 0; -moz-box-shadow:#555 0 1px 0; -webkit-box-shadow:#555 0 1px 0; }
#metanav li a { margin:.2em; padding:.7em; }
#metanav li a:hover, #metanav li a:focus { background:rgba(0,0,0,.5); -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; box-shadow:#555 0 1px 0; -moz-box-shadow:#555 0 1px 0; -webkit-box-shadow:#555 0 1px 0; }
#metanav li a img { vertical-align:middle; }
/* SEARCH --------------------------------------------------------------------- */
form.searchbox { display:inline; position:fixed; top:2em; right:10em; margin:0; padding:0; }
form.searchbox { display:inline; position:fixed; top:.9em; right:9em; margin:0; padding:0; }
input[type="search"] { font-size:1em; padding-left:2em; background:#eee url('../img/actions/search.png') .5em center no-repeat; }
/* NAVIGATION ------------------------------------------------------------- */
#plugins { position:fixed; top:7em; float:left; width:15.7em; padding:0; }
#plugins { position:fixed; top:3.5em; float:left; width:15.7em; padding:0; z-index:50; }
#plugins ul { list-style-type:none; border-top:1px solid #ccc; }
#plugins a { display:block; padding:0.5em 0.5em 0.5em 3em; background-position:1.5em center; background-repeat:no-repeat; border-bottom:1px solid #ddd; border-top:1px solid #fff; text-decoration:none; font-size:1.2em; color:#666; }
#plugins a.active, #plugins a:hover, #plugins a:focus, #plugins a.selected { background-color:#ccc; border-top:1px solid #ccc; border-bottom:1px solid #ccc; color:#000; outline:0; }
@ -215,53 +91,7 @@ form.searchbox { display:inline; position:fixed; top:2em; right:10em; margin:0;
#plugins .subentry.active { background-color:#bbb; border-top:1px solid #aaa; border-bottom:1px solid #ccc; color:#000; outline:0; }
/* CONTENT ------------------------------------------------------------------ */
#content { margin:7em 0 0 16em; }
table { margin:1em 5em 2em 3em; }
table tr.mouseOver td { background-color:#eee; }
table th, table td { padding:0; border-bottom:1px solid #ddd; text-align:left; font-style:italic; }
table th { padding:0.5em; }
table td { border-bottom:1px solid #eee; font-style:normal; }
table td.filesize, table td.date { width:5em; padding:0.5em 1em; text-align:right; }
table td.date { width:11em; }
table td.selection, table th.selection, table td.fileaction { width:2em; text-align:center; }
table td.filename a { display:block; background-image:url('../img/file.png'); text-decoration:none; }
table td.filename a, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:0.5em 0.5em 0.5em 3em; background-position:1em center; background-repeat:no-repeat; }
table td.filename a:hover, table td.filename a:focus { outline:0; }
table td.filename a:active { outline:0; }
table em { font-weight:bold; }
table td.filename a.folder-up { background-image:url('../img/back.png'); font-style:italic; }
table td.filename a.folder { background-image:url('../img/folder.png'); }
table td.filename a.folder-home { background-image:url('../img/home.png'); }
table td.filename a.folder-music { background-image:url('../img/folder-music.png'); }
table td.filename a.folder-videos { background-image:url('../img/folder-video.png'); }
table td.filename a.folder-shared { background-image:url('../img/folder-shared.png'); }
table td.filename a.folder-images { background-image:url('../img/folder-image.png'); }
table td.filename a.file-txt { background-image:url('../img/file-txt.png'); }
table td.filename a.file-python { background-image:url('../img/file-python.png'); }
table td.filename a.file-php { background-image:url('../img/file.png'); }
table td.login { background-image:url('../img/login.png'); }
table td.logout { background-image:url('../img/logout.png'); }
table td.download { background-image:url('../img/download.png'); }
table td.upload { background-image:url('../img/upload.png'); }
table td.create { background-image:url('../img/folder-new.png'); }
table td.delete { background-image:url('../img/delete.png'); }
#fileList tr input[type=checkbox] { display:none; }
#fileList tr input[type=checkbox]:checked { display:inline; }
#fileList tr:hover input[type=checkbox] { display:inline; }
/* NAVIGATION BAR */
span.nav { margin:1em 0 0 2em; padding:0.8em; line-height:16px; font-weight:bold; display:block}
span.nav a { padding:0.5em 1.5em 0.5em 0.5em; background-position:right center; background-repeat:no-repeat; background-image:url('../img/arrow.png'); text-decoration:none; }
span.nav a img { height:16px; vertical-align:text-top; }
/* ACTIONS BAR */
p.actions, div.actions { padding:0; }
p.actions a, div.actions a { padding:0.5em 0.5em 0.5em 3em; background-position:1em center; background-repeat:no-repeat; background-image:url('../img/action.png'); border-right:1px solid #eee; text-decoration:none; color:#333; }
p.actions a:hover, p.actions a:focus, div.actions a:hover, div.actions a:focus { background-color:#eee; color:#000; outline:0; }
p.actions a:active, div.actions a:active { outline:0; }
p.actions a.new-dir, div.actions a.new-dir { background-image:url('../img/folder-new.png'); }
p.actions a.download, div.actions a.download { background-image:url('../img/download.png'); }
p.actions a.delete, div.actions a.delete { background-image:url('../img/delete.png'); }
#content { margin:3.5em 0 0 15.7em; }
/* USER SETTINGS ------------------------------------------------------------ */
#quota_indicator { margin:0 4em 1em 0; padding:0; border:1px solid #ddd; border-radius:10px; -webkit-border-radius:10px; -moz-border-radius:10px; }
@ -279,4 +109,4 @@ p.actions a.delete, div.actions a.delete { background-image:url('../img/delete.p
#logs_options input[type="submit"] { float:right; margin:0 2em 0 0; }
#logs_options input[type="submit"].nofloat { float:none; margin:0 2em 0 0; }
#logs_options input[type="text"] { margin:0; padding:0; border:1px solid #ccc; text-align:right; }
li.error{ list-style:none; width:640px; margin:4em auto; padding:1em 1em 1em 4em; background-color:#fee; background-image:url('../img/task-attention.png'); background-position:0.8em 0.8em; background-repeat:no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
li.error { list-style:none; width:640px; margin:4em auto; padding:1em 1em 1em 4em; background-color:#fee; background-image:url('../img/task-attention.png'); background-position:0.8em 0.8em; background-repeat:no-repeat; border:1px solid #ccc; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }

View File

Before

Width:  |  Height:  |  Size: 396 B

After

Width:  |  Height:  |  Size: 396 B

121
core/img/actions/back.svg Normal file
View File

@ -0,0 +1,121 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="22"
height="22"
id="svg2423"
sodipodi:version="0.32"
inkscape:version="0.48.1 r9760"
sodipodi:docname="steadyflow-panel.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
inkscape:export-filename="/home/jancborchardt/SparkleShare/playground/ownCloud/elementaryicons/elementary-icon-theme/elementary-mono-dark/panel/22/steadyflow-panel.png"
inkscape:export-xdpi="205.86"
inkscape:export-ydpi="205.86">
<metadata
id="metadata12">
<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>
<sodipodi:namedview
inkscape:window-height="776"
inkscape:window-width="1280"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showgrid="false"
inkscape:zoom="18.409653"
inkscape:cx="3.1144877"
inkscape:cy="10.453039"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:current-layer="svg2423"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-maximized="1">
<inkscape:grid
type="xygrid"
id="grid2989"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true" />
</sodipodi:namedview>
<defs
id="defs2425">
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3678"
id="linearGradient3805"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0,0.51263812,0.51263812,0,0.912685,4.921543)"
x1="0.98925388"
y1="20.108774"
x2="26.631666"
y2="20.093433" />
<linearGradient
id="linearGradient3678">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3680" />
<stop
style="stop-color:#e6e6e6;stop-opacity:1;"
offset="1"
id="stop3682" />
</linearGradient>
<linearGradient
gradientTransform="matrix(-0.4100229,0,0,0.5447147,78.029995,-3.8459034)"
gradientUnits="userSpaceOnUse"
xlink:href="#linearGradient3678"
id="linearGradient2388-7"
y2="38.279892"
x2="159.68553"
y1="14.403693"
x1="159.68553" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3678"
id="linearGradient3793"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(-0.4100229,0,0,0.5447147,47.235507,-11.911988)"
x1="159.68553"
y1="14.403693"
x2="159.68553"
y2="38.279892" />
</defs>
<path
inkscape:connector-curvature="0"
d="m 11.5,19.5 -8,-7 8,-7 0,4 7,0 0,6 -7,0 z"
id="path4348-1-1"
style="opacity:0.5;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cccccccc" />
<path
inkscape:connector-curvature="0"
d="m 11.5,18.5 -8,-7 8,-7 0,4 7,0 0,6 -7,0 z"
id="path4348-1"
style="fill:url(#linearGradient3805);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
sodipodi:nodetypes="cccccccc" />
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
core/img/actions/delete.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 330 B

View File

@ -0,0 +1,70 @@
<?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="drawing.svg">
<defs
id="defs3877" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="25.345359"
inkscape:cx="8.8403833"
inkscape:cy="8.3505321"
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:#808080;fill-opacity:1;stroke:none"
d="m 3,1040.3622 1,-1 4,3 4,-3 1,1 -3,4 3,4 -1,1 -4,-3 -4,3 -1,-1 3,-4 z"
id="path3086"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

View File

@ -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="drawing.svg"
inkscape:export-filename="/home/jancborchardt/delete.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="8.9609375"
inkscape:cx="4.5772403"
inkscape:cy="10.15018"
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:#808080;fill-opacity:1;stroke:none"
d="m 6,1037.3622 4,0 1,7 4,0 -7,7 -7,-7 4,0 z"
id="path3086"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

Before

Width:  |  Height:  |  Size: 657 B

After

Width:  |  Height:  |  Size: 657 B

View File

@ -0,0 +1,95 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="18"
height="16"
id="svg2403"
inkscape:version="0.48.1 r9760"
sodipodi:docname="system-shutdown-panel2.svg">
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1280"
inkscape:window-height="776"
id="namedview3047"
showgrid="false"
inkscape:zoom="17.875"
inkscape:cx="9"
inkscape:cy="8"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2403" />
<metadata
id="metadata15">
<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>
<defs
id="defs2405">
<linearGradient
x1="11.644068"
y1="2.4988678"
x2="11.644068"
y2="15.00281"
id="linearGradient2392"
xlink:href="#linearGradient3678"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(1.0000001,1.1920928e-8)" />
<linearGradient
x1="8.4964771"
y1="-0.061573759"
x2="8.4964771"
y2="8.083209"
id="linearGradient2395"
xlink:href="#linearGradient3678"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(1.0526316,0,0,0.9843625,0.5789474,0.06024281)" />
<linearGradient
id="linearGradient3678">
<stop
id="stop3680"
style="stop-color:#ffffff;stop-opacity:1"
offset="0" />
<stop
id="stop3682"
style="stop-color:#e6e6e6;stop-opacity:1"
offset="1" />
</linearGradient>
</defs>
<path
d="M 5.8427514,4.45 C 0.60889,7.192151 2.9756281,15.05 8.959192,15.05 c 5.921233,0 8.575036,-7.449605 3.11644,-10.6 M 9,8 9,1.9996319"
id="path3341-5"
style="opacity:0.5;fill:none;stroke:#000000;stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
d="M 9,7 9,0.99963191"
id="path3716"
style="fill:none;stroke:url(#linearGradient2395);stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
<path
d="M 5.8427514,3.45 C 0.60889,6.1921513 2.9756281,14.05 8.959192,14.05 c 5.921233,0 8.575036,-7.4496051 3.11644,-10.6"
id="path3341"
style="fill:none;stroke:url(#linearGradient2392);stroke-width:1.89999998;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
</svg>

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
core/img/actions/rename.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

View File

@ -0,0 +1,80 @@
<?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="drawing.svg"
inkscape:export-filename="/home/jancborchardt/rename.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="25.345359"
inkscape:cx="10.704484"
inkscape:cy="9.4345147"
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:#808080;fill-opacity:1;stroke:none"
d="m 10,3 -7,7 -2,5 5,-2 7,-7 z m -6.5,7.5 2,2 L 3,14 2,13 z"
transform="translate(0,1036.3622)"
id="path3086"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccc" />
<path
style="fill:#808080;fill-opacity:1;stroke:none"
d="m 14,1041.3622 -3,-3 c 2,-2 5,1 3,3 z"
id="path3086-3"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

BIN
core/img/actions/search.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

View File

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 695 B

View File

@ -0,0 +1,221 @@
<?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:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="16"
height="16"
id="svg2457"
inkscape:version="0.48.1 r9760"
sodipodi:docname="bonobo-component-browser.svg"
inkscape:export-filename="/home/jancborchardt/SparkleShare/playground/ownCloud/elementaryicons/elementary-icon-theme/elementary/actions/16/bonobo-component-browser.png"
inkscape:export-xdpi="90"
inkscape:export-ydpi="90">
<metadata
id="metadata23">
<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>
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1280"
inkscape:window-height="776"
id="namedview21"
showgrid="false"
inkscape:zoom="17.875"
inkscape:cx="-2.3776224"
inkscape:cy="1.2867133"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg2457" />
<defs
id="defs2459">
<linearGradient
id="linearGradient5128">
<stop
id="stop5130"
style="stop-color:#e5e5e5;stop-opacity:1"
offset="0" />
<stop
id="stop5132"
style="stop-color:#ababab;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="86.132919"
y1="105.105"
x2="84.63858"
y2="20.895"
id="linearGradient3260"
xlink:href="#linearGradient5128"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(9.6142312e-2,0,0,9.6142312e-2,1.8468935,1.9430362)" />
<linearGradient
id="linearGradient3397">
<stop
id="stop3399"
style="stop-color:#aaaaaa;stop-opacity:1"
offset="0" />
<stop
id="stop3401"
style="stop-color:#8c8c8c;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="21"
y1="0"
x2="21"
y2="16.004715"
id="linearGradient3264"
xlink:href="#linearGradient3397"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,0)" />
<linearGradient
x1="63.9995"
y1="3.1001"
x2="63.9995"
y2="122.8994"
id="linearGradient3309"
gradientUnits="userSpaceOnUse">
<stop
id="stop3311"
style="stop-color:#f6f6f6;stop-opacity:1"
offset="0" />
<stop
id="stop3313"
style="stop-color:#cccccc;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
x1="25"
y1="0"
x2="25"
y2="16.000105"
id="linearGradient3262"
xlink:href="#linearGradient3309"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,0)" />
<linearGradient
id="linearGradient3678">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3680" />
<stop
style="stop-color:#e6e6e6;stop-opacity:1;"
offset="1"
id="stop3682" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3309-5"
id="linearGradient3066-2"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,0)"
x1="25"
y1="0"
x2="25"
y2="16.000105" />
<linearGradient
x1="63.9995"
y1="3.1001"
x2="63.9995"
y2="122.8994"
id="linearGradient3309-5"
gradientUnits="userSpaceOnUse">
<stop
id="stop3311-3"
style="stop-color:#f6f6f6;stop-opacity:1"
offset="0" />
<stop
id="stop3313-3"
style="stop-color:#cccccc;stop-opacity:1"
offset="1" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3678"
id="linearGradient3920"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,-0.444)"
x1="25"
y1="0"
x2="25"
y2="16.000105" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3678-0"
id="linearGradient3920-6"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,-0.444)"
x1="25"
y1="0"
x2="25"
y2="16.000105" />
<linearGradient
id="linearGradient3678-0">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3680-5" />
<stop
style="stop-color:#e6e6e6;stop-opacity:1;"
offset="1"
id="stop3682-7" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3678"
id="linearGradient3959"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-17.058189,-0.444)"
x1="25"
y1="0"
x2="25"
y2="16.000105" />
</defs>
<g
transform="translate(0.027972,0.944)"
id="g2479-3"
style="opacity:0.5;fill:#000000;fill-opacity:1">
<path
inkscape:connector-curvature="0"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate"
id="path2426-2"
d="M 6.9375,0.056 C 6.6890831,0.056 6.5,0.245082 6.5,0.4935 l 0,1.25 C 5.9460971,1.885701 5.448836,2.115378 4.96875,2.39975 L 4.0625,1.4935 c -0.1756569,-0.175658 -0.449342,-0.175658 -0.625,0 l -1.5,1.5 c -0.175657,0.175658 -0.175657,0.449342 0,0.625 L 2.84375,4.52475 C 2.5593789,5.004836 2.329701,5.502097 2.1875,6.056 l -1.25,0 C 0.68908301,6.056 0.5,6.245082 0.5,6.4935 l 0,2.125 c 1e-8,0.248418 0.189083,0.4375 0.4375,0.4375 l 1.25,0 c 0.1422009,0.553903 0.371879,1.051164 0.65625,1.53125 L 1.9375,11.4935 c -0.175657,0.175658 -0.175657,0.449342 0,0.625 l 1.5,1.5 c 0.1756579,0.175658 0.449342,0.175658 0.625,0 L 4.96875,12.71225 C 5.4488361,12.996622 5.946097,13.2263 6.5,13.3685 l 0,1.25 c 1e-7,0.248418 0.189083,0.4375 0.4375,0.4375 l 2.125,0 C 9.3109176,15.056 9.5,14.866918 9.5,14.6185 l 0,-1.25 c 0.553903,-0.1422 1.051164,-0.371878 1.53125,-0.65625 l 0.90625,0.90625 c 0.175658,0.175658 0.449342,0.175658 0.625,0 l 1.5,-1.5 c 0.175658,-0.175658 0.175658,-0.449342 0,-0.625 L 13.15625,10.58725 C 13.440622,10.107164 13.6703,9.609903 13.8125,9.056 l 1.25,0 C 15.310918,9.056 15.5,8.866917 15.5,8.6185 l 0,-2.125 C 15.5,6.245082 15.310917,6.056 15.0625,6.056 l -1.25,0 C 13.6703,5.502097 13.440622,5.004836 13.15625,4.52475 L 14.0625,3.6185 c 0.175658,-0.175658 0.175658,-0.449342 0,-0.625 l -1.5,-1.5 c -0.175658,-0.175658 -0.449342,-0.175658 -0.625,0 L 11.03125,2.39975 C 10.551164,2.115378 10.053903,1.885701 9.5,1.7435 l 0,-1.25 C 9.4999996,0.245082 9.310918,0.056 9.0625,0.056 z M 8,4.2133427 c 1.8451469,0 3.342657,1.4975104 3.342657,3.3426573 0,1.8451469 -1.4975101,3.342657 -3.342657,3.342657 C 6.1548531,10.898657 4.6573427,9.4011469 4.6573427,7.556 4.6573427,5.7108531 6.1548531,4.2133427 8,4.2133427 z"
sodipodi:nodetypes="ssccssssccssssccssssccssssccssssccssssccssssccssssssss" />
</g>
<g
id="g2479"
transform="translate(0,-0.056)">
<path
inkscape:connector-curvature="0"
style="fill:url(#linearGradient3959);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.99999994;marker:none;visibility:visible;display:block;overflow:visible;enable-background:accumulate"
id="path2426"
d="M 6.9375,0.056 C 6.6890831,0.056 6.5,0.245082 6.5,0.4935 l 0,1.25 C 5.9460971,1.885701 5.448836,2.115378 4.96875,2.39975 L 4.0625,1.4935 c -0.1756569,-0.175658 -0.449342,-0.175658 -0.625,0 l -1.5,1.5 c -0.175657,0.175658 -0.175657,0.449342 0,0.625 L 2.84375,4.52475 C 2.5593789,5.004836 2.329701,5.502097 2.1875,6.056 l -1.25,0 C 0.68908301,6.056 0.5,6.245082 0.5,6.4935 l 0,2.125 c 1e-8,0.248418 0.189083,0.4375 0.4375,0.4375 l 1.25,0 c 0.1422009,0.553903 0.371879,1.051164 0.65625,1.53125 L 1.9375,11.4935 c -0.175657,0.175658 -0.175657,0.449342 0,0.625 l 1.5,1.5 c 0.1756579,0.175658 0.449342,0.175658 0.625,0 L 4.96875,12.71225 C 5.4488361,12.996622 5.946097,13.2263 6.5,13.3685 l 0,1.25 c 1e-7,0.248418 0.189083,0.4375 0.4375,0.4375 l 2.125,0 C 9.3109176,15.056 9.5,14.866918 9.5,14.6185 l 0,-1.25 c 0.553903,-0.1422 1.051164,-0.371878 1.53125,-0.65625 l 0.90625,0.90625 c 0.175658,0.175658 0.449342,0.175658 0.625,0 l 1.5,-1.5 c 0.175658,-0.175658 0.175658,-0.449342 0,-0.625 L 13.15625,10.58725 C 13.440622,10.107164 13.6703,9.609903 13.8125,9.056 l 1.25,0 C 15.310918,9.056 15.5,8.866917 15.5,8.6185 l 0,-2.125 C 15.5,6.245082 15.310917,6.056 15.0625,6.056 l -1.25,0 C 13.6703,5.502097 13.440622,5.004836 13.15625,4.52475 L 14.0625,3.6185 c 0.175658,-0.175658 0.175658,-0.449342 0,-0.625 l -1.5,-1.5 c -0.175658,-0.175658 -0.449342,-0.175658 -0.625,0 L 11.03125,2.39975 C 10.551164,2.115378 10.053903,1.885701 9.5,1.7435 l 0,-1.25 C 9.4999996,0.245082 9.310918,0.056 9.0625,0.056 z M 8,4.2133427 c 1.8451469,0 3.342657,1.4975104 3.342657,3.3426573 0,1.8451469 -1.4975101,3.342657 -3.342657,3.342657 C 6.1548531,10.898657 4.6573427,9.4011469 4.6573427,7.556 4.6573427,5.7108531 6.1548531,4.2133427 8,4.2133427 z"
sodipodi:nodetypes="ssccssssccssssccssssccssssccssssccssssccssssccssssssss" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.9 KiB

BIN
core/img/actions/share.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

View File

@ -0,0 +1,70 @@
<?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="svg2"
version="1.1"
inkscape:version="0.48.1 r9760"
sodipodi:docname="New document 1">
<defs
id="defs4" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="3.959798"
inkscape:cx="32.116036"
inkscape:cy="-10.661938"
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="grid2985"
empspacing="8"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
dotted="true" />
</sodipodi:namedview>
<metadata
id="metadata7">
<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:#808080;fill-opacity:1;overflow:visible"
d="m 12.227825,1037.3622 c -1.356528,0 -2.45919,1.0977 -2.45919,2.4542 0,0.075 0.0084,0.1504 0.0149,0.2236 l -4.734564,2.4145 c -0.429101,-0.3667 -0.986112,-0.5863 -1.594748,-0.5863 -1.356527,0 -2.454223,1.0977 -2.454223,2.4543 0,1.3565 1.097696,2.4542 2.454223,2.4542 0.546067,0 1.052763,-0.1755 1.46061,-0.477 l 4.863734,2.4741 c -0.0024,0.044 -0.0099,0.089 -0.0099,0.1342 0,1.3565 1.102663,2.4542 2.45919,2.4542 1.356527,0 2.454223,-1.0977 2.454223,-2.4542 0,-1.3565 -1.097696,-2.4592 -2.454223,-2.4592 -0.636532,0 -1.218019,0.2437 -1.654365,0.6409 L 5.878678,1044.7 c 0.01892,-0.1228 0.03478,-0.2494 0.03478,-0.3775 0,-0.072 -0.0089,-0.1437 -0.0149,-0.2137 l 4.73953,-2.4145 c 0.428025,0.3627 0.984876,0.5813 1.58978,0.5813 1.356527,0 2.454223,-1.1027 2.454223,-2.4592 0,-1.3565 -1.097696,-2.4542 -2.454223,-2.4542 z"
id="circle54"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 562 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@ -1,26 +1,27 @@
var _l10ncache = {};
function t(app,text){
if( !( app in _l10ncache )){
$.post( oc_webroot+'/core/ajax/translations.php', {'app': app}, function(jsondata){
_l10ncache[app] = jsondata.data;
if( !( app in t.cache )){
$.post( OC.filePath('core','ajax','translations.php'), {'app': app}, function(jsondata){
t.cache[app] = jsondata.data;
});
// Bad answer ...
if( !( app in _l10ncache )){
_l10ncache[app] = [];
if( !( app in t.cache )){
t.cache[app] = [];
}
}
if( typeof( _l10ncache[app][text] ) !== 'undefined' ){
return _l10ncache[app][text];
if( typeof( t.cache[app][text] ) !== 'undefined' ){
return t.cache[app][text];
}
else{
return text;
}
}
t.cache={};
OC={
webroot:oc_webroot,
coreApps:['files','admin','log','search','settings'],
coreApps:['files','admin','log','search','settings','core'],
linkTo:function(app,file){
return OC.filePath(app,'',file);
},
@ -39,6 +40,9 @@ OC={
return link;
},
imagePath:function(app,file){
if(file.indexOf('.')==-1){//if no extention is given, use png or svg depending on browser support
file+=(SVGSupport())?'.svg':'.png'
}
return OC.filePath(app,'img',file);
},
addScript:function(app,script,ready){
@ -55,3 +59,47 @@ OC={
$('head').append(style);
}
}
if (!Array.prototype.filter) {
Array.prototype.filter = function(fun /*, thisp*/) {
var len = this.length >>> 0;
if (typeof fun != "function")
throw new TypeError();
var res = [];
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
if (i in this) {
var val = this[i]; // in case fun mutates this
if (fun.call(thisp, val, i, this))
res.push(val);
}
}
return res;
}
}
if (!Array.prototype.indexOf){
Array.prototype.indexOf = function(elt /*, from*/)
{
var len = this.length;
var from = Number(arguments[1]) || 0;
from = (from < 0)
? Math.ceil(from)
: Math.floor(from);
if (from < 0)
from += len;
for (; from < len; from++)
{
if (from in this &&
this[from] === elt)
return from;
}
return -1;
};
}
function SVGSupport() {
return document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") || document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#Shape", "1.0");
}

View File

@ -1,5 +1,5 @@
<div id="login">
<img src="<?php echo image_path('', 'owncloud-logo-medium-white.png'); ?>" alt="ownCloud" />
<header><img src="<?php echo image_path('', 'owncloud-logo-medium-white.png'); ?>" alt="ownCloud" /></header>
<form action="index.php" method="post" id="setup_form">
<input type="hidden" name="install" value="true" />
<p class="intro">

View File

@ -30,8 +30,8 @@
<div id="header">
<a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img src="<?php echo image_path('', 'owncloud-logo-small-white.png'); ?>" alt="ownCloud" /></a>
<ul id="metanav">
<li><a href="<?php echo link_to('', 'index.php'); ?>" title="Back to files"><img src="<?php echo image_path('', 'layout/back.png'); ?>"></a></li>
<li><a href="<?php echo link_to('', 'index.php?logout=true'); ?>" title="Log out"><img src="<?php echo image_path('', 'layout/logout.png'); ?>"></a></li>
<li><a href="<?php echo link_to('', 'index.php'); ?>" title="Back to files"><img src="<?php echo image_path('', 'actions/back.svg'); ?>"></a></li>
<li><a href="<?php echo link_to('', 'index.php?logout=true'); ?>" title="Log out"><img src="<?php echo image_path('', 'actions/logout.svg'); ?>"></a></li>
</ul>
</div>

View File

@ -31,12 +31,15 @@
<a href="<?php echo link_to('', 'index.php'); ?>" title="" id="owncloud"><img src="<?php echo image_path('', 'owncloud-logo-small-white.png'); ?>" alt="ownCloud" /></a>
<?php echo $_['searchbox']?>
<ul id="metanav">
<li><a href="<?php echo link_to('settings', 'index.php'); ?>" title="Settings"><img src="<?php echo image_path('', 'layout/settings.png'); ?>"></a></li>
<li><a href="<?php echo link_to('', 'index.php'); ?>?logout=true" title="Log out"><img src="<?php echo image_path('', 'layout/logout.png'); ?>"></a></li>
<li><a href="<?php echo link_to('settings', 'index.php'); ?>" title="Settings"><img src="<?php echo image_path('', 'actions/settings.svg'); ?>"></a></li>
<li><a href="<?php echo link_to('', 'index.php'); ?>?logout=true" title="Log out"><img src="<?php echo image_path('', 'actions/logout.svg'); ?>"></a></li>
</ul>
</div>
<div id="main">
<div id="content">
<?php echo $_['content']; ?>
</div>
<div id="plugins">
<ul>
<?php foreach($_['navigation'] as $entry): ?>
@ -44,10 +47,6 @@
<?php endforeach; ?>
</ul>
</div>
<div id="content">
<?php echo $_['content']; ?>
</div>
</div>
</body>
</html>

View File

@ -1,5 +1,5 @@
<div id="login">
<img src="<?php echo image_path('', 'owncloud-logo-medium-white.png'); ?>" alt="ownCloud" />
<header><img src="<?php echo image_path('', 'owncloud-logo-medium-white.png'); ?>" alt="ownCloud" /></header>
<form action="index.php" method="post" id="login_form">
<fieldset>
<?php if($_['error']): ?>

View File

@ -1,4 +1,3 @@
<form class="searchbox" action="<?php echo $_['searchurl']?>" method="post">
<input type="text" name="query" value="<?php if(isset($_POST['query'])){echo $_POST['query'];};?>" class="prettybutton" />
<input type="submit" value="<?php echo $l->t( 'Search' ); ?>" class="prettybutton" />
<input type="search" name="query" value="<?php if(isset($_POST['query'])){echo $_POST['query'];};?>" class="prettybutton" />
</form>

View File

@ -1,7 +1,7 @@
<?php
// Init owncloud
require_once('../lib/base.php');
require_once('../../lib/base.php');
// We send json data
header( "Content-Type: application/jsonrequest" );

View File

@ -1,121 +1,48 @@
/* FILE MENU */
.actions { padding:.6em; float:right; margin-right:16em; }
#file_menu { right:0px; position:absolute; top:0; }
#file_menu a { display:block; float:left; background-image:none; text-decoration:none; }
.file_upload_form, #file_newfolder_form { display:inline; }
#fileSelector, #file_upload_submit, #file_newfolder_submit { display:none; }
.file_upload_filename, #file_newfolder_name { background-repeat:no-repeat; background-position:0.5em 0; padding-left:2em; }
.file_upload_filename { background-image:url("../img/file.png"); font-weight:bold; }.file_upload_start { opacity:0;filter:alpha(opacity = 0); }
#file_menu
{
display: none;
position: absolute;
right:0px;
background-color: #EEE;
}
#file_menu ul
{
list-style-type: none;
}
#file_menu li a
{
display: block;
padding: 0.5em 5em 0.5em 2em;
text-decoration: none;
}
.file_upload_form, #file_newfolder_form {
display: inline;
margin-left:3em;
}
#fileSelector, #file_upload_submit, #file_newfolder_submit {
display: none;
}
.file_upload_filename, #file_newfolder_name {
background-repeat: no-repeat;
background-position: 0.5em 0;
padding-left: 2em;
}
.file_upload_filename {
background-image:url(../img/file.png); font-weight:bold;
}
.file_upload_start {opacity:0;filter: alpha(opacity = 0);}
#file_newfolder_name {
background-image:url(../img/folder.png); font-weight:bold;
width: 14em;
}
.file_upload_start, .file_upload_filename{
position:absolute;
top:0px;
left:0px;
width:30ex;
font-size: 0.9em;
}
.file_upload_wrapper{
position:relative;
top:-1.2em;
left:-2em;
display: -moz-inline-box; /* fallback for older firefox versions*/
display: inline-block;
width:30ex;
}
#file_newfolder_submit, #file_upload_submit {
width: 3em;
}
.file_upload_target {
display: none;
}
#file_newfolder_name { background-image:url("../img/folder.png"); font-weight:bold; width:11em; }
.file_upload_start, .file_upload_filename { position:absolute; top:0px; left:0px; width:11em; font-size:0.9em; }
.file_upload_wrapper { position:relative; top:-1.2em; left:-2em; display:-moz-inline-box; /* fallback for older firefox versions*/ display:inline-block; width:12em; }
#file_newfolder_submit, #file_upload_submit { width:3em; }
.file_upload_target { display:none; }
/* FILE TABLE */
table {
width: 90%;
}
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; }
tbody a { color:#000; }
span.extention, td.date { color:#999; }
div.crumb { float:left; display:block; background:no-repeat right 0; font-weight:bold; padding:8px 1.5em 0 1em; height:28px; /*36-8*/ }
table tr.mouseOver td { background-color:#eee; }
table th { padding:.5em; height:2em; }
table th .name { float:left; margin-left:.5em; }
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; }
table th#headerSize, table td.filesize { width:5em; 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; background-image:url('../img/file.png'); height:1.5em; vertical-align:middle; }
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, table td.login, table td.logout, table td.download, table td.upload, table td.create, table td.delete { padding:.2em .5em .5em 3em; background-position:1em .5em; background-repeat:no-repeat; }
table td.filename .nametext, .modified { float:left; padding:.3em 0; }
table td.filename .nametext { width:80%; }
table td.filename form { float:left; font-size:.85em; }
#fileList tr input[type=checkbox] { display:none; float:left; margin:.7em 0 0 1em; /* bigger clickable area doesnt work in FF width:2.8em; height:2.4em;*/ }
#fileList tr input[type=checkbox]:checked, #fileList tr:hover input[type=checkbox] { display:inline; }
#fileList tr.selected td.filename a, #fileList tr:hover td.filename a { background-image:none !important }
#select_all { float:left; margin:0.2em; margin-left:0.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; }
.selectedActions a:hover, a.file_action:hover { background:#fff; -moz-box-shadow:0 0 10px #fff; -webkit-box-shadow:0 0 10px #fff; box-shadow:0 0 10px #fff; -moz-border-radius:10px; -webkit-border-radius:10px; border-radius:10px; }
table td.filesize, table td.date
{
width: 5em;
padding: 0.5em 1em;
text-align: right;
}
table td.date
{
width: 11em;
}
table td.selection, table th.selection, table td.fileaction
{
width: 2em;
text-align: center;
}
table td.filename a
{
display: block;
background-image: url(../img/file.png);
text-decoration: none;
}
.dropArrow{
height:16px;
width:16px;
display: -moz-inline-box; /* fallback for older firefox versions*/
display: inline-block;
background-image:url('../img/drop-arrow.png');
}
span.extention{
color:#999;
}
div.crumb{
float:left;
}
/* add breadcrumb divider to the File item in navigation panel */
#plugins li:first-child { background-position:15.7em 0px; background-repeat:no-repeat; background-image:url("/owncloud/core/img/breadcrumb-divider-start.png"); width:15.7em; padding-right:11px; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

View File

@ -1,11 +1,14 @@
FileActions={
actions:{},
defaults:{},
register:function(mime,name,action){
icons:{},
currentFile:null,
register:function(mime,name,icon,action){
if(!FileActions.actions[mime]){
FileActions.actions[mime]={};
}
FileActions.actions[mime][name]=action;
FileActions.icons[name]=icon;
},
setDefault:function(mime,name){
FileActions.defaults[mime]=name;
@ -49,56 +52,105 @@ FileActions={
return actions[name];
},
display:function(parent){
$('#file_menu ul').empty();
parent.append($('#file_menu'));
FileActions.currentFile=parent;
var actions=FileActions.get(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
for(name in actions){
var html='<li><a href="" alt="'+name+'">'+name+'</a></li>';
var element=$(html);
element.data('action',name);
element.click(function(event){
event.preventDefault();
$('#file_menu').slideToggle(250);
var action=actions[$(this).data('action')];
$('#file_menu ul').empty();
action(FileActions.getCurrentFile());
});
$('#file_menu>ul').append(element);
var file=FileActions.getCurrentFile();
if($('tr[data-file="'+file+'"]').data('renaming')){
return;
}
var defaultAction=FileActions.getDefault(FileActions.getCurrentMimeType(),FileActions.getCurrentType());
for(name in actions){
if((name=='Download' || actions[name]!=defaultAction) && name!='Delete'){
var img=FileActions.icons[name];
var html='<a href="#" title="'+name+'" class="file_action"/>';
var element=$(html);
if(img){
element.append($('<img src="'+img+'"/>'));
}
element.data('action',name);
element.click(function(event){
event.stopPropagation();
event.preventDefault();
var action=actions[$(this).data('action')];
var currentFile=FileActions.getCurrentFile();
FileActions.hide();
action(currentFile);
});
parent.children('a.name').append(element);
}
}
if(actions['Delete']){
var img=FileActions.icons['Delete'];
var html='<a href="#" title="Delete" class="file_action"/>';
var element=$(html);
if(img){
element.append($('<img src="'+img+'"/>'));
}
element.data('action','Delete');
element.click(function(event){
event.stopPropagation();
event.preventDefault();
var action=actions[$(this).data('action')];
var currentFile=FileActions.getCurrentFile();
FileActions.hide();
action(currentFile);
});
parent.parent().children().last().append(element);
}
$('#file_menu').slideToggle(250);
return false;
},
hide:function(){
$('.file_action').remove();
},
getCurrentFile:function(){
return $('#file_menu').parents('tr:first').attr('data-file');
return FileActions.currentFile.parent().attr('data-file');
},
getCurrentMimeType:function(){
return $('#file_menu').parents('tr:first').attr('data-mime');
return FileActions.currentFile.parent().attr('data-mime');
},
getCurrentType:function(){
return $('#file_menu').parents('tr:first').attr('data-type');
return FileActions.currentFile.parent().attr('data-type');
}
}
FileActions.register('all','Download',function(filename){
FileActions.register('all','Download',OC.imagePath('core','actions/download'),function(filename){
window.location='ajax/download.php?files='+filename+'&dir='+$('#dir').val();
});
FileActions.register('all','Delete',function(filename){
$.ajax({
url: 'ajax/delete.php',
data: "dir="+encodeURIComponent($('#dir').val())+"&file="+encodeURIComponent(filename),
complete: function(data){
boolOperationFinished(data, function(){
FileList.remove(filename);
});
FileActions.register('all','Delete',OC.imagePath('core','actions/delete'),function(filename){
$( "#delete-confirm" ).dialog({
resizable: false,
height:200,
title:"Delete "+filename,
modal: true,
buttons: {
"Delete": function() {
$( this ).dialog( "close" );
$.ajax({
url: 'ajax/delete.php',
data: "dir="+encodeURIComponent($('#dir').val())+"&file="+encodeURIComponent(filename),
complete: function(data){
boolOperationFinished(data, function(){
FileList.remove(filename);
});
}
});
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
});
FileActions.register('all','Rename',OC.imagePath('core','actions/rename'),function(filename){
FileList.rename(filename);
});
FileActions.setDefault('all','Download');
FileActions.register('dir','Open',function(filename){
FileActions.register('dir','Open','',function(filename){
window.location='index.php?dir='+$('#dir').val()+'/'+filename;
});
FileActions.setDefault('dir','Open');
FileActions.setDefault('dir','Open');

View File

@ -4,12 +4,30 @@ FileList={
},
addFile:function(name,size,lastModified,loading){
var img=(loading)?'img/loading.gif':'img/file.png';
var html='<tr data-file="'+name+'" data-type="file">';
html+='<td class="selection"><input type="checkbox" /></td>';
html+='<td class="filename"><a style="background-image:url('+img+')" href="download.php?file='+$('#dir').val()+'/'+name+'">'+name+'</a></td>';
html+='<td class="filesize">'+size+'</td>';
html+='<td class="date">'+lastModified+'</td>';
html+='<td class="fileaction"><a href="" title="+" class="dropArrow"></a></td>';
var html='<tr data-file="'+name+'" data-type="file" data-size="'+size+'">';
if(name.indexOf('.')!=-1){
var basename=name.substr(0,name.indexOf('.'));
var extention=name.substr(name.indexOf('.'));
}else{
var basename=name;
var extention=false;
}
html+='<td class="filename"><input type="checkbox" />';
html+='<a class="name" style="background-image:url('+img+')" href="download.php?file='+$('#dir').val()+'/'+name+'"><span class="nametext">'+basename
if(extention){
html+='<span class="extention">'+extention+'</span>';
}
html+='</span></a></td>';
if(size!='Pending'){
simpleSize=simpleFileSize(size);
}else{
simpleSize='Pending';
}
sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2));
lastModifiedTime=Math.round(lastModified.getTime() / 1000);
modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5);
html+='<td class="filesize" title="'+humanFileSize(size)+'" style="color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')">'+simpleSize+'</td>';
html+='<td class="date" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</td>';
html+='</tr>';
FileList.insertElement(name,'file',$(html));
if(loading){
@ -19,12 +37,18 @@ FileList={
}
},
addDir:function(name,size,lastModified){
var html='<tr data-file="'+name+'" data-type="dir">';
html+='<td class="selection"><input type="checkbox" /></td>';
html+='<td class="filename"><a style="background-image:url(img/folder.png)" href="index.php?dir='+$('#dir').val()+'/'+name+'"><strong>'+name+'</strong></a></td>';
html+='<td class="filesize">'+size+'</td>';
html+='<td class="date">'+lastModified+'</td>';
html+='<td class="fileaction"><a href="" title="+" class="dropArrow"></a></td>';
var html='<tr data-file="'+name+'" data-type="dir" data-size="'+size+'">';
html+='<td class="filename"><input type="checkbox" /><a class="name" style="background-image:url(img/folder.png)" href="index.php?dir='+$('#dir').val()+'/'+name+'">'+name+'</a></td>';
if(size!='Pending'){
simpleSize=simpleFileSize(size);
}else{
simpleSize='Pending';
}
sizeColor = Math.round(200-Math.pow((size/(1024*1024)),2));
lastModifiedTime=Math.round(lastModified.getTime() / 1000);
modifiedColor=Math.round((Math.round((new Date()).getTime() / 1000)-lastModifiedTime)/60/60/24*5);
html+='<td class="filesize" title="'+humanFileSize(size)+'" style="color:rgb('+sizeColor+','+sizeColor+','+sizeColor+')">'+simpleSize+'</td>';
html+='<td class="date" title="'+formatDate(lastModified)+'" style="color:rgb('+modifiedColor+','+modifiedColor+','+modifiedColor+')">'+relative_modified_date(lastModified.getTime() / 1000)+'</td>';
html+='</tr>';
FileList.insertElement(name,'dir',$(html));
@ -72,10 +96,60 @@ FileList={
},
loadingDone:function(name){
$('tr[data-file="'+name+'"]').data('loading',false);
$('tr[data-file="'+name+'"] td.filename a').attr('style','background-image:url(img/file.png');
var mime=$('tr[data-file="'+name+'"]').data('mime');
$('tr[data-file="'+name+'"] td.filename a').attr('style','background-image:url('+getMimeIcon(mime)+')');
$('tr[data-file="'+name+'"] td.filename').draggable(dragOptions);
},
isLoading:function(name){
return $('tr[data-file="'+name+'"]').data('loading');
},
rename:function(name){
var tr=$('tr[data-file="'+name+'"]');
tr.data('renaming',true);
var td=tr.children('td.filename');
var input=$('<input value='+name+' class="filename"></input>');
var form=$('<form action="#"></form>')
form.append(input);
td.children('a.name').text('');
td.children('a.name').append(form)
input.focus();
form.submit(function(event){
var newname=input.val();
tr.data('renaming',false);
event.stopPropagation();
event.preventDefault();
tr.attr('data-file',newname);
td.children('a.name').empty();
if(newname.indexOf('.')>0){
basename=newname.substr(0,newname.indexOf('.'));
}else{
basename=newname;
}
td.children('a.name').text(basename);
if(newname.indexOf('.')>0){
td.children('a.name').append($('<span class="extention">'+newname.substr(newname.indexOf('.'))+'</span>'));
}
$.ajax({
url: 'ajax/rename.php',
data: "dir="+$('#dir').val()+"&newname="+encodeURIComponent(newname)+"&file="+encodeURIComponent(name)
});
});
form.click(function(event){
event.stopPropagation();
event.preventDefault();
});
input.blur(function(){
tr.data('renaming',false);
td.children('a.name').empty();
if(name.indexOf('.')>0){
basename=name.substr(0,name.indexOf('.'));
}else{
basename=name;
}
td.children('a.name').text(basename);
if(name.indexOf('.')>0){
td.children('a.name').append($('<span class="extention">'+name.substr(name.indexOf('.'))+'</span>'));
}
});
}
}

View File

@ -4,45 +4,24 @@ $(document).ready(function() {
//drag/drop of files
$('#fileList tr td.filename').draggable(dragOptions);
$('#fileList tr[data-type="dir"] td.filename').droppable(folderDropOptions);
$('div.crumb').droppable({
drop: function( event, ui ) {
var file=ui.draggable.text().trim();
var target=$(this).attr('data-dir');
var dir=$('#dir').val();
while(dir.substr(0,1)=='/'){//remove extra leading /'s
dir=dir.substr(1);
}
dir='/'+dir;
if(dir.substr(-1,1)!='/'){
dir=dir+'/';
}
if(target==dir){
return;
}
$.ajax({
url: 'ajax/move.php',
data: "dir="+dir+"&file="+file+'&target='+target,
complete: function(data){boolOperationFinished(data, function(){
FileList.remove(file);
});}
});
},
tolerance: 'pointer'
});
$('div.crumb').droppable(crumbDropOptions);
$('#plugins>ul>li:first-child').droppable(crumbDropOptions);
// Sets the file-action buttons behaviour :
$('td.fileaction a').live('click',function(event) {
event.preventDefault();
FileActions.display($(this).parent());
$('tr').live('mouseenter',function(event) {
FileActions.display($(this).children('td.filename'));
});
$('tr').live('mouseleave',function(event) {
FileActions.hide();
});
// Sets the file link behaviour :
$('td.filename a').live('click',function(event) {
event.preventDefault();
var filename=$(this).parent().parent().attr('data-file');
var filename=$(this).parent().parent().data('file');
if(!FileList.isLoading(filename)){
var mime=$(this).parent().parent().attr('data-mime');
var type=$(this).parent().parent().attr('data-type');
var mime=$(this).parent().parent().data('mime');
var type=$(this).parent().parent().data('type');
var action=FileActions.getDefault(mime,type);
if(action){
action(filename);
@ -54,24 +33,27 @@ $(document).ready(function() {
$('#select_all').click(function() {
if($(this).attr('checked')){
// Check all
$('td.selection input:checkbox').attr('checked', true);
$('td.selection input:checkbox').parent().parent().addClass('selected');
$('td.filename input:checkbox').attr('checked', true);
$('td.filename input:checkbox').parent().parent().addClass('selected');
}else{
// Uncheck all
$('td.selection input:checkbox').attr('checked', false);
$('td.selection input:checkbox').parent().parent().removeClass('selected');
$('td.filename input:checkbox').attr('checked', false);
$('td.filename input:checkbox').parent().parent().removeClass('selected');
}
procesSelection();
});
$('td.selection input:checkbox').live('click',function() {
$('td.filename input:checkbox').live('click',function() {
var selectedCount=$('td.filename input:checkbox:checked').length;
$(this).parent().parent().toggleClass('selected');
if(!$(this).attr('checked')){
$('#select_all').attr('checked',false);
}else{
if($('td.selection input:checkbox:checked').length==$('td.selection input:checkbox').length){
if(selectedCount==$('td.filename input:checkbox').length){
$('#select_all').attr('checked',true);
}
}
procesSelection();
});
$('#file_newfolder_form').submit(function(event) {
@ -80,11 +62,12 @@ $(document).ready(function() {
url: 'ajax/newfolder.php',
data: "dir="+$('#dir').val()+"&foldername="+$('#file_newfolder_name').val(),
complete: function(data){boolOperationFinished(data, function(){
var date=formatDate(new Date());
FileList.addDir($('#file_newfolder_name').val(),'0 B',date)
var date=new Date();
FileList.addDir($('#file_newfolder_name').val(),0,date);
$('#file_newfolder_name').val('New Folder');
$('#file_newfolder_name').blur();
});}
});
$('#file_newfolder_submit').fadeOut(250).trigger('vanish');
});
$('#file_newfolder_name').click(function(){
@ -93,21 +76,7 @@ $(document).ready(function() {
}
});
$('#file_newfolder_name').bind('keyup', adjustNewFolderSize);
$('#file_newfolder_submit').bind('vanish', function() {
$('#file_newfolder_name').bind('keyup', adjustNewFolderSize);
unsplitSize($('#file_newfolder_name'),$('#file_newfolder_submit'));
});
$('#file_newfolder_name').focusout(function(){
if($('#file_newfolder_name').val() == '') {
$('#file_newfolder_form')[0].reset();
$('#file_newfolder_submit').fadeOut(250).trigger('vanish');
}
});
$('.download').live('click',function(event) {
$('.download').click('click',function(event) {
var files=getSelectedFiles('name').join(';');
//send the browser to the download location
@ -117,18 +86,41 @@ $(document).ready(function() {
return false;
});
$('.delete').live('click',function(event) {
var files=getSelectedFiles('name').join(';');
$.ajax({
url: 'ajax/delete.php',
data: "dir="+$('#dir').val()+"&files="+encodeURIComponent(files),
complete: function(data){
boolOperationFinished(data, function(){
$('td.selection input:checkbox:checked').parent().parent().each(function(i,element){
FileList.remove($(element).attr('data-file'));
$('.delete').click(function(event) {
var fileNames=getSelectedFiles('name');
var files=fileNames.join(';');
var lastFileName=fileNames.pop();
if(fileNames.length>0){
fileNames=fileNames.join(', ')+' and '+lastFileName;
}else{
fileNames=lastFileName;
}
$( "#delete-confirm" ).dialog({
resizable: false,
height:200,
modal: true,
title:"Delete "+fileNames,
buttons: {
"Delete": function() {
$( this ).dialog( "close" );
$.ajax({
url: 'ajax/delete.php',
data: "dir="+$('#dir').val()+"&files="+encodeURIComponent(files),
complete: function(data){
boolOperationFinished(data, function(){
var files=getSelectedFiles('name');
for(var i=0;i<files.length;i++){
FileList.remove(files[i]);
}
procesSelection();
});
}
});
});
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
@ -140,46 +132,82 @@ $(document).ready(function() {
var uploadId=form.attr('data-upload-id');
var files=this.files;
var target=form.children('iframe');
target.load(function(){
var response=jQuery.parseJSON(target.contents().find('body').text());
//set mimetype and if needed filesize
if(response){
for(var i=0;i<response.length;i++){
var file=response[i];
$('tr[data-file="'+file.name+'"]').attr('data-mime',file.mime);
if(size=='Pending'){
$('tr[data-file='+file.name+'] td.filesize').text(file.size);
}
FileList.loadingDone(file.name);
}
}
});
form.submit();
var date=new Date();
var uploadTime=formatDate(date);
var totalSize=0;
for(var i=0;i<files.length;i++){
if(files[i].size>0){
var size=simpleFileSize(files[i].size);
}else{
var size='Pending';
}
FileList.addFile(files[i].name,size,uploadTime,true);
totalSize+=files[i].size;
}
if(totalSize>$('#max_upload').val()){
$( "#uploadsize-message" ).dialog({
modal: true,
buttons: {
Close: function() {
$( this ).dialog( "close" );
}
}
});
}else{
target.load(function(){
var response=jQuery.parseJSON(target.contents().find('body').text());
//set mimetype and if needed filesize
if(response){
for(var i=0;i<response.length;i++){
var file=response[i];
$('tr[data-file="'+file.name+'"]').data('mime',file.mime);
if(size=='Pending'){
$('tr[data-file='+file.name+'] td.filesize').text(file.size);
}
FileList.loadingDone(file.name);
}
}
});
form.submit();
var date=new Date();
for(var i=0;i<files.length;i++){
if(files[i].size>0){
var size=files[i].size;
}else{
var size='Pending';
}
FileList.addFile(files[i].name,size,date,true);
}
//clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading
var clone=form.clone();
uploadId++;
clone.attr('data-upload-id',uploadId);
clone.attr('target','file_upload_target_'+uploadId);
clone.children('iframe').attr('name','file_upload_target_'+uploadId)
clone.insertBefore(form);
form.hide();
}
//clone the upload form and hide the new one to allow users to start a new upload while the old one is still uploading
var clone=form.clone();
uploadId++;
clone.attr('data-upload-id',uploadId);
clone.attr('target','file_upload_target_'+uploadId);
clone.children('iframe').attr('name','file_upload_target_'+uploadId)
clone.insertBefore(form);
form.hide();
});
//add multiply file upload attribute to all browsers except konqueror (which crashes when it's used)
if(navigator.userAgent.search(/konqueror/i)==-1){
$('.file_upload_start').attr('multiple','multiple')
}
//if the breadcrumb is to long, start by replacing foldernames with '...' except for the current folder
var crumb=$('div.crumb').first();
while($('div.controls').height()>40 && crumb.next('div.crumb').length>0){
crumb.children('a').text('...');
crumb=crumb.next('div.crumb');
}
//if that isn't enough, start removing items from the breacrumb except for the current folder and it's parent
var crumb=$('div.crumb').first();
var next=crumb.next('div.crumb');
while($('div.controls').height()>40 && next.next('div.crumb').length>0){
crumb.remove();
crumb=next;
next=crumb.next('div.crumb');
}
//still not enough, start shorting down the current folder name
var crumb=$('div.crumb>a').last();
while($('div.controls').height()>40 && crumb.text().length>6){
var text=crumb.text()
text=text.substr(0,text.length-6)+'...';
crumb.text(text);
}
});
var adjustNewFolderSize = function() {
@ -238,7 +266,7 @@ function humanFileSize(bytes){
}
function simpleFileSize(bytes) {
mbytes = Math.round(bytes/(1024*1024),1);
mbytes = Math.round(bytes/(1024*1024/10))/10;
if(bytes == 0) { return '0'; }
else if(mbytes < 0.1) { return '< 0.1'; }
else if(mbytes > 1000) { return '> 1000'; }
@ -275,29 +303,133 @@ var folderDropOptions={
});
}
}
var crumbDropOptions={
drop: function( event, ui ) {
var file=ui.draggable.text().trim();
var target=$(this).data('dir');
var dir=$('#dir').val();
while(dir.substr(0,1)=='/'){//remove extra leading /'s
dir=dir.substr(1);
}
dir='/'+dir;
if(dir.substr(-1,1)!='/'){
dir=dir+'/';
}
if(target==dir){
return;
}
$.ajax({
url: 'ajax/move.php',
data: "dir="+dir+"&file="+file+'&target='+target,
complete: function(data){boolOperationFinished(data, function(){
FileList.remove(file);
});}
});
},
tolerance: 'pointer'
}
function procesSelection(){
var selected=getSelectedFiles();
var selectedFiles=selected.filter(function(el){return el.type=='file'});
var selectedFolders=selected.filter(function(el){return el.type=='dir'});
if(selectedFiles.length==0 && selectedFolders.length==0){
$('#headerName>span.name').text('Name');
$('#headerSize').text('Size MB');
$('#modified').text('Modified');
$('th').css({background:'#fff',fontWeight:'normal'});
$('.selectedActions').hide();
}else{
$('.selectedActions').show();
var totalSize=0;
for(var i=0;i<selectedFiles.length;i++){
totalSize+=selectedFiles[i].size;
};
for(var i=0;i<selectedFolders.length;i++){
totalSize+=selectedFolders[i].size;
};
simpleSize=simpleFileSize(totalSize);
$('#headerSize').text(simpleSize+' MB');
$('#headerSize').attr('title',humanFileSize(totalSize));
var selection='';
if(selectedFolders.length>0){
if(selectedFolders.length==1){
selection+='1 folder';
}else{
selection+=selectedFolders.length+' folders';
}
if(selectedFiles.length>0){
selection+=' & ';
}
}
if(selectedFiles.length>0){
if(selectedFiles.length==1){
selection+='1 file';
}else{
selection+=selectedFiles.length+' files';
}
}
$('#headerName>span.name').text(selection);
$('#modified').text('');
$('th').css({background:'#ddd', fontWeight:'bold'});
}
}
/**
* @brief get a list of selected files
* @param string property (option) the property of the file requested
* @return array
*
* possible values for property: name, mime
* possible values for property: name, mime, size and type
* if property is set, an array with that property for each file is returnd
* if it's ommited an array of objects with all properties is returned
*/
function getSelectedFiles(property){
var elements=$('td.selection input:checkbox:checked').parent().parent();
var elements=$('td.filename input:checkbox:checked').parent().parent();
var files=[];
elements.each(function(i,element){
var file={
name:$(element).attr('data-file'),
mime:$(element).attr('data-mime')
name:$(element).data('file'),
mime:$(element).data('mime'),
type:$(element).data('type'),
size:$(element).data('size'),
};
if(property){
files.push(file[property]);
}else{
files.push();
files.push(file);
}
});
return files;
}
function relative_modified_date(timestamp) {
var timediff = Math.round((new Date()).getTime() / 1000) - timestamp;
var diffminutes = Math.round(timediff/60);
var diffhours = Math.round(diffminutes/60);
var diffdays = Math.round(diffhours/24);
var diffmonths = Math.round(diffdays/31);
var diffyears = Math.round(diffdays/365);
if(timediff < 60) { return 'seconds ago'; }
else if(timediff < 120) { return '1 minute ago'; }
else if(timediff < 3600) { return diffminutes+' minutes ago'; }
//else if($timediff < 7200) { return '1 hour ago'; }
//else if($timediff < 86400) { return $diffhours.' hours ago'; }
else if(timediff < 86400) { return 'today'; }
else if(timediff < 172800) { return 'yesterday'; }
else if(timediff < 2678400) { return diffdays+' days ago'; }
else if(timediff < 5184000) { return 'last month'; }
//else if($timediff < 31556926) { return $diffmonths.' months ago'; }
else if(timediff < 31556926) { return 'months ago'; }
else if(timediff < 63113852) { return 'last year'; }
else { return diffyears+' years ago'; }
}
function getMimeIcon(mime){
mime=mime.substr(0,mime.indexOf('/'));
var knownMimes=['image','audio'];
if(knownMimes.indexOf(mime)==-1){
mime='file';
}
return OC.imagePath('core','mimetypes/'+mime+'.png');
}

View File

@ -3,8 +3,11 @@
<form name="filesForm" action='#' method='post'>
<?php if($_['htaccessWorking']):?>
<label for="maxUploadSize"><?php echo $l->t( 'Maximum upload size' ); ?> </label><input name='maxUploadSize' id="maxUploadSize" value='<?php echo $_['uploadMaxFilesize'] ?>'/><br/>
<input type='submit' value='Save'/>
<?php else:?>
No settings currently available.
<?php endif;?>
<input type="checkbox" name="publicEnable" id="publicEnable" /><label for="publicEnable"> <?php echo $l->t( 'Allow public folders' ); ?></label><br>
<!-- <input type="checkbox" name="publicEnable" id="publicEnable" /><label for="publicEnable"> <?php echo $l->t( 'Allow public folders' ); ?></label><br>
<div style="padding-left: 20px">
<input type="radio" name="sharingaim" id="separated" /><label for="separated"> <?php echo $l->t( 'separated from webdav storage' ); ?></label><br>
@ -13,6 +16,5 @@
</div>
<input type="checkbox" id="downloadShared" /><label for="downloadShared"> <?php echo $l->t( 'Allow downloading shared files' ); ?></label><br>
<input type="checkbox" id="uploadShared" /><label for="uploadShared"> <?php echo $l->t( 'Allow uploading in shared directory' ); ?></label><br>
<input type='submit' value='Save'/>
<input type="checkbox" id="uploadShared" /><label for="uploadShared"> <?php echo $l->t( 'Allow uploading in shared directory' ); ?></label><br>-->
</form>

View File

@ -1,4 +1,7 @@
<div class="controls">
<span class="nav">
<?php echo($_['breadcrumb']); ?>
</span>
<div class="actions">
<form data-upload-id='1' class="file_upload_form" action="ajax/upload.php" method="post" enctype="multipart/form-data" target="file_upload_target_1">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $_["uploadMaxFilesize"] ?>" id="max_upload">
@ -12,28 +15,25 @@
</form>
<form id="file_newfolder_form">
<input type="text" class="prettybutton" name="file_newfolder_name" id="file_newfolder_name" value="New Folder" />&nbsp;
<input class="prettybutton" type="submit" id="file_newfolder_submit" name="file_newfolder_submit" value="OK" />
</form>
<a href="" title="" class="download"><?php echo $l->t( 'Download' ); ?></a>
<a href="" title="" class="share"><?php echo $l->t( 'Share' ); ?></a>
<a href="" title="" class="delete"><?php echo $l->t( 'Delete' ); ?></a>
</div>
<div id="file_action_panel">
</div>
</div>
<span class="nav">
<?php echo($_['breadcrumb']); ?>
</span>
<table cellspacing="0">
<thead>
<tr>
<th><input type="checkbox" id="select_all" /></th>
<th><?php echo $l->t( 'Name' ); ?></th>
<th><?php echo $l->t( 'Size (MB)' ); ?></th>
<th><?php echo $l->t( 'Modified' ); ?></th>
<th></th>
<th id='headerName'>
<input type="checkbox" id="select_all" />
<span class='name'><?php echo $l->t( 'Name' ); ?></span>
<span class='selectedActions'>
<a href="" title="Download" class="download"><img alt="Download" src="../core/img/actions/download.svg" /></a>
<!--<a href="" title="" class="share">Share</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 alt="Delete" src="../core/img/actions/delete.svg" /></a></span></th>
</tr>
</thead>
<tbody id="fileList">
@ -41,7 +41,14 @@
</tbody>
</table>
<div id="file_menu">
<ul>
</ul>
<div id="uploadsize-message" title="Upload too large">
<p>
<?php echo $l->t( 'The files you are trying to upload exceed the maximum size for file uploads on this server.' ); ?>
</p>
</div>
<div id="delete-confirm" title="">
<p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
</div>
<span id="file_menu"/>

View File

@ -1,8 +1,5 @@
<div class='crumb' data-dir='/'>
<a href="<?php echo link_to("files", "index.php"); ?>"><img src="<?php echo image_path("", "actions/go-home.png"); ?>" alt="Root"/></a>
</div>
<?php foreach($_["breadcrumb"] as $crumb): ?>
<div class='crumb' data-dir='<?php echo $crumb["dir"];?>'>
<div class='crumb' data-dir='<?php echo $crumb["dir"];?>' style='background-image:url("<?php echo image_path('core','breadcrumb-divider.png');?>")'>
<a href="<?php echo link_to("files", "index.php?dir=".$crumb["dir"]); ?>"><?php echo htmlspecialchars($crumb["name"]); ?></a>
</div>
<?php endforeach; ?>

View File

@ -1,19 +1,25 @@
<?php foreach($_['files'] as $file):
<?php if(!$_['files']) echo '<span id="emptyfolder">Nothing in here. Upload something!</span><style>.file_upload_filename { background-color:#ffc100; border:#dda600 1px solid; }</style>';
foreach($_['files'] as $file):
$simple_file_size = simple_file_size($file['size']);
$simple_size_color = 200-intval(pow(($file['size']/(1024*1024)),2)); ?>
<tr data-file="<?php echo $file['name'];?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mime']?>">
<td class="selection"><input type="checkbox" /></td>
$simple_size_color = 200-intval($file['size']/(1024*1024)*5);
if($simple_size_color<0) $simple_size_color = 0;
$relative_modified_date = relative_modified_date($file['mtime']);
$relative_date_color = round((time()-$file['mtime'])/60/60/24*7); //days ago
if($relative_date_color>200) $relative_date_color = 200; ?>
<tr data-file="<?php echo $file['name'];?>" data-type="<?php echo ($file['type'] == 'dir')?'dir':'file'?>" data-mime="<?php echo $file['mime']?>" data-size='<?php echo $file['size'];?>'>
<td class="filename">
<a style="background-image:url(<?php if($file['type'] == 'dir') echo mimetype_icon('dir'); else echo mimetype_icon($file['mime']); ?>)" href="<?php if($file['type'] == 'dir') echo link_to('files', 'index.php?dir='.$file['directory'].'/'.$file['name']); else echo link_to('files', 'download.php?file='.$file['directory'].'/'.$file['name']); ?>" title="">
<input type="checkbox" />
<a class="name" style="background-image:url(<?php if($file['type'] == 'dir') echo mimetype_icon('dir'); else echo mimetype_icon($file['mime']); ?>)" href="<?php if($file['type'] == 'dir') echo link_to('files', 'index.php?dir='.$file['directory'].'/'.$file['name']); else echo link_to('files', 'download.php?file='.$file['directory'].'/'.$file['name']); ?>" title="">
<span class="nametext">
<?php if($file['type'] == 'dir'):?>
<strong><?php echo htmlspecialchars($file['name']);?></strong>
<?php echo htmlspecialchars($file['name']);?>
<?php else:?>
<?php echo htmlspecialchars($file['basename']);?><span class='extention'><?php echo $file['extention'];?></span>
<?php endif;?>
</span>
</a>
</td>
<td class="filesize" title="<?php echo human_file_size($file['size']); ?>" style="color:rgb(<?php echo $simple_size_color.','.$simple_size_color.','.$simple_size_color ?>)"><?php echo $simple_file_size; ?></td>
<td class="date"><?php echo $file['date']; ?></td>
<td class="fileaction"><a href="" title="+" class="dropArrow"></a></td>
<td class="date"><span class="modified" title="<?php echo $file['date']; ?>" style="color:rgb(<?php echo $relative_date_color.','.$relative_date_color.','.$relative_date_color ?>)"><?php echo $relative_modified_date; ?></span></td>
</tr>
<?php endforeach; ?>

View File

@ -3,6 +3,7 @@ use strict;
use Locale::PO;
use Cwd;
use Data::Dumper;
use File::Path;
sub crawl{
my( $dir ) = @_;
@ -28,7 +29,7 @@ sub crawl{
my $task = shift( @ARGV );
my $place = '..';
die( "Usuage: l10n.pl task\ntask: read, write\n") unless $task && $place;
die( "Usage: l10n.pl task\ntask: read, write\n" ) unless $task && $place;
# Our current position
my $whereami = cwd();
@ -38,6 +39,7 @@ die( "Program must be executed in a l10n-folder called 'l10n'" ) unless $wheream
my @dirs = crawl( $place );
# Languages
rmtree( 'templates' );
mkdir( 'templates' ) unless -d 'templates';
my @languages = ();
@ -55,13 +57,7 @@ if( $task eq 'read' ){
my $app = pop( @temp );
chdir( $dir );
my $output = "${whereami}/templates/$app.pot";
if( -e $output ){
`xgettext --files-from=xgettextfiles --join-existing --output="$output" --keyword=t`
}
else{
`xgettext --files-from=xgettextfiles --output="$output" --keyword=t`
}
`xgettext --files-from=xgettextfiles --output="$output" --keyword=t`;
chdir( $whereami );
}
}

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-26 00:58+0200\n"
"POT-Creation-Date: 2011-07-27 12:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -33,8 +33,7 @@ msgstr ""
msgid "Cannot connect to apps repository"
msgstr ""
#: ../templates/apps.php:13 ../templates/users.php:6 ../templates/users.php:20
#: ../templates/users.php:50 ../templates/users.php:15
#: ../templates/apps.php:13 ../templates/users.php:6 ../templates/users.php:15
#: ../templates/users.php:51
msgid "Name"
msgstr ""
@ -51,52 +50,42 @@ msgstr ""
msgid "System Settings"
msgstr ""
#: ../templates/users.php:13
msgid "Add user"
#: ../templates/users.php:2
msgid "Users"
msgstr ""
#: ../templates/users.php:21 ../templates/users.php:16
msgid "Password"
msgstr ""
#: ../templates/users.php:30
msgid "Create user"
msgstr ""
#: ../templates/users.php:40 ../templates/users.php:68
#: ../templates/users.php:37 ../templates/users.php:69
msgid "remove"
msgstr ""
#: ../templates/users.php:46 ../templates/users.php:7
#: ../templates/users.php:47
#: ../templates/users.php:7 ../templates/users.php:47
msgid "Groups"
msgstr ""
#: ../templates/users.php:58 ../templates/users.php:59
msgid "Create group"
msgstr ""
#: ../templates/users.php:94 ../templates/users.php:95
msgid "Force new password:"
msgstr ""
#: ../templates/users.php:96 ../templates/users.php:97
msgid "Set"
msgstr ""
#: ../templates/users.php:102 ../templates/users.php:103
msgid "Do you really want to delete user"
msgstr ""
#: ../templates/users.php:109 ../templates/users.php:110
msgid "Do you really want to delete group"
msgstr ""
#: ../templates/users.php:1 ../templates/users.php:2
msgid "Users"
#: ../templates/users.php:16
msgid "Password"
msgstr ""
#: ../templates/users.php:25
msgid "Create"
msgstr ""
#: ../templates/users.php:37 ../templates/users.php:69
msgid "remove"
msgstr ""
#: ../templates/users.php:59
msgid "Create group"
msgstr ""
#: ../templates/users.php:95
msgid "Force new password:"
msgstr ""
#: ../templates/users.php:97
msgid "Set"
msgstr ""
#: ../templates/users.php:103
msgid "Do you really want to delete user"
msgstr ""
#: ../templates/users.php:110
msgid "Do you really want to delete group"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-26 00:58+0200\n"
"POT-Creation-Date: 2011-07-27 12:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,104 +21,6 @@ msgstr ""
msgid "Error 404, Cloud not found"
msgstr ""
#: ../templates/installation.php:6
msgid "Welcome to <strong>ownCloud</strong>, your personnal cloud."
msgstr ""
#: ../templates/installation.php:7
msgid "To finish the installation, please follow the steps below."
msgstr ""
#: ../templates/installation.php:26
msgid "Create an <strong>admin account.</strong>"
msgstr ""
#: ../templates/installation.php:27
msgid "Login:"
msgstr ""
#: ../templates/installation.php:28
msgid "Password:"
msgstr ""
#: ../templates/installation.php:31
msgid "Advanced"
msgstr ""
#: ../templates/installation.php:34
msgid "Set where to store the data."
msgstr ""
#: ../templates/installation.php:35
msgid "Data directory:"
msgstr ""
#: ../templates/installation.php:39
msgid "Configure your database."
msgstr ""
#: ../templates/installation.php:43
msgid "I will use a SQLite database. You have nothing to do!"
msgstr ""
#: ../templates/installation.php:46
msgid "SQLite"
msgstr ""
#: ../templates/installation.php:53
msgid "I will use a MySQL database."
msgstr ""
#: ../templates/installation.php:59 ../templates/installation.php:62
msgid "Host:"
msgstr ""
#: ../templates/installation.php:60 ../templates/installation.php:61
msgid "Database name:"
msgstr ""
#: ../templates/installation.php:61 ../templates/installation.php:63
msgid "Table prefix:"
msgstr ""
#: ../templates/installation.php:62
msgid "MySQL user login:"
msgstr ""
#: ../templates/installation.php:63
msgid "MySQL user password:"
msgstr ""
#: ../templates/installation.php:68 ../templates/installation.php:69
msgid "Finish setup"
msgstr ""
#: ../templates/layout.guest.php:20 ../templates/layout.guest.php:33
msgid ""
"<a href=\"http://owncloud.org/\">ownCloud</a> is a personal cloud which runs "
"on your own server.</p>"
msgstr ""
#: ../templates/login.php:6
msgid "Login failed!"
msgstr ""
#: ../templates/logout.php:1
msgid "You are logged out."
msgstr ""
#: ../templates/part.pagenavi.php:6
msgid "prev"
msgstr ""
#: ../templates/part.pagenavi.php:26
msgid "next"
msgstr ""
#: ../templates/part.searchbox.php:3
msgid "Search"
msgstr ""
#: ../templates/installation.php:6
msgid "<strong>ownCloud</strong> is your personal web storage."
msgstr ""
@ -139,6 +41,18 @@ msgstr ""
msgid "Password"
msgstr ""
#: ../templates/installation.php:31
msgid "Advanced"
msgstr ""
#: ../templates/installation.php:34
msgid "Set where to store the data."
msgstr ""
#: ../templates/installation.php:35
msgid "Data directory:"
msgstr ""
#: ../templates/installation.php:39
msgid "Configure the database."
msgstr ""
@ -147,6 +61,10 @@ msgstr ""
msgid "SQLite will be used for the database. You have nothing to do."
msgstr ""
#: ../templates/installation.php:46
msgid "SQLite"
msgstr ""
#: ../templates/installation.php:53
msgid "MySQL will be used for the database."
msgstr ""
@ -159,6 +77,48 @@ msgstr ""
msgid "MySQL password:"
msgstr ""
#: ../templates/installation.php:61
msgid "Database name:"
msgstr ""
#: ../templates/installation.php:62
msgid "Host:"
msgstr ""
#: ../templates/installation.php:63
msgid "Table prefix:"
msgstr ""
#: ../templates/installation.php:69
msgid "Finish setup"
msgstr ""
#: ../templates/layout.guest.php:33
msgid ""
"<a href=\"http://owncloud.org/\">ownCloud</a> is a personal cloud which runs "
"on your own server.</p>"
msgstr ""
#: ../templates/login.php:6
msgid "Login failed!"
msgstr ""
#: ../templates/login.php:11 ../templates/login.php:15
msgid "Remember login"
msgstr ""
#: ../templates/logout.php:1
msgid "You are logged out."
msgstr ""
#: ../templates/part.pagenavi.php:6
msgid "prev"
msgstr ""
#: ../templates/part.pagenavi.php:26
msgid "next"
msgstr ""
#: ../templates/part.searchbox.php:3
msgid "Search"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-26 00:58+0200\n"
"POT-Creation-Date: 2011-07-27 12:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -21,6 +21,6 @@ msgstr ""
msgid "Questions and Answers"
msgstr ""
#: ../templates/index.php:21 ../templates/index.php:24
#: ../templates/index.php:24
msgid "ASK A QUESTION"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-26 00:58+0200\n"
"POT-Creation-Date: 2011-07-27 12:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2011-07-26 00:58+0200\n"
"POT-Creation-Date: 2011-07-27 12:03+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

View File

@ -204,7 +204,7 @@ class OC_UTIL {
* @return array
*/
public static function getVersion(){
return array(1,60,0);
return array(1,90,0);
}
/**

View File

@ -200,7 +200,7 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
} else if (function_exists("mime_content_type")) {
// use mime magic extension if available
$mime_type = mime_content_type($this->datadir.$fspath);
} else if (self::canExecute("file")) {
} else if (OC_HELPER::canExecute("file")) {
// it looks like we have a 'file' command,
// lets see it it does have mime support
$fp = popen("file -i -b '{$this->datadir}$fspath' 2>/dev/null", "r");
@ -223,62 +223,6 @@ class OC_FILESTORAGE_LOCAL extends OC_FILESTORAGE{
}
}
/**
* detect if a given program is found in the search PATH
*
* helper function used by _mimetype() to detect if the
* external 'file' utility is available
*
* @param string program name
* @param string optional search path, defaults to $PATH
* @return bool true if executable program found in path
*/
private function canExecute($name, $path = false)
{
// path defaults to PATH from environment if not set
if ($path === false) {
$path = getenv("PATH");
}
// check method depends on operating system
if (!strncmp(PHP_OS, "WIN", 3)) {
// on Windows an appropriate COM or EXE file needs to exist
$exts = array(".exe", ".com");
$check_fn = "file_exists";
} else {
// anywhere else we look for an executable file of that name
$exts = array("");
$check_fn = "is_executable";
}
// Default check will be done with $path directories :
$dirs = explode(PATH_SEPARATOR, $path);
// WARNING : We have to check if open_basedir is enabled :
$obd = ini_get('open_basedir');
if($obd != "none")
$obd_values = explode(PATH_SEPARATOR, $obd);
if(count($obd_values) > 0)
{
// open_basedir is in effect !
// We need to check if the program is in one of these dirs :
$dirs = $obd_values;
}
foreach($dirs as $dir)
{
foreach($exts as $ext)
{
if($check_fn("$dir/$name".$ext))
return true;
}
}
return false;
}
public function toTmpFile($path){
$tmpFolder=sys_get_temp_dir();
$filename=tempnam($tmpFolder,'OC_TEMP_FILE_'.substr($path,strrpos($path,'.')));

View File

@ -110,6 +110,11 @@ class OC_HELPER {
if( file_exists( "$SERVERROOT/core/img/mimetypes/$mimetype.png" )){
return "$WEBROOT/core/img/mimetypes/$mimetype.png";
}
//try only the first part of the mimetype
$mimetype=substr($mimetype,0,strpos($mimetype,'-'));
if( file_exists( "$SERVERROOT/core/img/mimetypes/$mimetype.png" )){
return "$WEBROOT/core/img/mimetypes/$mimetype.png";
}
else{
return "$WEBROOT/core/img/mimetypes/file.png";
}
@ -267,6 +272,51 @@ class OC_HELPER {
if((isset($_REQUEST[$s]) && $_REQUEST[$s]==$v) || $v == $d)
print "checked=\"checked\" ";
}
/**
* detect if a given program is found in the search PATH
*
* @param string program name
* @param string optional search path, defaults to $PATH
* @return bool true if executable program found in path
*/
public static function canExecute($name, $path = false){
// path defaults to PATH from environment if not set
if ($path === false) {
$path = getenv("PATH");
}
// check method depends on operating system
if (!strncmp(PHP_OS, "WIN", 3)) {
// on Windows an appropriate COM or EXE file needs to exist
$exts = array(".exe", ".com");
$check_fn = "file_exists";
} else {
// anywhere else we look for an executable file of that name
$exts = array("");
$check_fn = "is_executable";
}
// Default check will be done with $path directories :
$dirs = explode(PATH_SEPARATOR, $path);
// WARNING : We have to check if open_basedir is enabled :
$obd = ini_get('open_basedir');
if($obd != "none")
$obd_values = explode(PATH_SEPARATOR, $obd);
if(count($obd_values) > 0 and $obd_values[0])
{
// open_basedir is in effect !
// We need to check if the program is in one of these dirs :
$dirs = $obd_values;
}
foreach($dirs as $dir)
{
foreach($exts as $ext)
{
if($check_fn("$dir/$name".$ext))
return true;
}
}
return false;
}
}
?>

View File

@ -51,7 +51,7 @@ class OC_LOG {
* This function adds another entry to the log database
*/
public static function add( $appid, $subject, $predicate, $object = ' ' ){
$query=OC_DB::prepare("INSERT INTO *PREFIX*log(moment,appid,user,action,info) VALUES(NOW(),?,?,?,?)");
$query=OC_DB::prepare("INSERT INTO `*PREFIX*log`(moment,appid,user,action,info) VALUES(NOW(),?,?,?,?)");
$result=$query->execute(array($appid,$subject,$predicate,$object));
// Die if we have an error
if( PEAR::isError($result)) {
@ -79,7 +79,7 @@ class OC_LOG {
* - app: only entries for this app
*/
public static function get( $filter = array()){
$queryString='SELECT * FROM *PREFIX*log WHERE 1=1 ORDER BY moment DESC';
$queryString='SELECT * FROM `*PREFIX*log` WHERE 1=1 ORDER BY moment DESC';
$params=array();
if(isset($filter['from'])){
$queryString.='AND moment>? ';
@ -116,7 +116,7 @@ class OC_LOG {
* This function deletes all entries that are older than $date.
*/
public static function deleteBefore( $date ){
$query=OC_DB::prepare("DELETE FROM *PREFIX*log WHERE moment<?");
$query=OC_DB::prepare("DELETE FROM `*PREFIX*log` WHERE moment<?");
$query->execute(array($date));
return true;
}
@ -128,7 +128,7 @@ class OC_LOG {
* This function deletes all log entries.
*/
public static function deleteAll(){
$query=OC_DB::prepare("DELETE FROM *PREFIX*log");
$query=OC_DB::prepare("DELETE FROM `*PREFIX*log`");
$query->execute();
return true;
}

View File

@ -463,7 +463,6 @@ class OC_OCS {
$xml[$i]['key']=$log['key'];
$xml[$i]['app']=$log['app'];
$xml[$i]['value']=$log['value'];
$xml[$i]['timestamp']=$log['timestamp'];
}
@ -511,28 +510,26 @@ class OC_OCS {
* @param bool $like use LIKE instead of = when comparing keys
* @return array
*/
public static function getData($user,$app="",$key="",$like=false) {
$key="$user::$key";//ugly hack for the sake of keeping database scheme compatibiliy, needs to be replaced with a seperate user field the next time we break db compatibiliy
$compareFunction=($like)?'LIKE':'=';
public static function getData($user,$app="",$key="") {
if($app){
if (!trim($key)) {
$query = OC_DB::prepare('select app, `key`,value,`timestamp` from *PREFIX*privatedata where app=? order by `timestamp` desc');
$result=$query->execute(array($app))->fetchAll();
} else {
$query = OC_DB::prepare("select app, `key`,value,`timestamp` from *PREFIX*privatedata where app=? and `key` $compareFunction ? order by `timestamp` desc");
$result=$query->execute(array($app,$key))->fetchAll();
}
$apps=array($app);
}else{
if (!trim($key)) {
$query = OC_DB::prepare('select app, `key`,value,`timestamp` from *PREFIX*privatedata order by `timestamp` desc');
$result=$query->execute()->fetchAll();
} else {
$query = OC_DB::prepare("select app, `key`,value,`timestamp` from *PREFIX*privatedata where `key` $compareFunction ? order by `timestamp` desc");
$result=$query->execute(array($key))->fetchAll();
$apps=OC_PREFERENCES::getApps($user);
}
if($key){
$keys=array($key);
}else{
foreach($apps as $app){
$keys=OC_PREFERENCES::getKeys($user,$app);
}
}
$result=array();
foreach($apps as $app){
foreach($keys as $key){
$value=OC_PREFERENCES::getValue($user,$app,$key);
$result[]=array('app'=>$app,'key'=>$key,'value'=>$value);
}
}
$result=self::trimKeys($result,$user);
return $result;
}
@ -545,25 +542,7 @@ class OC_OCS {
* @return bool
*/
public static function setData($user, $app, $key, $value) {
$key="$user::$key";//ugly hack for the sake of keeping database scheme compatibiliy
//TODO: locking tables, fancy stuff, error checking/handling
$query=OC_DB::prepare("select count(*) as co from *PREFIX*privatedata where `key` = ? and app = ?");
$result=$query->execute(array($key,$app))->fetchAll();
$totalcount=$result[0]['co'];
if ($totalcount != 0) {
$query=OC_DB::prepare("update *PREFIX*privatedata set value=?, `timestamp` = now() where `key` = ? and app = ?");
} else {
$result = OC_DB::prepare("insert into *PREFIX*privatedata(value, `key`, app, `timestamp`) values(?, ?, ?, now())");
}
$result = $query->execute(array($value,$key,$app));
if (PEAR::isError($result)){
$entry='DB Error: "'.$result->getMessage().'"<br />';
error_log($entry);
return false;
}else{
return true;
}
return OC_PREFERENCES::setValue($user,$app,$key,$value);
}
/**
@ -574,26 +553,7 @@ class OC_OCS {
* @return string xml/json
*/
public static function deleteData($user, $app, $key) {
$key="$user::$key";//ugly hack for the sake of keeping database scheme compatibiliy
//TODO: prepared statements, locking tables, fancy stuff, error checking/handling
$query=OC_DB::prepare("delete from *PREFIX*privatedata where `key` = ? and app = ?");
$result = $query->execute(array($key,$app));
if (PEAR::isError($result)){
$entry='DB Error: "'.$result->getMessage().'"<br />';
error_log($entry);
return false;
}else{
return true;
}
}
//trim username prefixes from $array
private static function trimKeys($array,$user){
$length=strlen("$user::");
foreach($array as &$item){
$item['key']=substr($item['key'],$length);
}
return $array;
return OC_PREFERENCES::deleteKey($user,$app,$key);
}
}

View File

@ -76,6 +76,7 @@ class OC_SETUP {
//write the config file
OC_CONFIG::setValue('datadirectory', $datadir);
OC_CONFIG::setValue('dbtype', $dbtype);
OC_CONFIG::setValue('version',implode('.',OC_UTIL::getVersion()));
if($dbtype == 'mysql') {
$dbuser = $options['dbuser'];
$dbpass = $options['dbpass'];

View File

@ -75,6 +75,29 @@ function simple_file_size($bytes) {
else { return number_format($mbytes, 1); }
}
function relative_modified_date($timestamp) {
$timediff = time() - $timestamp;
$diffminutes = round($timediff/60);
$diffhours = round($diffminutes/60);
$diffdays = round($diffhours/24);
$diffmonths = round($diffdays/31);
$diffyears = round($diffdays/365);
if($timediff < 60) { return 'seconds ago'; }
else if($timediff < 120) { return '1 minute ago'; }
else if($timediff < 3600) { return $diffminutes.' minutes ago'; }
//else if($timediff < 7200) { return '1 hour ago'; }
//else if($timediff < 86400) { return $diffhours.' hours ago'; }
else if($timediff < 86400) { return 'today'; }
else if($timediff < 172800) { return 'yesterday'; }
else if($timediff < 2678400) { return $diffdays.' days ago'; }
else if($timediff < 5184000) { return 'last month'; }
//else if($timediff < 31556926) { return $diffmonths.' months ago'; }
else if($timediff < 31556926) { return 'months ago'; }
else if($timediff < 63113852) { return 'last year'; }
else { return $diffyears.' years ago'; }
}
/**
* This class provides the templates for owncloud.
*/