diff --git a/inc/User/backend.php b/inc/User/backend.php index e71d155cea..9d10adefd4 100755 --- a/inc/User/backend.php +++ b/inc/User/backend.php @@ -33,7 +33,7 @@ abstract class OC_USER_BACKEND { * Check if the login button is pressed and log the user in * */ - abstract public static function loginLisener(); + abstract public static function loginListener(); /** * Try to create a new user @@ -55,7 +55,7 @@ abstract class OC_USER_BACKEND { * Check if the logout button is pressed and logout the user * */ - abstract public static function logoutLisener(); + abstract public static function logoutListener(); /** * Check if some user is logged in diff --git a/inc/User/database.php b/inc/User/database.php index 9a39e191f6..bd33ba6b6e 100755 --- a/inc/User/database.php +++ b/inc/User/database.php @@ -36,7 +36,7 @@ class OC_USER_DATABASE extends OC_USER_BACKEND { * Check if the login button is pressed and log the user in * */ - public static function loginLisener(){ + public static function loginListener(){ if ( isset($_POST['loginbutton']) AND isset($_POST['password']) AND isset($_POST['login']) ) { if ( OC_USER::login($_POST['login'], $_POST['password']) ) { echo 1; @@ -111,7 +111,7 @@ class OC_USER_DATABASE extends OC_USER_BACKEND { * Check if the logout button is pressed and logout the user * */ - public static function logoutLisener() { + public static function logoutListener() { global $WEBROOT; if ( isset($_GET['logoutbutton']) AND isset($_SESSION['username']) ) { OC_LOG::event($_SESSION['username'], 2, ''); diff --git a/inc/lib_base.php b/inc/lib_base.php index 65664ae861..b8c639b244 100644 --- a/inc/lib_base.php +++ b/inc/lib_base.php @@ -102,8 +102,8 @@ OC_UTIL::setupFS(); OC_UTIL::checkserver(); // listen for login or logout actions -OC_USER::logoutlisener(); -$loginresult=OC_USER::loginlisener(); +OC_USER::logoutlistener(); +$loginresult=OC_USER::loginlistener(); /** * Class for utility functions diff --git a/inc/lib_config.php b/inc/lib_config.php index d5f0f2270f..6863146cde 100644 --- a/inc/lib_config.php +++ b/inc/lib_config.php @@ -45,7 +45,7 @@ class OC_CONFIG{ } } - public static function createUserLisener(){ + public static function createUserListener(){ if(OC_USER::isLoggedIn()){ if(OC_USER::ingroup($_SESSION['username'],'admin')){ if(isset($_POST['new_username']) and isset($_POST['new_password'])){ @@ -63,7 +63,7 @@ class OC_CONFIG{ } } - public static function createGroupLisener(){ + public static function createGroupListener(){ if(OC_USER::isLoggedIn()){ if(isset($_POST['creategroup']) and $_POST['creategroup']==1){ if(OC_USER::creategroup($_POST['groupname'])){ @@ -81,10 +81,10 @@ class OC_CONFIG{ /** - * lisen for configuration changes + * listen for configuration changes * */ - public static function configLisener(){ + public static function configListener(){ if(OC_USER::isLoggedIn()){ if(isset($_POST['config']) and $_POST['config']==1){ $error=''; @@ -139,10 +139,10 @@ class OC_CONFIG{ } /** - * lisen for admin configuration changes and write it to the file + * listen for admin configuration changes and write it to the file *4bd0be1185e76 */ - public static function writeAdminLisener(){ + public static function writeAdminListener(){ global $CONFIG_INSTALLED; $allow=false; if(!$CONFIG_INSTALLED){ diff --git a/inc/lib_filesystem.php b/inc/lib_filesystem.php index a64d2ba599..170d296bd2 100644 --- a/inc/lib_filesystem.php +++ b/inc/lib_filesystem.php @@ -111,7 +111,7 @@ class OC_FILESYSTEM{ if(substr($path,0,1)!=='/'){ $path='/'.$path; } - if(strstr($path,'/../')){ + if(strstr($path,'/../') || strrchr($path, '/') === '/..' ){ return false; } return true;//dummy untill premissions are correctly implemented, also the correcty value because for now users are locked in their seperate data dir and can read/write everything in there @@ -125,7 +125,7 @@ class OC_FILESYSTEM{ if(substr($path,0,1)!=='/'){ $path='/'.$path; } - if(strstr($path,'/../')){ + if(strstr($path,'/../') || strrchr($path, '/') === '/..' ){ return false; } return true;//dummy untill premissions are correctly implemented, also the correcty value because for now users are locked in their seperate data dir and can read/write everything in there diff --git a/inc/lib_plugin.php b/inc/lib_plugin.php index 76f94a1156..eb7533c447 100644 --- a/inc/lib_plugin.php +++ b/inc/lib_plugin.php @@ -59,8 +59,10 @@ class OC_PLUGIN{ } } - foreach($data['runtime'] as $include){ - include($SERVERROOT.'/plugins/'.$id.'/'.$include); + if(isset($data['runtime'])){ + foreach($data['runtime'] as $include){ + include($SERVERROOT.'/plugins/'.$id.'/'.$include); + } } } return false; diff --git a/inc/lib_user.php b/inc/lib_user.php index 8bde1d9207..5b48e0abf2 100644 --- a/inc/lib_user.php +++ b/inc/lib_user.php @@ -78,8 +78,8 @@ class OC_USER { * Check if the login button is pressed and log the user in * */ - public static function loginLisener() { - return self::$_backend->loginLisener(); + public static function loginListener() { + return self::$_backend->loginListener(); } /** @@ -106,8 +106,8 @@ class OC_USER { * Check if the logout button is pressed and logout the user * */ - public static function logoutLisener() { - return self::$_backend->logoutLisener(); + public static function logoutListener() { + return self::$_backend->logoutListener(); } /** diff --git a/inc/templates/header.php b/inc/templates/header.php index 9b67f34c88..4593af5951 100644 --- a/inc/templates/header.php +++ b/inc/templates/header.php @@ -51,14 +51,14 @@ if(!OC_UTIL::hasSmallScreen()){ // check if already configured. otherwise start configuration wizard - $error=OC_CONFIG::writeadminlisener(); - if($e=OC_CONFIG::configlisener()){ + $error=OC_CONFIG::writeadminlistener(); + if($e=OC_CONFIG::configlistener()){ $error.=$e; } - if($e=OC_CONFIG::createuserlisener()){ + if($e=OC_CONFIG::createuserlistener()){ $error.=$e; } - if($e=OC_CONFIG::creategrouplisener()){ + if($e=OC_CONFIG::creategrouplistener()){ $error.=$e; } $CONFIG_ERROR=$error; diff --git a/js/lib_files.js b/js/lib_files.js index 8f7f903558..54af643272 100644 --- a/js/lib_files.js +++ b/js/lib_files.js @@ -225,6 +225,10 @@ OC_FILES.newFile=function(type,name,dir){ arg=new Object; arg.name=name; arg.dir=dir; + if(OC_FILES.cache.files[name]){//check if the file already exists + alert(((type=='dir')?'folder ':'file ')+name+' already exists.'); + return; + } arg.type=type; OC_API.run('new',{dir:dir,name:name,type:type},OC_FILES.new_callback,arg) if(!OC_FILES.cache.incomplete[dir]){ diff --git a/plugins/audioplayer/README b/plugins/audioplayer/README new file mode 100644 index 0000000000..5de1324d56 --- /dev/null +++ b/plugins/audioplayer/README @@ -0,0 +1,9 @@ +This plugin implements a very basic HTML5 audio preview for ownCloud. + +Only formats supported by the browser can be played. +Sadly, those are very limited and not coherent among browsers, see http://html5doctor.com/native-audio-in-the-browser/ for more info. + +Ideas to change that (TODO): +- Flashplayer fallback +and/or +- on-the-fly transcoding diff --git a/plugins/audioplayer/audioplayer.js b/plugins/audioplayer/audioplayer.js new file mode 100644 index 0000000000..07e9f5e23e --- /dev/null +++ b/plugins/audioplayer/audioplayer.js @@ -0,0 +1,66 @@ +OC_AudioPlayer = new Object(); + +OC_AudioPlayer.playAudio = function(dir, file, type) { + var path = WEBROOT + '/files/api?action=get&dir='+encodeURIComponent(dir)+'&file='+encodeURIComponent(file); + + OC_AudioPlayer.audioFrame = document.createElement('div'); + OC_AudioPlayer.audioFrame.setAttribute('id', 'audioframe'); + OC_AudioPlayer.audioFrame.setAttribute('class', 'center'); + var div = document.createElement('div'); + var inner = document.createElement('div'); + var audio = document.createElement('audio'); + var source = document.createElement('source'); + +// if (!(!!(audio.canPlayType) && (audio.canPlayType(type) != "no") && (audio.canPlayType(type) != ""))) { +// // use a flash player fallback +// // or implement some nice on-the-fly recoding here +// alert("Native playing of '"+type+"' format is not supported by your browser."); +// return; +// } + audio.setAttribute('controls', 'controls'); + audio.setAttribute('preload', 'auto'); + audio.setAttribute('autoplay', 'autoplay'); + audio.setAttribute('autobuffer', 'autobuffer'); + source.setAttribute('src', path); + source.setAttribute('type', type); + + audio.appendChild(source); + inner.appendChild(audio); + div.appendChild(inner); + OC_AudioPlayer.audioFrame.appendChild(div); + + OC_AudioPlayer.audioFrame.addEvent('onclick', OC_AudioPlayer.hidePlayer); + inner.addEvent('onclick', function(e){e.stopPropagation();}); // don't close if clicked on player + + body = document.getElementsByTagName('body').item(0); + body.appendChild(OC_AudioPlayer.audioFrame); +} + +OC_AudioPlayer.hidePlayer = function(){ + var div = document.getElementById('audioframe'); + div.parentNode.removeChild(div); +} + +// only register "play" option for file formats the browser claims to support +OC_AudioPlayer.formats = { + 'audio/mpeg':"mp3", + 'audio/ogg':"ogg", + 'application/ogg':"ogg", + 'audio/wav':"wav", + 'audio/wave':"wav", + 'audio/x-wav':"wav", + 'audio/basic':"au", + 'audio/x-aiff':"aif" +}; +var audio = document.createElement('audio'); +for(format in OC_AudioPlayer.formats) { + if (!!(audio.canPlayType) && (audio.canPlayType(format) != "no") && (audio.canPlayType(format) != "")) { + if(!OC_FILES.fileActions[format]) { + OC_FILES.fileActions[format] = new Object(); + } + OC_FILES.fileActions[format].play = function() { + OC_AudioPlayer.playAudio(this.dir, this.file, this.mime); + } + OC_FILES.fileActions[format]['default'] = OC_FILES.fileActions[format].play; + } +} diff --git a/plugins/audioplayer/lib_audioplayer.php b/plugins/audioplayer/lib_audioplayer.php new file mode 100644 index 0000000000..206f76bb56 --- /dev/null +++ b/plugins/audioplayer/lib_audioplayer.php @@ -0,0 +1,5 @@ + diff --git a/plugins/audioplayer/plugin.xml b/plugins/audioplayer/plugin.xml new file mode 100644 index 0000000000..ea58af245e --- /dev/null +++ b/plugins/audioplayer/plugin.xml @@ -0,0 +1,15 @@ + + + + audioplayer + A simple HTML5 based audio player for ownCloud + 0.1 + AGPL + ente + 1.1 + + + lib_audioplayer.php + + + diff --git a/plugins/audioplayer/style.css b/plugins/audioplayer/style.css new file mode 100644 index 0000000000..689a04940e --- /dev/null +++ b/plugins/audioplayer/style.css @@ -0,0 +1,21 @@ +#audioframe{ + position:absolute; + top:0px; + left:0px; + height:100%; + width:100%; + background:rgb(20,20,20); + background:rgba(20,20,20,0.9); + text-align:center; + display:table; +} + +#audioframe>div{ + display:table-cell; + vertical-align:middle; +} + +#audioframe>div>div{ + display:inline-block; +} + diff --git a/plugins/ldap/lib_ldap.php b/plugins/ldap/lib_ldap.php index 16bd3a5286..2bb557919a 100755 --- a/plugins/ldap/lib_ldap.php +++ b/plugins/ldap/lib_ldap.php @@ -35,7 +35,7 @@ class OC_USER_LDAP extends OC_USER_BACKEND { * Check if the login button is pressed and log the user in * */ - public static function loginLisener() { + public static function loginListener() { return(''); } @@ -69,7 +69,7 @@ class OC_USER_LDAP extends OC_USER_BACKEND { * Check if the logout button is pressed and logout the user * */ - public static function logoutLisener() { + public static function logoutListener() { if ( isset($_GET['logoutbutton']) AND isset($_SESSION['username']) ) { header('WWW-Authenticate: Basic realm="ownCloud"'); header('HTTP/1.0 401 Unauthorized');