Merge branch 'master' into develop

This commit is contained in:
Lucas Bartholemy 2024-02-08 15:15:08 +01:00
commit 32eec528a2
132 changed files with 73 additions and 37 deletions

View File

@ -1,11 +1,22 @@
HumHub Changelog
================
1.15.3 (Unreleased)
-------------------
1.15.3 (February 8, 2024)
-------------------------
- Fix #6713: Keep class option for Pjax Widget
- Enh #6779: Added Twig Sandbox Extension for Statistic Tracking Codes
- Fix #6791: Fix number of filtered modules on Marketplace
- Fix #6744: Make sure to call `humhub\components\Module::update()` on Module updates
- Fix #6796: Files in the RichText doesn't open as new tab
- Fix #6800: Fix missed domain of profile url in email notifications
- Fix #6801: Add missed twemoji images
- Fix: Iso3166Codes class calls
- Fix #6813: Fix for displaying whether I follow a user
- Fix #6126: `Session::$timeout` takes effect before configured `User::$authTimeout`
- Fix #6795: Fix searching of disabled users in Administration
- Fix #6834: Fix notification switcher in wall stream entry context menu
- Fix #6836: Fix check permission of changing content to public from context menu
- Fix #6837: Fix saving of public content
1.15.2 (December 19, 2023)
--------------------------

View File

@ -342,15 +342,10 @@ class Module extends \yii\base\Module
*/
public function update()
{
if (!$this->beforeUpdate()) {
return null;
if ($this->beforeUpdate() !== false) {
$this->migrate();
$this->afterUpdate();
}
$result = $this->getMigrationService()->migrateUp();
$this->afterUpdate();
return $result;
}
/**
@ -359,6 +354,8 @@ class Module extends \yii\base\Module
* The update will cancel if this function does return false;
*
* @return bool
* @deprecated
*
*/
public function beforeUpdate()
{
@ -367,6 +364,8 @@ class Module extends \yii\base\Module
/**
* Called right after the module update.
*
* @deprecated
*/
public function afterUpdate()
{

View File

@ -243,6 +243,7 @@ abstract class SocialActivity extends BaseObject implements rendering\Viewable
/**
* Url of the origin of this notification
* If source is a Content / ContentAddon / ContentContainer this will automatically generated.
* NOTE: Returned URL must be absolute with scheme
*
* @return string
*/
@ -252,10 +253,10 @@ abstract class SocialActivity extends BaseObject implements rendering\Viewable
if ($this->source instanceof Comment) {
$url = $this->source->getUrl();
} elseif ($this->hasContent()) {
$url = $this->getContent()->getUrl();
} else if ($this->hasContent()) {
$url = $this->getContent()->getUrl(true);
} elseif ($this->source instanceof ContentContainerActiveRecord) {
$url = $this->source->getUrl();
$url = $this->source->getUrl(true);
}
// Create absolute URL, for E-Mails

View File

@ -113,7 +113,7 @@ class UserSearch extends User
['like', 'concat(profile.lastname, " ", profile.firstname)', $this->freeText],
]);
if (!empty($this->status)) {
if (isset($this->status) && in_array($this->status, [User::STATUS_ENABLED, User::STATUS_DISABLED, User::STATUS_SOFT_DELETED])) {
$query->andFilterWhere(['user.status' => $this->status]);
}
return $dataProvider;

View File

@ -208,7 +208,7 @@ class ContentController extends Controller
if (!$content) {
throw new NotFoundHttpException(Yii::t('ContentModule.base', 'Invalid content id given!'));
} elseif (!$content->canEdit()) {
} elseif (!$content->canEdit() || (!$content->visibility && !$content->container->visibility)) {
throw new ForbiddenHttpException();
} elseif ($content->isPrivate() && !$content->container->permissionManager->can(new CreatePublicContent())) {
throw new ForbiddenHttpException();

View File

@ -229,10 +229,20 @@ class Content extends ActiveRecord implements Movable, ContentOwner, Archiveable
}
$this->archived ??= 0;
$this->visibility ??= self::VISIBILITY_PRIVATE;
$this->pinned ??= 0;
$this->state ??= Content::STATE_PUBLISHED;
$this->visibility ??= self::VISIBILITY_PRIVATE;
// Force to private content for private space or if user has no permission to create public content
if ($this->container instanceof Space &&
$this->container->visibility !== Space::VISIBILITY_ALL &&
$this->visibility === self::VISIBILITY_PUBLIC) {
if ($this->container->visibility === Space::VISIBILITY_NONE ||
!$this->container->can(CreatePublicContent::class)) {
$this->visibility = self::VISIBILITY_PRIVATE;
}
}
if ($insert) {
$this->created_by ??= Yii::$app->user->id;
}

View File

@ -102,8 +102,8 @@ humhub.module('content.container', function (module, require, $) {
if (response.success) {
const contentId = event.$trigger.data('content-id');
$('#notification_off_' + contentId).hide();
$('#notification_on_' + contentId).show();
$('#notification_on_' + contentId).hide();
$('#notification_off_' + contentId).show();
}
});
}
@ -113,8 +113,8 @@ humhub.module('content.container', function (module, require, $) {
if (response.success) {
const contentId = event.$trigger.data('content-id');
$('#notification_on_' + contentId).hide();
$('#notification_off_' + contentId).show();
$('#notification_off_' + contentId).hide();
$('#notification_on_' + contentId).show();
}
});
};

