Remove album name bin2hex conversion in file browser
- Avoids Javascript hex2bin() limitation to Latin-1 string encoding
This commit is contained in:
parent
36717a9953
commit
16f48731b1
|
@ -39,31 +39,26 @@ function fbrowser_content(App $a)
|
||||||
|
|
||||||
switch ($a->argv[1]) {
|
switch ($a->argv[1]) {
|
||||||
case "image":
|
case "image":
|
||||||
$path = [["", DI::l10n()->t("Photos")]];
|
$path = ['' => DI::l10n()->t('Photos')];
|
||||||
$albums = false;
|
$albums = false;
|
||||||
$sql_extra = "";
|
$sql_extra = "";
|
||||||
$sql_extra2 = " ORDER BY created DESC LIMIT 0, 10";
|
$sql_extra2 = " ORDER BY created DESC LIMIT 0, 10";
|
||||||
|
|
||||||
if ($a->argc==2) {
|
if ($a->argc==2) {
|
||||||
$albums = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' ",
|
$photos = q("SELECT distinct(`album`) AS `album` FROM `photo` WHERE `uid` = %d AND `album` != '%s' AND `album` != '%s' ",
|
||||||
intval(local_user()),
|
intval(local_user()),
|
||||||
DBA::escape('Contact Photos'),
|
DBA::escape('Contact Photos'),
|
||||||
DBA::escape(DI::l10n()->t('Contact Photos'))
|
DBA::escape(DI::l10n()->t('Contact Photos'))
|
||||||
);
|
);
|
||||||
|
|
||||||
function _map_folder1($el)
|
$albums = array_column($photos, 'album');
|
||||||
{
|
|
||||||
return [bin2hex($el['album']),$el['album']];
|
|
||||||
};
|
|
||||||
|
|
||||||
$albums = array_map("_map_folder1", $albums);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($a->argc == 3) {
|
if ($a->argc == 3) {
|
||||||
$album = hex2bin($a->argv[2]);
|
$album = $a->argv[2];
|
||||||
$sql_extra = sprintf("AND `album` = '%s' ", DBA::escape($album));
|
$sql_extra = sprintf("AND `album` = '%s' ", DBA::escape($album));
|
||||||
$sql_extra2 = "";
|
$sql_extra2 = "";
|
||||||
$path[] = [$a->argv[2], $album];
|
$path[$album] = $album;
|
||||||
}
|
}
|
||||||
|
|
||||||
$r = q("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
|
$r = q("SELECT `resource-id`, ANY_VALUE(`id`) AS `id`, ANY_VALUE(`filename`) AS `filename`, ANY_VALUE(`type`) AS `type`,
|
||||||
|
|
|
@ -309,7 +309,7 @@ function photos_post(App $a)
|
||||||
$desc = !empty($_POST['desc']) ? Strings::escapeTags(trim($_POST['desc'])) : '';
|
$desc = !empty($_POST['desc']) ? Strings::escapeTags(trim($_POST['desc'])) : '';
|
||||||
$rawtags = !empty($_POST['newtag']) ? Strings::escapeTags(trim($_POST['newtag'])) : '';
|
$rawtags = !empty($_POST['newtag']) ? Strings::escapeTags(trim($_POST['newtag'])) : '';
|
||||||
$item_id = !empty($_POST['item_id']) ? intval($_POST['item_id']) : 0;
|
$item_id = !empty($_POST['item_id']) ? intval($_POST['item_id']) : 0;
|
||||||
$albname = !empty($_POST['albname']) ? Strings::escapeTags(trim($_POST['albname'])) : '';
|
$albname = !empty($_POST['albname']) ? trim($_POST['albname']) : '';
|
||||||
$origaname = !empty($_POST['origaname']) ? Strings::escapeTags(trim($_POST['origaname'])) : '';
|
$origaname = !empty($_POST['origaname']) ? Strings::escapeTags(trim($_POST['origaname'])) : '';
|
||||||
|
|
||||||
$aclFormatter = DI::aclFormatter();
|
$aclFormatter = DI::aclFormatter();
|
||||||
|
@ -615,10 +615,10 @@ function photos_post(App $a)
|
||||||
Hook::callAll('photo_post_init', $_POST);
|
Hook::callAll('photo_post_init', $_POST);
|
||||||
|
|
||||||
// Determine the album to use
|
// Determine the album to use
|
||||||
$album = !empty($_REQUEST['album']) ? Strings::escapeTags(trim($_REQUEST['album'])) : '';
|
$album = trim($_REQUEST['album'] ?? '');
|
||||||
$newalbum = !empty($_REQUEST['newalbum']) ? Strings::escapeTags(trim($_REQUEST['newalbum'])) : '';
|
$newalbum = trim($_REQUEST['newalbum'] ?? '');
|
||||||
|
|
||||||
Logger::log('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , Logger::DEBUG);
|
Logger::info('album= ' . $album . ' newalbum= ' . $newalbum);
|
||||||
|
|
||||||
if (!strlen($album)) {
|
if (!strlen($album)) {
|
||||||
if (strlen($newalbum)) {
|
if (strlen($newalbum)) {
|
||||||
|
|
|
@ -41,7 +41,7 @@ function wall_upload_post(App $a, $desktopmode = true)
|
||||||
Logger::log("wall upload: starting new upload", Logger::DEBUG);
|
Logger::log("wall upload: starting new upload", Logger::DEBUG);
|
||||||
|
|
||||||
$r_json = (!empty($_GET['response']) && $_GET['response'] == 'json');
|
$r_json = (!empty($_GET['response']) && $_GET['response'] == 'json');
|
||||||
$album = (!empty($_GET['album']) ? Strings::escapeTags(trim($_GET['album'])) : '');
|
$album = trim($_GET['album'] ?? '');
|
||||||
|
|
||||||
if ($a->argc > 1) {
|
if ($a->argc > 1) {
|
||||||
if (empty($_FILES['media'])) {
|
if (empty($_FILES['media'])) {
|
||||||
|
|
|
@ -77,8 +77,7 @@ var FileBrowser = {
|
||||||
|
|
||||||
$(".folders a, .path a").on("click", function(e){
|
$(".folders a, .path a").on("click", function(e){
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=minimal" + location['hash'];
|
location.href = baseurl + "/fbrowser/" + FileBrowser.type + "/" + encodeURIComponent(this.dataset.folder) + "?mode=minimal" + location['hash'];
|
||||||
location.href = url;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(".photo-album-photo-link").on('click', function(e){
|
$(".photo-album-photo-link").on('click', function(e){
|
||||||
|
|
|
@ -14,13 +14,17 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="path">
|
<div class="path">
|
||||||
{{foreach $path as $p}}<a href="#" data-folder="{{$p.0}}">{{$p.1}}</a>{{/foreach}}
|
{{foreach $path as $folder => $name}}
|
||||||
|
<a href="#" data-folder="{{$folder}}">{{$name}}</a>
|
||||||
|
{{/foreach}}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{{if $folders }}
|
{{if $folders }}
|
||||||
<div class="folders">
|
<div class="folders">
|
||||||
<ul>
|
<ul>
|
||||||
{{foreach $folders as $f}}<li><a href="#" data-folder="{{$f.0}}">{{$f.1}}</a></li>{{/foreach}}
|
{{foreach $folders as $folder}}
|
||||||
|
<li><a href="#" data-folder="{{$folder}}">{{$folder}}</a></li>
|
||||||
|
{{/foreach}}
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
|
|
|
@ -99,7 +99,7 @@ var FileBrowser = {
|
||||||
// Click on album link
|
// Click on album link
|
||||||
$(".fbrowser").on("click", ".folders a, .path a", function(e) {
|
$(".fbrowser").on("click", ".folders a, .path a", function(e) {
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + this.dataset.folder + "?mode=none&theme=frio";
|
var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + encodeURIComponent(this.dataset.folder) + "?mode=none&theme=frio";
|
||||||
FileBrowser.folder = this.dataset.folder;
|
FileBrowser.folder = this.dataset.folder;
|
||||||
|
|
||||||
FileBrowser.loadContent(url);
|
FileBrowser.loadContent(url);
|
||||||
|
@ -161,12 +161,11 @@ var FileBrowser = {
|
||||||
// Initialize the AjaxUpload for the upload buttons
|
// Initialize the AjaxUpload for the upload buttons
|
||||||
uploadButtons: function() {
|
uploadButtons: function() {
|
||||||
if ($("#upload-image").length) {
|
if ($("#upload-image").length) {
|
||||||
// To get the albumname we need to convert it from hex
|
|
||||||
var albumname = hex2bin(FileBrowser.folder);
|
|
||||||
//AjaxUpload for images
|
//AjaxUpload for images
|
||||||
var image_uploader = new window.AjaxUpload(
|
var image_uploader = new window.AjaxUpload(
|
||||||
'upload-image',
|
'upload-image',
|
||||||
{ action: 'wall_upload/' + FileBrowser.nickname + '?response=json&album=' + albumname,
|
{
|
||||||
|
action: 'wall_upload/' + FileBrowser.nickname + '?response=json&album=' + encodeURIComponent(FileBrowser.folder),
|
||||||
name: 'userfile',
|
name: 'userfile',
|
||||||
responseType: 'json',
|
responseType: 'json',
|
||||||
onSubmit: function(file, ext) {
|
onSubmit: function(file, ext) {
|
||||||
|
@ -183,9 +182,8 @@ var FileBrowser = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var url = baseurl + "/fbrowser/" + FileBrowser.type + "/" + FileBrowser.folder + "?mode=none&theme=frio";
|
|
||||||
// load new content to fbrowser window
|
// load new content to fbrowser window
|
||||||
FileBrowser.loadContent(url);
|
FileBrowser.loadContent(baseurl + '/fbrowser/' + FileBrowser.type + '/' + encodeURIComponent(FileBrowser.folder) + '?mode=none&theme=frio');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
|
|
||||||
{{* The breadcrumb navigation *}}
|
{{* The breadcrumb navigation *}}
|
||||||
<ol class="path breadcrumb" aria-label="Breadcrumb" role="navigation">
|
<ol class="path breadcrumb" aria-label="Breadcrumb" role="navigation">
|
||||||
{{foreach $path as $p}}<li role="presentation"><a href="#" data-folder="{{$p.0}}">{{$p.1}}</a></li>{{/foreach}}
|
{{foreach $path as $folder => $name}}
|
||||||
|
<li role="presentation"><a href="#" data-folder="{{$folder}}">{{$name}}</a></li>
|
||||||
|
{{/foreach}}
|
||||||
|
|
||||||
{{* Switch between image and file mode *}}
|
{{* Switch between image and file mode *}}
|
||||||
<div class="fbswitcher btn-group btn-group-xs pull-right" aria-label="Switch between image and file mode">
|
<div class="fbswitcher btn-group btn-group-xs pull-right" aria-label="Switch between image and file mode">
|
||||||
|
@ -24,9 +26,9 @@
|
||||||
{{if $folders }}
|
{{if $folders }}
|
||||||
<div class="folders media-left" role="navigation" aria-label="Album Navigation">
|
<div class="folders media-left" role="navigation" aria-label="Album Navigation">
|
||||||
<ul role="menu">
|
<ul role="menu">
|
||||||
{{foreach $folders as $f}}
|
{{foreach $folders as $folder}}
|
||||||
<li role="presentation">
|
<li role="presentation">
|
||||||
<a href="#" data-folder="{{$f.0}}" role="menuitem">{{$f.1}}</a>
|
<a href="#" data-folder="{{$folder}}" role="menuitem">{{$folder}}</a>
|
||||||
</li>
|
</li>
|
||||||
{{/foreach}}
|
{{/foreach}}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user