Porównaj commity

...

29 Commity

Autor SHA1 Wiadomość Data
Hypolite Petovan 31b74b1c8a
Merge pull request #14046 from annando/channel-counter
Improvements for channel counter
2024-03-27 11:15:44 -04:00
Michael 0fde21ff28 Improvements for channel counter 2024-03-27 11:12:44 +00:00
Hypolite Petovan 53a2fb648f
Merge pull request #14043 from haheute/typo-independent
fix typo: Independant --> Independent
2024-03-26 13:40:39 -04:00
Hannes Heute 13b890605b add messages.po again 2024-03-26 18:35:50 +01:00
Hypolite Petovan 97f7a99382
Merge pull request #14044 from haheute/img-div-class
Img div class
2024-03-26 13:07:30 -04:00
Hannes Heute e602b16dfb follow naming convention 2024-03-26 17:33:45 +01:00
Hannes Heute 5c7dd34fba remove the typo fix from this PR 2024-03-26 17:29:52 +01:00
Hannes Heute 4b647d288a added messages.po 2024-03-26 17:21:19 +01:00
Hannes Heute 71a9e6112e Add class to div for custom styling 2024-03-26 14:04:05 +01:00
Hannes Heute 0fd5c00010 fix typo: Independant --> Independent 2024-03-26 13:14:19 +01:00
Hypolite Petovan 250b3b813c
Merge pull request #14041 from annando/feature-admin
Simplified admin frontend for features
2024-03-26 07:30:24 -04:00
Michael f537d7a64f Simplified admin frontend for features 2024-03-25 21:55:42 +00:00
Hypolite Petovan 5ec445e90b
Merge pull request #14040 from annando/widget-lock
The visibility of network widgets can now be locked
2024-03-25 10:42:10 +00:00
Michael 67e0b6357e The visibility of network widgets can now be locked 2024-03-25 08:00:46 +00:00
Tobias Diekershoff f928372266
Merge pull request #14039 from annando/widget-features
Configuration for widgets
2024-03-25 08:45:16 +01:00
Michael 200cf29a8d Configuration for widgets 2024-03-25 07:38:36 +00:00
Michael Vogel f78b0e7c51
Merge pull request #14037 from MrPetovan/bug/warnings
Add expected field 'uri-id' in Mastodon\Statuses\Bookmark
2024-03-24 20:57:20 +01:00
Hypolite Petovan b21604a720
Merge pull request #14038 from annando/feature-constants
Constants for features
2024-03-24 19:37:39 +00:00
Hypolite Petovan c67225c62d Add expected field 'uri-id' in Mastodon\Statuses\Bookmark
- Address https://github.com/friendica/friendica/issues/14026#issuecomment-2016469896
2024-03-24 15:30:44 -04:00
Michael Vogel 449464a2b1
Merge pull request #14036 from MrPetovan/bug/deprecated
Add `'$VERSION'` template variable to make Friendica version available in templates
2024-03-24 15:55:29 +01:00
Michael c041c65c1d Comstants for features 2024-03-24 14:48:23 +00:00
Hypolite Petovan e293de04f5 Add '$VERSION' template variable to make Friendica version available in templates
- constant() Smarty function is deprecated
- Remove unused site-wide template variable '$APP'
- Address https://github.com/friendica/friendica/issues/14027#issuecomment-2016469408
2024-03-24 09:20:58 -04:00
Hypolite Petovan b4d71f1855 Remove duplicated '$baseurl' template variable declarations
- This variable is declared for all templates in Renderer
2024-03-24 09:11:46 -04:00
Tobias Diekershoff d824bb536f
Merge pull request #14032 from annando/quoted-posts
Implementation of FEP-e232 for quoted posts
2024-03-24 07:59:53 +01:00
Tobias Diekershoff 1b9fa0fe00
Merge pull request #14033 from annando/content-link
Add a link to the post if "no preview" is selected
2024-03-24 07:54:35 +01:00
Michael b72e32a842 Add a link to the post if "no preview" is selected 2024-03-24 06:46:48 +00:00
Michael b39c48fb02 Implementation of FEP-e232 for quoted posts 2024-03-24 06:05:37 +00:00
Hypolite Petovan b5a69da872
Merge pull request #14029 from annando/issue-13910
Issue 13910: Display the unseen counter based on the channel
2024-03-24 00:08:25 +00:00
Michael 618a3153ab Issue 13910: Display the unseen counter based on the channel 2024-03-23 17:17:56 +00:00
73 zmienionych plików z 837 dodań i 693 usunięć

Wyświetl plik

