From b2f8c08c3c7b3d20a8d566ef17136dcfc0a6aadd Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 26 Aug 2021 02:56:37 -0700 Subject: [PATCH 1/8] hubzilla issue 1599 - get_author_zot() bypassing check for any living clones (leading to item import failure) if primary xchan/hubloc is both dead and never seen before. Previously it only checked for living clones if the primary was dead, but the dead state was only known if it had been seen before. --- Zotlabs/Lib/Libzot.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php index 77c614010..b64192b97 100644 --- a/Zotlabs/Lib/Libzot.php +++ b/Zotlabs/Lib/Libzot.php @@ -3004,21 +3004,26 @@ class Libzot { $desturl = $x['url']; + $found_primary = false; + $r1 = q("select hubloc_url, hubloc_updated, site_dead from hubloc left join site on hubloc_url = site_url where hubloc_guid = '%s' and hubloc_guid_sig = '%s' and hubloc_primary = 1 limit 1", dbesc($x['id']), dbesc($x['id_sig']) ); + if ($r1) { + $found_primary = true; + } $r2 = q("select xchan_hash from xchan where xchan_guid = '%s' and xchan_guid_sig = '%s' limit 1", dbesc($x['id']), dbesc($x['id_sig']) ); - $site_dead = false; + $primary_dead = false; if ($r1 && intval($r1[0]['site_dead'])) { - $site_dead = true; + $primary_dead = true; } // We have valid and somewhat fresh information. Always true if it is our own site. @@ -3036,8 +3041,8 @@ class Libzot { // cached entry and the identity is valid. It's just unreachable until they bring back their // server from the grave or create another clone elsewhere. - if ($site_dead) { - logger('dead site - ignoring', LOGGER_DEBUG,LOG_INFO); + if ($primary_dead || ! $found_primary) { + logger('dead or site - ignoring', LOGGER_DEBUG,LOG_INFO); $r = q("select hubloc_id_url from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and site_dead = 0", From db5ed04b9c71cdac463b48b950afaa39269a30a7 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 26 Aug 2021 03:05:49 -0700 Subject: [PATCH 2/8] revision --- boot.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/boot.php b/boot.php index 82d439745..b69aba04c 100755 --- a/boot.php +++ b/boot.php @@ -17,7 +17,7 @@ use Zotlabs\Daemon\Run; * @brief This file defines some global constants and includes the central App class. */ -define ( 'STD_VERSION', '21.08.25' ); +define ( 'STD_VERSION', '21.08.26' ); define ( 'ZOT_REVISION', '10.0' ); define ( 'DB_UPDATE_VERSION', 1251 ); From bb8e1fc852973a309598be361c088653b31fc570 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 26 Aug 2021 14:27:31 -0700 Subject: [PATCH 3/8] fix the rendering for liking and boosting actors, which fixes profile likes from hubzilla and also I'll note that sites are now actors. --- Zotlabs/Lib/Activity.php | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 296acdf2d..89f15f325 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -2754,6 +2754,11 @@ class Activity { $obj_actor = ((isset($act->obj['actor'])) ? $act->obj['actor'] : $act->get_actor('attributedTo', $act->obj)); + // Actor records themselves do not have an actor or attributedTo + if ((! $obj_actor) && isset($act->obj['type']) && Activitystreams::is_an_actor($act->obj['type'])) { + $obj_actor = $act->obj; + } + // We already check for admin blocks of third-party objects when fetching them explicitly. // Repeat here just in case the entire object was supplied inline and did not require fetching @@ -2769,10 +2774,9 @@ class Activity { } } - // if the object is an actor, it is not really a response activity, so reset a couple of things + // if the object is an actor, it is not really a response activity, so reset it to a top level post if (ActivityStreams::is_an_actor($act->obj['type'])) { - $obj_actor = $act->actor; $s['parent_mid'] = $s['mid']; } @@ -2808,7 +2812,7 @@ class Activity { } if ($act->type === 'Announce') { - $content['content'] = sprintf( t('🔁 Repeated %1$s\'s %2$s'), $mention, $act->obj['type']); + $content['content'] = sprintf( t('🔁 Repeated %1$s\'s %2$s'), $mention, ((ActivityStreams::is_an_actor($act->obj['type'])) ? t('Profile') : $act->obj['type'])); } if ($act->type === 'emojiReaction') { From cb2b9c44de4657299eccfec13675894512d4a1ea Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 26 Aug 2021 14:44:47 -0700 Subject: [PATCH 4/8] add generator property to site actor record, update federation.md --- FEDERATION.md | 5 ++++- Zotlabs/Lib/Activity.php | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/FEDERATION.md b/FEDERATION.md index 8e0a84b9e..9cf2ac39a 100644 --- a/FEDERATION.md +++ b/FEDERATION.md @@ -56,7 +56,7 @@ Activity objects may include an 'expires' field; after which time they are remov Private Media -Private media MAY be accessed using OCAP or OpenWebAuth. Bearcaps are supported but not generated. +Private media MAY be accessed using OCAP or OpenWebAuth. Bearcaps are supported but not currently generated. Permission System @@ -105,3 +105,6 @@ Conversation Completion (2021-04-17) It's easy to fetch missing pieces of a conversation going "upstream", but there is no agreed-on method to fetch a complete conversation from the viewpoint of the origin actor and upstream fetching only provides a single conversation branch, rather than the entire tree. We provide 'context' as a URL to a collection containing the entire conversation (all known branches) as seen by its creator. This requires special treatment and is very similar to ostatus:conversation in that if context is present, it needs to be replicated in conversation descendants. We still support ostatus:conversation but usage is deprecated. We do not use 'replies' to achieve the same purposes because 'replies' only applies to direct descendants at any point in the conversation tree. +Site Actors + +(2021-08-25) An actor record of type 'Service' is now available from an ActivityStreams fetch of the domain root. This was discussed recently in the Socialhub as it may open some novel applications which involve communication with sites and site administators; and also provides a simple ActivityPub centric method for discovering very basic information about a site that doesn't involve platform-centric APIS. At present this is just a skeleton which will be filled in as we better define the ways we see it being used. diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 89f15f325..4ee01d62b 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -1724,7 +1724,9 @@ class Activity { 'type' => 'Image', 'url' => System::get_site_icon(), ]; - + + $ret['generator'] = [ 'type' => 'Application', 'name' => System::get_platform_name() ]; + $ret['url'] = z_root(); $ret['inbox'] = z_root() . '/sysinbox'; From 8f7a5d294731e3add7fa507f59f4309952d90fd9 Mon Sep 17 00:00:00 2001 From: nobody Date: Thu, 26 Aug 2021 22:15:24 -0700 Subject: [PATCH 5/8] defer updates if comments in progress --- Zotlabs/Lib/Activity.php | 28 ++++++++++++++++++++++++++-- Zotlabs/Lib/ActivityPub.php | 2 +- Zotlabs/Widget/Groups.php | 1 + boot.php | 12 ++++++++++++ include/xchan.php | 2 +- view/js/main.js | 11 +++++++---- 6 files changed, 48 insertions(+), 8 deletions(-) diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 89f15f325..9f0316a48 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -2265,7 +2265,7 @@ class Activity { } } - $xchan_type = (($person_obj['type'] === 'Group') ? 1 : 0); + $xchan_type = self::get_xchan_type($person_obj['type']); $about = ((isset($person_obj['summary'])) ? html2bbcode(purify_html($person_obj['summary'])) : EMPTY_STR); $p = q("select * from xchan where xchan_url = '%s' and xchan_network = 'zot6' limit 1", @@ -2275,7 +2275,10 @@ class Activity { set_xconfig($url,'system','protocols','zot6,activitypub'); } - // there is no standard way to represent an 'instance actor' but this will at least subdue the multiple pages of Mastodon and Pleroma instance actors in the directory. + // there is no standard way to represent an 'instance actor' but this will at least subdue the multiple + // pages of Mastodon and Pleroma instance actors in the directory. + // @TODO - (2021-08-27) remove this if they provide a non-person xchan_type + // once extended xchan_type directory filtering is implemented. $censored = ((strpos($profile,'instance_actor') || strpos($profile,'/internal/fetch')) ? 1 : 0); $r = q("select * from xchan where xchan_hash = '%s' limit 1", @@ -4082,6 +4085,24 @@ class Activity { return $auth; } + static function get_xchan_type($type) { + switch ($type) { + case 'Person': + return XCHAN_TYPE_PERSON; + case 'Group': + return XCHAN_TYPE_GROUP; + case 'Service': + return XCHAN_TYPE_SERVICE; + case 'Organization': + return XCHAN_TYPE_ORGANIZATION; + case 'Application': + return XCHAN_TYPE_APPLICATION; + default: + return XCHAN_TYPE_UNKNOWN; + } + } + + static function ap_schema() { return [ @@ -4117,4 +4138,7 @@ class Activity { } + + + } diff --git a/Zotlabs/Lib/ActivityPub.php b/Zotlabs/Lib/ActivityPub.php index 79215b33a..01dcddfad 100644 --- a/Zotlabs/Lib/ActivityPub.php +++ b/Zotlabs/Lib/ActivityPub.php @@ -294,7 +294,7 @@ class ActivityPub { $join_msg = null; - if (intval($x['recipient']['xchan_type']) === 1) { + if (intval($x['recipient']['xchan_type']) === XCHAN_TYPE_GROUP) { $join_msg = $msg; $join_msg['type'] = 'Join'; $join_msg['signature'] = LDSignatures::sign($join_msg,$x['sender']); diff --git a/Zotlabs/Widget/Groups.php b/Zotlabs/Widget/Groups.php index 949355163..391087067 100644 --- a/Zotlabs/Widget/Groups.php +++ b/Zotlabs/Widget/Groups.php @@ -55,6 +55,7 @@ class Groups { } } + // note: XCHAN_TYPE_GROUP = 1 $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_type = 1 ) " : " and xchan_type = 1 "); $r1 = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d and abook_pending = 0 and abook_ignored = 0 and abook_blocked = 0 and abook_archived = 0 $sql_extra order by xchan_name $limit ", diff --git a/boot.php b/boot.php index ebd7c23a6..9d48d9de0 100755 --- a/boot.php +++ b/boot.php @@ -93,6 +93,18 @@ define ( 'DIRECTORY_MODE_STANDALONE', 0x0100); // A detached (off the grid) hub define ( 'DIRECTORY_REALM', 'ZAP'); + +// Types of xchan records. These are a superset of ActivityStreams Actor types + +define ('XCHAN_TYPE_PERSON', 0); +define ('XCHAN_TYPE_GROUP', 1); +define ('XCHAN_TYPE_COLLECTION', 2); +define ('XCHAN_TYPE_SERVICE', 3); +define ('XCHAN_TYPE_ORGANIZATION', 4); +define ('XCHAN_TYPE_APPLICATION', 5); +define ('XCHAN_TYPE_UNKNOWN', 127); + + /** * * Image storage quality. Lower numbers save space at cost of image detail. diff --git a/include/xchan.php b/include/xchan.php index f4b9cbfd6..f45ef9e45 100644 --- a/include/xchan.php +++ b/include/xchan.php @@ -30,7 +30,7 @@ function xchan_store_lowlevel($arr) { 'xchan_censored' => ((array_key_exists('xchan_censored',$arr)) ? intval($arr['xchan_censored']) : 0), 'xchan_selfcensored' => ((array_key_exists('xchan_selfcensored',$arr)) ? intval($arr['xchan_selfcensored']) : 0), 'xchan_system' => ((array_key_exists('xchan_system',$arr)) ? intval($arr['xchan_system']) : 0), - 'xchan_type' => ((array_key_exists('xchan_type',$arr)) ? intval($arr['xchan_type']) : 0), + 'xchan_type' => ((array_key_exists('xchan_type',$arr)) ? intval($arr['xchan_type']) : XCHAN_TYPE_PERSON), 'xchan_deleted' => ((array_key_exists('xchan_deleted',$arr)) ? intval($arr['xchan_deleted']) : 0) ]; diff --git a/view/js/main.js b/view/js/main.js index 7313dd3c4..cd5320684 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -34,6 +34,7 @@ let orgHeight = 0; $.ajaxPrefilter(function( options, original_Options, jqXHR ) { options.async = true; }); +$.ajaxSetup({cache: false}); if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/ServiceWorker.js', { scope: '/' }).then(function(registration) { @@ -54,7 +55,6 @@ if(cache_uid !== localUser.toString()) { sessionStorage.setItem('uid', localUser.toString()); } -$.ajaxSetup({cache: false}); let region = 0; @@ -1006,19 +1006,22 @@ function updateInit() { function liveUpdate(notify_id) { let origHeight = 0; + let expanded = $('.comment-edit-text.expanded'); + if(typeof profile_uid === 'undefined') profile_uid = false; /* Should probably be unified with channelId defined in head.tpl */ - if((src === null) || (stopped) || (! profile_uid)) { $('.like-rotator').hide(); return; } + if((src === null) || (! profile_uid)) { $('.like-rotator').hide(); return; } - if(in_progress || mediaPlaying) { + if(in_progress || mediaPlaying || expanded.length || stopped) { + console.log('liveUpdate: deferred'); if(livetime) { clearTimeout(livetime); } livetime = setTimeout(liveUpdate, 10000); return; } - + console.log('liveUpdate'); if(timer) clearTimeout(timer); From 80d1b176de2ef2cbae472f6441d488ff712aeecb Mon Sep 17 00:00:00 2001 From: nobody Date: Fri, 27 Aug 2021 17:37:32 -0700 Subject: [PATCH 6/8] link files and photos views --- Zotlabs/Module/Photos.php | 19 +++++++++++++++---- Zotlabs/Storage/BasicAuth.php | 2 +- Zotlabs/Storage/Browser.php | 4 ++++ include/attach.php | 28 +++++++++++++++++++--------- include/photos.php | 1 - view/js/main.js | 3 +++ view/tpl/cloud_header.tpl | 3 +++ view/tpl/photo_album.tpl | 1 + view/tpl/photos_recent.tpl | 1 + 9 files changed, 47 insertions(+), 15 deletions(-) diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php index 9a29f78a3..3ddbe635c 100644 --- a/Zotlabs/Module/Photos.php +++ b/Zotlabs/Module/Photos.php @@ -497,8 +497,6 @@ class Photos extends Controller { $matches = []; $partial = false; - - if(array_key_exists('HTTP_CONTENT_RANGE',$_SERVER)) { $pm = preg_match('/bytes (\d*)\-(\d*)\/(\d*)/',$_SERVER['HTTP_CONTENT_RANGE'],$matches); if($pm) { @@ -542,9 +540,18 @@ class Photos extends Controller { if(! $r['success']) { notice($r['message'] . EOL); + if (is_ajax()) { + killme(); + } goaway(z_root() . '/photos/' . App::$data['channel']['channel_address']); - } - + } + if ($r['success'] && ! intval($r['data']['is_photo'])) { + notice( sprintf( t('%s: Unsupported photo type. Saved as file.'), escape_tags($r['data']['filename']))); + } + if (is_ajax()) { + killme(); + } + goaway(z_root() . '/photos/' . App::$data['channel']['channel_address'] . '/album/' . $r['data']['folder']); } @@ -863,6 +870,8 @@ class Photos extends Controller { '$photos' => $photos, '$album' => $album, '$album_id' => $datum, + '$file_view' => t('View files'), + '$files_path' => z_root() . '/cloud/' . App::$data['channel']['channel_address'] . '/' . $x['display_path'], '$album_edit' => array(t('Edit Album'), $album_edit), '$can_post' => $can_post, '$upload' => array(t('Add Photos'), z_root() . '/photos/' . App::$data['channel']['channel_address'] . '/upload/' . $datum), @@ -1410,6 +1419,8 @@ class Photos extends Controller { $o .= replace_macros(get_markup_template('photos_recent.tpl'), [ '$title' => t('Recent Photos'), '$album_id' => bin2hex(t('Recent Photos')), + '$file_view' => t('View files'), + '$files_path' => z_root() . '/cloud/' . App::$data['channel']['channel_address'], '$can_post' => $can_post, '$upload' => t('Add Photos'), '$photos' => $photos, diff --git a/Zotlabs/Storage/BasicAuth.php b/Zotlabs/Storage/BasicAuth.php index 5e0edae85..52a8986f8 100644 --- a/Zotlabs/Storage/BasicAuth.php +++ b/Zotlabs/Storage/BasicAuth.php @@ -27,7 +27,7 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic { * * @var string|null $channel_name */ - protected $channel_name = null; + public $channel_name = null; /** * @brief channel_id of the current channel of the logged-in account. * diff --git a/Zotlabs/Storage/Browser.php b/Zotlabs/Storage/Browser.php index 8c81b5f1c..cdd85046a 100644 --- a/Zotlabs/Storage/Browser.php +++ b/Zotlabs/Storage/Browser.php @@ -202,12 +202,14 @@ class Browser extends DAV\Browser\Plugin { } } + $folderHash = ''; $parentHash = ''; $owner = $this->auth->owner_id; $splitPath = explode('/', $fullPath); if (count($splitPath) > 3) { for ($i = 3; $i < count($splitPath); $i++) { $attachName = urldecode($splitPath[$i]); + $folderHash = $parentHash; $attachHash = $this->findAttachHash($owner, $parentHash, $attachName); $parentHash = $attachHash; } @@ -302,6 +304,8 @@ class Browser extends DAV\Browser\Plugin { '$parentpath' => $parentpath, '$cpath' => bin2hex(App::$query_string), '$tiles' => intval($_SESSION['cloud_tiles']), + '$photo_view' => (($parentpath) ? t('View photos') : EMPTY_STR), + '$photos_path' => z_root() . '/photos/' . $this->auth->owner_nick . '/album/' . $folderHash, '$entries' => $f, '$name' => t('Name'), '$type' => t('Type'), diff --git a/include/attach.php b/include/attach.php index c44e984c3..c013affdd 100644 --- a/include/attach.php +++ b/include/attach.php @@ -653,23 +653,29 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $pathname = ''; - if($is_photo) { - if($newalbum) { + + // If we were called from the Photos module there is a slightly different mechanism + // for setting the parent path than if we were called from the Files (cloud) module. + + if ($source === 'photos') { + if ($newalbum) { $pathname = filepath_macro($newalbum); } - elseif(array_key_exists('folder',$arr)) { + elseif (array_key_exists('folder',$arr)) { $x = q("select filename from attach where hash = '%s' and uid = %d limit 1", dbesc($arr['folder']), intval($channel['channel_id']) ); - if($x) + if ($x) { $pathname = $x[0]['filename']; + } } else { $pathname = filepath_macro($album); } } - if(! $pathname) { + + if (! $pathname) { $pathname = filepath_macro($upload_path); } @@ -685,11 +691,11 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $direct = null; - if($pathname) { + if ($pathname) { $x = attach_mkdirp($channel, $observer_hash, $darr); $folder_hash = (($x['success']) ? $x['data']['hash'] : ''); $direct = (($x['success']) ? $x['data'] : null); - if((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) { + if ((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) { $str_contact_allow = $x['data']['allow_cid']; $str_group_allow = $x['data']['allow_gid']; $str_contact_deny = $x['data']['deny_cid']; @@ -928,8 +934,12 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { ); } - if($is_photo) { - + if ($is_photo) { + + // Call the photos library to generate all the standard thumbnails. + // This may fail if the image format isn't supported by the image library *or* memory is exhausted during the attempt. + // That's why this is called at the end of the upload when all the important work to store as a normal file has been accomplished. + $args = array( 'source' => $source, 'visible' => $visible, 'resource_id' => $hash, 'album' => $pathname, 'folder' => $folder_hash, 'os_syspath' => $os_basepath . $os_relpath, 'os_path' => $os_path, 'display_path' => $display_path, 'filename' => $filename, 'getimagesize' => $gis, 'directory' => $direct, 'options' => $options ); if($arr['contact_allow']) $args['contact_allow'] = $arr['contact_allow']; diff --git a/include/photos.php b/include/photos.php index f9653d15a..caaf4c335 100644 --- a/include/photos.php +++ b/include/photos.php @@ -100,7 +100,6 @@ function photo_upload($channel, $observer, $args) { $imagedata = @file_get_contents($tmp_name); $filesize = @filesize($args['os_syspath']); -// @unlink($tmp_name); } else { $imagedata = @file_get_contents($args['os_syspath']); diff --git a/view/js/main.js b/view/js/main.js index cd5320684..5e4f23f4e 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -1,3 +1,4 @@ + let src = null; let prev = null; let livetime = null; @@ -584,8 +585,10 @@ function notificationsUpdate(cached_data) { let pingCmd = 'ping' + ((localUser != 0) ? '?f=&uid=' + localUser : ''); if(cached_data !== undefined) { + handleNotifications(cached_data); } else { + $.get(pingCmd,function(data) { if(! data) return; diff --git a/view/tpl/cloud_header.tpl b/view/tpl/cloud_header.tpl index 0aae46f41..b9740bf5e 100644 --- a/view/tpl/cloud_header.tpl +++ b/view/tpl/cloud_header.tpl @@ -1,5 +1,8 @@
+ {{if $photo_view}} + + {{/if}} {{if $actionspanel}} diff --git a/view/tpl/photo_album.tpl b/view/tpl/photo_album.tpl index 988b439e8..5ac891299 100755 --- a/view/tpl/photo_album.tpl +++ b/view/tpl/photo_album.tpl @@ -1,6 +1,7 @@
+ {{if $order}} {{/if}} From e7a7cb021b83d43ae943e7668332d39da8ca0aa0 Mon Sep 17 00:00:00 2001 From: nobody Date: Fri, 27 Aug 2021 22:28:45 -0700 Subject: [PATCH 7/8] Clarify how the Create/Photo status message works in the case of multiple uploads --- Zotlabs/Module/Photos.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php index 3ddbe635c..a2f5b143c 100644 --- a/Zotlabs/Module/Photos.php +++ b/Zotlabs/Module/Photos.php @@ -719,7 +719,7 @@ class Photos extends Controller { '$nickname' => App::$data['channel']['channel_address'], '$newalbum_label' => t('Enter an album name'), '$newalbum_placeholder' => t('or select an existing album (doubleclick)'), - '$visible' => array('visible', t('Create a status post for this upload'), 0,'', array(t('No'), t('Yes')), 'onclick="showHideBodyTextarea();"'), + '$visible' => array('visible', t('Create a status post for this upload'), 0, t('If multiple files are selected, the message will be repeated for each photo'), array(t('No'), t('Yes')), 'onclick="showHideBodyTextarea();"'), '$caption' => array('description', t('Please briefly describe this photo for vision-impaired viewers')), 'title' => [ 'title', t('Title (optional)') ], '$body' => array('body', t('Your message (optional)'),'', 'This will only appear in the status post'), From 2ea178e0c32e72c676c79c483dfdda93e003d0c1 Mon Sep 17 00:00:00 2001 From: nobody Date: Sat, 28 Aug 2021 02:15:53 -0700 Subject: [PATCH 8/8] version --- boot.php | 2 +- include/attach.php | 9 +- util/messages.po | 426 +++++++++++++++++++++++---------------------- 3 files changed, 230 insertions(+), 207 deletions(-) diff --git a/boot.php b/boot.php index a6f83b36a..12ed11e71 100755 --- a/boot.php +++ b/boot.php @@ -17,7 +17,7 @@ use Zotlabs\Daemon\Run; * @brief This file defines some global constants and includes the central App class. */ -define ( 'STD_VERSION', '21.08.26' ); +define ( 'STD_VERSION', '21.08.28' ); define ( 'ZOT_REVISION', '10.0' ); define ( 'DB_UPDATE_VERSION', 1251 ); diff --git a/include/attach.php b/include/attach.php index c013affdd..f894e0c50 100644 --- a/include/attach.php +++ b/include/attach.php @@ -631,8 +631,13 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $def_extension = ''; $is_photo = 0; - $gis = @getimagesize($src); - logger('getimagesize: ' . print_r($gis,true), LOGGER_DATA); + $gis = false; + + if ($src) { + $gis = @getimagesize($src); + logger('getimagesize: ' . print_r($gis,true), LOGGER_DATA); + } + if(($gis) && in_array($gis[2], [ IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG, IMAGETYPE_WEBP ])) { $is_photo = 1; if($gis[2] === IMAGETYPE_GIF) diff --git a/util/messages.po b/util/messages.po index 1363c453e..da49d926c 100644 --- a/util/messages.po +++ b/util/messages.po @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: 21.08.25\n" +"Project-Id-Version: 21.08.28\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-24 23:03-0700\n" +"POT-Creation-Date: 2021-08-27 22:32-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -140,7 +140,7 @@ msgstr "" #: Zotlabs/Module/Card_edit.php:101 Zotlabs/Module/Editblock.php:118 #: Zotlabs/Module/Menu.php:178 Zotlabs/Module/Webpages.php:256 #: Zotlabs/Module/Settings/Oauth.php:150 Zotlabs/Module/Settings/Oauth2.php:196 -#: Zotlabs/Storage/Browser.php:311 Zotlabs/Widget/Cdav.php:138 +#: Zotlabs/Storage/Browser.php:315 Zotlabs/Widget/Cdav.php:138 #: Zotlabs/Widget/Cdav.php:175 include/menu.php:121 msgid "Edit" msgstr "" @@ -346,9 +346,9 @@ msgstr "" msgid "School/education:" msgstr "" -#: Zotlabs/Lib/Libprofile.php:578 Zotlabs/Lib/Activity.php:2785 -#: Zotlabs/Lib/Activity.php:2788 Zotlabs/Lib/Apps.php:364 -#: Zotlabs/Module/Profperm.php:117 +#: Zotlabs/Lib/Libprofile.php:578 Zotlabs/Lib/Activity.php:2797 +#: Zotlabs/Lib/Activity.php:2800 Zotlabs/Lib/Activity.php:2820 +#: Zotlabs/Lib/Apps.php:364 Zotlabs/Module/Profperm.php:117 msgid "Profile" msgstr "" @@ -426,8 +426,8 @@ msgstr "" #: Zotlabs/Web/WebServer.php:71 include/photos.php:34 include/items.php:3812 #: include/attach.php:157 include/attach.php:204 include/attach.php:280 #: include/attach.php:401 include/attach.php:415 include/attach.php:422 -#: include/attach.php:500 include/attach.php:1068 include/attach.php:1143 -#: include/attach.php:1312 +#: include/attach.php:500 include/attach.php:1078 include/attach.php:1153 +#: include/attach.php:1322 msgid "Permission denied." msgstr "" @@ -435,53 +435,53 @@ msgstr "" msgid "Room is full" msgstr "" -#: Zotlabs/Lib/Activity.php:2136 Zotlabs/Lib/Apps.php:1079 +#: Zotlabs/Lib/Activity.php:2141 Zotlabs/Lib/Apps.php:1079 #: Zotlabs/Lib/Apps.php:1168 Zotlabs/Module/Cdav.php:853 #: Zotlabs/Module/Cdav.php:854 Zotlabs/Module/Cdav.php:861 -#: Zotlabs/Module/Embedphotos.php:216 Zotlabs/Module/Photos.php:841 -#: Zotlabs/Module/Photos.php:1311 Zotlabs/Storage/Browser.php:179 +#: Zotlabs/Module/Embedphotos.php:216 Zotlabs/Module/Photos.php:848 +#: Zotlabs/Module/Photos.php:1320 Zotlabs/Storage/Browser.php:179 #: Zotlabs/Widget/Portfolio.php:95 Zotlabs/Widget/Album.php:88 #: include/conversation.php:1083 msgid "Unknown" msgstr "" -#: Zotlabs/Lib/Activity.php:2785 +#: Zotlabs/Lib/Activity.php:2797 #, php-format msgid "Likes %1$s's %2$s" msgstr "" -#: Zotlabs/Lib/Activity.php:2788 +#: Zotlabs/Lib/Activity.php:2800 #, php-format msgid "Doesn't like %1$s's %2$s" msgstr "" -#: Zotlabs/Lib/Activity.php:2794 +#: Zotlabs/Lib/Activity.php:2806 #, php-format msgid "Will attend %s's event" msgstr "" -#: Zotlabs/Lib/Activity.php:2797 +#: Zotlabs/Lib/Activity.php:2809 #, php-format msgid "Will not attend %s's event" msgstr "" -#: Zotlabs/Lib/Activity.php:2800 +#: Zotlabs/Lib/Activity.php:2812 #, php-format msgid "May attend %s's event" msgstr "" -#: Zotlabs/Lib/Activity.php:2803 +#: Zotlabs/Lib/Activity.php:2815 #, php-format msgid "May not attend %s's event" msgstr "" -#: Zotlabs/Lib/Activity.php:2808 Zotlabs/Lib/Share.php:122 +#: Zotlabs/Lib/Activity.php:2820 Zotlabs/Lib/Share.php:122 #: Zotlabs/Module/Share.php:103 include/items.php:3260 #, php-format msgid "🔁 Repeated %1$s's %2$s" msgstr "" -#: Zotlabs/Lib/Activity.php:3271 include/text.php:1588 include/text.php:2972 +#: Zotlabs/Lib/Activity.php:3284 include/text.php:1588 include/text.php:2972 #, php-format msgid "%1$s (%2$s)" msgstr "" @@ -872,12 +872,12 @@ msgstr "" #: Zotlabs/Module/Card_edit.php:131 Zotlabs/Module/Editblock.php:143 #: Zotlabs/Module/Webpages.php:258 Zotlabs/Module/Profiles.php:801 #: Zotlabs/Module/Settings/Oauth.php:151 Zotlabs/Module/Settings/Oauth2.php:197 -#: Zotlabs/Module/Photos.php:1244 Zotlabs/Storage/Browser.php:312 +#: Zotlabs/Module/Photos.php:1253 Zotlabs/Storage/Browser.php:316 #: include/conversation.php:608 include/conversation.php:656 msgid "Delete" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:167 Zotlabs/Storage/Browser.php:301 +#: Zotlabs/Lib/ThreadItem.php:167 Zotlabs/Storage/Browser.php:303 msgid "Admin Delete" msgstr "" @@ -906,11 +906,11 @@ msgid "Undo attendance" msgstr "" #: Zotlabs/Lib/ThreadItem.php:214 Zotlabs/Lib/ThreadItem.php:236 -#: Zotlabs/Module/Photos.php:1203 Zotlabs/Module/Photos.php:1214 +#: Zotlabs/Module/Photos.php:1212 Zotlabs/Module/Photos.php:1223 msgid "View all" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:219 Zotlabs/Module/Photos.php:1207 +#: Zotlabs/Lib/ThreadItem.php:219 Zotlabs/Module/Photos.php:1216 #: include/taxonomy.php:675 include/conversation.php:2094 msgctxt "noun" msgid "Like" @@ -919,12 +919,12 @@ msgstr[0] "" msgstr[1] "" #: Zotlabs/Lib/ThreadItem.php:222 Zotlabs/Lib/ThreadItem.php:467 -#: Zotlabs/Module/Photos.php:1325 include/conversation.php:2097 +#: Zotlabs/Module/Photos.php:1334 include/conversation.php:2097 msgctxt "noun" msgid "Likes" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:228 Zotlabs/Module/Photos.php:1211 +#: Zotlabs/Lib/ThreadItem.php:228 Zotlabs/Module/Photos.php:1220 #: include/conversation.php:2102 msgctxt "noun" msgid "Dislike" @@ -933,7 +933,7 @@ msgstr[0] "" msgstr[1] "" #: Zotlabs/Lib/ThreadItem.php:231 Zotlabs/Lib/ThreadItem.php:468 -#: Zotlabs/Module/Photos.php:1326 include/conversation.php:2105 +#: Zotlabs/Module/Photos.php:1335 include/conversation.php:2105 msgctxt "noun" msgid "Dislikes" msgstr "" @@ -958,19 +958,19 @@ msgstr "" msgid "Add Tag" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:292 Zotlabs/Module/Photos.php:1143 +#: Zotlabs/Lib/ThreadItem.php:292 Zotlabs/Module/Photos.php:1152 msgid "I like this" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:292 Zotlabs/Module/Photos.php:1147 +#: Zotlabs/Lib/ThreadItem.php:292 Zotlabs/Module/Photos.php:1156 msgid "Undo like" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:293 Zotlabs/Module/Photos.php:1146 +#: Zotlabs/Lib/ThreadItem.php:293 Zotlabs/Module/Photos.php:1155 msgid "I don't like this" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:293 Zotlabs/Module/Photos.php:1148 +#: Zotlabs/Lib/ThreadItem.php:293 Zotlabs/Module/Photos.php:1157 msgid "Undo dislike" msgstr "" @@ -1085,7 +1085,7 @@ msgid "Mark all seen" msgstr "" #: Zotlabs/Lib/ThreadItem.php:473 Zotlabs/Module/Settings/Channel.php:652 -#: Zotlabs/Module/Photos.php:1331 include/conversation.php:1478 +#: Zotlabs/Module/Photos.php:1340 include/conversation.php:1478 #: include/acl_selectors.php:153 msgid "Close" msgstr "" @@ -1094,7 +1094,7 @@ msgstr "" msgid "This is an unsaved preview" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:479 Zotlabs/Module/Photos.php:1150 +#: Zotlabs/Lib/ThreadItem.php:479 Zotlabs/Module/Photos.php:1159 #: include/conversation.php:712 msgid "Please wait" msgstr "" @@ -1104,13 +1104,13 @@ msgstr "" msgid "%s show all" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:887 Zotlabs/Module/Photos.php:1166 -#: Zotlabs/Module/Photos.php:1278 +#: Zotlabs/Lib/ThreadItem.php:887 Zotlabs/Module/Photos.php:1175 +#: Zotlabs/Module/Photos.php:1287 msgid "This is you" msgstr "" -#: Zotlabs/Lib/ThreadItem.php:889 Zotlabs/Module/Photos.php:1168 -#: Zotlabs/Module/Photos.php:1280 include/js_strings.php:6 +#: Zotlabs/Lib/ThreadItem.php:889 Zotlabs/Module/Photos.php:1177 +#: Zotlabs/Module/Photos.php:1289 include/js_strings.php:6 msgid "Comment" msgstr "" @@ -1144,8 +1144,8 @@ msgstr "" #: Zotlabs/Module/Settings/Features.php:59 #: Zotlabs/Module/Settings/Tokens.php:296 #: Zotlabs/Module/Settings/Channel.php:593 Zotlabs/Module/Sources.php:123 -#: Zotlabs/Module/Sources.php:160 Zotlabs/Module/Photos.php:1110 -#: Zotlabs/Module/Photos.php:1169 Zotlabs/Module/Photos.php:1281 +#: Zotlabs/Module/Sources.php:160 Zotlabs/Module/Photos.php:1119 +#: Zotlabs/Module/Photos.php:1178 Zotlabs/Module/Photos.php:1290 #: Zotlabs/Module/Import.php:703 Zotlabs/Module/Xchan.php:15 #: Zotlabs/Module/Zotfinger.php:25 Zotlabs/Module/Superblock.php:248 #: Zotlabs/Module/Content_filter.php:66 Zotlabs/Widget/Eventstools.php:16 @@ -1198,7 +1198,7 @@ msgid "Video" msgstr "" #: Zotlabs/Lib/ThreadItem.php:901 Zotlabs/Module/Events.php:509 -#: Zotlabs/Module/Webpages.php:263 Zotlabs/Module/Photos.php:1170 +#: Zotlabs/Module/Webpages.php:263 Zotlabs/Module/Photos.php:1179 #: include/conversation.php:1285 msgid "Preview" msgstr "" @@ -1405,7 +1405,7 @@ msgid "Features" msgstr "" #: Zotlabs/Lib/Apps.php:335 Zotlabs/Module/Fbrowser.php:82 -#: Zotlabs/Storage/Browser.php:293 include/nav.php:425 +#: Zotlabs/Storage/Browser.php:295 include/nav.php:425 #: include/conversation.php:1954 msgid "Files" msgstr "" @@ -1444,7 +1444,7 @@ msgstr "" msgid "Language" msgstr "" -#: Zotlabs/Lib/Apps.php:345 boot.php:1696 include/nav.php:124 +#: Zotlabs/Lib/Apps.php:345 boot.php:1708 include/nav.php:124 #: include/nav.php:128 msgid "Login" msgstr "" @@ -1676,9 +1676,9 @@ msgstr "" #: Zotlabs/Module/Zot_probe.php:17 Zotlabs/Module/Ap_probe.php:20 #: Zotlabs/Module/Settings/Display.php:103 #: Zotlabs/Module/Settings/Channel.php:374 Zotlabs/Module/Sources.php:122 -#: Zotlabs/Module/Sources.php:157 Zotlabs/Module/Photos.php:715 +#: Zotlabs/Module/Sources.php:157 Zotlabs/Module/Photos.php:722 #: Zotlabs/Module/Import.php:692 Zotlabs/Module/Import.php:696 -#: Zotlabs/Module/Import.php:697 Zotlabs/Storage/Browser.php:428 boot.php:1701 +#: Zotlabs/Module/Import.php:697 Zotlabs/Storage/Browser.php:432 boot.php:1713 #: extend/addon/a/zotpost/Mod_zotpost.php:77 #: extend/addon/a/content_import/Mod_content_import.php:137 #: extend/addon/a/content_import/Mod_content_import.php:138 @@ -1701,9 +1701,9 @@ msgstr "" #: Zotlabs/Module/Zot_probe.php:17 Zotlabs/Module/Ap_probe.php:20 #: Zotlabs/Module/Settings/Display.php:103 #: Zotlabs/Module/Settings/Channel.php:374 Zotlabs/Module/Sources.php:122 -#: Zotlabs/Module/Sources.php:157 Zotlabs/Module/Photos.php:715 +#: Zotlabs/Module/Sources.php:157 Zotlabs/Module/Photos.php:722 #: Zotlabs/Module/Import.php:692 Zotlabs/Module/Import.php:696 -#: Zotlabs/Module/Import.php:697 Zotlabs/Storage/Browser.php:428 boot.php:1701 +#: Zotlabs/Module/Import.php:697 Zotlabs/Storage/Browser.php:432 boot.php:1713 #: extend/addon/a/zotpost/Mod_zotpost.php:77 #: extend/addon/a/content_import/Mod_content_import.php:137 #: extend/addon/a/content_import/Mod_content_import.php:138 @@ -2051,7 +2051,7 @@ msgstr "" #: Zotlabs/Module/Settings/Oauth.php:90 Zotlabs/Module/Settings/Oauth.php:116 #: Zotlabs/Module/Settings/Oauth2.php:107 #: Zotlabs/Module/Settings/Oauth2.php:136 Zotlabs/Module/Sharedwithme.php:109 -#: Zotlabs/Storage/Browser.php:306 Zotlabs/Widget/Activity_filter.php:277 +#: Zotlabs/Storage/Browser.php:310 Zotlabs/Widget/Activity_filter.php:277 msgid "Name" msgstr "" @@ -2094,7 +2094,7 @@ msgstr "" #: Zotlabs/Module/Admin/Cover_photo.php:208 #: Zotlabs/Module/Admin/Profile_photo.php:188 #: Zotlabs/Module/Cover_photo.php:212 Zotlabs/Module/Profile_photo.php:225 -#: include/photos.php:199 +#: include/photos.php:198 msgid "Unable to process image" msgstr "" @@ -2130,8 +2130,8 @@ msgstr "" #: Zotlabs/Module/Admin/Cover_photo.php:374 #: Zotlabs/Module/Admin/Profile_photo.php:465 #: Zotlabs/Module/Cover_photo.php:425 Zotlabs/Module/Embedphotos.php:227 -#: Zotlabs/Module/Profile_photo.php:505 Zotlabs/Module/Photos.php:731 -#: Zotlabs/Storage/Browser.php:415 Zotlabs/Widget/Portfolio.php:110 +#: Zotlabs/Module/Profile_photo.php:505 Zotlabs/Module/Photos.php:738 +#: Zotlabs/Storage/Browser.php:419 Zotlabs/Widget/Portfolio.php:110 #: Zotlabs/Widget/Cdav.php:146 Zotlabs/Widget/Cdav.php:182 #: Zotlabs/Widget/Album.php:101 msgid "Upload" @@ -2506,7 +2506,7 @@ msgstr "" msgid "Switch branch" msgstr "" -#: Zotlabs/Module/Admin/Addons.php:456 Zotlabs/Module/Photos.php:1046 +#: Zotlabs/Module/Admin/Addons.php:456 Zotlabs/Module/Photos.php:1055 #: Zotlabs/Module/Tagrm.php:137 Zotlabs/Module/Superblock.php:227 #: Zotlabs/Module/Superblock.php:244 msgid "Remove" @@ -3428,14 +3428,14 @@ msgstr "" #: Zotlabs/Module/Cal.php:344 Zotlabs/Module/Cal.php:351 #: Zotlabs/Module/Cdav.php:1032 Zotlabs/Module/Events.php:728 -#: Zotlabs/Module/Events.php:737 Zotlabs/Module/Photos.php:995 +#: Zotlabs/Module/Events.php:737 Zotlabs/Module/Photos.php:1004 msgid "Previous" msgstr "" #: Zotlabs/Module/Cal.php:345 Zotlabs/Module/Cal.php:352 #: Zotlabs/Module/Cdav.php:1033 Zotlabs/Module/Events.php:729 #: Zotlabs/Module/Events.php:738 Zotlabs/Module/Setup.php:284 -#: Zotlabs/Module/Photos.php:1004 +#: Zotlabs/Module/Photos.php:1013 msgid "Next" msgstr "" @@ -3557,7 +3557,7 @@ msgstr "" #: Zotlabs/Module/Connedit.php:867 Zotlabs/Module/Layouts.php:191 #: Zotlabs/Module/Menu.php:184 Zotlabs/Module/New_channel.php:196 #: Zotlabs/Module/Webpages.php:255 Zotlabs/Module/Profiles.php:799 -#: Zotlabs/Storage/Browser.php:297 Zotlabs/Storage/Browser.php:413 +#: Zotlabs/Storage/Browser.php:299 Zotlabs/Storage/Browser.php:417 #: Zotlabs/Widget/Cdav.php:140 Zotlabs/Widget/Cdav.php:178 msgid "Create" msgstr "" @@ -3587,7 +3587,7 @@ msgid "Edited" msgstr "" #: Zotlabs/Module/Blocks.php:165 Zotlabs/Module/Layouts.php:200 -#: Zotlabs/Module/Webpages.php:257 Zotlabs/Module/Photos.php:1149 +#: Zotlabs/Module/Webpages.php:257 Zotlabs/Module/Photos.php:1158 #: Zotlabs/Widget/Cdav.php:136 include/conversation.php:1380 msgid "Share" msgstr "" @@ -4075,8 +4075,8 @@ msgstr "" #: Zotlabs/Module/Connedit.php:632 Zotlabs/Module/Filestorage.php:226 #: Zotlabs/Module/Thing.php:338 Zotlabs/Module/Thing.php:391 -#: Zotlabs/Module/Chat.php:233 Zotlabs/Module/Photos.php:721 -#: Zotlabs/Module/Photos.php:1099 +#: Zotlabs/Module/Chat.php:233 Zotlabs/Module/Photos.php:728 +#: Zotlabs/Module/Photos.php:1108 #: extend/addon/a/flashcards/Mod_Flashcards.php:254 #: extend/addon/a/faces/Mod_Faces.php:172 include/acl_selectors.php:151 msgid "Permissions" @@ -4645,7 +4645,7 @@ msgstr "" #: Zotlabs/Module/Directory.php:93 Zotlabs/Module/Directory.php:100 #: Zotlabs/Module/Display.php:35 Zotlabs/Module/Search.php:30 -#: Zotlabs/Module/Photos.php:563 Zotlabs/Module/Viewconnections.php:27 +#: Zotlabs/Module/Photos.php:570 Zotlabs/Module/Viewconnections.php:27 msgid "Public access denied." msgstr "" @@ -4982,13 +4982,13 @@ msgstr "" msgid "Image/photo" msgstr "" -#: Zotlabs/Module/Embedphotos.php:210 Zotlabs/Module/Photos.php:835 -#: Zotlabs/Module/Photos.php:1385 Zotlabs/Widget/Portfolio.php:87 +#: Zotlabs/Module/Embedphotos.php:210 Zotlabs/Module/Photos.php:842 +#: Zotlabs/Module/Photos.php:1394 Zotlabs/Widget/Portfolio.php:87 #: Zotlabs/Widget/Album.php:82 msgid "View Photo" msgstr "" -#: Zotlabs/Module/Embedphotos.php:225 Zotlabs/Module/Photos.php:866 +#: Zotlabs/Module/Embedphotos.php:225 Zotlabs/Module/Photos.php:875 #: Zotlabs/Widget/Portfolio.php:108 Zotlabs/Widget/Album.php:99 msgid "Edit Album" msgstr "" @@ -5115,7 +5115,7 @@ msgid "" "registration." msgstr "" -#: Zotlabs/Module/Register.php:299 Zotlabs/Module/Sites.php:51 boot.php:1676 +#: Zotlabs/Module/Register.php:299 Zotlabs/Module/Sites.php:51 boot.php:1688 #: include/nav.php:162 msgid "Register" msgstr "" @@ -5292,7 +5292,7 @@ msgstr "" msgid "Show URL to this file" msgstr "" -#: Zotlabs/Module/Filestorage.php:244 Zotlabs/Storage/Browser.php:428 +#: Zotlabs/Module/Filestorage.php:244 Zotlabs/Storage/Browser.php:432 msgid "Show in your contacts shared folder" msgstr "" @@ -6045,7 +6045,7 @@ msgid "This post was published on the home page of %s." msgstr "" #: Zotlabs/Module/Card_edit.php:119 Zotlabs/Module/Editblock.php:133 -#: Zotlabs/Module/Photos.php:717 Zotlabs/Module/Photos.php:1096 +#: Zotlabs/Module/Photos.php:724 Zotlabs/Module/Photos.php:1105 #: include/conversation.php:1431 msgid "Title (optional)" msgstr "" @@ -6341,7 +6341,7 @@ msgid "" "Password reset failed." msgstr "" -#: Zotlabs/Module/Lostpass.php:91 boot.php:1705 +#: Zotlabs/Module/Lostpass.php:91 boot.php:1717 msgid "Password Reset" msgstr "" @@ -7568,7 +7568,7 @@ msgstr "" msgid "Authentication failed." msgstr "" -#: Zotlabs/Module/Rmagic.php:80 boot.php:1697 include/channel.php:1951 +#: Zotlabs/Module/Rmagic.php:80 boot.php:1709 include/channel.php:1951 msgid "Remote Authentication" msgstr "" @@ -8569,12 +8569,12 @@ msgstr "" msgid "NEW" msgstr "" -#: Zotlabs/Module/Sharedwithme.php:111 Zotlabs/Storage/Browser.php:308 +#: Zotlabs/Module/Sharedwithme.php:111 Zotlabs/Storage/Browser.php:312 #: include/text.php:1446 msgid "Size" msgstr "" -#: Zotlabs/Module/Sharedwithme.php:112 Zotlabs/Storage/Browser.php:309 +#: Zotlabs/Module/Sharedwithme.php:112 Zotlabs/Storage/Browser.php:313 msgid "Last Modified" msgstr "" @@ -8771,7 +8771,7 @@ msgstr "" msgid "Delete Album" msgstr "" -#: Zotlabs/Module/Photos.php:163 Zotlabs/Module/Photos.php:1111 +#: Zotlabs/Module/Photos.php:163 Zotlabs/Module/Photos.php:1120 msgid "Delete Photo" msgstr "" @@ -8779,164 +8779,178 @@ msgstr "" msgid "linked item not found." msgstr "" -#: Zotlabs/Module/Photos.php:571 +#: Zotlabs/Module/Photos.php:549 +#, php-format +msgid "%s: Unsupported photo type. Saved as file." +msgstr "" + +#: Zotlabs/Module/Photos.php:578 msgid "No photos selected" msgstr "" -#: Zotlabs/Module/Photos.php:621 +#: Zotlabs/Module/Photos.php:628 msgid "Access to this item is restricted." msgstr "" -#: Zotlabs/Module/Photos.php:664 +#: Zotlabs/Module/Photos.php:671 #, php-format msgid "%1$.2f MB of %2$.2f MB photo storage used." msgstr "" -#: Zotlabs/Module/Photos.php:667 +#: Zotlabs/Module/Photos.php:674 #, php-format msgid "%1$.2f MB photo storage used." msgstr "" -#: Zotlabs/Module/Photos.php:709 +#: Zotlabs/Module/Photos.php:716 msgid "Upload Photos" msgstr "" -#: Zotlabs/Module/Photos.php:713 +#: Zotlabs/Module/Photos.php:720 msgid "Enter an album name" msgstr "" -#: Zotlabs/Module/Photos.php:714 +#: Zotlabs/Module/Photos.php:721 msgid "or select an existing album (doubleclick)" msgstr "" -#: Zotlabs/Module/Photos.php:715 +#: Zotlabs/Module/Photos.php:722 msgid "Create a status post for this upload" msgstr "" -#: Zotlabs/Module/Photos.php:716 Zotlabs/Module/Photos.php:1095 +#: Zotlabs/Module/Photos.php:722 +msgid "" +"If multiple files are selected, the message will be repeated for each photo" +msgstr "" + +#: Zotlabs/Module/Photos.php:723 Zotlabs/Module/Photos.php:1104 msgid "Please briefly describe this photo for vision-impaired viewers" msgstr "" -#: Zotlabs/Module/Photos.php:718 Zotlabs/Module/Photos.php:1097 +#: Zotlabs/Module/Photos.php:725 Zotlabs/Module/Photos.php:1106 msgid "Your message (optional)" msgstr "" -#: Zotlabs/Module/Photos.php:807 +#: Zotlabs/Module/Photos.php:814 msgid "Date descending" msgstr "" -#: Zotlabs/Module/Photos.php:808 +#: Zotlabs/Module/Photos.php:815 msgid "Date ascending" msgstr "" -#: Zotlabs/Module/Photos.php:809 +#: Zotlabs/Module/Photos.php:816 msgid "Name ascending" msgstr "" -#: Zotlabs/Module/Photos.php:868 Zotlabs/Module/Photos.php:1414 +#: Zotlabs/Module/Photos.php:873 Zotlabs/Module/Photos.php:1422 +msgid "View files" +msgstr "" + +#: Zotlabs/Module/Photos.php:877 Zotlabs/Module/Photos.php:1425 msgid "Add Photos" msgstr "" -#: Zotlabs/Module/Photos.php:870 +#: Zotlabs/Module/Photos.php:879 msgid "Sort" msgstr "" -#: Zotlabs/Module/Photos.php:914 +#: Zotlabs/Module/Photos.php:923 msgid "Permission denied. Access to this item may be restricted." msgstr "" -#: Zotlabs/Module/Photos.php:916 +#: Zotlabs/Module/Photos.php:925 msgid "Photo not available" msgstr "" -#: Zotlabs/Module/Photos.php:976 +#: Zotlabs/Module/Photos.php:985 msgid "Use as profile photo" msgstr "" -#: Zotlabs/Module/Photos.php:977 +#: Zotlabs/Module/Photos.php:986 msgid "Use as cover photo" msgstr "" -#: Zotlabs/Module/Photos.php:984 +#: Zotlabs/Module/Photos.php:993 msgid "Private Photo" msgstr "" -#: Zotlabs/Module/Photos.php:999 +#: Zotlabs/Module/Photos.php:1008 msgid "View Full Size" msgstr "" -#: Zotlabs/Module/Photos.php:1086 +#: Zotlabs/Module/Photos.php:1095 msgid "Edit photo" msgstr "" -#: Zotlabs/Module/Photos.php:1090 +#: Zotlabs/Module/Photos.php:1099 msgid "Move photo to album" msgstr "" -#: Zotlabs/Module/Photos.php:1091 +#: Zotlabs/Module/Photos.php:1100 msgid "Enter a new album name" msgstr "" -#: Zotlabs/Module/Photos.php:1092 +#: Zotlabs/Module/Photos.php:1101 msgid "or select an existing one (doubleclick)" msgstr "" -#: Zotlabs/Module/Photos.php:1097 +#: Zotlabs/Module/Photos.php:1106 msgid "" "This will only appear in the optional status post attached to this photo" msgstr "" -#: Zotlabs/Module/Photos.php:1098 +#: Zotlabs/Module/Photos.php:1107 msgid "Add a Tag" msgstr "" -#: Zotlabs/Module/Photos.php:1106 +#: Zotlabs/Module/Photos.php:1115 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com" msgstr "" -#: Zotlabs/Module/Photos.php:1109 +#: Zotlabs/Module/Photos.php:1118 msgid "Flag as adult in album view" msgstr "" -#: Zotlabs/Module/Photos.php:1185 include/conversation.php:530 +#: Zotlabs/Module/Photos.php:1194 include/conversation.php:530 msgctxt "title" msgid "Likes" msgstr "" -#: Zotlabs/Module/Photos.php:1186 include/conversation.php:531 +#: Zotlabs/Module/Photos.php:1195 include/conversation.php:531 msgctxt "title" msgid "Dislikes" msgstr "" -#: Zotlabs/Module/Photos.php:1187 include/conversation.php:532 +#: Zotlabs/Module/Photos.php:1196 include/conversation.php:532 msgctxt "title" msgid "Attending" msgstr "" -#: Zotlabs/Module/Photos.php:1188 include/conversation.php:533 +#: Zotlabs/Module/Photos.php:1197 include/conversation.php:533 msgctxt "title" msgid "Not attending" msgstr "" -#: Zotlabs/Module/Photos.php:1189 include/conversation.php:534 +#: Zotlabs/Module/Photos.php:1198 include/conversation.php:534 msgctxt "title" msgid "Might attend" msgstr "" -#: Zotlabs/Module/Photos.php:1302 +#: Zotlabs/Module/Photos.php:1311 msgid "Photo Tools" msgstr "" -#: Zotlabs/Module/Photos.php:1312 +#: Zotlabs/Module/Photos.php:1321 msgid "In This Photo:" msgstr "" -#: Zotlabs/Module/Photos.php:1317 +#: Zotlabs/Module/Photos.php:1326 msgid "Map" msgstr "" -#: Zotlabs/Module/Photos.php:1397 Zotlabs/Module/Photos.php:1411 -#: Zotlabs/Module/Photos.php:1412 include/photos.php:739 +#: Zotlabs/Module/Photos.php:1406 Zotlabs/Module/Photos.php:1420 +#: Zotlabs/Module/Photos.php:1421 include/photos.php:738 msgid "Recent Photos" msgstr "" @@ -9231,7 +9245,7 @@ msgid "" "possibly other common richtext constructs." msgstr "" -#: Zotlabs/Storage/Browser.php:117 Zotlabs/Storage/Browser.php:310 +#: Zotlabs/Storage/Browser.php:117 Zotlabs/Storage/Browser.php:314 msgid "parent" msgstr "" @@ -9251,45 +9265,49 @@ msgstr "" msgid "Schedule Outbox" msgstr "" -#: Zotlabs/Storage/Browser.php:294 +#: Zotlabs/Storage/Browser.php:296 msgid "Total" msgstr "" -#: Zotlabs/Storage/Browser.php:296 +#: Zotlabs/Storage/Browser.php:298 msgid "Shared" msgstr "" -#: Zotlabs/Storage/Browser.php:298 +#: Zotlabs/Storage/Browser.php:300 msgid "Add Files" msgstr "" #: Zotlabs/Storage/Browser.php:307 -msgid "Type" +msgid "View photos" msgstr "" -#: Zotlabs/Storage/Browser.php:385 -#, php-format -msgid "You are using %1$s of your available file storage." +#: Zotlabs/Storage/Browser.php:311 +msgid "Type" msgstr "" #: Zotlabs/Storage/Browser.php:389 #, php-format +msgid "You are using %1$s of your available file storage." +msgstr "" + +#: Zotlabs/Storage/Browser.php:393 +#, php-format msgid "You are using %1$s of %2$s available file storage. (%3$s%)" msgstr "" -#: Zotlabs/Storage/Browser.php:400 +#: Zotlabs/Storage/Browser.php:404 msgid "WARNING:" msgstr "" -#: Zotlabs/Storage/Browser.php:412 +#: Zotlabs/Storage/Browser.php:416 msgid "Create new folder" msgstr "" -#: Zotlabs/Storage/Browser.php:414 +#: Zotlabs/Storage/Browser.php:418 msgid "Upload file" msgstr "" -#: Zotlabs/Storage/Browser.php:427 +#: Zotlabs/Storage/Browser.php:431 msgid "Drop files here to immediately upload" msgstr "" @@ -9584,7 +9602,7 @@ msgid "Mark all notices seen" msgstr "" #: Zotlabs/Widget/Notifications.php:105 Zotlabs/Widget/Notifications.php:106 -#: Zotlabs/Widget/Activity_filter.php:187 Zotlabs/Widget/Groups.php:107 +#: Zotlabs/Widget/Activity_filter.php:187 Zotlabs/Widget/Groups.php:108 msgid "Groups" msgstr "" @@ -9910,49 +9928,49 @@ msgstr "" msgid "Default Profile" msgstr "" -#: boot.php:1675 +#: boot.php:1687 msgid "Create an account to access services and applications" msgstr "" -#: boot.php:1695 include/nav.php:109 include/nav.php:138 include/nav.php:157 +#: boot.php:1707 include/nav.php:109 include/nav.php:138 include/nav.php:157 msgid "Logout" msgstr "" -#: boot.php:1699 +#: boot.php:1711 msgid "Login/Email" msgstr "" -#: boot.php:1700 +#: boot.php:1712 msgid "Password" msgstr "" -#: boot.php:1701 +#: boot.php:1713 msgid "Remember me" msgstr "" -#: boot.php:1704 +#: boot.php:1716 msgid "Forgot your password?" msgstr "" -#: boot.php:2480 +#: boot.php:2492 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "" -#: boot.php:2485 +#: boot.php:2497 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: boot.php:2529 +#: boot.php:2541 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "" -#: boot.php:2534 +#: boot.php:2546 msgid "Cron/Scheduled tasks not running." msgstr "" -#: boot.php:2535 include/datetime.php:240 +#: boot.php:2547 include/datetime.php:240 msgid "never" msgstr "" @@ -10589,34 +10607,34 @@ msgstr "" msgid "Login failed." msgstr "" -#: include/photos.php:154 +#: include/photos.php:153 #, php-format msgid "Image exceeds website size limit of %lu bytes" msgstr "" -#: include/photos.php:165 +#: include/photos.php:164 msgid "Image file is empty." msgstr "" -#: include/photos.php:344 +#: include/photos.php:343 msgid "Photo storage failed." msgstr "" -#: include/photos.php:393 +#: include/photos.php:392 msgid "a new photo" msgstr "" -#: include/photos.php:397 +#: include/photos.php:396 #, php-format msgctxt "photo_upload" msgid "%1$s posted %2$s to %3$s" msgstr "" -#: include/photos.php:738 include/nav.php:420 include/conversation.php:1949 +#: include/photos.php:737 include/nav.php:420 include/conversation.php:1949 msgid "Photo Albums" msgstr "" -#: include/photos.php:743 +#: include/photos.php:742 msgid "Upload New Photos" msgstr "" @@ -11482,6 +11500,72 @@ msgctxt "edit_activity" msgid "Comment" msgstr "" +#: include/attach.php:275 include/attach.php:396 +msgid "Item was not found." +msgstr "" + +#: include/attach.php:292 +msgid "Unknown error." +msgstr "" + +#: include/attach.php:585 +msgid "No source file." +msgstr "" + +#: include/attach.php:607 +msgid "Cannot locate file to replace" +msgstr "" + +#: include/attach.php:626 +msgid "Cannot locate file to revise/update" +msgstr "" + +#: include/attach.php:776 +#, php-format +msgid "File exceeds size limit of %d" +msgstr "" + +#: include/attach.php:797 +#, php-format +msgid "You have reached your limit of %1$.0f Mbytes attachment storage." +msgstr "" + +#: include/attach.php:988 +msgid "File upload failed. Possible system limit or action terminated." +msgstr "" + +#: include/attach.php:1017 +msgid "Stored file could not be verified. Upload failed." +msgstr "" + +#: include/attach.php:1092 include/attach.php:1109 +msgid "Path not available." +msgstr "" + +#: include/attach.php:1158 include/attach.php:1327 +msgid "Empty pathname" +msgstr "" + +#: include/attach.php:1184 +msgid "duplicate filename or path" +msgstr "" + +#: include/attach.php:1209 +msgid "Path not found." +msgstr "" + +#: include/attach.php:1280 +msgid "mkdir failed." +msgstr "" + +#: include/attach.php:1284 +msgid "database storage failed." +msgstr "" + +#: include/attach.php:1333 +msgid "Empty path" +msgstr "" + #: include/security.php:621 msgid "" "The form security token was not correct. This probably happened because the " @@ -12278,72 +12362,6 @@ msgstr "" msgid "$1 wrote:" msgstr "" -#: include/attach.php:275 include/attach.php:396 -msgid "Item was not found." -msgstr "" - -#: include/attach.php:292 -msgid "Unknown error." -msgstr "" - -#: include/attach.php:585 -msgid "No source file." -msgstr "" - -#: include/attach.php:607 -msgid "Cannot locate file to replace" -msgstr "" - -#: include/attach.php:626 -msgid "Cannot locate file to revise/update" -msgstr "" - -#: include/attach.php:770 -#, php-format -msgid "File exceeds size limit of %d" -msgstr "" - -#: include/attach.php:791 -#, php-format -msgid "You have reached your limit of %1$.0f Mbytes attachment storage." -msgstr "" - -#: include/attach.php:978 -msgid "File upload failed. Possible system limit or action terminated." -msgstr "" - -#: include/attach.php:1007 -msgid "Stored file could not be verified. Upload failed." -msgstr "" - -#: include/attach.php:1082 include/attach.php:1099 -msgid "Path not available." -msgstr "" - -#: include/attach.php:1148 include/attach.php:1317 -msgid "Empty pathname" -msgstr "" - -#: include/attach.php:1174 -msgid "duplicate filename or path" -msgstr "" - -#: include/attach.php:1199 -msgid "Path not found." -msgstr "" - -#: include/attach.php:1270 -msgid "mkdir failed." -msgstr "" - -#: include/attach.php:1274 -msgid "database storage failed." -msgstr "" - -#: include/attach.php:1323 -msgid "Empty path" -msgstr "" - #: include/event.php:33 include/event.php:102 msgid "l F d, Y \\@ g:i A" msgstr ""