View File

@ -70,6 +70,7 @@ class ContentVisibilityTest extends ContentModelTest
public function testCreatePublicContentOnProtectedSpace()
{
$this->space->addMember(Yii::$app->user->id);
$this->space->visibility = Space::VISIBILITY_REGISTERED_ONLY;
$newModel = new TestContent($this->space, Content::VISIBILITY_PUBLIC, [

View File

@ -45,6 +45,7 @@ ContentContainerAsset::register($this);
'data' => [
'action-click' => 'content.container.turnOnNotifications',
'action-url' => Url::to(['/content/content/notification-switch', 'id' => $content->id, 'switch' => 1]),
'content-id' => $content->id,
]
]
); ?>

View File

@ -163,7 +163,7 @@ class DashboardMemberStreamQueryTest extends DashboardStreamTest
public function testSpaceFollowerDoesNotSeePublicContentOnPrivateSpace()
{
$this->assertSpaceFollowerDoesSee(Space::VISIBILITY_NONE, Content::VISIBILITY_PUBLIC);
$this->assertSpaceFollowerDoesNotSee(Space::VISIBILITY_NONE, Content::VISIBILITY_PUBLIC);
}
public function testSpaceFollowerDoesNotSeePrivateContentOnPrivateSpace()

View File

@ -39,7 +39,7 @@ class Request extends BaseNotification
*/
public function getUrl()
{
return $this->originator->getUrl();
return $this->originator->getUrl(true);
}
/**

View File

@ -47,7 +47,7 @@ class RequestApproved extends BaseNotification
*/
public function getUrl()
{
return $this->originator->getUrl();
return $this->originator->getUrl(true);
}
/**

View File

@ -52,7 +52,7 @@ class RequestDeclined extends BaseNotification
*/
public function getUrl()
{
return $this->originator->getUrl();
return $this->originator->getUrl(true);
}
public function getMailSubject()

View File

@ -179,6 +179,7 @@ class OnlineModuleManager extends Component
$updatedModule = Yii::$app->moduleManager->getModule($moduleId);
$updatedModule->getMigrationService()->migrateUp();
$updatedModule->update();
(new MarketplaceService())->refreshPendingModuleUpdateCount();

View File

@ -42,7 +42,7 @@ class MemberAdded extends BaseActivity implements ConfigurableActivityInterface
public function getUrl()
{
if ($this->originator) {
return $this->originator->getUrl();
return $this->originator->getUrl(true);
}
return parent::getUrl();

View File

@ -11,6 +11,7 @@ namespace humhub\modules\ui\form\widgets;
use humhub\modules\content\components\ContentActiveRecord;
use humhub\modules\content\components\ContentContainerActiveRecord;
use humhub\modules\content\models\Content;
use humhub\modules\content\permissions\CreatePublicContent;
use humhub\modules\space\models\Space;
use Yii;
use yii\bootstrap\InputWidget;
@ -115,9 +116,11 @@ class ContentVisibilitySelect extends InputWidget
$contentContainer = $this->getContentContainer();
// Should hide on private spaces (Only provide private content visibility option)
if ($contentContainer instanceof Space) {
// or if user has no permission to create public content
if ($contentContainer instanceof Space && $contentContainer->visibility !== Space::VISIBILITY_ALL) {
/** @var Space $contentContainer */
if ($contentContainer->visibility == Space::VISIBILITY_NONE) {
if ($contentContainer->visibility === Space::VISIBILITY_NONE ||
!$contentContainer->can(CreatePublicContent::class)) {
return true;
}
}

View File

@ -43,7 +43,7 @@ class Followable extends Behavior
public function getFollowRecord($userId)
{
$userId = ($userId instanceof User) ? $userId->id : $userId;
return Yii::$app->runtimeCache->getOrSet(__METHOD__ . $userId, function () use ($userId) {
return Yii::$app->runtimeCache->getOrSet(__METHOD__ . $this->owner->getPrimaryKey() . '-' . $userId, function () use ($userId) {
return Follow::find()
->where([
'object_model' => get_class($this->owner),

View File

@ -39,6 +39,14 @@ class Session extends DbSession
return $query;
}
/**
* @inheritDoc
*/
public function getTimeout()
{
return (int) Yii::$app->user->authTimeout;
}
/**
* @inheritDoc
*/

View File

@ -11,13 +11,14 @@ namespace humhub\modules\user\models\fieldtype;
use Collator;
use humhub\libs\Iso3166Codes;
use humhub\modules\user\models\User;
use humhub\libs\Html;
use Yii;
use yii\helpers\Html;
/**
* ProfileFieldTypeSelect handles numeric profile fields.
*
* @package humhub.modules_core.user.models
* @package humhub\modules\user\models\fieldtype
* @since 0.5
*/
class CountrySelect extends Select
@ -56,17 +57,17 @@ class CountrySelect extends Select
// if no options set basically return a translated map of all defined countries
if (empty($this->options) || trim($this->options) == false) {
$items = iso3166Codes::$countries;
foreach ($items as $code => $value) {
$items[$code] = iso3166Codes::country($code);
$isoCodes = Iso3166Codes::$countries;
foreach ($isoCodes as $code => $value) {
$items[Iso3166Codes::country($code)] = Iso3166Codes::country($code);
}
} else {
foreach (explode(",", $this->options) as $code) {
$key = trim($code);
$value = iso3166Codes::country($key, true);
$value = Iso3166Codes::country($key, true);
if (!empty($key) && $key !== $value) {
$items[trim($key)] = trim($value);
$items[$key] = trim($value);
}
}
}
@ -87,7 +88,7 @@ class CountrySelect extends Select
$value = $user->profile->$internalName;
if (!$raw) {
return Html::encode(iso3166Codes::country($value));
return Html::encode(Iso3166Codes::country($value));
}
return $value;

View File

@ -47,7 +47,7 @@ class Followed extends BaseNotification
throw new IntegrityException('Originator cannot be null.');
}
return $this->originator->getUrl();
return $this->originator->getUrl(true);
}
/**

0
static/img/twemoji/72x72/1f6dd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
static/img/twemoji/72x72/1f6de.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
static/img/twemoji/72x72/1f6df.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
static/img/twemoji/72x72/1f7f0.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 188 B

After

Width:  |  Height:  |  Size: 188 B

0
static/img/twemoji/72x72/1f91d-1f3fb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1f91d-1f3fc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1f91d-1f3fd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1f91d-1f3fe.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1f91d-1f3ff.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1f979.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
static/img/twemoji/72x72/1f9cc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
static/img/twemoji/72x72/1fa7b.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
static/img/twemoji/72x72/1fa7c.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 661 B

After

Width:  |  Height:  |  Size: 661 B

0
static/img/twemoji/72x72/1faa9.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
static/img/twemoji/72x72/1faaa.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 381 B

After

Width:  |  Height:  |  Size: 381 B

0
static/img/twemoji/72x72/1faab.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 805 B

After

Width:  |  Height:  |  Size: 805 B

0
static/img/twemoji/72x72/1faac.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 948 B

After

Width:  |  Height:  |  Size: 948 B

0
static/img/twemoji/72x72/1fab7.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
static/img/twemoji/72x72/1fab8.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
static/img/twemoji/72x72/1fab9.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
static/img/twemoji/72x72/1faba.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
static/img/twemoji/72x72/1fac3-1f3fb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 976 B

After

Width:  |  Height:  |  Size: 976 B

0
static/img/twemoji/72x72/1fac3-1f3fc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1000 B

After

Width:  |  Height:  |  Size: 1000 B

0
static/img/twemoji/72x72/1fac3-1f3fd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 996 B

After

Width:  |  Height:  |  Size: 996 B

0
static/img/twemoji/72x72/1fac3-1f3fe.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1010 B

After

Width:  |  Height:  |  Size: 1010 B

0
static/img/twemoji/72x72/1fac3-1f3ff.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 999 B

After

Width:  |  Height:  |  Size: 999 B

0
static/img/twemoji/72x72/1fac3.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1018 B

After

Width:  |  Height:  |  Size: 1018 B

0
static/img/twemoji/72x72/1fac4-1f3fb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 998 B

After

Width:  |  Height:  |  Size: 998 B

0
static/img/twemoji/72x72/1fac4-1f3fc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 997 B

After

Width:  |  Height:  |  Size: 997 B

0
static/img/twemoji/72x72/1fac4-1f3fd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1002 B

After

Width:  |  Height:  |  Size: 1002 B

0
static/img/twemoji/72x72/1fac4-1f3fe.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1005 B

After

Width:  |  Height:  |  Size: 1005 B

0
static/img/twemoji/72x72/1fac4-1f3ff.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 983 B

After

Width:  |  Height:  |  Size: 983 B

0
static/img/twemoji/72x72/1fac4.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1000 B

After

Width:  |  Height:  |  Size: 1000 B

0
static/img/twemoji/72x72/1fac5-1f3fb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1014 B

After

Width:  |  Height:  |  Size: 1014 B

0
static/img/twemoji/72x72/1fac5-1f3fc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1011 B

After

Width:  |  Height:  |  Size: 1011 B

0
static/img/twemoji/72x72/1fac5-1f3fd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1011 B

After

Width:  |  Height:  |  Size: 1011 B

0
static/img/twemoji/72x72/1fac5-1f3fe.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1013 B

After

Width:  |  Height:  |  Size: 1013 B

0
static/img/twemoji/72x72/1fac5-1f3ff.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1011 B

After

Width:  |  Height:  |  Size: 1011 B

0
static/img/twemoji/72x72/1fac5.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1010 B

After

Width:  |  Height:  |  Size: 1010 B

0
static/img/twemoji/72x72/1fad7.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1010 B

After

Width:  |  Height:  |  Size: 1010 B

0
static/img/twemoji/72x72/1fad8.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
static/img/twemoji/72x72/1fad9.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 814 B

After

Width:  |  Height:  |  Size: 814 B

0
static/img/twemoji/72x72/1fae0.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 707 B

0
static/img/twemoji/72x72/1fae1.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1fae2.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 924 B

After

Width:  |  Height:  |  Size: 924 B

0
static/img/twemoji/72x72/1fae3.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
static/img/twemoji/72x72/1fae4.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 600 B

After

Width:  |  Height:  |  Size: 600 B

0
static/img/twemoji/72x72/1fae5.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1000 B

After

Width:  |  Height:  |  Size: 1000 B

0
static/img/twemoji/72x72/1fae6.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 646 B

After

Width:  |  Height:  |  Size: 646 B

0
static/img/twemoji/72x72/1fae7.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
static/img/twemoji/72x72/1faf0-1f3fb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 861 B

After

Width:  |  Height:  |  Size: 861 B

0
static/img/twemoji/72x72/1faf0-1f3fc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 861 B

After

Width:  |  Height:  |  Size: 861 B

0
static/img/twemoji/72x72/1faf0-1f3fd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 861 B

After

Width:  |  Height:  |  Size: 861 B

0
static/img/twemoji/72x72/1faf0-1f3fe.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 861 B

After

Width:  |  Height:  |  Size: 861 B

0
static/img/twemoji/72x72/1faf0-1f3ff.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 861 B

After

Width:  |  Height:  |  Size: 861 B

0
static/img/twemoji/72x72/1faf0.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 861 B

After

Width:  |  Height:  |  Size: 861 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1faf1-1f3fb.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 499 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1faf1-1f3fc.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 499 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1faf1-1f3fd.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 499 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1023 B

After

Width:  |  Height:  |  Size: 1023 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

0
static/img/twemoji/72x72/1faf1-1f3fe.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 499 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 1016 B

After

Width:  |  Height:  |  Size: 1016 B

Some files were not shown because too many files have changed in this diff Show More