@ -850,10 +850,6 @@ Here is a complete list of all hook callbacks with file locations (as of 24-Sep-
Hook::callAll('register_account', $uid);
Hook::callAll('remove_user', $user);
### src/Module/Notifications/Ping.php
Hook::callAll('network_ping', $arr);
### src/Module/PermissionTooltip.php
Hook::callAll('lockview_content', $item);

Wyświetl plik

@ -418,10 +418,6 @@ Eine komplette Liste aller Hook-Callbacks mit den zugehörigen Dateien (am 01-Ap
Hook::callAll('storage_instance', $data);
Hook::callAll('storage_config', $data);
### src/Module/Notifications/Ping.php
Hook::callAll('network_ping', $arr);
### src/Module/PermissionTooltip.php
Hook::callAll('lockview_content', $item);

Wyświetl plik

@ -332,7 +332,6 @@ class Conversation
$tpl = Renderer::getMarkupTemplate('jot-header.tpl');
$this->page['htmlhead'] .= Renderer::replaceMacros($tpl, [
'$newpost' => 'true',
'$baseurl' => $this->baseURL,
'$geotag' => $geotag,
'$nickname' => $x['nickname'],
'$ispublic' => $this->l10n->t('Visible to <strong>everybody</strong>'),
@ -389,7 +388,7 @@ class Conversation
'$title' => $x['title'] ?? '',
'$placeholdertitle' => $this->l10n->t('Set title'),
'$category' => $x['category'] ?? '',
'$placeholdercategory' => Feature::isEnabled($this->session->getLocalUserId(), 'categories') ? $this->l10n->t("Categories \x28comma-separated list\x29") : '',
'$placeholdercategory' => Feature::isEnabled($this->session->getLocalUserId(), Feature::CATEGORIES) ? $this->l10n->t("Categories \x28comma-separated list\x29") : '',
'$scheduled_at' => Temporal::getDateTimeField(
new \DateTime(),
new \DateTime('now + 6 months'),
@ -405,7 +404,6 @@ class Conversation
'$posttype' => $notes_cid ? ItemModel::PT_PERSONAL_NOTE : ItemModel::PT_ARTICLE,
'$content' => $x['content'] ?? '',
'$post_id' => $x['post_id'] ?? '',
'$baseurl' => $this->baseURL,
'$defloc' => $x['default_location'],
'$visitor' => $x['visitor'],
'$pvisit' => $notes_cid ? 'none' : $x['visitor'],
@ -591,7 +589,6 @@ class Conversation
}
$o = Renderer::replaceMacros($page_template, [
'$baseurl' => $this->baseURL,
'$return_path' => $this->args->getQueryString(),
'$live_update' => $live_update_div,
'$remove' => $this->l10n->t('remove'),

Wyświetl plik

@ -26,6 +26,25 @@ use Friendica\DI;
class Feature
{
const ACCOUNTS = 'accounts';
const ADD_ABSTRACT = 'add_abstract';
const ARCHIVE = 'archive';
const CATEGORIES = 'categories';
const CHANNELS = 'channels';
const CIRCLES = 'circles';
const COMMUNITY = 'community';
const EXPLICIT_MENTIONS = 'explicit_mentions';
const FOLDERS = 'folders';
const GROUPS = 'forumlist_profile';
const MEMBER_SINCE = 'profile_membersince';
const NETWORKS = 'networks';
const NOSHARER = 'nosharer';
const PHOTO_LOCATION = 'photo_location';
const PUBLIC_CALENDAR = 'public_calendar';
const SEARCHES = 'searches';
const TAGCLOUD = 'tagadelic';
const TRENDING_TAGS = 'trending_tags';
/**
* check if feature is enabled
*
@ -34,25 +53,18 @@ class Feature
* @return boolean
* @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/
public static function isEnabled(int $uid, $feature)
public static function isEnabled(int $uid, $feature): bool
{
$x = DI::config()->get('feature_lock', $feature, false);
if ($x === false) {
$x = DI::pConfig()->get($uid, 'feature', $feature, false);
if (!DI::config()->get('feature_lock', $feature, false)) {
$enabled = DI::config()->get('feature', $feature) ?? self::getDefault($feature);
$enabled = DI::pConfig()->get($uid, 'feature', $feature) ?? $enabled;
} else {
$enabled = true;
}
if ($x === false) {
$x = DI::config()->get('feature', $feature, false);
}
if ($x === false) {
$x = self::getDefault($feature);
}
$arr = ['uid' => $uid, 'feature' => $feature, 'enabled' => $x];
$arr = ['uid' => $uid, 'feature' => $feature, 'enabled' => $enabled];
Hook::callAll('isEnabled', $arr);
return($arr['enabled']);
return (bool)$arr['enabled'];
}
/**
@ -64,8 +76,7 @@ class Feature
*/
private static function getDefault($feature)
{
$f = self::get();
foreach ($f as $cat) {
foreach (self::get() as $cat) {
foreach ($cat as $feat) {
if (is_array($feat) && $feat[0] === $feature) {
return $feat[3];
@ -95,36 +106,49 @@ class Feature
'general' => [
DI::l10n()->t('General Features'),
//array('expire', DI::l10n()->t('Content Expiration'), DI::l10n()->t('Remove old posts/comments after a period of time')),
['photo_location', DI::l10n()->t('Photo Location'), DI::l10n()->t("Photo metadata is normally stripped. This extracts the location \x28if present\x29 prior to stripping metadata and links it to a map."), false, DI::config()->get('feature_lock', 'photo_location', false)],
['trending_tags', DI::l10n()->t('Trending Tags'), DI::l10n()->t('Show a community page widget with a list of the most popular tags in recent public posts.'), false, DI::config()->get('feature_lock', 'trending_tags', false)],
[self::PHOTO_LOCATION, DI::l10n()->t('Photo Location'), DI::l10n()->t("Photo metadata is normally stripped. This extracts the location \x28if present\x29 prior to stripping metadata and links it to a map."), false, DI::config()->get('feature_lock', self::PHOTO_LOCATION, false)],
[self::COMMUNITY, DI::l10n()->t('Display the community in the navigation'), DI::l10n()->t('If enabled, the community can be accessed via the navigation menu. Independent from this setting, the community timelines can always be accessed via the channels.'), true, DI::config()->get('feature_lock', self::COMMUNITY, false)],
],
// Post composition
'composition' => [
DI::l10n()->t('Post Composition Features'),
['aclautomention', DI::l10n()->t('Auto-mention Groups'), DI::l10n()->t('Add/remove mention when a group page is selected/deselected in ACL window.'), false, DI::config()->get('feature_lock', 'aclautomention', false)],
['explicit_mentions', DI::l10n()->t('Explicit Mentions'), DI::l10n()->t('Add explicit mentions to comment box for manual control over who gets mentioned in replies.'), false, DI::config()->get('feature_lock', 'explicit_mentions', false)],
['add_abstract', DI::l10n()->t('Add an abstract from ActivityPub content warnings'), DI::l10n()->t('Add an abstract when commenting on ActivityPub posts with a content warning. Abstracts are displayed as content warning on systems like Mastodon or Pleroma.'), false, DI::config()->get('feature_lock', 'add_abstract', false)],
[self::EXPLICIT_MENTIONS, DI::l10n()->t('Explicit Mentions'), DI::l10n()->t('Add explicit mentions to comment box for manual control over who gets mentioned in replies.'), false, DI::config()->get('feature_lock', Feature::EXPLICIT_MENTIONS, false)],
[self::ADD_ABSTRACT, DI::l10n()->t('Add an abstract from ActivityPub content warnings'), DI::l10n()->t('Add an abstract when commenting on ActivityPub posts with a content warning. Abstracts are displayed as content warning on systems like Mastodon or Pleroma.'), false, DI::config()->get('feature_lock', self::ADD_ABSTRACT, false)],
],
// Item tools
'tools' => [
DI::l10n()->t('Post/Comment Tools'),
['categories', DI::l10n()->t('Post Categories'), DI::l10n()->t('Add categories to your posts'), false, DI::config()->get('feature_lock', 'categories', false)],
[self::CATEGORIES, DI::l10n()->t('Post Categories'), DI::l10n()->t('Add categories to your posts'), false, DI::config()->get('feature_lock', self::CATEGORIES, false)],
],
// Widget visibility on the network stream
'network' => [
DI::l10n()->t('Network Widgets'),
[self::CIRCLES, DI::l10n()->t('Circles'), DI::l10n()->t('Display posts that have been created by accounts of the selected circle.'), true, DI::config()->get('feature_lock', self::CIRCLES, false)],
[self::GROUPS, DI::l10n()->t('Groups'), DI::l10n()->t('Display posts that have been distributed by the selected group.'), true, DI::config()->get('feature_lock', self::GROUPS, false)],
[self::ARCHIVE, DI::l10n()->t('Archives'), DI::l10n()->t('Display an archive where posts can be selected by month and year.'), true, DI::config()->get('feature_lock', self::ARCHIVE, false)],
[self::NETWORKS, DI::l10n()->t('Protocols'), DI::l10n()->t('Display posts with the selected protocols.'), true, DI::config()->get('feature_lock', self::NETWORKS, false)],
[self::ACCOUNTS, DI::l10n()->t('Account Types'), DI::l10n()->t('Display posts done by accounts with the selected account type.'), true, DI::config()->get('feature_lock', self::ACCOUNTS, false)],
[self::CHANNELS, DI::l10n()->t('Channels'), DI::l10n()->t('Display posts in the system channels and user defined channels.'), true, DI::config()->get('feature_lock', self::CHANNELS, false)],
[self::SEARCHES, DI::l10n()->t('Saved Searches'), DI::l10n()->t('Display posts that contain subscribed hashtags.'), true, DI::config()->get('feature_lock', self::SEARCHES, false)],
[self::FOLDERS, DI::l10n()->t('Saved Folders'), DI::l10n()->t('Display a list of folders in which posts are stored.'), true, DI::config()->get('feature_lock', self::FOLDERS, false)],
[self::NOSHARER, DI::l10n()->t('Own Contacts'), DI::l10n()->t('Include or exclude posts from subscribed accounts. This widget is not visible on all channels.'), true, DI::config()->get('feature_lock', self::NOSHARER, false)],
[self::TRENDING_TAGS, DI::l10n()->t('Trending Tags'), DI::l10n()->t('Display a list of the most popular tags in recent public posts.'), false, DI::config()->get('feature_lock', self::TRENDING_TAGS, false)],
],
// Advanced Profile Settings
'advanced_profile' => [
DI::l10n()->t('Advanced Profile Settings'),
['forumlist_profile', DI::l10n()->t('List Groups'), DI::l10n()->t('Show visitors public groups at the Advanced Profile Page'), false, DI::config()->get('feature_lock', 'forumlist_profile', false)],
['tagadelic', DI::l10n()->t('Tag Cloud'), DI::l10n()->t('Provide a personal tag cloud on your profile page'), false, DI::config()->get('feature_lock', 'tagadelic', false)],
['profile_membersince', DI::l10n()->t('Display Membership Date'), DI::l10n()->t('Display membership date in profile'), false, DI::config()->get('feature_lock', 'profile_membersince', false)],
[self::TAGCLOUD, DI::l10n()->t('Tag Cloud'), DI::l10n()->t('Provide a personal tag cloud on your profile page'), false, DI::config()->get('feature_lock', self::TAGCLOUD, false)],
[self::MEMBER_SINCE, DI::l10n()->t('Display Membership Date'), DI::l10n()->t('Display membership date in profile'), false, DI::config()->get('feature_lock', self::MEMBER_SINCE, false)],
],
//Advanced Calendar Settings
'advanced_calendar' => [
DI::l10n()->t('Advanced Calendar Settings'),
['public_calendar', DI::l10n()->t('Allow anonymous access to your calendar'), DI::l10n()->t('Allows anonymous visitors to consult your calendar and your public events. Contact birthday events are private to you.'), false, DI::config()->get('feature_lock', 'public_calendar', false)],
[self::PUBLIC_CALENDAR, DI::l10n()->t('Allow anonymous access to your calendar'), DI::l10n()->t('Allows anonymous visitors to consult your calendar and your public events. Contact birthday events are private to you.'), false, DI::config()->get('feature_lock', self::PUBLIC_CALENDAR, false)],
]
];

Wyświetl plik

@ -172,8 +172,7 @@ class GroupManager
*/
public static function profileAdvanced($uid)
{
$profile = intval(Feature::isEnabled($uid, 'forumlist_profile'));
if (!$profile) {
if (!Feature::isEnabled($uid, Feature::GROUPS)) {
return '';
}

Wyświetl plik

@ -800,14 +800,14 @@ class Item
*/
public function addShareLink(string $body, int $quote_uri_id): string
{
$post = Post::selectFirstPost(['uri', 'plink'], ['uri-id' => $quote_uri_id]);
$post = Post::selectFirstPost(['uri'], ['uri-id' => $quote_uri_id]);
if (empty($post)) {
return $body;
}
$body = BBCode::removeSharedData($body);
$body .= "\n" . ($post['plink'] ?: $post['uri']);
$body .= "\nRE: " . $post['uri'];
return $body;
}
@ -1045,7 +1045,7 @@ class Item
public function postProcessPost(array $post, array $recipients = [])
{
if (!\Friendica\Content\Feature::isEnabled($post['uid'], 'explicit_mentions') && ($post['gravity'] == ItemModel::GRAVITY_COMMENT)) {
if (!Feature::isEnabled($post['uid'], Feature::EXPLICIT_MENTIONS) && ($post['gravity'] == ItemModel::GRAVITY_COMMENT)) {
Tag::createImplicitMentions($post['uri-id'], $post['thr-parent-id']);
}

Wyświetl plik

@ -284,8 +284,8 @@ class Nav
$gdirpath = Profile::zrl($this->config->get('system', 'directory'), true);
}
if (($this->session->getLocalUserId() || $this->config->get('system', 'community_page_style') != Community::DISABLED_VISITOR) &&
!($this->config->get('system', 'community_page_style') == Community::DISABLED)) {
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::COMMUNITY) && (($this->session->getLocalUserId() || $this->config->get('system', 'community_page_style') != Community::DISABLED_VISITOR) &&
!($this->config->get('system', 'community_page_style') == Community::DISABLED))) {
$nav['community'] = ['community', $this->l10n->t('Community'), '', $this->l10n->t('Conversations on this and other servers')];
}

Wyświetl plik

@ -336,7 +336,7 @@ class Widget
*/
public static function categories(int $uid, string $baseurl, string $selected = ''): string
{
if (!Feature::isEnabled($uid, 'categories')) {
if (!Feature::isEnabled($uid, Feature::CATEGORIES)) {
return '';
}
@ -428,7 +428,7 @@ class Widget
return '';
}
if (Feature::isEnabled($uid, 'tagadelic')) {
if (Feature::isEnabled($uid, Feature::TAGCLOUD)) {
$owner_id = Contact::getPublicIdByUserId($uid);
if (!$owner_id) {
@ -598,4 +598,4 @@ class Widget
$channelname
);
}
}
}

Wyświetl plik

@ -75,8 +75,11 @@ class Renderer
{
DI::profiler()->startRecording('rendering');
// pass $baseurl to all templates if it isn't set
$vars = array_merge(['$baseurl' => DI::baseUrl(), '$APP' => DI::app()], $vars);
// Default template variables
$vars = array_merge([
'$baseurl' => DI::baseUrl(),
'$VERSION' => \Friendica\App::VERSION,
], $vars);
$t = self::getTemplateEngine();

Wyświetl plik

@ -516,7 +516,7 @@ class Event
throw new HTTPException\UnauthorizedException(DI::l10n()->t('Access to this profile has been restricted.'));
}
if (!DI::userSession()->isAuthenticated() && !Feature::isEnabled($owner['uid'], 'public_calendar')) {
if (!DI::userSession()->isAuthenticated() && !Feature::isEnabled($owner['uid'], Feature::PUBLIC_CALENDAR)) {
throw new HTTPException\UnauthorizedException(DI::l10n()->t('Permission denied.'));
}

Wyświetl plik

@ -3861,6 +3861,11 @@ class Item
$preview_mode = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'system', 'preview_mode', BBCode::PREVIEW_LARGE);
if ($preview_mode != BBCode::PREVIEW_NONE) {
$rendered = BBCode::convertAttachment('', BBCode::INTERNAL, false, $data, $uriid, $preview_mode);
} elseif (!self::containsLink($content, $data['url'], Post\Media::HTML)) {
$rendered = Renderer::replaceMacros(Renderer::getMarkupTemplate('content/link.tpl'), [
'$url' => $data['url'],
'$title' => $data['title'],
]);
} else {
$rendered = '';
}

Wyświetl plik

@ -34,25 +34,24 @@ class Features extends BaseAdmin
self::checkFormSecurityTokenRedirectOnError('/admin/features', 'admin_manage_features');
$features = Feature::get(false);
foreach ($features as $fname => $fdata) {
foreach (Feature::get(false) as $fdata) {
foreach (array_slice($fdata, 1) as $f) {
$feature = $f[0];
$feature_state = 'feature_' . $feature;
$featurelock = 'featurelock_' . $feature;
switch ($_POST['featureselect_' . $feature]) {
case 0:
DI::config()->set('feature', $feature, false);
DI::config()->delete('feature_lock', $feature);
break;
if (!empty($_POST[$feature_state])) {
$val = intval($_POST[$feature_state]);
} else {
$val = 0;
}
DI::config()->set('feature', $feature, $val);
case 1:
DI::config()->set('feature', $feature, true);
DI::config()->delete('feature_lock', $feature);
break;
if (!empty($_POST[$featurelock])) {
DI::config()->set('feature_lock', $feature, 1);
} else {
DI::config()->delete('feature_lock', $feature);
case 2:
DI::config()->delete('feature', $feature);
DI::config()->set('feature_lock', $feature, true);
break;
}
}
}
@ -64,17 +63,15 @@ class Features extends BaseAdmin
{
parent::content();
$features = [];
$features = [];
$selection = [DI::l10n()->t('No'), DI::l10n()->t('Yes'), DI::l10n()->t('Locked')];
foreach (Feature::get(false) as $fname => $fdata) {
$features[$fname] = [];
$features[$fname][0] = $fdata[0];
foreach (array_slice($fdata, 1) as $f) {
$set = DI::config()->get('feature', $f[0], $f[3]);
$features[$fname][1][] = [
['feature_' . $f[0], $f[1], $set, $f[2]],
['featurelock_' . $f[0], DI::l10n()->t('Lock feature %s', $f[1]), $f[4], '']
];
$selected = $f[4] ? 2 : (int)$set;
$features[$fname][1][] = ['featureselect_' . $f[0], $f[1], $selected, $f[2], $selection];
}
}

Wyświetl plik

@ -221,7 +221,6 @@ class Federation extends BaseAdmin
'$page' => DI::l10n()->t('Federation Statistics'),
'$intro' => $intro,
'$counts' => $counts,
'$version' => App::VERSION,
'$legendtext' => DI::l10n()->tt('Currently this node is aware of %2$s node (%3$s active users last month, %4$s active users last six months, %5$s registered users in total) from the following platforms:', 'Currently this node is aware of %2$s nodes (%3$s active users last month, %4$s active users last six months, %5$s registered users in total) from the following platforms:', $total, number_format($total), number_format($month), number_format($halfyear), number_format($users)),
]);
}

Wyświetl plik

@ -196,7 +196,7 @@ class Summary extends BaseAdmin
'$title' => DI::l10n()->t('Administration'),
'$page' => DI::l10n()->t('Summary'),
'$queues' => $queues,
'$version' => [DI::l10n()->t('Version'), App::VERSION],
'$version_label' => DI::l10n()->t('Version'),
'$platform' => App::PLATFORM,
'$codename' => App::CODENAME,
'$build' => DI::config()->get('system', 'build'),

Wyświetl plik

@ -21,7 +21,6 @@
namespace Friendica\Module\Api\Mastodon\Statuses;
use Friendica\Core\System;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Model\Item;
@ -54,7 +53,7 @@ class Bookmark extends BaseApi
if ($item['uid'] == 0) {
$stored = Item::storeForUserByUriId($item['uri-id'], $uid, ['post-reason' => Item::PR_ACTIVITY]);
if (!empty($stored)) {
$item = Post::selectFirst(['id', 'gravity'], ['id' => $stored]);
$item = Post::selectFirst(['id', 'uri-id', 'gravity'], ['id' => $stored]);
if (!DBA::isResult($item)) {
$this->logAndJsonError(404, $this->errorFactory->RecordNotFound());
}

Wyświetl plik

@ -91,7 +91,7 @@ class BaseProfile extends BaseModule
];
} else {
$owner = User::getByNickname($nickname, ['uid']);
if(DI::userSession()->isAuthenticated() || $owner && Feature::isEnabled($owner['uid'], 'public_calendar')) {
if(DI::userSession()->isAuthenticated() || $owner && Feature::isEnabled($owner['uid'], Feature::PUBLIC_CALENDAR)) {
$tabs[] = [
'label' => DI::l10n()->t('Calendar'),
'url' => DI::baseUrl() . '/calendar/show/' . $nickname,

Wyświetl plik

@ -78,7 +78,7 @@ class Export extends BaseModule
$this->baseUrl->redirect('profile/' . $nickname . '/restricted');
}
if (!$this->session->isAuthenticated() && !Feature::isEnabled($owner['uid'], 'public_calendar')) {
if (!$this->session->isAuthenticated() && !Feature::isEnabled($owner['uid'], Feature::PUBLIC_CALENDAR)) {
$this->sysMessages->addNotice($this->t('Permission denied.'));
$this->baseUrl->redirect('profile/' . $nickname);
}

Wyświetl plik

@ -78,7 +78,7 @@ class Show extends BaseModule
$this->baseUrl->redirect('profile/' . $nickname . '/restricted');
}
if (!$this->session->isAuthenticated() && !Feature::isEnabled($owner['uid'], 'public_calendar')) {
if (!$this->session->isAuthenticated() && !Feature::isEnabled($owner['uid'], Feature::PUBLIC_CALENDAR)) {
$this->sysMessages->addNotice($this->t('Permission denied.'));
return Login::form();
}

Wyświetl plik

@ -119,7 +119,7 @@ class Channel extends Timeline
$this->page['aside'] .= $this->getNoSharerWidget('channel');
}
if (Feature::isEnabled($this->session->getLocalUserId(), 'trending_tags')) {
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::TRENDING_TAGS)) {
$this->page['aside'] .= TrendingTags::getHTML($this->selectedTab);
}

Wyświetl plik

@ -110,7 +110,7 @@ class Community extends Timeline
$this->page['aside'] .= $this->getNoSharerWidget('community');
}
if (Feature::isEnabled($this->session->getLocalUserId(), 'trending_tags')) {
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::TRENDING_TAGS)) {
$this->page['aside'] .= TrendingTags::getHTML($this->selectedTab);
}

Wyświetl plik

@ -130,21 +130,35 @@ class Network extends Timeline
$o = '';
$this->page['aside'] .= Circle::sidebarWidget($module, $module . '/circle', 'standard', $this->circleId);
$this->page['aside'] .= GroupManager::widget($this->session->getLocalUserId());
$this->page['aside'] .= Widget::postedByYear($module . '/archive', $this->session->getLocalUserId(), false);
$this->page['aside'] .= Widget::networks($module, $this->network);
$this->page['aside'] .= Widget::accountTypes($module, $this->accountTypeString);
$this->page['aside'] .= Widget::channels($module, $this->selectedTab, $this->session->getLocalUserId());
$this->page['aside'] .= Widget\SavedSearches::getHTML($this->args->getQueryString());
$this->page['aside'] .= Widget::fileAs('filed', '');
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::CIRCLES)) {
$this->page['aside'] .= Circle::sidebarWidget($module, $module . '/circle', 'standard', $this->circleId);
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::GROUPS)) {
$this->page['aside'] .= GroupManager::widget($this->session->getLocalUserId());
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::ARCHIVE)) {
$this->page['aside'] .= Widget::postedByYear($module . '/archive', $this->session->getLocalUserId(), false);
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::NETWORKS)) {
$this->page['aside'] .= Widget::networks($module, $this->network);
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::ACCOUNTS)) {
$this->page['aside'] .= Widget::accountTypes($module, $this->accountTypeString);
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::CHANNELS)) {
$this->page['aside'] .= Widget::channels($module, $this->selectedTab, $this->session->getLocalUserId());
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::SEARCHES)) {
$this->page['aside'] .= Widget\SavedSearches::getHTML($this->args->getQueryString());
}
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::FOLDERS)) {
$this->page['aside'] .= Widget::fileAs('filed', '');
}
if (($this->channel->isTimeline($this->selectedTab) || $this->userDefinedChannel->isTimeline($this->selectedTab, $this->session->getLocalUserId())) &&
!in_array($this->selectedTab, [Channel::FOLLOWERS, Channel::FORYOU, Channel::DISCOVER])) {
!in_array($this->selectedTab, [Channel::FOLLOWERS, Channel::FORYOU, Channel::DISCOVER]) && Feature::isEnabled($this->session->getLocalUserId(), Feature::NOSHARER)) {
$this->page['aside'] .= $this->getNoSharerWidget('network');
}
if (Feature::isEnabled($this->session->getLocalUserId(), 'trending_tags')) {
if (Feature::isEnabled($this->session->getLocalUserId(), Feature::TRENDING_TAGS)) {
$this->page['aside'] .= TrendingTags::getHTML($this->selectedTab);
}
@ -295,7 +309,7 @@ class Network extends Timeline
$this->circleId = (int)($this->parameters['circle_id'] ?? 0);
if (!$this->selectedTab) {
$this->selectedTab = self::getTimelineOrderBySession($this->session, $this->pConfig);
$this->selectedTab = $this->getTimelineOrderBySession();
} elseif (!$this->networkFactory->isTimeline($this->selectedTab) && !$this->channel->isTimeline($this->selectedTab) && !$this->userDefinedChannel->isTimeline($this->selectedTab, $this->session->getLocalUserId()) && !$this->community->isTimeline($this->selectedTab)) {
throw new HTTPException\BadRequestException($this->l10n->t('Network feed not available.'));
}
@ -357,6 +371,11 @@ class Network extends Timeline
$this->dateTo = $this->parameters['to'] ?? '';
$this->setMaxMinByOrder($request);
if (is_null($this->maxId) && !is_null($this->minId)) {
$this->session->set('network-request', $request);
$this->pConfig->set($this->session->getLocalUserId(), 'network.view', 'request', $request);
}
}
protected function getItems()
@ -469,14 +488,24 @@ class Network extends Timeline
/**
* Returns the selected network tab of the currently logged-in user
*
* @param IHandleUserSessions $session
* @param IManagePersonalConfigValues $pconfig
* @return string
*/
public static function getTimelineOrderBySession(IHandleUserSessions $session, IManagePersonalConfigValues $pconfig): string
private function getTimelineOrderBySession(): string
{
return $session->get('network-tab')
?? $pconfig->get($session->getLocalUserId(), 'network.view', 'selected_tab')
return $this->session->get('network-tab')
?? $this->pConfig->get($this->session->getLocalUserId(), 'network.view', 'selected_tab')
?? '';
}
/**
* Returns the lst request parameters of the currently logged-in user
*
* @return array
*/
protected function getTimelineRequestBySession(): array
{
return $this->session->get('network-request')
?? $this->pConfig->get($this->session->getLocalUserId(), 'network.view', 'request')
?? [];
}
}

Wyświetl plik

@ -235,6 +235,7 @@ class Timeline extends BaseModule
protected function getChannelItems(array $request)
{
$items = $this->getRawChannelItems($request);
$total = min(count($items), $this->itemsPerPage);
$contacts = $this->database->selectToArray('user-contact', ['cid'], ['channel-frequency' => Contact\User::FREQUENCY_REDUCED, 'cid' => array_column($items, 'owner-id')]);
$reduced = array_column($contacts, 'cid');
@ -246,8 +247,8 @@ class Timeline extends BaseModule
$owner_posts = [];
$selected_items = [];
while (count($selected_items) < $this->itemsPerPage && ++$count < 50 && count($items) > 0) {
$maxposts = round((count($items) / $this->itemsPerPage) * $maxpostperauthor);
while (count($selected_items) < $total && ++$count < 50 && count($items) > 0) {
$maxposts = round((count($items) / $total) * $maxpostperauthor);
$minId = $items[array_key_first($items)][$this->order];
$maxId = $items[array_key_last($items)][$this->order];
@ -279,7 +280,7 @@ class Timeline extends BaseModule
$this->maxId = $maxId;
}
if (count($selected_items) < $this->itemsPerPage) {
if (count($selected_items) < $total) {
$items = $this->getRawChannelItems($request);
}
}

Wyświetl plik

@ -205,7 +205,7 @@ class Compose extends BaseModule
'location_disabled' => $this->l10n->t('Location services are disabled. Please check the website\'s permissions on your device'),
'wait' => $this->l10n->t('Please wait'),
'placeholdertitle' => $this->l10n->t('Set title'),
'placeholdercategory' => Feature::isEnabled(DI::userSession()->getLocalUserId(),'categories') ? $this->l10n->t('Categories (comma-separated list)') : '',
'placeholdercategory' => Feature::isEnabled(DI::userSession()->getLocalUserId(), Feature::CATEGORIES) ? $this->l10n->t('Categories (comma-separated list)') : '',
'always_open_compose' => $this->pConfig->get(DI::userSession()->getLocalUserId(), 'frio', 'always_open_compose',
$this->config->get('frio', 'always_open_compose', false)) ? '' :
$this->l10n->t('You can make this page always open when you use the New Post button in the <a href="/settings/display">Theme Customization settings</a>.'),

Wyświetl plik

@ -124,8 +124,6 @@ class Contact extends BaseModeration
'$form_security_token' => self::getFormSecurityToken('moderation_contactblock'),
// values //
'$baseurl' => $this->baseUrl,
'$contacts' => $contacts,
'$total_contacts' => $this->tt('%s total blocked contact', '%s total blocked contacts', $total),
'$paginate' => $pager->renderFull($total),

Wyświetl plik

@ -138,7 +138,6 @@ class Add extends BaseModeration
'$newreason' => ['reason', $this->t('Block reason'), $request['reason'] ?? '', $this->t('The reason why you blocked this server domain pattern. This reason will be shown publicly in the server information page.'), $this->t('Required'), '', ''],
'$pattern' => $pattern,
'$gservers' => $gservers,
'$baseurl' => $this->baseUrl,
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist_add')
]);
}

Wyświetl plik

@ -130,7 +130,6 @@ class Import extends \Friendica\Module\BaseModeration
'$mode_append' => ['mode', $this->t('Append'), 'append', $this->t('Imports patterns from the file that weren\'t already existing in the current blocklist.'), 'checked="checked"'],
'$mode_replace' => ['mode', $this->t('Replace'), 'replace', $this->t('Replaces the current blocklist by the imported patterns.')],
'$blocklist' => $this->blocklist,
'$baseurl' => $this->baseUrl,
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist_import')
]);
}

