Path will only be shown if in subdirectory, not in root.tags/v8.0.0alpha1
@@ -674,6 +674,12 @@ | |||
if (extension) { | |||
nameSpan.append($('<span></span>').addClass('extension').text(extension)); | |||
} | |||
if (fileData.extraData) { | |||
if (fileData.extraData.charAt(0) === '/') { | |||
fileData.extraData = fileData.extraData.substr(1); | |||
} | |||
nameSpan.addClass('extra-data').attr('title', fileData.extraData); | |||
} | |||
// dirs can show the number of uploaded files | |||
if (type === 'dir') { | |||
linkElem.append($('<span></span>').attr({ |
@@ -138,6 +138,9 @@ class Helper | |||
} | |||
$entry['mountType'] = $mountType; | |||
} | |||
if (isset($i['extraData'])) { | |||
$entry['extraData'] = $i['extraData']; | |||
} | |||
return $entry; | |||
} | |||
@@ -181,6 +181,9 @@ | |||
file.name = OC.basename(share.file_target); | |||
file.path = OC.dirname(share.file_target); | |||
file.permissions = share.permissions; | |||
if (file.path) { | |||
file.extraData = share.file_target; | |||
} | |||
} | |||
else { | |||
if (share.share_type !== OC.Share.SHARE_TYPE_LINK) { | |||
@@ -189,6 +192,9 @@ | |||
file.name = OC.basename(share.path); | |||
file.path = OC.dirname(share.path); | |||
file.permissions = OC.PERMISSION_ALL; | |||
if (file.path) { | |||
file.extraData = share.path; | |||
} | |||
} | |||
return file; | |||
}) |
@@ -35,6 +35,7 @@ class Helper | |||
$absoluteDir = $view->getAbsolutePath($dir); | |||
if (is_resource($dirContent)) { | |||
$originalLocations = \OCA\Files_Trashbin\Trashbin::getLocations($user); | |||
while (($entryName = readdir($dirContent)) !== false) { | |||
if (!\OC\Files\Filesystem::isIgnoredDir($entryName)) { | |||
$id = $entryName; | |||
@@ -47,6 +48,13 @@ class Helper | |||
$parts = explode('/', ltrim($dir, '/')); | |||
$timestamp = substr(pathinfo($parts[0], PATHINFO_EXTENSION), 1); | |||
} | |||
$originalPath = ''; | |||
if (isset($originalLocations[$id][$timestamp])) { | |||
$originalPath = $originalLocations[$id][$timestamp]; | |||
if (substr($originalPath, -1) === '/') { | |||
$originalPath = substr($originalPath, 0, -1); | |||
} | |||
} | |||
$i = array( | |||
'name' => $id, | |||
'mtime' => $timestamp, | |||
@@ -54,6 +62,9 @@ class Helper | |||
'type' => $view->is_dir($dir . '/' . $entryName) ? 'dir' : 'file', | |||
'directory' => ($dir === '/') ? '' : $dir, | |||
); | |||
if ($originalPath) { | |||
$i['extraData'] = $originalPath.'/'.$id; | |||
} | |||
$result[] = new FileInfo($absoluteDir . '/' . $i['name'], $storage, $internalPath . '/' . $i['name'], $i); | |||
} | |||
} |
@@ -41,6 +41,46 @@ class Trashbin { | |||
return array($uid, $filename); | |||
} | |||
/** | |||
* get original location of files for user | |||
* | |||
* @param string $user | |||
* @return array (filename => array (timestamp => original location)) | |||
*/ | |||
public static function getLocations($user) { | |||
$query = \OC_DB::prepare('SELECT `id`, `timestamp`, `location`' | |||
. ' FROM `*PREFIX*files_trash` WHERE `user`=?'); | |||
$result = $query->execute(array($user)); | |||
$array = array(); | |||
while ($row = $result->fetchRow()) { | |||
if (isset($array[$row['id']])) { | |||
$array[$row['id']][$row['timestamp']] = $row['location']; | |||
} else { | |||
$array[$row['id']] = array($row['timestamp'] => $row['location']); | |||
} | |||
} | |||
return $array; | |||
} | |||
/** | |||
* get original location of file | |||
* | |||
* @param string $user | |||
* @param string $filename | |||
* @param string $timestamp | |||
* @return string original location | |||
*/ | |||
public static function getLocation($user, $filename, $timestamp) { | |||
$query = \OC_DB::prepare('SELECT `location` FROM `*PREFIX*files_trash`' | |||
. ' WHERE `user`=? AND `id`=? AND `timestamp`=?'); | |||
$result = $query->execute(array($user, $filename, $timestamp))->fetchAll(); | |||
if (isset($result[0]['location'])) { | |||
return $result[0]['location']; | |||
} else { | |||
return false; | |||
} | |||
} | |||
private static function setUpTrash($user) { | |||
$view = new \OC\Files\View('/' . $user); | |||
if (!$view->is_dir('files_trashbin')) { | |||
@@ -318,13 +358,10 @@ class Trashbin { | |||
$location = ''; | |||
if ($timestamp) { | |||
$query = \OC_DB::prepare('SELECT `location` FROM `*PREFIX*files_trash`' | |||
. ' WHERE `user`=? AND `id`=? AND `timestamp`=?'); | |||
$result = $query->execute(array($user, $filename, $timestamp))->fetchAll(); | |||
if (count($result) !== 1) { | |||
$location = self::getLocation($user, $filename, $timestamp); | |||
if ($location === false) { | |||
\OC_Log::write('files_trashbin', 'trash bin database inconsistent!', \OC_Log::ERROR); | |||
} else { | |||
$location = $result[0]['location']; | |||
// if location no longer exists, restore file in the root directory | |||
if ($location !== '/' && | |||
(!$view->is_dir('files' . $location) || |
@@ -811,6 +811,11 @@ span.ui-icon {float: left; margin: 3px 7px 30px 0;} | |||
height: 16px; | |||
} | |||
/* ---- TOOLTIPS ---- */ | |||
.extra-data { | |||
padding-right: 5px !important; | |||
} | |||
/* ---- TAGS ---- */ | |||
#tagsdialog .content { | |||
width: 100%; height: 280px; |
@@ -1097,6 +1097,7 @@ function initCore() { | |||
$('td .modified').tipsy({gravity:'s', fade:true, live:true}); | |||
$('td.lastLogin').tipsy({gravity:'s', fade:true, html:true}); | |||
$('input').tipsy({gravity:'w', fade:true}); | |||
$('.extra-data').tipsy({gravity:'w', fade:true, live:true}); | |||
// toggle for menus | |||
$(document).on('mouseup.closemenus', function(event) { |