From ca860932707da593976f07e63f571cd3eb1a1109 Mon Sep 17 00:00:00 2001
From: Michael Gapczynski <GapczynskiM@gmail.com>
Date: Fri, 19 Aug 2011 12:47:00 -0400
Subject: [PATCH] Full support for viewing public links from sharing drop down

---
 apps/files_sharing/ajax/getitem.php | 13 ++++++++++++-
 apps/files_sharing/js/share.js      |  7 +++----
 2 files changed, 15 insertions(+), 5 deletions(-)

diff --git a/apps/files_sharing/ajax/getitem.php b/apps/files_sharing/ajax/getitem.php
index 43105d334ee..cdb59b9cd1b 100644
--- a/apps/files_sharing/ajax/getitem.php
+++ b/apps/files_sharing/ajax/getitem.php
@@ -7,18 +7,29 @@ require_once('../lib_share.php');
 $userDirectory = "/".OC_User::getUser()."/files";
 $source = $userDirectory.$_GET['source'];
 $users = OC_Share::getMySharedItem($source);
+$path = $source;
+for ($i = 0; $i < count($users); $i++) {
+	if ($users[$i]['uid_shared_with'] == OC_Share::PUBLICLINK) {
+		$users[$i]['token'] = OC_Share::getTokenFromSource($source);
+	}
+}
 $source = dirname($source);
 while ($source != "" && $source != "/" && $source != "." && $source != $userDirectory) {
 	$values = array_values(OC_Share::getMySharedItem($source));
 	if (count($values) > 0) {
 		$parentUsers = array();
 		for ($i = 0; $i < count($values); $i++) {
+			if ($values[$i]['uid_shared_with'] == OC_Share::PUBLICLINK) {
+				$values[$i]['token'] = OC_Share::getTokenFromSource($source)."&path=".substr($path, strlen($source));
+			}
 			$parentUsers[basename($source)."-".$i] = $values[$i];
 		}
 		$users = array_merge($users, $parentUsers);
 	}
 	$source = dirname($source);
 }
-echo json_encode($users);
+if (!empty($users)) {
+	echo json_encode($users);
+}
 
 ?>
\ No newline at end of file
diff --git a/apps/files_sharing/js/share.js b/apps/files_sharing/js/share.js
index 1ae55b49937..1fae8cbdc95 100644
--- a/apps/files_sharing/js/share.js
+++ b/apps/files_sharing/js/share.js
@@ -10,7 +10,7 @@ $(document).ready(function() {
 				data: 'source='+file,
 				async: false,
 				success: function(users) {
-					if (users.length > 0) {
+					if (users) {
 						icon = OC.imagePath('core', 'actions/shared');
 						$.each(users, function(index, row) {
 							if (row.uid_shared_with == 'public') {
@@ -196,8 +196,7 @@ function createDropdown(filename, files) {
 		if (users) {
 			$.each(users, function(index, row) {
 				if (row.uid_shared_with == 'public') {
-					var token = 1234;
-					showPublicLink(token);
+					showPublicLink(row.token);
 				} else if (isNaN(index)) {
 					addUser(row.uid_shared_with, row.permissions, index.substr(0, index.lastIndexOf('-')));
 				} else {
@@ -228,6 +227,6 @@ function addUser(uid_shared_with, permissions, parentFolder) {
 function showPublicLink(token) {
 	$('#makelink').attr('checked', true);
 	$('#link').data('token', token);
-	$('#link').val(parent.location.protocol+"//"+location.host+OC.linkTo('files_publiclink','get.php')+'?token='+token);
+	$('#link').val(parent.location.protocol+"//"+location.host+OC.linkTo('files_sharing','get.php')+'?token='+token);
 	$('#link').show('blind');
 }
-- 
GitLab