Wyświetl plik

@ -115,7 +115,6 @@ class Index extends BaseModeration
'$listfile' => ['listfile', $this->t('Server domain pattern blocklist CSV file'), '', '', $this->t('Required'), '', 'file'],
'$newdomain' => ['pattern', $this->t('Server Domain Pattern'), '', $this->t('The domain pattern of the new server to add to the blocklist. Do not include the protocol.'), $this->t('Required'), '', ''],
'$entries' => $blocklistform,
'$baseurl' => $this->baseUrl,
'$form_security_token' => self::getFormSecurityToken('moderation_blocklist'),
'$form_security_token_import' => self::getFormSecurityToken('moderation_blocklist_import'),

Wyświetl plik

@ -95,8 +95,6 @@ class Reports extends BaseModeration
'$th_reports' => [$this->t('Created'), $this->t('Photo'), $this->t('Name'), $this->t('Comment'), $this->t('Category')],
// values //
'$baseurl' => $this->baseUrl,
'$reports' => $reports,
'$total_reports' => $this->tt('%s total report', '%s total reports', $total),
'$paginate' => $pager->renderFull($total),

Wyświetl plik

@ -150,7 +150,6 @@ class Active extends BaseUsers
'$form_security_token' => self::getFormSecurityToken('moderation_users_active'),
// values //
'$baseurl' => $this->baseUrl,
'$query_string' => $this->args->getQueryString(),
'$users' => $users,

