Merge pull request #10563 from annando/scheduled-frontend

Issue 8038: Scheduled posts via the frontend
This commit is contained in:
Hypolite Petovan 2021-08-02 10:40:35 -04:00 committed by GitHub
commit 53ce1a8755
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 362 additions and 266 deletions

View file

@ -17,7 +17,7 @@ General
* p - Profile * p - Profile
* n - Network * n - Network
* c - Community * c - Community
* s - Search * s - Search
* a - Admin * a - Admin
* f - Notifications * f - Notifications
* u - User menu * u - User menu
@ -35,6 +35,7 @@ General
* v - Videos * v - Videos
* e - Events and Calendar * e - Events and Calendar
* t - Personal Notes * t - Personal Notes
* o - Scheduled Posts
* k - View Contacts * k - View Contacts
../contacts (contact list) ../contacts (contact list)
@ -66,7 +67,6 @@ General
* t - Sort by Post Date * t - Sort by Post Date
* r - Conversation (Posts that mention or involve you) * r - Conversation (Posts that mention or involve you)
* w - New posts * w - New posts
* b - Bookmarks
* m - Favourite Posts * m - Favourite Posts
../notifications ../notifications

View file

@ -612,95 +612,87 @@ function conversation(App $a, array $items, $mode, $update, $preview = false, $o
} }
/** /**
* Fetch all comments from a query. Additionally set the newest resharer as thread owner. * Adds some information (Causer, post reason, direction) to the fetched post row.
* *
* @param mixed $thread_items Database statement with thread posts * @param array $row Post row
* @param boolean $pinned Is the item pinned? * @param array $activity Contact data of the resharer
* @param array $activity Contact data of the resharer
* *
* @return array items with parents and comments * @return array items with parents and comments
*/ */
function conversation_fetch_comments($thread_items, bool $pinned, array $activity) { function conversation_add_row_information(array $row, array $activity) {
DI::profiler()->startRecording('rendering'); DI::profiler()->startRecording('rendering');
$comments = [];
while ($row = Post::fetch($thread_items)) { if ($row['uid'] == 0) {
if (!empty($activity)) { $row['writable'] = in_array($row['network'], Protocol::FEDERATED);
if (($row['gravity'] == GRAVITY_PARENT)) {
$row['post-reason'] = Item::PR_ANNOUNCEMENT;
$row = array_merge($row, $activity);
$contact = Contact::getById($activity['causer-id'], ['url', 'name', 'thumb']);
$row['causer-link'] = $contact['url'];
$row['causer-avatar'] = $contact['thumb'];
$row['causer-name'] = $contact['name'];
} elseif (($row['gravity'] == GRAVITY_ACTIVITY) && ($row['verb'] == Activity::ANNOUNCE) &&
($row['author-id'] == $activity['causer-id'])) {
continue;
}
}
switch ($row['post-reason']) {
case Item::PR_TO:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'to')];
break;
case Item::PR_CC:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'cc')];
break;
case Item::PR_BTO:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'bto')];
break;
case Item::PR_BCC:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'bcc')];
break;
case Item::PR_FOLLOWER:
$row['direction'] = ['direction' => 6, 'title' => DI::l10n()->t('You are following %s.', $row['author-name'])];
break;
case Item::PR_TAG:
$row['direction'] = ['direction' => 4, 'title' => DI::l10n()->t('Tagged')];
break;
case Item::PR_ANNOUNCEMENT:
if (!empty($row['causer-id']) && DI::pConfig()->get(local_user(), 'system', 'display_resharer')) {
$row['owner-id'] = $row['causer-id'];
$row['owner-link'] = $row['causer-link'];
$row['owner-avatar'] = $row['causer-avatar'];
$row['owner-name'] = $row['causer-name'];
}
if (($row['gravity'] == GRAVITY_PARENT) && !empty($row['causer-id'])) {
$causer = ['uid' => 0, 'id' => $row['causer-id'],
'network' => $row['causer-network'], 'url' => $row['causer-link']];
$row['reshared'] = DI::l10n()->t('%s reshared this.', '<a href="'. htmlentities(Contact::magicLinkByContact($causer)) .'">' . htmlentities($row['causer-name']) . '</a>');
}
$row['direction'] = ['direction' => 3, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Reshared') : DI::l10n()->t('Reshared by %s <%s>', $row['causer-name'], $row['causer-link']))];
break;
case Item::PR_COMMENT:
$row['direction'] = ['direction' => 5, 'title' => DI::l10n()->t('%s is participating in this thread.', $row['author-name'])];
break;
case Item::PR_STORED:
$row['direction'] = ['direction' => 8, 'title' => DI::l10n()->t('Stored')];
break;
case Item::PR_GLOBAL:
$row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')];
break;
case Item::PR_RELAY:
$row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Relayed') : DI::l10n()->t('Relayed by %s <%s>', $row['causer-name'], $row['causer-link']))];
break;
case Item::PR_FETCHED:
$row['direction'] = ['direction' => 2, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Fetched') : DI::l10n()->t('Fetched because of %s <%s>', $row['causer-name'], $row['causer-link']))];
break;
}
if ($row['gravity'] == GRAVITY_PARENT) {
$row['pinned'] = $pinned;
}
$comments[] = $row;
} }
DBA::close($thread_items); if (!empty($activity)) {
if (($row['gravity'] == GRAVITY_PARENT)) {
$row['post-reason'] = Item::PR_ANNOUNCEMENT;
$row = array_merge($row, $activity);
$contact = Contact::getById($activity['causer-id'], ['url', 'name', 'thumb']);
$row['causer-link'] = $contact['url'];
$row['causer-avatar'] = $contact['thumb'];
$row['causer-name'] = $contact['name'];
} elseif (($row['gravity'] == GRAVITY_ACTIVITY) && ($row['verb'] == Activity::ANNOUNCE) &&
($row['author-id'] == $activity['causer-id'])) {
return $row;
}
}
switch ($row['post-reason']) {
case Item::PR_TO:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'to')];
break;
case Item::PR_CC:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'cc')];
break;
case Item::PR_BTO:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'bto')];
break;
case Item::PR_BCC:
$row['direction'] = ['direction' => 7, 'title' => DI::l10n()->t('You had been addressed (%s).', 'bcc')];
break;
case Item::PR_FOLLOWER:
$row['direction'] = ['direction' => 6, 'title' => DI::l10n()->t('You are following %s.', $row['author-name'])];
break;
case Item::PR_TAG:
$row['direction'] = ['direction' => 4, 'title' => DI::l10n()->t('Tagged')];
break;
case Item::PR_ANNOUNCEMENT:
if (!empty($row['causer-id']) && DI::pConfig()->get(local_user(), 'system', 'display_resharer')) {
$row['owner-id'] = $row['causer-id'];
$row['owner-link'] = $row['causer-link'];
$row['owner-avatar'] = $row['causer-avatar'];
$row['owner-name'] = $row['causer-name'];
}
if (($row['gravity'] == GRAVITY_PARENT) && !empty($row['causer-id'])) {
$causer = ['uid' => 0, 'id' => $row['causer-id'],
'network' => $row['causer-network'], 'url' => $row['causer-link']];
$row['reshared'] = DI::l10n()->t('%s reshared this.', '<a href="'. htmlentities(Contact::magicLinkByContact($causer)) .'">' . htmlentities($row['causer-name']) . '</a>');
}
$row['direction'] = ['direction' => 3, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Reshared') : DI::l10n()->t('Reshared by %s <%s>', $row['causer-name'], $row['causer-link']))];
break;
case Item::PR_COMMENT:
$row['direction'] = ['direction' => 5, 'title' => DI::l10n()->t('%s is participating in this thread.', $row['author-name'])];
break;
case Item::PR_STORED:
$row['direction'] = ['direction' => 8, 'title' => DI::l10n()->t('Stored')];
break;
case Item::PR_GLOBAL:
$row['direction'] = ['direction' => 9, 'title' => DI::l10n()->t('Global')];
break;
case Item::PR_RELAY:
$row['direction'] = ['direction' => 10, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Relayed') : DI::l10n()->t('Relayed by %s <%s>', $row['causer-name'], $row['causer-link']))];
break;
case Item::PR_FETCHED:
$row['direction'] = ['direction' => 2, 'title' => (empty($row['causer-id']) ? DI::l10n()->t('Fetched') : DI::l10n()->t('Fetched because of %s <%s>', $row['causer-name'], $row['causer-link']))];
break;
}
DI::profiler()->stopRecording(); DI::profiler()->stopRecording();
return $comments; return $row;
} }
/** /**
@ -725,70 +717,61 @@ function conversation_add_children(array $parents, $block_authors, $order, $uid)
$max_comments = DI::config()->get('system', 'max_display_comments', 1000); $max_comments = DI::config()->get('system', 'max_display_comments', 1000);
} }
$params = ['order' => ['gravity', 'uid', 'commented' => true]]; $params = ['order' => ['uri-id' => true]];
if ($max_comments > 0) { $activities = [];
$params['limit'] = $max_comments; $uriids = [];
} $commentcounter = [];
$activitycounter = [];
$items = [];
foreach ($parents AS $parent) { foreach ($parents AS $parent) {
if (!empty($parent['thr-parent-id']) && !empty($parent['gravity']) && ($parent['gravity'] == GRAVITY_ACTIVITY)) { if (!empty($parent['thr-parent-id']) && !empty($parent['gravity']) && ($parent['gravity'] == GRAVITY_ACTIVITY)) {
$condition = ["`parent-uri-id` = ? AND `uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uriid = $parent['thr-parent-id'];
$parent['thr-parent-id'], $uid, Verb::getID(Activity::FOLLOW)];
if (!empty($parent['author-id'])) { if (!empty($parent['author-id'])) {
$activity = ['causer-id' => $parent['author-id']]; $activities[$uriid] = ['causer-id' => $parent['author-id']];
foreach (['commented', 'received', 'created'] as $orderfields) { foreach (['commented', 'received', 'created'] as $orderfields) {
if (!empty($parent[$orderfields])) { if (!empty($parent[$orderfields])) {
$activity[$orderfields] = $parent[$orderfields]; $activities[$uriid][$orderfields] = $parent[$orderfields];
} }
} }
} }
} else { } else {
$condition = ["`parent-uri-id` = ? AND `uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uriid = $parent['uri-id'];
$parent['uri-id'], $uid, Verb::getID(Activity::FOLLOW)];
$activity = [];
} }
$items = conversation_fetch_items($parent, $items, $condition, $block_authors, $params, $activity); $uriids[] = $uriid;
$commentcounter[$uriid] = 0;
$activitycounter[$uriid] = 0;
} }
foreach ($items as $index => $item) { $condition = ['parent-uri-id' => $uriids];
if ($item['uid'] == 0) {
$items[$index]['writable'] = in_array($item['network'], Protocol::FEDERATED);
}
}
$items = conv_sort($items, $order);
DI::profiler()->stopRecording();
return $items;
}
/**
* Fetch conversation items
*
* @param array $parent Parent Item array
* @param array $items Item array
* @param array $condition SQL condition
* @param boolean $block_authors Don't show posts from contacts that are hidden (used on the community page)
* @param array $params SQL parameters
* @param array $activity Contact data of the resharer
* @return array
*/
function conversation_fetch_items(array $parent, array $items, array $condition, bool $block_authors, array $params, array $activity) {
DI::profiler()->startRecording('rendering');
if ($block_authors) { if ($block_authors) {
$condition[0] .= " AND NOT `author-hidden`"; $condition['author-hidden'] = false;
} }
$condition = DBA::mergeConditions($condition,
["`uid` IN (0, ?) AND (`vid` != ? OR `vid` IS NULL)", $uid, Verb::getID(Activity::FOLLOW)]);
$thread_items = Post::selectForUser(local_user(), array_merge(Item::DISPLAY_FIELDLIST, ['pinned', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params); $thread_items = Post::selectForUser(local_user(), array_merge(Item::DISPLAY_FIELDLIST, ['pinned', 'contact-uid', 'gravity', 'post-type', 'post-reason']), $condition, $params);
$comments = conversation_fetch_comments($thread_items, $parent['pinned'] ?? false, $activity); $items = [];
if (count($comments) != 0) { while ($row = Post::fetch($thread_items)) {
$items = array_merge($items, $comments); if ($max_comments > 0) {
if (($row['gravity'] == GRAVITY_COMMENT) && (++$commentcounter[$row['parent-uri-id']] > $max_comments)) {
continue;
}
if (($row['gravity'] == GRAVITY_ACTIVITY) && (++$activitycounter[$row['parent-uri-id']] > $max_comments)) {
continue;
}
}
$items[] = conversation_add_row_information($row, $activities[$row['uri-id']] ?? []);
} }
DBA::close($thread_items);
$items = conv_sort($items, $order);
DI::profiler()->stopRecording(); DI::profiler()->stopRecording();
return $items; return $items;
} }
@ -1131,6 +1114,13 @@ function status_editor(App $a, $x, $notes_cid = 0, $popup = false)
'$placeholdertitle' => DI::l10n()->t('Set title'), '$placeholdertitle' => DI::l10n()->t('Set title'),
'$category' => $x['category'] ?? '', '$category' => $x['category'] ?? '',
'$placeholdercategory' => Feature::isEnabled(local_user(), 'categories') ? DI::l10n()->t("Categories \x28comma-separated list\x29") : '', '$placeholdercategory' => Feature::isEnabled(local_user(), 'categories') ? DI::l10n()->t("Categories \x28comma-separated list\x29") : '',
'$scheduled_at' => Temporal::getDateTimeField(
new DateTime(),
DateTime::createFromFormat(DateTimeFormat::MYSQL, DateTimeFormat::local('now + 6 months')),
null,
DI::l10n()->t('Scheduled at'),
'scheduled_at',
),
'$wait' => DI::l10n()->t('Please wait'), '$wait' => DI::l10n()->t('Please wait'),
'$permset' => DI::l10n()->t('Permission settings'), '$permset' => DI::l10n()->t('Permission settings'),
'$shortpermset' => DI::l10n()->t('Permissions'), '$shortpermset' => DI::l10n()->t('Permissions'),

View file

@ -629,7 +629,6 @@ function item_post(App $a) {
$datarray['origin'] = $origin; $datarray['origin'] = $origin;
$datarray['object'] = $object; $datarray['object'] = $object;
$datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']);
$datarray['attachments'] = $_REQUEST['attachments'] ?? []; $datarray['attachments'] = $_REQUEST['attachments'] ?? [];
/* /*
@ -682,8 +681,25 @@ function item_post(App $a) {
$o = conversation($a, [array_merge($contact_record, $datarray)], 'search', false, true); $o = conversation($a, [array_merge($contact_record, $datarray)], 'search', false, true);
System::jsonExit(['preview' => $o]); System::jsonExit(['preview' => $o]);
} elseif (!empty($_REQUEST['scheduled_at'])) {
$scheduled_at = DateTimeFormat::convert($_REQUEST['scheduled_at'], 'UTC', $a->getTimezone());
if ($scheduled_at > DateTimeFormat::utcNow()) {
unset($datarray['created']);
unset($datarray['edited']);
unset($datarray['commented']);
unset($datarray['received']);
unset($datarray['changed']);
unset($datarray['edit']);
unset($datarray['self']);
unset($datarray['api_source']);
Post\Delayed::add($datarray['uri'], $datarray, PRIORITY_HIGH, false, $scheduled_at);
item_post_return(DI::baseUrl(), $api_source, $return_path);
}
} }
$datarray['uri-id'] = ItemURI::getIdByURI($datarray['uri']);
Hook::callAll('post_local',$datarray); Hook::callAll('post_local',$datarray);
if (!empty($datarray['cancel'])) { if (!empty($datarray['cancel'])) {

View file

@ -1143,6 +1143,9 @@ class Item
if (!$dontcache) { if (!$dontcache) {
if ($notify) { if ($notify) {
if (!\Friendica\Content\Feature::isEnabled($posted_item['uid'], 'explicit_mentions') && ($posted_item['gravity'] == GRAVITY_COMMENT)) {
Tag::createImplicitMentions($posted_item['uri-id'], $posted_item['thr-parent-id']);
}
Hook::callAll('post_local_end', $posted_item); Hook::callAll('post_local_end', $posted_item);
} else { } else {
Hook::callAll('post_remote_end', $posted_item); Hook::callAll('post_remote_end', $posted_item);

View file

@ -70,14 +70,15 @@ class BaseProfile extends BaseModule
'id' => 'photo-tab', 'id' => 'photo-tab',
'accesskey' => 'h', 'accesskey' => 'h',
], ],
[ // @todo Currently deactivated since it doesn't really work
'label' => DI::l10n()->t('Videos'), // [
'url' => DI::baseUrl() . '/videos/' . $nickname, // 'label' => DI::l10n()->t('Videos'),
'sel' => $current == 'videos' ? 'active' : '', // 'url' => DI::baseUrl() . '/videos/' . $nickname,
'title' => DI::l10n()->t('Videos'), // 'sel' => $current == 'videos' ? 'active' : '',
'id' => 'video-tab', // 'title' => DI::l10n()->t('Videos'),
'accesskey' => 'v', // 'id' => 'video-tab',
], // 'accesskey' => 'v',
// ],
]; ];
// the calendar link for the full featured events calendar // the calendar link for the full featured events calendar
@ -112,6 +113,14 @@ class BaseProfile extends BaseModule
'id' => 'notes-tab', 'id' => 'notes-tab',
'accesskey' => 't', 'accesskey' => 't',
]; ];
$tabs[] = [
'label' => DI::l10n()->t('Scheduled Posts'),
'url' => $baseProfileUrl . '/schedule',
'sel' => $current == 'schedule' ? 'active' : '',
'title' => DI::l10n()->t('Posts that are scheduled for publishing'),
'id' => 'schedule-tab',
'accesskey' => 'o',
];
} }
if (empty($profile['hide-friends'])) { if (empty($profile['hide-friends'])) {

View file

@ -21,6 +21,7 @@
namespace Friendica\Module\Item; namespace Friendica\Module\Item;
use DateTime;
use Friendica\BaseModule; use Friendica\BaseModule;
use Friendica\Content\Feature; use Friendica\Content\Feature;
use Friendica\Core\ACL; use Friendica\Core\ACL;
@ -34,6 +35,8 @@ use Friendica\Model\User;
use Friendica\Module\Security\Login; use Friendica\Module\Security\Login;
use Friendica\Network\HTTPException\NotImplementedException; use Friendica\Network\HTTPException\NotImplementedException;
use Friendica\Util\Crypto; use Friendica\Util\Crypto;
use Friendica\Util\DateTimeFormat;
use Friendica\Util\Temporal;
class Compose extends BaseModule class Compose extends BaseModule
{ {
@ -162,6 +165,14 @@ class Compose extends BaseModule
'$wait' => DI::l10n()->t('Please wait'), '$wait' => DI::l10n()->t('Please wait'),
'$placeholdertitle' => DI::l10n()->t('Set title'), '$placeholdertitle' => DI::l10n()->t('Set title'),
'$placeholdercategory' => (Feature::isEnabled(local_user(),'categories') ? DI::l10n()->t('Categories (comma-separated list)') : ''), '$placeholdercategory' => (Feature::isEnabled(local_user(),'categories') ? DI::l10n()->t('Categories (comma-separated list)') : ''),
'$scheduled_at' => Temporal::getDateTimeField(
new DateTime(),
DateTime::createFromFormat(DateTimeFormat::MYSQL, DateTimeFormat::local('now + 6 months')),
null,
DI::l10n()->t('Scheduled at'),
'scheduled_at',
),
'$title' => $title, '$title' => $title,
'$category' => $category, '$category' => $category,

View file

@ -0,0 +1,43 @@
<?php
/**
* @copyright Copyright (C) 2010-2021, the Friendica project
*
* @license GNU AGPL version 3 or any later version
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
*/
namespace Friendica\Module\Profile;
use Friendica\DI;
use Friendica\Module\BaseProfile;
use Friendica\Network\HTTPException;
class Schedule extends BaseProfile
{
public static function content(array $parameters = [])
{
if (!local_user()) {
throw new HTTPException\ForbiddenException(DI::l10n()->t('Permission denied.'));
}
$a = DI::app();
$o = self::getTabsHTML($a, 'schedule', true, $a->user);
$o .= DI::l10n()->t('Currently here is no functionality here. Please use an app to have a look at your scheduled posts.');
return $o;
}
}

View file

@ -225,7 +225,7 @@ class Temporal
public static function getDateTimeField( public static function getDateTimeField(
DateTime $minDate, DateTime $minDate,
DateTime $maxDate, DateTime $maxDate,
DateTime $defaultDate, DateTime $defaultDate = null,
$label, $label,
$id = 'datetimepicker', $id = 'datetimepicker',
$pickdate = true, $pickdate = true,

View file

@ -33,6 +33,7 @@ use Friendica\Module;
$profileRoutes = [ $profileRoutes = [
'' => [Module\Profile\Index::class, [R::GET]], '' => [Module\Profile\Index::class, [R::GET]],
'/profile' => [Module\Profile\Profile::class, [R::GET]], '/profile' => [Module\Profile\Profile::class, [R::GET]],
'/schedule' => [Module\Profile\Schedule::class, [R::GET]],
'/contacts/common' => [Module\Profile\Common::class, [R::GET]], '/contacts/common' => [Module\Profile\Common::class, [R::GET]],
'/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]], '/contacts[/{type}]' => [Module\Profile\Contacts::class, [R::GET]],
'/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class, [R::GET]], '/status[/{category}[/{date1}[/{date2}]]]' => [Module\Profile\Status::class, [R::GET]],

View file

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 2021.09-dev\n" "Project-Id-Version: 2021.09-dev\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-08-01 10:43+0200\n" "POT-Creation-Date: 2021-08-02 12:15+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -54,7 +54,7 @@ msgstr ""
msgid "%1$s poked %2$s" msgid "%1$s poked %2$s"
msgstr "" msgstr ""
#: include/conversation.php:140 src/Model/Item.php:2610 #: include/conversation.php:140 src/Model/Item.php:2613
msgid "event" msgid "event"
msgstr "" msgstr ""
@ -62,7 +62,7 @@ msgstr ""
msgid "status" msgid "status"
msgstr "" msgstr ""
#: include/conversation.php:148 mod/tagger.php:90 src/Model/Item.php:2612 #: include/conversation.php:148 mod/tagger.php:90 src/Model/Item.php:2615
msgid "photo" msgid "photo"
msgstr "" msgstr ""
@ -104,9 +104,9 @@ msgstr ""
msgid "View in context" msgid "View in context"
msgstr "" msgstr ""
#: include/conversation.php:539 include/conversation.php:1134 #: include/conversation.php:539 include/conversation.php:1124
#: mod/editpost.php:104 mod/message.php:203 mod/message.php:368 #: mod/editpost.php:104 mod/message.php:203 mod/message.php:368
#: mod/photos.php:1523 mod/wallmessage.php:155 src/Module/Item/Compose.php:162 #: mod/photos.php:1523 mod/wallmessage.php:155 src/Module/Item/Compose.php:165
#: src/Object/Post.php:501 #: src/Object/Post.php:501
msgid "Please wait" msgid "Please wait"
msgstr "" msgstr ""
@ -119,108 +119,108 @@ msgstr ""
msgid "Delete Selected Items" msgid "Delete Selected Items"
msgstr "" msgstr ""
#: include/conversation.php:644 include/conversation.php:647 #: include/conversation.php:645 include/conversation.php:648
#: include/conversation.php:650 include/conversation.php:653 #: include/conversation.php:651 include/conversation.php:654
#, php-format #, php-format
msgid "You had been addressed (%s)." msgid "You had been addressed (%s)."
msgstr "" msgstr ""
#: include/conversation.php:656 #: include/conversation.php:657
#, php-format #, php-format
msgid "You are following %s." msgid "You are following %s."
msgstr "" msgstr ""
#: include/conversation.php:659 #: include/conversation.php:660
msgid "Tagged" msgid "Tagged"
msgstr "" msgstr ""
#: include/conversation.php:672 include/conversation.php:1024 #: include/conversation.php:673 include/conversation.php:1007
#: include/conversation.php:1062 #: include/conversation.php:1045
#, php-format #, php-format
msgid "%s reshared this." msgid "%s reshared this."
msgstr "" msgstr ""
#: include/conversation.php:674 #: include/conversation.php:675
msgid "Reshared" msgid "Reshared"
msgstr "" msgstr ""
#: include/conversation.php:674 #: include/conversation.php:675
#, php-format #, php-format
msgid "Reshared by %s <%s>" msgid "Reshared by %s <%s>"
msgstr "" msgstr ""
#: include/conversation.php:677 #: include/conversation.php:678
#, php-format #, php-format
msgid "%s is participating in this thread." msgid "%s is participating in this thread."
msgstr "" msgstr ""
#: include/conversation.php:680 #: include/conversation.php:681
msgid "Stored" msgid "Stored"
msgstr "" msgstr ""
#: include/conversation.php:683 #: include/conversation.php:684
msgid "Global" msgid "Global"
msgstr "" msgstr ""
#: include/conversation.php:686 #: include/conversation.php:687
msgid "Relayed" msgid "Relayed"
msgstr "" msgstr ""
#: include/conversation.php:686 #: include/conversation.php:687
#, php-format #, php-format
msgid "Relayed by %s <%s>" msgid "Relayed by %s <%s>"
msgstr "" msgstr ""
#: include/conversation.php:689 #: include/conversation.php:690
msgid "Fetched" msgid "Fetched"
msgstr "" msgstr ""
#: include/conversation.php:689 #: include/conversation.php:690
#, php-format #, php-format
msgid "Fetched because of %s <%s>" msgid "Fetched because of %s <%s>"
msgstr "" msgstr ""
#: include/conversation.php:855 view/theme/frio/theme.php:323 #: include/conversation.php:838 view/theme/frio/theme.php:323
msgid "Follow Thread" msgid "Follow Thread"
msgstr "" msgstr ""
#: include/conversation.php:856 src/Model/Contact.php:1047 #: include/conversation.php:839 src/Model/Contact.php:1047
msgid "View Status" msgid "View Status"
msgstr "" msgstr ""
#: include/conversation.php:857 include/conversation.php:879 #: include/conversation.php:840 include/conversation.php:862
#: src/Model/Contact.php:973 src/Model/Contact.php:1039 #: src/Model/Contact.php:973 src/Model/Contact.php:1039
#: src/Model/Contact.php:1048 src/Module/Directory.php:160 #: src/Model/Contact.php:1048 src/Module/Directory.php:160
#: src/Module/Settings/Profile/Index.php:224 #: src/Module/Settings/Profile/Index.php:224
msgid "View Profile" msgid "View Profile"
msgstr "" msgstr ""
#: include/conversation.php:858 src/Model/Contact.php:1049 #: include/conversation.php:841 src/Model/Contact.php:1049
msgid "View Photos" msgid "View Photos"
msgstr "" msgstr ""
#: include/conversation.php:859 src/Model/Contact.php:1040 #: include/conversation.php:842 src/Model/Contact.php:1040
#: src/Model/Contact.php:1050 #: src/Model/Contact.php:1050
msgid "Network Posts" msgid "Network Posts"
msgstr "" msgstr ""
#: include/conversation.php:860 src/Model/Contact.php:1041 #: include/conversation.php:843 src/Model/Contact.php:1041
#: src/Model/Contact.php:1051 #: src/Model/Contact.php:1051
msgid "View Contact" msgid "View Contact"
msgstr "" msgstr ""
#: include/conversation.php:861 src/Model/Contact.php:1053 #: include/conversation.php:844 src/Model/Contact.php:1053
msgid "Send PM" msgid "Send PM"
msgstr "" msgstr ""
#: include/conversation.php:862 src/Module/Admin/Blocklist/Contact.php:84 #: include/conversation.php:845 src/Module/Admin/Blocklist/Contact.php:84
#: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154 #: src/Module/Admin/Users/Active.php:140 src/Module/Admin/Users/Index.php:154
#: src/Module/Contact.php:588 src/Module/Contact.php:846 #: src/Module/Contact.php:588 src/Module/Contact.php:846
#: src/Module/Contact.php:1126 #: src/Module/Contact.php:1126
msgid "Block" msgid "Block"
msgstr "" msgstr ""
#: include/conversation.php:863 src/Module/Contact.php:589 #: include/conversation.php:846 src/Module/Contact.php:589
#: src/Module/Contact.php:847 src/Module/Contact.php:1134 #: src/Module/Contact.php:847 src/Module/Contact.php:1134
#: src/Module/Notifications/Introductions.php:113 #: src/Module/Notifications/Introductions.php:113
#: src/Module/Notifications/Introductions.php:185 #: src/Module/Notifications/Introductions.php:185
@ -228,272 +228,276 @@ msgstr ""
msgid "Ignore" msgid "Ignore"
msgstr "" msgstr ""
#: include/conversation.php:867 src/Object/Post.php:428 #: include/conversation.php:850 src/Object/Post.php:428
msgid "Languages" msgid "Languages"
msgstr "" msgstr ""
#: include/conversation.php:871 src/Model/Contact.php:1054 #: include/conversation.php:854 src/Model/Contact.php:1054
msgid "Poke" msgid "Poke"
msgstr "" msgstr ""
#: include/conversation.php:876 mod/follow.php:139 src/Content/Widget.php:76 #: include/conversation.php:859 mod/follow.php:139 src/Content/Widget.php:76
#: src/Model/Contact.php:1042 src/Model/Contact.php:1055 #: src/Model/Contact.php:1042 src/Model/Contact.php:1055
#: view/theme/vier/theme.php:172 #: view/theme/vier/theme.php:172
msgid "Connect/Follow" msgid "Connect/Follow"
msgstr "" msgstr ""
#: include/conversation.php:1009 #: include/conversation.php:992
#, php-format #, php-format
msgid "%s likes this." msgid "%s likes this."
msgstr "" msgstr ""
#: include/conversation.php:1012 #: include/conversation.php:995
#, php-format #, php-format
msgid "%s doesn't like this." msgid "%s doesn't like this."
msgstr "" msgstr ""
#: include/conversation.php:1015 #: include/conversation.php:998
#, php-format #, php-format
msgid "%s attends." msgid "%s attends."
msgstr "" msgstr ""
#: include/conversation.php:1018 #: include/conversation.php:1001
#, php-format #, php-format
msgid "%s doesn't attend." msgid "%s doesn't attend."
msgstr "" msgstr ""
#: include/conversation.php:1021 #: include/conversation.php:1004
#, php-format #, php-format
msgid "%s attends maybe." msgid "%s attends maybe."
msgstr "" msgstr ""
#: include/conversation.php:1030 #: include/conversation.php:1013
msgid "and" msgid "and"
msgstr "" msgstr ""
#: include/conversation.php:1033 #: include/conversation.php:1016
#, php-format #, php-format
msgid "and %d other people" msgid "and %d other people"
msgstr "" msgstr ""
#: include/conversation.php:1041 #: include/conversation.php:1024
#, php-format #, php-format
msgid "<span %1$s>%2$d people</span> like this" msgid "<span %1$s>%2$d people</span> like this"
msgstr "" msgstr ""
#: include/conversation.php:1042 #: include/conversation.php:1025
#, php-format #, php-format
msgid "%s like this." msgid "%s like this."
msgstr "" msgstr ""
#: include/conversation.php:1045 #: include/conversation.php:1028
#, php-format #, php-format
msgid "<span %1$s>%2$d people</span> don't like this" msgid "<span %1$s>%2$d people</span> don't like this"
msgstr "" msgstr ""
#: include/conversation.php:1046 #: include/conversation.php:1029
#, php-format #, php-format
msgid "%s don't like this." msgid "%s don't like this."
msgstr "" msgstr ""
#: include/conversation.php:1049 #: include/conversation.php:1032
#, php-format #, php-format
msgid "<span %1$s>%2$d people</span> attend" msgid "<span %1$s>%2$d people</span> attend"
msgstr "" msgstr ""
#: include/conversation.php:1050 #: include/conversation.php:1033
#, php-format #, php-format
msgid "%s attend." msgid "%s attend."
msgstr "" msgstr ""
#: include/conversation.php:1053 #: include/conversation.php:1036
#, php-format #, php-format
msgid "<span %1$s>%2$d people</span> don't attend" msgid "<span %1$s>%2$d people</span> don't attend"
msgstr "" msgstr ""
#: include/conversation.php:1054 #: include/conversation.php:1037
#, php-format #, php-format
msgid "%s don't attend." msgid "%s don't attend."
msgstr "" msgstr ""
#: include/conversation.php:1057 #: include/conversation.php:1040
#, php-format #, php-format
msgid "<span %1$s>%2$d people</span> attend maybe" msgid "<span %1$s>%2$d people</span> attend maybe"
msgstr "" msgstr ""
#: include/conversation.php:1058 #: include/conversation.php:1041
#, php-format #, php-format
msgid "%s attend maybe." msgid "%s attend maybe."
msgstr "" msgstr ""
#: include/conversation.php:1061 #: include/conversation.php:1044
#, php-format #, php-format
msgid "<span %1$s>%2$d people</span> reshared this" msgid "<span %1$s>%2$d people</span> reshared this"
msgstr "" msgstr ""
#: include/conversation.php:1093 #: include/conversation.php:1076
msgid "Visible to <strong>everybody</strong>" msgid "Visible to <strong>everybody</strong>"
msgstr "" msgstr ""
#: include/conversation.php:1094 src/Module/Item/Compose.php:156 #: include/conversation.php:1077 src/Module/Item/Compose.php:159
#: src/Object/Post.php:972 #: src/Object/Post.php:972
msgid "Please enter a image/video/audio/webpage URL:" msgid "Please enter a image/video/audio/webpage URL:"
msgstr "" msgstr ""
#: include/conversation.php:1095 #: include/conversation.php:1078
msgid "Tag term:" msgid "Tag term:"
msgstr "" msgstr ""
#: include/conversation.php:1096 src/Module/Filer/SaveTag.php:68 #: include/conversation.php:1079 src/Module/Filer/SaveTag.php:68
msgid "Save to Folder:" msgid "Save to Folder:"
msgstr "" msgstr ""
#: include/conversation.php:1097 #: include/conversation.php:1080
msgid "Where are you right now?" msgid "Where are you right now?"
msgstr "" msgstr ""
#: include/conversation.php:1098 #: include/conversation.php:1081
msgid "Delete item(s)?" msgid "Delete item(s)?"
msgstr "" msgstr ""
#: include/conversation.php:1108 #: include/conversation.php:1091
msgid "New Post" msgid "New Post"
msgstr "" msgstr ""
#: include/conversation.php:1111 #: include/conversation.php:1094
msgid "Share" msgid "Share"
msgstr "" msgstr ""
#: include/conversation.php:1112 mod/editpost.php:89 mod/photos.php:1372 #: include/conversation.php:1095 mod/editpost.php:89 mod/photos.php:1372
#: src/Module/Contact/Poke.php:156 src/Object/Post.php:963 #: src/Module/Contact/Poke.php:156 src/Object/Post.php:963
msgid "Loading..." msgid "Loading..."
msgstr "" msgstr ""
#: include/conversation.php:1113 mod/editpost.php:90 mod/message.php:201 #: include/conversation.php:1096 mod/editpost.php:90 mod/message.php:201
#: mod/message.php:365 mod/wallmessage.php:153 #: mod/message.php:365 mod/wallmessage.php:153
msgid "Upload photo" msgid "Upload photo"
msgstr "" msgstr ""
#: include/conversation.php:1114 mod/editpost.php:91 #: include/conversation.php:1097 mod/editpost.php:91
msgid "upload photo" msgid "upload photo"
msgstr "" msgstr ""
#: include/conversation.php:1115 mod/editpost.php:92 #: include/conversation.php:1098 mod/editpost.php:92
msgid "Attach file" msgid "Attach file"
msgstr "" msgstr ""
#: include/conversation.php:1116 mod/editpost.php:93 #: include/conversation.php:1099 mod/editpost.php:93
msgid "attach file" msgid "attach file"
msgstr "" msgstr ""
#: include/conversation.php:1117 src/Module/Item/Compose.php:148 #: include/conversation.php:1100 src/Module/Item/Compose.php:151
#: src/Object/Post.php:964 #: src/Object/Post.php:964
msgid "Bold" msgid "Bold"
msgstr "" msgstr ""
#: include/conversation.php:1118 src/Module/Item/Compose.php:149 #: include/conversation.php:1101 src/Module/Item/Compose.php:152
#: src/Object/Post.php:965 #: src/Object/Post.php:965
msgid "Italic" msgid "Italic"
msgstr "" msgstr ""
#: include/conversation.php:1119 src/Module/Item/Compose.php:150 #: include/conversation.php:1102 src/Module/Item/Compose.php:153
#: src/Object/Post.php:966 #: src/Object/Post.php:966
msgid "Underline" msgid "Underline"
msgstr "" msgstr ""
#: include/conversation.php:1120 src/Module/Item/Compose.php:151 #: include/conversation.php:1103 src/Module/Item/Compose.php:154
#: src/Object/Post.php:967 #: src/Object/Post.php:967
msgid "Quote" msgid "Quote"
msgstr "" msgstr ""
#: include/conversation.php:1121 src/Module/Item/Compose.php:152 #: include/conversation.php:1104 src/Module/Item/Compose.php:155
#: src/Object/Post.php:968 #: src/Object/Post.php:968
msgid "Code" msgid "Code"
msgstr "" msgstr ""
#: include/conversation.php:1122 src/Module/Item/Compose.php:153 #: include/conversation.php:1105 src/Module/Item/Compose.php:156
#: src/Object/Post.php:969 #: src/Object/Post.php:969
msgid "Image" msgid "Image"
msgstr "" msgstr ""
#: include/conversation.php:1123 src/Module/Item/Compose.php:154 #: include/conversation.php:1106 src/Module/Item/Compose.php:157
#: src/Object/Post.php:970 #: src/Object/Post.php:970
msgid "Link" msgid "Link"
msgstr "" msgstr ""
#: include/conversation.php:1124 src/Module/Item/Compose.php:155 #: include/conversation.php:1107 src/Module/Item/Compose.php:158
#: src/Object/Post.php:971 #: src/Object/Post.php:971
msgid "Link or Media" msgid "Link or Media"
msgstr "" msgstr ""
#: include/conversation.php:1125 #: include/conversation.php:1108
msgid "Video" msgid "Video"
msgstr "" msgstr ""
#: include/conversation.php:1126 mod/editpost.php:100 #: include/conversation.php:1109 mod/editpost.php:100
#: src/Module/Item/Compose.php:158 #: src/Module/Item/Compose.php:161
msgid "Set your location" msgid "Set your location"
msgstr "" msgstr ""
#: include/conversation.php:1127 mod/editpost.php:101 #: include/conversation.php:1110 mod/editpost.php:101
msgid "set location" msgid "set location"
msgstr "" msgstr ""
#: include/conversation.php:1128 mod/editpost.php:102 #: include/conversation.php:1111 mod/editpost.php:102
msgid "Clear browser location" msgid "Clear browser location"
msgstr "" msgstr ""
#: include/conversation.php:1129 mod/editpost.php:103 #: include/conversation.php:1112 mod/editpost.php:103
msgid "clear location" msgid "clear location"
msgstr "" msgstr ""
#: include/conversation.php:1131 mod/editpost.php:117 #: include/conversation.php:1114 mod/editpost.php:117
#: src/Module/Item/Compose.php:163 #: src/Module/Item/Compose.php:166
msgid "Set title" msgid "Set title"
msgstr "" msgstr ""
#: include/conversation.php:1133 mod/editpost.php:119 #: include/conversation.php:1116 mod/editpost.php:119
#: src/Module/Item/Compose.php:164 #: src/Module/Item/Compose.php:167
msgid "Categories (comma-separated list)" msgid "Categories (comma-separated list)"
msgstr "" msgstr ""
#: include/conversation.php:1135 mod/editpost.php:105 #: include/conversation.php:1121 src/Module/Item/Compose.php:172
msgid "Scheduled at"
msgstr ""
#: include/conversation.php:1125 mod/editpost.php:105
msgid "Permission settings" msgid "Permission settings"
msgstr "" msgstr ""
#: include/conversation.php:1136 mod/editpost.php:133 mod/events.php:583 #: include/conversation.php:1126 mod/editpost.php:133 mod/events.php:583
#: mod/photos.php:959 mod/photos.php:1325 #: mod/photos.php:959 mod/photos.php:1325
msgid "Permissions" msgid "Permissions"
msgstr "" msgstr ""
#: include/conversation.php:1145 mod/editpost.php:114 #: include/conversation.php:1135 mod/editpost.php:114
msgid "Public post" msgid "Public post"
msgstr "" msgstr ""
#: include/conversation.php:1149 mod/editpost.php:125 mod/events.php:578 #: include/conversation.php:1139 mod/editpost.php:125 mod/events.php:578
#: mod/photos.php:1371 mod/photos.php:1427 mod/photos.php:1501 #: mod/photos.php:1371 mod/photos.php:1427 mod/photos.php:1501
#: src/Module/Item/Compose.php:157 src/Object/Post.php:973 #: src/Module/Item/Compose.php:160 src/Object/Post.php:973
msgid "Preview" msgid "Preview"
msgstr "" msgstr ""
#: include/conversation.php:1152 mod/editpost.php:127 mod/fbrowser.php:105 #: include/conversation.php:1142 mod/editpost.php:127 mod/fbrowser.php:105
#: mod/fbrowser.php:134 mod/follow.php:145 mod/photos.php:1027 #: mod/fbrowser.php:134 mod/follow.php:145 mod/photos.php:1027
#: mod/photos.php:1133 mod/tagrm.php:37 mod/tagrm.php:129 mod/unfollow.php:97 #: mod/photos.php:1133 mod/tagrm.php:37 mod/tagrm.php:129 mod/unfollow.php:97
#: src/Module/Contact.php:424 src/Module/RemoteFollow.php:112 #: src/Module/Contact.php:424 src/Module/RemoteFollow.php:112
msgid "Cancel" msgid "Cancel"
msgstr "" msgstr ""
#: include/conversation.php:1159 mod/editpost.php:131 #: include/conversation.php:1149 mod/editpost.php:131
#: src/Content/Widget/VCard.php:106 src/Model/Profile.php:448 #: src/Content/Widget/VCard.php:106 src/Model/Profile.php:448
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#: include/conversation.php:1160 mod/editpost.php:132 #: include/conversation.php:1150 mod/editpost.php:132
#: src/Module/Settings/TwoFactor/Trusted.php:101 #: src/Module/Settings/TwoFactor/Trusted.php:101
msgid "Browser" msgid "Browser"
msgstr "" msgstr ""
#: include/conversation.php:1162 mod/editpost.php:135 #: include/conversation.php:1152 mod/editpost.php:135
msgid "Open Compose page" msgid "Open Compose page"
msgstr "" msgstr ""
@ -824,7 +828,7 @@ msgstr ""
#: mod/api.php:30 mod/api.php:35 mod/editpost.php:37 mod/events.php:236 #: mod/api.php:30 mod/api.php:35 mod/editpost.php:37 mod/events.php:236
#: mod/follow.php:56 mod/follow.php:131 mod/item.php:185 mod/item.php:190 #: mod/follow.php:56 mod/follow.php:131 mod/item.php:185 mod/item.php:190
#: mod/item.php:917 mod/message.php:69 mod/message.php:111 mod/notes.php:44 #: mod/item.php:933 mod/message.php:69 mod/message.php:111 mod/notes.php:44
#: mod/ostatus_subscribe.php:32 mod/photos.php:159 mod/photos.php:911 #: mod/ostatus_subscribe.php:32 mod/photos.php:159 mod/photos.php:911
#: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:65 #: mod/repair_ostatus.php:31 mod/settings.php:47 mod/settings.php:65
#: mod/settings.php:417 mod/suggest.php:34 mod/uimport.php:32 #: mod/settings.php:417 mod/suggest.php:34 mod/uimport.php:32
@ -841,11 +845,11 @@ msgstr ""
#: src/Module/Invite.php:127 src/Module/Notifications/Notification.php:47 #: src/Module/Invite.php:127 src/Module/Notifications/Notification.php:47
#: src/Module/Notifications/Notification.php:76 #: src/Module/Notifications/Notification.php:76
#: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:57 #: src/Module/Profile/Common.php:56 src/Module/Profile/Contacts.php:57
#: src/Module/Register.php:62 src/Module/Register.php:75 #: src/Module/Profile/Schedule.php:33 src/Module/Register.php:62
#: src/Module/Register.php:193 src/Module/Register.php:232 #: src/Module/Register.php:75 src/Module/Register.php:193
#: src/Module/Search/Directory.php:38 src/Module/Settings/Delegation.php:42 #: src/Module/Register.php:232 src/Module/Search/Directory.php:38
#: src/Module/Settings/Delegation.php:70 src/Module/Settings/Display.php:42 #: src/Module/Settings/Delegation.php:42 src/Module/Settings/Delegation.php:70
#: src/Module/Settings/Display.php:118 #: src/Module/Settings/Display.php:42 src/Module/Settings/Display.php:118
#: src/Module/Settings/Profile/Photo/Crop.php:155 #: src/Module/Settings/Profile/Photo/Crop.php:155
#: src/Module/Settings/Profile/Photo/Index.php:113 #: src/Module/Settings/Profile/Photo/Index.php:113
#: src/Module/Settings/UserExport.php:59 src/Module/Settings/UserExport.php:94 #: src/Module/Settings/UserExport.php:59 src/Module/Settings/UserExport.php:94
@ -880,8 +884,8 @@ msgid "Access to this profile has been restricted."
msgstr "" msgstr ""
#: mod/cal.php:251 mod/events.php:422 src/Content/Nav.php:195 #: mod/cal.php:251 mod/events.php:422 src/Content/Nav.php:195
#: src/Content/Nav.php:262 src/Module/BaseProfile.php:86 #: src/Content/Nav.php:262 src/Module/BaseProfile.php:87
#: src/Module/BaseProfile.php:97 view/theme/frio/theme.php:230 #: src/Module/BaseProfile.php:98 view/theme/frio/theme.php:230
#: view/theme/frio/theme.php:234 #: view/theme/frio/theme.php:234
msgid "Events" msgid "Events"
msgstr "" msgstr ""
@ -1087,7 +1091,7 @@ msgstr ""
#: src/Module/Delegation.php:152 src/Module/FriendSuggest.php:129 #: src/Module/Delegation.php:152 src/Module/FriendSuggest.php:129
#: src/Module/Install.php:245 src/Module/Install.php:287 #: src/Module/Install.php:245 src/Module/Install.php:287
#: src/Module/Install.php:324 src/Module/Invite.php:174 #: src/Module/Install.php:324 src/Module/Invite.php:174
#: src/Module/Item/Compose.php:147 src/Module/Profile/Profile.php:244 #: src/Module/Item/Compose.php:150 src/Module/Profile/Profile.php:244
#: src/Module/Settings/Profile/Index.php:221 src/Object/Post.php:962 #: src/Module/Settings/Profile/Index.php:221 src/Object/Post.php:962
#: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160 #: view/theme/duepuntozero/config.php:69 view/theme/frio/config.php:160
#: view/theme/quattro/config.php:71 view/theme/vier/config.php:119 #: view/theme/quattro/config.php:71 view/theme/vier/config.php:119
@ -1188,19 +1192,19 @@ msgstr ""
msgid "Empty post discarded." msgid "Empty post discarded."
msgstr "" msgstr ""
#: mod/item.php:724 #: mod/item.php:740
msgid "Post updated." msgid "Post updated."
msgstr "" msgstr ""
#: mod/item.php:734 mod/item.php:739 #: mod/item.php:750 mod/item.php:755
msgid "Item wasn't stored." msgid "Item wasn't stored."
msgstr "" msgstr ""
#: mod/item.php:750 #: mod/item.php:766
msgid "Item couldn't be fetched." msgid "Item couldn't be fetched."
msgstr "" msgstr ""
#: mod/item.php:896 src/Module/Admin/Themes/Details.php:39 #: mod/item.php:912 src/Module/Admin/Themes/Details.php:39
#: src/Module/Admin/Themes/Index.php:59 src/Module/Debug/ItemBody.php:41 #: src/Module/Admin/Themes/Index.php:59 src/Module/Debug/ItemBody.php:41
#: src/Module/Debug/ItemBody.php:56 #: src/Module/Debug/ItemBody.php:56
msgid "Item not found." msgid "Item not found."
@ -1471,7 +1475,7 @@ msgid_plural "%d messages"
msgstr[0] "" msgstr[0] ""
msgstr[1] "" msgstr[1] ""
#: mod/notes.php:51 src/Module/BaseProfile.php:108 #: mod/notes.php:51 src/Module/BaseProfile.php:109
msgid "Personal Notes" msgid "Personal Notes"
msgstr "" msgstr ""
@ -1735,7 +1739,7 @@ msgid "Rotate CCW (left)"
msgstr "" msgstr ""
#: mod/photos.php:1367 mod/photos.php:1423 mod/photos.php:1497 #: mod/photos.php:1367 mod/photos.php:1423 mod/photos.php:1497
#: src/Module/Contact.php:1057 src/Module/Item/Compose.php:145 #: src/Module/Contact.php:1057 src/Module/Item/Compose.php:148
#: src/Object/Post.php:959 #: src/Object/Post.php:959
msgid "This is you" msgid "This is you"
msgstr "" msgstr ""
@ -2711,7 +2715,7 @@ msgstr ""
msgid "File upload failed." msgid "File upload failed."
msgstr "" msgstr ""
#: mod/wall_upload.php:233 src/Model/Photo.php:987 #: mod/wall_upload.php:233 src/Model/Photo.php:1002
msgid "Wall Photos" msgid "Wall Photos"
msgstr "" msgstr ""
@ -3168,8 +3172,7 @@ msgstr ""
msgid "Your photos" msgid "Your photos"
msgstr "" msgstr ""
#: src/Content/Nav.php:194 src/Module/BaseProfile.php:74 #: src/Content/Nav.php:194 view/theme/frio/theme.php:229
#: src/Module/BaseProfile.php:77 view/theme/frio/theme.php:229
msgid "Videos" msgid "Videos"
msgstr "" msgstr ""
@ -3241,8 +3244,8 @@ msgid "Tags"
msgstr "" msgstr ""
#: src/Content/Nav.php:239 src/Content/Nav.php:298 #: src/Content/Nav.php:239 src/Content/Nav.php:298
#: src/Content/Text/HTML.php:902 src/Module/BaseProfile.php:119 #: src/Content/Text/HTML.php:902 src/Module/BaseProfile.php:128
#: src/Module/BaseProfile.php:122 src/Module/Contact.php:818 #: src/Module/BaseProfile.php:131 src/Module/Contact.php:818
#: src/Module/Contact.php:906 view/theme/frio/theme.php:237 #: src/Module/Contact.php:906 view/theme/frio/theme.php:237
msgid "Contacts" msgid "Contacts"
msgstr "" msgstr ""
@ -3255,8 +3258,8 @@ msgstr ""
msgid "Conversations on this and other servers" msgid "Conversations on this and other servers"
msgstr "" msgstr ""
#: src/Content/Nav.php:262 src/Module/BaseProfile.php:89 #: src/Content/Nav.php:262 src/Module/BaseProfile.php:90
#: src/Module/BaseProfile.php:100 view/theme/frio/theme.php:234 #: src/Module/BaseProfile.php:101 view/theme/frio/theme.php:234
msgid "Events and Calendar" msgid "Events and Calendar"
msgstr "" msgstr ""
@ -3400,8 +3403,8 @@ msgid ""
"<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s" "<a href=\"%1$s\" target=\"_blank\" rel=\"noopener noreferrer\">%2$s</a> %3$s"
msgstr "" msgstr ""
#: src/Content/Text/BBCode.php:1177 src/Model/Item.php:3138 #: src/Content/Text/BBCode.php:1177 src/Model/Item.php:3141
#: src/Model/Item.php:3144 src/Model/Item.php:3145 #: src/Model/Item.php:3147 src/Model/Item.php:3148
msgid "Link to source" msgid "Link to source"
msgstr "" msgstr ""
@ -4586,33 +4589,33 @@ msgstr ""
msgid "Edit groups" msgid "Edit groups"
msgstr "" msgstr ""
#: src/Model/Item.php:1664 #: src/Model/Item.php:1667
#, php-format #, php-format
msgid "Detected languages in this post:\\n%s" msgid "Detected languages in this post:\\n%s"
msgstr "" msgstr ""
#: src/Model/Item.php:2614 #: src/Model/Item.php:2617
msgid "activity" msgid "activity"
msgstr "" msgstr ""
#: src/Model/Item.php:2616 #: src/Model/Item.php:2619
msgid "comment" msgid "comment"
msgstr "" msgstr ""
#: src/Model/Item.php:2619 #: src/Model/Item.php:2622
msgid "post" msgid "post"
msgstr "" msgstr ""
#: src/Model/Item.php:2756 #: src/Model/Item.php:2759
#, php-format #, php-format
msgid "Content warning: %s" msgid "Content warning: %s"
msgstr "" msgstr ""
#: src/Model/Item.php:3103 #: src/Model/Item.php:3106
msgid "bytes" msgid "bytes"
msgstr "" msgstr ""
#: src/Model/Item.php:3132 src/Model/Item.php:3133 #: src/Model/Item.php:3135 src/Model/Item.php:3136
msgid "View on separate page" msgid "View on separate page"
msgstr "" msgstr ""
@ -7089,11 +7092,19 @@ msgstr ""
msgid "Profile Details" msgid "Profile Details"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:111 #: src/Module/BaseProfile.php:112
msgid "Only You Can See This" msgid "Only You Can See This"
msgstr "" msgstr ""
#: src/Module/BaseProfile.php:130 src/Module/BaseProfile.php:133 #: src/Module/BaseProfile.php:117
msgid "Scheduled Posts"
msgstr ""
#: src/Module/BaseProfile.php:120
msgid "Posts that are scheduled for publishing"
msgstr ""
#: src/Module/BaseProfile.php:139 src/Module/BaseProfile.php:142
msgid "Tips for New Members" msgid "Tips for New Members"
msgstr "" msgstr ""
@ -8494,35 +8505,35 @@ msgid ""
"important, please visit http://friendi.ca" "important, please visit http://friendi.ca"
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:47 #: src/Module/Item/Compose.php:50
msgid "Please enter a post body." msgid "Please enter a post body."
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:60 #: src/Module/Item/Compose.php:63
msgid "This feature is only available with the frio theme." msgid "This feature is only available with the frio theme."
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:87 #: src/Module/Item/Compose.php:90
msgid "Compose new personal note" msgid "Compose new personal note"
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:96 #: src/Module/Item/Compose.php:99
msgid "Compose new post" msgid "Compose new post"
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:138 #: src/Module/Item/Compose.php:141
msgid "Visibility" msgid "Visibility"
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:159 #: src/Module/Item/Compose.php:162
msgid "Clear the location" msgid "Clear the location"
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:160 #: src/Module/Item/Compose.php:163
msgid "Location services are unavailable on your device" msgid "Location services are unavailable on your device"
msgstr "" msgstr ""
#: src/Module/Item/Compose.php:161 #: src/Module/Item/Compose.php:164
msgid "" msgid ""
"Location services are disabled. Please check the website's permissions on " "Location services are disabled. Please check the website's permissions on "
"your device" "your device"
@ -8768,6 +8779,12 @@ msgstr ""
msgid "%s's comments" msgid "%s's comments"
msgstr "" msgstr ""
#: src/Module/Profile/Schedule.php:40
msgid ""
"Currently here is no functionality here. Please use an app to have a look at "
"your scheduled posts."
msgstr ""
#: src/Module/Register.php:69 #: src/Module/Register.php:69
msgid "Only parent users can create additional accounts." msgid "Only parent users can create additional accounts."
msgstr "" msgstr ""

View file

@ -81,6 +81,8 @@
<div class="jotplugins"> <div class="jotplugins">
{{$jotplugins nofilter}} {{$jotplugins nofilter}}
</div> </div>
{{if $scheduled_at}}{{$scheduled_at nofilter}}{{/if}}
{{else}} {{else}}
<input type="hidden" name="group_allow" value="{{$group_allow}}"/> <input type="hidden" name="group_allow" value="{{$group_allow}}"/>
<input type="hidden" name="contact_allow" value="{{$contact_allow}}"/> <input type="hidden" name="contact_allow" value="{{$contact_allow}}"/>

View file

@ -76,6 +76,7 @@
<div style="display: none;"> <div style="display: none;">
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;"> <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
{{$acl nofilter}} {{$acl nofilter}}
{{if $scheduled_at}}{{$scheduled_at nofilter}}{{/if}}
</div> </div>
</div> </div>

View file

@ -133,6 +133,7 @@
<div id="profile-jot-acl-wrapper" class="minimize" aria-labelledby="jot-perms-lnk" role="tabpanel" aria-hidden="true"> <div id="profile-jot-acl-wrapper" class="minimize" aria-labelledby="jot-perms-lnk" role="tabpanel" aria-hidden="true">
{{$acl nofilter}} {{$acl nofilter}}
{{if $scheduled_at}}{{$scheduled_at nofilter}}{{/if}}
</div> </div>
<div id="jot-preview-content" class="minimize" aria-labelledby="jot-preview-lnk" role="tabpanel" aria-hidden="true"></div> <div id="jot-preview-content" class="minimize" aria-labelledby="jot-preview-lnk" role="tabpanel" aria-hidden="true"></div>

View file

@ -47,6 +47,7 @@
<div style="display: none;"> <div style="display: none;">
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;"> <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
{{$acl nofilter}} {{$acl nofilter}}
{{if $scheduled_at}}{{$scheduled_at nofilter}}{{/if}}
</div> </div>
</div> </div>

View file

@ -71,6 +71,7 @@
<div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;"> <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
{{$acl nofilter}} {{$acl nofilter}}
{{$jotnets nofilter}} {{$jotnets nofilter}}
{{if $scheduled_at}}{{$scheduled_at nofilter}}{{/if}}
</div> </div>
</div> </div>