diff --git a/apps/files/ajax/newfile.php b/apps/files/ajax/newfile.php index 4f5d102b40..ba54ca35f7 100644 --- a/apps/files/ajax/newfile.php +++ b/apps/files/ajax/newfile.php @@ -12,37 +12,6 @@ global $eventSource; $dir = isset( $_REQUEST['dir'] ) ? '/'.trim((string)$_REQUEST['dir'], '/\\') : ''; $filename = isset( $_REQUEST['filename'] ) ? trim((string)$_REQUEST['filename'], '/\\') : ''; $content = isset( $_REQUEST['content'] ) ? (string)$_REQUEST['content'] : ''; -$source = isset( $_REQUEST['source'] ) ? trim((string)$_REQUEST['source'], '/\\') : ''; - -if($source) { - $eventSource = \OC::$server->createEventSource(); -} - -function progress($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) { - static $filesize = 0; - static $lastsize = 0; - global $eventSource; - - switch($notification_code) { - case STREAM_NOTIFY_FILE_SIZE_IS: - $filesize = $bytes_max; - break; - - case STREAM_NOTIFY_PROGRESS: - if ($bytes_transferred > 0) { - if (!isset($filesize) || $filesize === 0) { - } else { - $progress = (int)(($bytes_transferred/$filesize)*100); - if($progress>$lastsize) { //limit the number or messages send - $eventSource->send('progress', $progress); - } - $lastsize=$progress; - } - } - break; - } -} - $l10n = \OC::$server->getL10N('files'); @@ -89,85 +58,23 @@ if (\OC\Files\Filesystem::file_exists($target)) { exit(); } -if($source) { - $httpHelper = \OC::$server->getHTTPHelper(); - if(!$httpHelper->isHTTPURL($source)) { - OCP\JSON::error(array('data' => array('message' => $l10n->t('Not a valid source')))); - exit(); - } +$success = false; +if (!$content) { + $templateManager = OC_Helper::getFileTemplateManager(); + $mimeType = OC_Helper::getMimetypeDetector()->detectPath($target); + $content = $templateManager->getTemplate($mimeType); +} - if (!ini_get('allow_url_fopen')) { - $eventSource->send('error', array('message' => $l10n->t('Server is not allowed to open URLs, please check the server configuration'))); - $eventSource->close(); - exit(); - } - - $source = $httpHelper->getFinalLocationOfURL($source); - - $ctx = stream_context_create(\OC::$server->getHTTPHelper()->getDefaultContextArray(), array('notification' =>'progress')); - - $sourceStream=@fopen($source, 'rb', false, $ctx); - $result = 0; - if (is_resource($sourceStream)) { - $meta = stream_get_meta_data($sourceStream); - if (isset($meta['wrapper_data']) && is_array($meta['wrapper_data'])) { - //check stream size - $storageStats = \OCA\Files\Helper::buildFileStorageStatistics($dir); - $freeSpace = $storageStats['freeSpace']; - - foreach($meta['wrapper_data'] as $header) { - if (strpos($header, ':') === false){ - continue; - } - list($name, $value) = explode(':', $header); - if ('content-length' === strtolower(trim($name))) { - $length = (int) trim($value); - - if ($length > $freeSpace) { - $delta = $length - $freeSpace; - $humanDelta = OCP\Util::humanFileSize($delta); - - $eventSource->send('error', array('message' => (string)$l10n->t('The file exceeds your quota by %s', array($humanDelta)))); - $eventSource->close(); - fclose($sourceStream); - exit(); - } - } - } - } - $result = \OC\Files\Filesystem::file_put_contents($target, $sourceStream); - } - if($result) { - $meta = \OC\Files\Filesystem::getFileInfo($target); - $data = \OCA\Files\Helper::formatFileInfo($meta); - $eventSource->send('success', $data); - } else { - $eventSource->send('error', array('message' => $l10n->t('Error while downloading %s to %s', array($source, $target)))); - } - if (is_resource($sourceStream)) { - fclose($sourceStream); - } - $eventSource->close(); - exit(); +if($content) { + $success = \OC\Files\Filesystem::file_put_contents($target, $content); } else { - $success = false; - if (!$content) { - $templateManager = OC_Helper::getFileTemplateManager(); - $mimeType = OC_Helper::getMimetypeDetector()->detectPath($target); - $content = $templateManager->getTemplate($mimeType); - } + $success = \OC\Files\Filesystem::touch($target); +} - if($content) { - $success = \OC\Files\Filesystem::file_put_contents($target, $content); - } else { - $success = \OC\Files\Filesystem::touch($target); - } - - if($success) { - $meta = \OC\Files\Filesystem::getFileInfo($target); - OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta))); - exit(); - } +if($success) { + $meta = \OC\Files\Filesystem::getFileInfo($target); + OCP\JSON::success(array('data' => \OCA\Files\Helper::formatFileInfo($meta))); + exit(); } OCP\JSON::error(array('data' => array( 'message' => $l10n->t('Error when creating the file') ))); diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 7374a4c90f..4e0b9e0e6d 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -602,9 +602,7 @@ OC.Upload = { var lastPos; var checkInput = function () { var filename = input.val(); - if (type === 'web' && filename.length === 0) { - throw t('files', 'URL cannot be empty'); - } else if (type !== 'web' && ! Files.isFileNameValid(filename)) { + if (Files.isFileNameValid(filename)) { // Files.isFileNameValid(filename) throws an exception itself } else if (FileList.inList(filename)) { throw t('files', '{new_name} already exists', {new_name: filename}); @@ -683,56 +681,6 @@ OC.Upload = { } ); break; - case 'web': - if (name.substr(0, 8) !== 'https://' && name.substr(0, 7) !== 'http://') { - name = 'http://' + name; - } - var localName = name; - if (localName.substr(localName.length-1, 1) === '/') {//strip / - localName = localName.substr(0, localName.length-1); - } - if (localName.indexOf('/')) { //use last part of url - localName = localName.split('/').pop(); - } else { //or the domain - localName = (localName.match(/:\/\/(.[^\/]+)/)[1]).replace('www.', ''); - } - localName = FileList.getUniqueName(localName); - //IE < 10 does not fire the necessary events for the progress bar. - if ($('html.lte9').length === 0) { - $('#uploadprogressbar').progressbar({value: 0}); - OC.Upload._showProgressBar(); - } - - var eventSource = new OC.EventSource( - OC.filePath('files', 'ajax', 'newfile.php'), - { - dir: FileList.getCurrentDirectory(), - source: name, - filename: localName - } - ); - eventSource.listen('progress', function(progress) { - //IE < 10 does not fire the necessary events for the progress bar. - if ($('html.lte9').length === 0) { - $('#uploadprogressbar').progressbar('value',progress); - } - }); - eventSource.listen('success', function(data) { - var file = data; - OC.Upload._hideProgressBar(); - - FileList.add(file, {hidden: hidden, animate: true}); - }); - eventSource.listen('error', function(error) { - OC.Upload._hideProgressBar(); - var message = (error && error.message) || t('core', 'Error fetching URL'); - OC.Notification.show(message); - //hide notification after 10 sec - setTimeout(function() { - OC.Notification.hide(); - }, 10000); - }); - break; } var li = form.parent(); form.remove(); diff --git a/apps/files/templates/list.php b/apps/files/templates/list.php index aa879002ba..f2292bfae3 100644 --- a/apps/files/templates/list.php +++ b/apps/files/templates/list.php @@ -12,9 +12,6 @@ data-type="folder" data-newname="t('New folder')) ?>">

t('Folder'));?>

-