Wyświetl plik

@ -105,7 +105,6 @@ class Ping extends BaseModule
$intro_count = 0;
$mail_count = 0;
$home_count = 0;
$network_count = 0;
$register_count = 0;
$sysnotify_count = 0;
$circles_unseen = [];
@ -125,34 +124,13 @@ class Ping extends BaseModule
}
$condition = [
"`unseen` AND `uid` = ? AND NOT `origin` AND (`vid` != ? OR `vid` IS NULL)",
"`unseen` AND `uid` = ? AND NOT `origin` AND `wall` AND (`vid` != ? OR `vid` IS NULL)",
$this->session->getLocalUserId(), Verb::getID(Activity::FOLLOW)
];
// No point showing counts for non-top-level posts when the network page is ordered by received field
if (Network::getTimelineOrderBySession($this->session, $this->pconfig) == 'received') {
$condition = DBA::mergeConditions($condition, ["`parent` = `id`"]);
}
$home_count = Post::count($condition);
$items_unseen = $this->database->toArray(Post::selectForUser(
$this->session->getLocalUserId(),
['wall', 'uid', 'uri-id'],
$condition,
['limit' => 1000],
));
$arr = ['items' => $items_unseen];
Hook::callAll('network_ping', $arr);
foreach ($items_unseen as $item) {
if ($item['wall']) {
$home_count++;
} else {
$network_count++;
}
}
$compute_circle_counts = $this->config->get('system','compute_circle_counts');
if ($network_count && $compute_circle_counts) {
if ($this->config->get('system','compute_circle_counts')) {
// Find out how unseen network posts are spread across circles
foreach (Circle::countUnseen($this->session->getLocalUserId()) as $circle_count) {
if ($circle_count['count'] > 0) {
@ -281,7 +259,6 @@ class Ping extends BaseModule
$data = [];
$data['intro'] = $intro_count;
$data['mail'] = $mail_count;
$data['net'] = ($network_count < 1000) ? $network_count : '999+';
$data['home'] = ($home_count < 1000) ? $home_count : '999+';
$data['register'] = $register_count;

Wyświetl plik

@ -0,0 +1,61 @@
<?php
/**
* @copyright Copyright (C) 2010-2024, 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\Ping;
use Friendica\Core\System;
use Friendica\Module\Conversation\Network as NetworkModule;
class Network extends NetworkModule
{
protected function rawContent(array $request = [])
{
if (!$this->session->getLocalUserId()) {
System::exit();
}
if (!empty($request['ping'])) {
$request = $this->getTimelineRequestBySession();
}
if (!isset($request['p']) || !isset($request['item'])) {
System::exit();
}
$this->parseRequest($request);
if ($this->force || !is_null($this->maxId)) {
System::httpExit('');
}
$this->itemsPerPage = 100;
if ($this->channel->isTimeline($this->selectedTab) || $this->userDefinedChannel->isTimeline($this->selectedTab, $this->session->getLocalUserId())) {
$items = $this->getChannelItems($request);
} elseif ($this->community->isTimeline($this->selectedTab)) {
$items = $this->getCommunityItems();
} else {
$items = $this->getItems();
}
$count = count($items);
System::httpExit(($count < 100) ? $count : '99+');
}
}

Wyświetl plik

@ -156,7 +156,7 @@ class Edit extends BaseModule
'$title' => $item['title'],
'$placeholdertitle' => $this->t('Set title'),
'$category' => Post\Category::getCSVByURIId($item['uri-id'], $this->session->getLocalUserId(), Post\Category::CATEGORY),
'$placeholdercategory' => (Feature::isEnabled($this->session->getLocalUserId(), 'categories') ? $this->t("Categories \x28comma-separated list\x29") : ''),
'$placeholdercategory' => (Feature::isEnabled($this->session->getLocalUserId(), Feature::CATEGORIES) ? $this->t("Categories \x28comma-separated list\x29") : ''),
'$emtitle' => $this->t('Example: bob@example.com, mary@example.com'),
'$lockstate' => $lockstate,
'$acl' => '',

Wyświetl plik

@ -240,7 +240,7 @@ class Photos extends \Friendica\Module\BaseProfile
// Create item container
$lat = $lon = null;
if (!empty($exif['GPS']) && Feature::isEnabled($this->owner['uid'], 'photo_location')) {
if (!empty($exif['GPS']) && Feature::isEnabled($this->owner['uid'], Feature::PHOTO_LOCATION)) {
$lat = Photo::getGps($exif['GPS']['GPSLatitude'], $exif['GPS']['GPSLatitudeRef']);
$lon = Photo::getGps($exif['GPS']['GPSLongitude'], $exif['GPS']['GPSLongitudeRef']);
}

Wyświetl plik

@ -166,7 +166,7 @@ class Profile extends BaseProfile
$basic_fields += self::buildField('fullname', $this->t('Full Name:'), $profile['name']);
if (Feature::isEnabled($profile['uid'], 'profile_membersince')) {
if (Feature::isEnabled($profile['uid'], Feature::MEMBER_SINCE)) {
$basic_fields += self::buildField(
'membersince',
$this->t('Member since:'),
@ -255,7 +255,7 @@ class Profile extends BaseProfile
}
//show subscribed group if it is enabled in the usersettings
if (Feature::isEnabled($profile['uid'], 'forumlist_profile')) {
if (Feature::isEnabled($profile['uid'], Feature::GROUPS)) {
$custom_fields += self::buildField(
'group_list',
$this->t('Groups:'),

Wyświetl plik

@ -228,7 +228,6 @@ class Channels extends BaseSettings
'confirm_delete' => $this->t('Delete entry from the channel list?'),
],
'$entries' => $channels,
'$baseurl' => $this->baseUrl,
'$form_security_token' => self::getFormSecurityToken('settings_channels'),
]);

Wyświetl plik

@ -49,7 +49,7 @@ class Features extends BaseSettings
BaseSettings::checkFormSecurityTokenRedirectOnError('/settings/features', 'settings_features');
foreach ($request as $k => $v) {
if (strpos($k, 'feature_') === 0) {
$this->pConfig->set($this->session->getLocalUserId(), 'feature', substr($k, 8), ((intval($v)) ? 1 : 0));
$this->pConfig->set($this->session->getLocalUserId(), 'feature', substr($k, 8), (bool)$v);
}
}
}
@ -58,9 +58,8 @@ class Features extends BaseSettings
{
parent::content($request);
$arr = [];
$features = Feature::get();
foreach ($features as $name => $feature) {
$arr = [];
foreach (Feature::get() as $name => $feature) {
$arr[$name] = [];
$arr[$name][0] = $feature[0];
foreach (array_slice($feature, 1) as $f) {

Wyświetl plik

@ -1079,13 +1079,13 @@ class Post
$owner = User::getOwnerDataById($a->getLoggedInUserId());
$item = $this->getData();
if (!empty($item['content-warning']) && Feature::isEnabled(DI::userSession()->getLocalUserId(), 'add_abstract')) {
if (!empty($item['content-warning']) && Feature::isEnabled(DI::userSession()->getLocalUserId(), Feature::ADD_ABSTRACT)) {
$text = '[abstract=' . Protocol::ACTIVITYPUB . ']' . $item['content-warning'] . "[/abstract]\n";
} else {
$text = '';
}
if (!Feature::isEnabled(DI::userSession()->getLocalUserId(), 'explicit_mentions')) {
if (!Feature::isEnabled(DI::userSession()->getLocalUserId(), Feature::EXPLICIT_MENTIONS)) {
return $text;
}

Wyświetl plik

@ -1577,7 +1577,8 @@ class Receiver
$element = [
'type' => str_replace('as:', '', JsonLD::fetchElement($tag, '@type') ?? ''),
'href' => JsonLD::fetchElement($tag, 'as:href', '@id'),
'name' => JsonLD::fetchElement($tag, 'as:name', '@value')
'name' => JsonLD::fetchElement($tag, 'as:name', '@value'),
'mediaType' => JsonLD::fetchElement($tag, 'as:mediaType', '@value')
];
if (empty($element['type'])) {
@ -2094,12 +2095,18 @@ class Receiver
}
// Support for quoted posts (Pleroma, Fedibird and Misskey)
$object_data['quote-url'] = JsonLD::fetchElement($object, 'as:quoteUrl', '@value');
$object_data['quote-url'] = JsonLD::fetchElement($object, 'as:quoteUrl', '@id');
if (empty($object_data['quote-url'])) {
$object_data['quote-url'] = JsonLD::fetchElement($object, 'fedibird:quoteUri', '@value');
$object_data['quote-url'] = JsonLD::fetchElement($object, 'fedibird:quoteUri', '@id');
}
if (empty($object_data['quote-url'])) {
$object_data['quote-url'] = JsonLD::fetchElement($object, 'misskey:_misskey_quote', '@value');
$object_data['quote-url'] = JsonLD::fetchElement($object, 'misskey:_misskey_quote', '@id');
}
foreach ($object_data['tags'] as $tag) {
if (HTTPSignature::isValidContentType($tag['mediaType'] ?? '', $tag['href'])) {
$object_data['quote-url'] = $tag['href'];
}
}
// Misskey adds some data to the standard "content" value for quoted posts for backwards compatibility.

Wyświetl plik

@ -1589,15 +1589,14 @@ class Transmitter
$tags[] = ['type' => 'Mention', 'href' => $announce['actor']['url'], 'name' => '@' . $announce['actor']['addr']];
}
// @see https://codeberg.org/fediverse/fep/src/branch/main/feps/fep-e232.md
// @see https://codeberg.org/fediverse/fep/src/branch/main/fep/e232/fep-e232.md
if (!empty($quote_url)) {
// Currently deactivated because of compatibility issues with Pleroma
//$tags[] = [
// 'type' => 'Link',
// 'mediaType' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
// 'href' => $quote_url,
// 'name' => '♲ ' . BBCode::convertForUriId($item['uri-id'], $quote_url, BBCode::ACTIVITYPUB)
//];
$tags[] = [
'type' => 'Link',
'mediaType' => 'application/ld+json; profile="https://www.w3.org/ns/activitystreams"',
'href' => $quote_url,
'name' => 'RE: ' . $quote_url,
];
}
return $tags;
@ -1837,7 +1836,7 @@ class Transmitter
* }
*/
if (empty($item['uid']) || !Feature::isEnabled($item['uid'], 'explicit_mentions')) {
if (empty($item['uid']) || !Feature::isEnabled($item['uid'], Feature::EXPLICIT_MENTIONS)) {
$body = self::prependMentions($body, $item['uri-id'], $item['author-link']);
}
@ -1862,6 +1861,7 @@ class Transmitter
if (!empty($item['quote-uri-id']) && ($item['quote-uri-id'] != $item['uri-id'])) {
if (Post::exists(['uri-id' => $item['quote-uri-id'], 'network' => [Protocol::ACTIVITYPUB, Protocol::DFRN]])) {
$real_quote = true;
$data['_misskey_content'] = BBCode::removeSharedData($body);
$data['quoteUrl'] = $item['quote-uri'];
$body = DI::contentItem()->addShareLink($body, $item['quote-uri-id']);
} else {

Wyświetl plik

@ -3618,7 +3618,7 @@ class Diaspora
if (
$item['author-id'] != $thread_parent_item['author-id']
&& ($thread_parent_item['gravity'] != Item::GRAVITY_PARENT)
&& (empty($item['uid']) || !Feature::isEnabled($item['uid'], 'explicit_mentions'))
&& (empty($item['uid']) || !Feature::isEnabled($item['uid'], Feature::EXPLICIT_MENTIONS))
&& !DI::config()->get('system', 'disable_implicit_mentions')
) {
$body = self::prependParentAuthorMention($body, $thread_parent_item['author-link']);

Wyświetl plik

@ -674,6 +674,13 @@ return [
'/toggle_mobile' => [Module\ToggleMobile::class, [R::GET]],
'/tos' => [Module\Tos::class, [R::GET]],
'/ping_network' => [
'[/]' => [Module\Ping\Network::class, [R::GET]],
'/archive/{from:\d\d\d\d-\d\d-\d\d}[/{to:\d\d\d\d-\d\d-\d\d}]' => [Module\Ping\Network::class, [R::GET]],
'/group/{contact_id:\d+}' => [Module\Ping\Network::class, [R::GET]],
'/circle/{circle_id:\d+}' => [Module\Ping\Network::class, [R::GET]],
],
'/update_channel[/{content}]' => [Module\Update\Channel::class, [R::GET]],
'/update_community[/{content}]' => [Module\Update\Community::class, [R::GET]],

Wyświetl plik

@ -260,15 +260,9 @@ $(function() {
document.title = originalTitle;
}
['net', 'home', 'intro', 'mail', 'events', 'birthdays', 'notification'].forEach(function(type) {
['home', 'intro', 'mail', 'events', 'birthdays', 'notification'].forEach(function(type) {
var number = data[type];
if (number == 0) {
number = '';
$('#' + type + '-update').removeClass('show');
} else {
$('#' + type + '-update').addClass('show');
}
$('#' + type + '-update').text(number);
updateCounter(type, number);
});
var intro = data['intro'];
@ -505,6 +499,14 @@ function NavUpdate() {
liveUpdate(src);
}
});
if (!$('#live-network').length) {
var update_url = 'ping_network?ping=1';
$.get(update_url, function(net) {
updateCounter('net', net);
});
}
if ($('#live-photos').length) {
if (liking) {
liking = 0;
@ -586,7 +588,7 @@ function liveUpdate(src) {
var udargs = ((netargs.length) ? '/' + netargs : '');
var update_url = 'update_' + src + udargs + '&p=' + profile_uid + '&force=' + (force ? 1 : 0) + '&item=' + update_item;
var update_url = src + udargs + '&p=' + profile_uid + '&force=' + (force ? 1 : 0) + '&item=' + update_item;
if (force_update) {
force_update = false;
@ -622,7 +624,7 @@ function liveUpdate(src) {
update_url += '&first_uriid=' + match[0].innerHTML;
}
$.get(update_url, function(data) {
$.get('update_' + update_url, function(data) {
in_progress = false;
update_item = 0;
@ -639,6 +641,26 @@ function liveUpdate(src) {
$(window).scrollTop($(window).scrollTop() + $("section").height() - orgHeight);
});
});
if (src == 'network') {
$.get('ping_' + update_url, function(net) {
updateCounter('net', net);
});
}
}
function updateCounter(type, counter) {
if (counter < 0) {
return;
}
if (counter == 0) {
counter = '';
$('#' + type + '-update').removeClass('show');
} else {
$('#' + type + '-update').addClass('show');
}
$('#' + type + '-update').text(counter);
}
function updateItem(itemNo) {

Plik diff jest za duży Load Diff

Wyświetl plik

@ -10,8 +10,7 @@
<div class="settings-content-block">
{{foreach $f.1 as $fcat}}
<div class="settings-block">
{{include file="field_checkbox.tpl" field=$fcat.0}}
{{include file="field_checkbox.tpl" field=$fcat.1}}
{{include file="field_select.tpl" field=$fcat}}
</div>
{{/foreach}}

Wyświetl plik

@ -1,4 +1,4 @@
<script src="{{$baseurl}}/view/asset/Chart-js/dist/Chart.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script src="{{$baseurl}}/view/asset/Chart-js/dist/Chart.min.js?v={{$VERSION}}"></script>
<div id="adminpage">
<h1>{{$title}} - {{$page}}</h1>
@ -115,7 +115,7 @@
<ul class="federation-stats">
{{foreach $c[1] as $v}}
<li>
{{if ($c[0]['platform']==='Friendica' and $version===$v['version']) }}
{{if $c[0]['platform'] === 'Friendica' && $VERSION === $v['version']}}
<span class="version-match">{{$v['version']}}</span>
{{else}}
{{$v['version']}}

Wyświetl plik

@ -16,16 +16,16 @@
<dl>
<dt>{{$addons.0}}</dt>
{{foreach $addons.1 as $p}}
<dd><a href="{{$baseurl}}/admin/addons/{{$p}}/">{{$p}}</a></dd>
{{/foreach}}
</dl>
<dl>
<dt>{{$version.0}}</dt>
<dd> {{$platform}} '{{$codename}}' {{$version.1}} - {{$build}}</dt>
<dt>{{$version_label}}</dt>
<dd> {{$platform}} '{{$codename}}' {{$VERSION}} - {{$build}}</dt>
</dl>
<dl>

Wyświetl plik

@ -1,7 +1,7 @@
<link rel="stylesheet" type="text/css" href="{{$baseurl}}/view/asset/fullcalendar/dist/fullcalendar.min.css?v={{constant('\Friendica\App::VERSION')}}" />
<link rel="stylesheet" type="text/css" href="{{$baseurl}}/view/asset/fullcalendar/dist/fullcalendar.print.min.css?v={{constant('\Friendica\App::VERSION')}}" media="print" />
<script type="text/javascript" src="{{$baseurl}}/view/asset/moment/min/moment-with-locales.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/asset/fullcalendar/dist/fullcalendar.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" type="text/css" href="{{$baseurl}}/view/asset/fullcalendar/dist/fullcalendar.min.css?v={{$VERSION}}" />
<link rel="stylesheet" type="text/css" href="{{$baseurl}}/view/asset/fullcalendar/dist/fullcalendar.print.min.css?v={{$VERSION}}" media="print" />
<script type="text/javascript" src="{{$baseurl}}/view/asset/moment/min/moment-with-locales.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/asset/fullcalendar/dist/fullcalendar.min.js?v={{$VERSION}}"></script>
<script>
function showEvent(eventid) {

Wyświetl plik

@ -2,7 +2,7 @@
As a result, we need to add a wrapping element for non-flex (non-image grid) environments, mostly single-image cases.
*}}
{{if $allocated_max_width}}
<div style="max-width: {{$allocated_max_width|default:"auto"}};">
<div class="img-allocated-max-width" style="max-width: {{$allocated_max_width|default:"auto"}};">
{{/if}}
<figure class="img-allocated-height" style="width: {{$allocated_width|default:"auto"}}; padding-bottom: {{$allocated_height}}">

Wyświetl plik

@ -1,12 +1,12 @@
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
<base href="{{$baseurl}}/" />
<meta name="generator" content="{{$generator}}" />
<link rel="stylesheet" href="view/global.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="all" />
<link rel="stylesheet" href="view/asset/jquery-colorbox/example5/colorbox.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/jgrowl/jquery.jgrowl.min.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.min.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/perfect-scrollbar/dist/css/perfect-scrollbar.min.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/js/fancybox/jquery.fancybox.min.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/global.css?v={{$VERSION}}" type="text/css" media="all" />
<link rel="stylesheet" href="view/asset/jquery-colorbox/example5/colorbox.css?v={{$VERSION}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/jgrowl/jquery.jgrowl.min.css?v={{$VERSION}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.min.css?v={{$VERSION}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/perfect-scrollbar/dist/css/perfect-scrollbar.min.css?v={{$VERSION}}" type="text/css" media="screen" />
<link rel="stylesheet" href="view/js/fancybox/jquery.fancybox.min.css?v={{$VERSION}}" type="text/css" media="screen" />
{{foreach $stylesheets as $stylesheetUrl => $media}}
<link rel="stylesheet" href="{{$stylesheetUrl}}" type="text/css" media="{{$media}}" />
@ -30,23 +30,23 @@
title="Search in Friendica" />
<!--[if IE]>
<script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js?v={{$VERSION}}"></script>
<![endif]-->
<script type="text/javascript" src="view/js/modernizr.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/jquery/dist/jquery.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/jquery.textinputs.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/textcomplete/dist/textcomplete.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/autocomplete.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/jquery-colorbox/jquery.colorbox-min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/jgrowl/jquery.jgrowl.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/fancybox/jquery.fancybox.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/fancybox/fancybox.config.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/vanillaEmojiPicker/vanillaEmojiPicker.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/modernizr.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery/dist/jquery.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/jquery.textinputs.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/textcomplete/dist/textcomplete.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/autocomplete.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery-colorbox/jquery.colorbox-min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/jgrowl/jquery.jgrowl.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/fancybox/jquery.fancybox.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/fancybox/fancybox.config.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/vanillaEmojiPicker/vanillaEmojiPicker.min.js?v={{$VERSION}}"></script>
<script>
window.onload = function(){
new EmojiPicker({
@ -68,7 +68,7 @@ window.onload = function(){
const updateInterval = {{$update_interval}};
const localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}};
</script>
<script type="text/javascript" src="view/js/main.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/main.js?v={{$VERSION}}"></script>
<script>
// Lifted from https://css-tricks.com/snippets/jquery/move-cursor-to-end-of-textarea-or-input/
jQuery.fn.putCursorAtEnd = function() {

Wyświetl plik

@ -45,7 +45,7 @@ function enableOnUser(){
}
</script>
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$VERSION}}"></script>
<script>
var ispublic = '{{$ispublic nofilter}}';

Wyświetl plik

@ -1,8 +1,8 @@
<!--
This is the template used by mod/fbrowser.php
-->
<script type="text/javascript" src="view/js/ajaxupload.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/module/media/browser.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/ajaxupload.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/module/media/browser.js?v={{$VERSION}}"></script>
<script>
$(function() {
Browser.init("{{$nickname}}", "{{$type}}");

Wyświetl plik

@ -1,7 +1,7 @@
<script language="javascript" type="text/javascript">
$("#prvmail-text").editor_autocomplete(baseurl + '/search/acl');
</script>
<script type="text/javascript" src="view/js/ajaxupload.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/ajaxupload.js?v={{$VERSION}}"></script>
<script>
$(document).ready(function() {
var uploader = new window.AjaxUpload(

Wyświetl plik

@ -1 +1 @@
<script type="text/javascript" src="view/js/country.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/country.js?v={{$VERSION}}"></script>

Wyświetl plik

@ -1,2 +1,2 @@
<script type="text/javascript" src="view/asset/cropperjs/dist/cropper.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/asset/cropperjs/dist/cropper.min.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" />
<script type="text/javascript" src="view/asset/cropperjs/dist/cropper.min.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/asset/cropperjs/dist/cropper.min.css?v={{$VERSION}}" type="text/css" />

Wyświetl plik

@ -17,8 +17,7 @@
<div class="panel-body">
{{foreach $f.1 as $fcat}}
<div class="settings-block">
{{include file="field_checkbox.tpl" field=$fcat.0}}
{{include file="field_checkbox.tpl" field=$fcat.1}}
{{include file="field_select.tpl" field=$fcat}}
</div>
{{/foreach}}
</div>

Wyświetl plik

@ -17,7 +17,7 @@
});
});
</script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="adminpage" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}}</h1>

Wyświetl plik

@ -1,4 +1,4 @@
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="adminpage" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}}</h1>

Wyświetl plik

@ -31,8 +31,8 @@
{{* The Friendica version. *}}
<div id="admin-summary-version" class="col-lg-12 col-md-12 col-sm-12 col-xs-12 admin-summary">
<hr class="admin-summary-separator">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 admin-summary-label-name text-muted">{{$version.0}}</div>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12 admin-summary-entry">{{$platform}} '{{$codename}}' {{$version.1}} - {{$build}}</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-12 admin-summary-label-name text-muted">{{$version_label}}</div>
<div class="col-lg-8 col-md-8 col-sm-8 col-xs-12 admin-summary-entry">{{$platform}} '{{$codename}}' {{$VERSION}} - {{$build}}</div>
</div>
{{* Server Settings. *}}

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_events.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/mod_events.js?v={{$VERSION}}"></script>
<script type="text/javascript">
// pass php translation strings to js variables/arrays so we can make use of it in js files

Wyświetl plik

@ -3,7 +3,7 @@
add or remove contacts to the contact circle.
*}}
<script type="text/javascript" src="view/theme/frio/js/mod_circle.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/mod_circle.js?v={{$VERSION}}"></script>
<div class="generic-page-wrapper">
{{if $editable == 1}}

Wyświetl plik

@ -1,2 +1,2 @@
<script type="text/javascript" src="view/theme/frio/js/mod_contacts.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/mod_contacts.js?v={{$VERSION}}"></script>

Wyświetl plik

@ -6,56 +6,56 @@
<meta name="viewport" content="initial-scale=1.0">
{{* All needed css files - Note: css must be inserted before js files *}}
<link rel="stylesheet" href="view/global.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="all" />
<link rel="stylesheet" href="view/asset/jquery-colorbox/example5/colorbox.css?v={{constant('\Friendica\App::VERSION')}}"
<link rel="stylesheet" href="view/global.css?v={{$VERSION}}" type="text/css" media="all" />
<link rel="stylesheet" href="view/asset/jquery-colorbox/example5/colorbox.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/jgrowl/jquery.jgrowl.min.css?v={{constant('\Friendica\App::VERSION')}}"
<link rel="stylesheet" href="view/asset/jgrowl/jquery.jgrowl.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/asset/perfect-scrollbar/dist/css/perfect-scrollbar.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/asset/perfect-scrollbar/dist/css/perfect-scrollbar.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/bootstrap/css/bootstrap.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/bootstrap/css/bootstrap.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/bootstrap/css/bootstrap-theme.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet" href="view/asset/fork-awesome/css/fork-awesome.min.css?v={{constant('\Friendica\App::VERSION')}}"
<link rel="stylesheet" href="view/asset/fork-awesome/css/fork-awesome.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/jasny/css/jasny-bootstrap.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/jasny/css/jasny-bootstrap.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/bootstrap-select/css/bootstrap-select.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/awesome-bootstrap-checkbox/awesome-bootstrap-checkbox.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/justifiedGallery/justifiedGallery.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/justifiedGallery/justifiedGallery.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/bootstrap-colorpicker/css/bootstrap-colorpicker.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet"
href="view/theme/frio/frameworks/bootstrap-toggle/css/bootstrap-toggle.min.css?v={{constant('\Friendica\App::VERSION')}}"
href="view/theme/frio/frameworks/bootstrap-toggle/css/bootstrap-toggle.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet" href="view/theme/frio/font/open_sans/open-sans.css?v={{constant('\Friendica\App::VERSION')}}"
<link rel="stylesheet" href="view/theme/frio/font/open_sans/open-sans.css?v={{$VERSION}}"
type="text/css" media="screen" />
<link rel="stylesheet" href="view/js/fancybox/jquery.fancybox.min.css?v={{constant('\Friendica\App::VERSION')}}"
<link rel="stylesheet" href="view/js/fancybox/jquery.fancybox.min.css?v={{$VERSION}}"
type="text/css" media="screen" />
{{* own css files *}}
<link rel="stylesheet" href="view/theme/frio/css/hovercard.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css"
<link rel="stylesheet" href="view/theme/frio/css/hovercard.css?v={{$VERSION}}" type="text/css"
media="screen" />
<link rel="stylesheet" href="view/theme/frio/css/font-awesome.custom.css?v={{constant('\Friendica\App::VERSION')}}"
<link rel="stylesheet" href="view/theme/frio/css/font-awesome.custom.css?v={{$VERSION}}"
type="text/css" media="screen" />
{{foreach $stylesheets as $stylesheetUrl => $media}}
@ -81,74 +81,74 @@
{{* The js files we use *}}
<!--[if IE]>
<script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="https://html5shiv.googlecode.com/svn/trunk/html5.js?v={{$VERSION}}"></script>
<![endif]-->
<script type="text/javascript" src="view/js/modernizr.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/jquery/dist/jquery.min.js?v={{constant('\Friendica\App::VERSION')}}">
<script type="text/javascript" src="view/js/modernizr.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/jquery/dist/jquery.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript" src="view/js/jquery.textinputs.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/jquery.textinputs.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/asset/textcomplete/dist/textcomplete.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/autocomplete.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/asset/textcomplete/dist/textcomplete.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/autocomplete.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/asset/jquery-colorbox/jquery.colorbox-min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/jgrowl/jquery.jgrowl.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/asset/jquery-colorbox/jquery.colorbox-min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/jgrowl/jquery.jgrowl.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/asset/jquery-datetimepicker/build/jquery.datetimepicker.full.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/asset/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/asset/perfect-scrollbar/dist/js/perfect-scrollbar.jquery.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/asset/imagesloaded/imagesloaded.pkgd.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/base64/base64.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/asset/dompurify/dist/purify.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript">
const updateInterval = {{$update_interval}};
const localUser = {{if $local_user}}{{$local_user}}{{else}}false{{/if}};
</script>
<script type="text/javascript" src="view/js/main.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/main.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/theme/frio/frameworks/bootstrap/js/bootstrap.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/theme/frio/frameworks/bootstrap/js/bootstrap.min.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/theme/frio/frameworks/jasny/js/jasny-bootstrap.custom.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/theme/frio/frameworks/jasny/js/jasny-bootstrap.custom.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/theme/frio/frameworks/bootstrap-select/js/bootstrap-select.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/theme/frio/frameworks/ekko-lightbox/ekko-lightbox.min.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/theme/frio/frameworks/justifiedGallery/jquery.justifiedGallery.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/theme/frio/frameworks/justifiedGallery/jquery.justifiedGallery.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/theme/frio/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/theme/frio/frameworks/bootstrap-colorpicker/js/bootstrap-colorpicker.min.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/theme/frio/frameworks/flexMenu/flexmenu.custom.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/theme/frio/frameworks/flexMenu/flexmenu.custom.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.js?v={{constant('\Friendica\App::VERSION')}}">
src="view/theme/frio/frameworks/jquery-scrollspy/jquery-scrollspy.js?v={{$VERSION}}">
</script>
<script type="text/javascript"
src="view/theme/frio/frameworks/autosize/autosize.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/theme/frio/frameworks/autosize/autosize.min.js?v={{$VERSION}}"></script>
<script type="text/javascript"
src="view/theme/frio/frameworks/sticky-kit/jquery.sticky-kit.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
src="view/theme/frio/frameworks/sticky-kit/jquery.sticky-kit.min.js?v={{$VERSION}}"></script>
{{* own js files *}}
<script type="text/javascript" src="view/theme/frio/js/theme.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/modal.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/theme.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/theme/frio/js/modal.js?v={{$VERSION}}"></script>
{{if ! $block_public}}
<script type="text/javascript" src="view/theme/frio/js/hovercard.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/hovercard.js?v={{$VERSION}}"></script>
{{/if}}
<script type="text/javascript" src="view/theme/frio/js/textedit.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="vendor/enyo/dropzone/dist/min/dropzone.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/dropzone-factory.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/textedit.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="vendor/enyo/dropzone/dist/min/dropzone.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/dropzone-factory.js?v={{$VERSION}}"></script>
<script type="text/javascript"> const dzFactory = new DzFactory({{$max_imagesize}});</script>
<script type="text/javascript" src="view/js/fancybox/jquery.fancybox.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/fancybox/fancybox.config.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/vanillaEmojiPicker/vanillaEmojiPicker.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/js/fancybox/jquery.fancybox.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/fancybox/fancybox.config.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="view/js/vanillaEmojiPicker/vanillaEmojiPicker.min.js?v={{$VERSION}}"></script>
<script>
window.onload = function(){
new EmojiPicker({

Wyświetl plik

@ -1,7 +1,7 @@
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/linkPreview.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/theme/frio/js/jot.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/linkPreview.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/theme/frio/js/jot.js?v={{$VERSION}}"></script>
<script type="text/javascript">
var editor = false;

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="admin-contactblock" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}}</h1>

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="admin-users" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}} ({{$count}})</h1>

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="admin-users-blocked" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}} ({{$count}})</h1>

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="admin-users" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}} ({{$count}})</h1>

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="admin-users" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}} ({{$count}})</h1>

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{constant('\Friendica\App::VERSION')}}" type="text/css" media="screen"/>
<script type="text/javascript" src="view/theme/frio/js/mod_admin.js?v={{$VERSION}}"></script>
<link rel="stylesheet" href="view/theme/frio/css/mod_admin.css?v={{$VERSION}}" type="text/css" media="screen"/>
<div id="admin-users" class="adminpage generic-page-wrapper">
<h1>{{$title}} - {{$page}} ({{$count}})</h1>

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="../../frameworks/jquery-color/jquery.color.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="../../js/mod_notifications.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="../../frameworks/jquery-color/jquery.color.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="../../js/mod_notifications.js?v={{$VERSION}}"></script>
<div class="generic-page-wrapper">
{{include file="section_title.tpl" title=$header}}

Wyświetl plik

@ -1,5 +1,5 @@
<script type="text/javascript" src="view/theme/frio/js/mod_photos.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="view/theme/frio/js/mod_photos.js?v={{$VERSION}}"></script>
<script type="text/javascript">
var ispublic = "{{$ispublic nofilter}}";
</script>

Wyświetl plik

@ -1,5 +1,5 @@
<script src="{{$baseurl}}/view/theme/frio/js/jquery.tools.min.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{constant('\Friendica\App::VERSION')}}"></script>
<script src="{{$baseurl}}/view/theme/frio/js/jquery.tools.min.js?v={{$VERSION}}"></script>
<script type="text/javascript" src="{{$baseurl}}/view/js/ajaxupload.js?v={{$VERSION}}"></script>
<div class="form-group field select">
<label for="id_{{$scheme.0}}">{{$scheme.1}}</label>

Wyświetl plik

@ -1,5 +1,5 @@
{{if !$update}}<script type="text/javascript" src="view/theme/frio/frameworks/jquery-color/jquery.color.js?v={{constant('\Friendica\App::VERSION')}}"></script>{{/if}}
{{if $mode == display}}<script type="text/javascript" src="view/theme/frio/js/mod_display.js?v={{constant('\Friendica\App::VERSION')}}"></script>{{/if}}
{{if !$update}}<script type="text/javascript" src="view/theme/frio/frameworks/jquery-color/jquery.color.js?v={{$VERSION}}"></script>{{/if}}
{{if $mode == display}}<script type="text/javascript" src="view/theme/frio/js/mod_display.js?v={{$VERSION}}"></script>{{/if}}
{{$live_update nofilter}}
{{foreach $threads as $thread}}
<hr class="sr-only" />