[CARDS][Note] In conversation time ago information added

This commit is contained in:
Eliseu Amaro 2021-12-08 22:46:00 +00:00
parent df92b0d225
commit b1227d36f1
No known key found for this signature in database
GPG Key ID: 96DA09D4B97BC2D5
7 changed files with 307 additions and 114 deletions

View File

@ -16,6 +16,7 @@
"doctrine/doctrine-migrations-bundle": "^3.1",
"doctrine/orm": "^2.9",
"erusev/parsedown": "^1.7",
"knplabs/knp-time-bundle": "^1.17",
"lstrojny/functional-php": "^1.11",
"nyholm/psr7": "^1.4",
"odolbeau/phone-number-bundle": "^3.1",

297
composer.lock generated
View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "cfe3754cd98ed2727891879332443136",
"content-hash": "225d1cb7ac81b749a522ffd4d0c344fb",
"packages": [
{
"name": "alchemy/binary-driver",
@ -1533,16 +1533,16 @@
},
{
"name": "doctrine/orm",
"version": "2.10.2",
"version": "2.10.3",
"source": {
"type": "git",
"url": "https://github.com/doctrine/orm.git",
"reference": "81d472f6f96b8b571cafefe8d2fef89ed9446a62"
"reference": "7b242753466508e1dd10f67c1baee95785f845c1"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/doctrine/orm/zipball/81d472f6f96b8b571cafefe8d2fef89ed9446a62",
"reference": "81d472f6f96b8b571cafefe8d2fef89ed9446a62",
"url": "https://api.github.com/repos/doctrine/orm/zipball/7b242753466508e1dd10f67c1baee95785f845c1",
"reference": "7b242753466508e1dd10f67c1baee95785f845c1",
"shasum": ""
},
"require": {
@ -1572,12 +1572,12 @@
"doctrine/annotations": "^1.13",
"doctrine/coding-standard": "^9.0",
"phpbench/phpbench": "^0.16.10 || ^1.0",
"phpstan/phpstan": "0.12.99",
"phpstan/phpstan": "1.2.0",
"phpunit/phpunit": "^7.5 || ^8.5 || ^9.4",
"squizlabs/php_codesniffer": "3.6.1",
"symfony/cache": "^4.4 || ^5.2",
"symfony/yaml": "^3.4 || ^4.0 || ^5.0 || ^6.0",
"vimeo/psalm": "4.10.0"
"vimeo/psalm": "4.13.1"
},
"suggest": {
"symfony/cache": "Provides cache support for Setup Tool with doctrine/cache 2.0",
@ -1626,9 +1626,9 @@
],
"support": {
"issues": "https://github.com/doctrine/orm/issues",
"source": "https://github.com/doctrine/orm/tree/2.10.2"
"source": "https://github.com/doctrine/orm/tree/2.10.3"
},
"time": "2021-10-21T17:57:02+00:00"
"time": "2021-12-03T12:27:05+00:00"
},
{
"name": "doctrine/persistence",
@ -2093,16 +2093,16 @@
},
{
"name": "giggsey/libphonenumber-for-php",
"version": "8.12.38",
"version": "8.12.39",
"source": {
"type": "git",
"url": "https://github.com/giggsey/libphonenumber-for-php.git",
"reference": "0a6293c57de9256f4bd0d673280fbfbfd1e47533"
"reference": "6ae517989e96f069141ffeb56ccbbd849520f6ff"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/0a6293c57de9256f4bd0d673280fbfbfd1e47533",
"reference": "0a6293c57de9256f4bd0d673280fbfbfd1e47533",
"url": "https://api.github.com/repos/giggsey/libphonenumber-for-php/zipball/6ae517989e96f069141ffeb56ccbbd849520f6ff",
"reference": "6ae517989e96f069141ffeb56ccbbd849520f6ff",
"shasum": ""
},
"require": {
@ -2162,7 +2162,7 @@
"issues": "https://github.com/giggsey/libphonenumber-for-php/issues",
"source": "https://github.com/giggsey/libphonenumber-for-php"
},
"time": "2021-11-26T08:32:55+00:00"
"time": "2021-12-07T08:51:54+00:00"
},
{
"name": "giggsey/locale",
@ -2220,16 +2220,16 @@
},
{
"name": "guzzlehttp/guzzle",
"version": "7.4.0",
"version": "7.4.1",
"source": {
"type": "git",
"url": "https://github.com/guzzle/guzzle.git",
"reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94"
"reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/868b3571a039f0ebc11ac8f344f4080babe2cb94",
"reference": "868b3571a039f0ebc11ac8f344f4080babe2cb94",
"url": "https://api.github.com/repos/guzzle/guzzle/zipball/ee0a041b1760e6a53d2a39c8c34115adc2af2c79",
"reference": "ee0a041b1760e6a53d2a39c8c34115adc2af2c79",
"shasum": ""
},
"require": {
@ -2238,7 +2238,7 @@
"guzzlehttp/psr7": "^1.8.3 || ^2.1",
"php": "^7.2.5 || ^8.0",
"psr/http-client": "^1.0",
"symfony/deprecation-contracts": "^2.2"
"symfony/deprecation-contracts": "^2.2 || ^3.0"
},
"provide": {
"psr/http-client-implementation": "1.0"
@ -2324,7 +2324,7 @@
],
"support": {
"issues": "https://github.com/guzzle/guzzle/issues",
"source": "https://github.com/guzzle/guzzle/tree/7.4.0"
"source": "https://github.com/guzzle/guzzle/tree/7.4.1"
},
"funding": [
{
@ -2340,7 +2340,7 @@
"type": "tidelift"
}
],
"time": "2021-10-18T09:52:00+00:00"
"time": "2021-12-06T18:43:05+00:00"
},
{
"name": "guzzlehttp/promises",
@ -2603,44 +2603,116 @@
"time": "2020-08-29T13:10:03+00:00"
},
{
"name": "laminas/laminas-code",
"version": "4.4.3",
"name": "knplabs/knp-time-bundle",
"version": "1.17.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
"reference": "bb324850d09dd437b6acb142c13e64fdc725b0e1"
"url": "https://github.com/KnpLabs/KnpTimeBundle.git",
"reference": "bbb2c841b5e04b1290bee8173cbfa9c325ea3e9d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-code/zipball/bb324850d09dd437b6acb142c13e64fdc725b0e1",
"reference": "bb324850d09dd437b6acb142c13e64fdc725b0e1",
"url": "https://api.github.com/repos/KnpLabs/KnpTimeBundle/zipball/bbb2c841b5e04b1290bee8173cbfa9c325ea3e9d",
"reference": "bbb2c841b5e04b1290bee8173cbfa9c325ea3e9d",
"shasum": ""
},
"require": {
"php": "^7.4 || ~8.0.0"
"php": ">=7.2.5",
"symfony/config": "^4.3|^5.0|^6.0",
"symfony/dependency-injection": "^4.3|^5.0|^6.0",
"symfony/translation": "^4.3|^5.0|^6.0"
},
"conflict": {
"phpspec/prophecy": "<1.9.0"
"phpunit/phpunit": "<8.0"
},
"require-dev": {
"doctrine/annotations": "^1.10.4",
"symfony/framework-bundle": "^4.3|^5.0|^6.0",
"symfony/phpunit-bridge": "^5.2|^6.0",
"symfony/templating": "^4.3|^5.0|^6.0",
"symfony/twig-bundle": "^4.3|^5.0|^6.0"
},
"suggest": {
"symfony/twig-bundle": "to use the Twig `time_diff()` function or `|ago` filter"
},
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "1.1.x-dev"
}
},
"autoload": {
"psr-4": {
"Knp\\Bundle\\TimeBundle\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "KnpLabs Team",
"homepage": "http://knplabs.com"
},
{
"name": "Symfony Community",
"homepage": "http://github.com/KnpLabs/KnpTimeBundle/contributors"
}
],
"description": "Making your dates look sensible and descriptive",
"homepage": "http://github.com/KnpLabs/KnpTimeBundle",
"keywords": [
"bundle",
"date",
"descriptive time",
"knp",
"knplabs",
"time"
],
"support": {
"issues": "https://github.com/KnpLabs/KnpTimeBundle/issues",
"source": "https://github.com/KnpLabs/KnpTimeBundle/tree/1.17.0"
},
"time": "2021-10-28T18:40:18+00:00"
},
{
"name": "laminas/laminas-code",
"version": "4.5.0",
"source": {
"type": "git",
"url": "https://github.com/laminas/laminas-code.git",
"reference": "c99ef8e5629c33bfaa3a8f1df773e916af564cd6"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laminas/laminas-code/zipball/c99ef8e5629c33bfaa3a8f1df773e916af564cd6",
"reference": "c99ef8e5629c33bfaa3a8f1df773e916af564cd6",
"shasum": ""
},
"require": {
"php": ">=7.4, <8.2"
},
"require-dev": {
"doctrine/annotations": "^1.13.2",
"ext-phar": "*",
"laminas/laminas-coding-standard": "^2.1.4",
"laminas/laminas-stdlib": "^3.3.0",
"phpunit/phpunit": "^9.4.2",
"psalm/plugin-phpunit": "^0.14.0",
"vimeo/psalm": "^4.3.1"
"laminas/laminas-coding-standard": "^2.3.0",
"laminas/laminas-stdlib": "^3.6.1",
"phpunit/phpunit": "^9.5.10",
"psalm/plugin-phpunit": "^0.16.1",
"vimeo/psalm": "^4.13.1"
},
"suggest": {
"doctrine/annotations": "Doctrine\\Common\\Annotations >=1.0 for annotation features",
"laminas/laminas-stdlib": "Laminas\\Stdlib component",
"laminas/laminas-zendframework-bridge": "A bridge with Zend Framework"
"laminas/laminas-stdlib": "Laminas\\Stdlib component"
},
"type": "library",
"autoload": {
"psr-4": {
"Laminas\\Code\\": "src/"
}
},
"files": [
"polyfill/ReflectionEnumPolyfill.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
@ -2667,7 +2739,7 @@
"type": "community_bridge"
}
],
"time": "2021-09-21T13:40:23+00:00"
"time": "2021-12-07T06:00:32+00:00"
},
{
"name": "landrok/activitypub",
@ -3396,35 +3468,39 @@
},
{
"name": "odolbeau/phone-number-bundle",
"version": "v3.5.0",
"version": "v3.6.0",
"source": {
"type": "git",
"url": "https://github.com/odolbeau/phone-number-bundle.git",
"reference": "c30c6629b6fe78cba7f9032e580f0d5e1e71c2ed"
"reference": "0e9428c2252b2b8c5864c58dd6629cb548aa4695"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/odolbeau/phone-number-bundle/zipball/c30c6629b6fe78cba7f9032e580f0d5e1e71c2ed",
"reference": "c30c6629b6fe78cba7f9032e580f0d5e1e71c2ed",
"url": "https://api.github.com/repos/odolbeau/phone-number-bundle/zipball/0e9428c2252b2b8c5864c58dd6629cb548aa4695",
"reference": "0e9428c2252b2b8c5864c58dd6629cb548aa4695",
"shasum": ""
},
"require": {
"giggsey/libphonenumber-for-php": "^8.0",
"php": ">=7.4",
"symfony/framework-bundle": "^4.4|^5.3",
"symfony/intl": "^4.4|^5.3"
"symfony/framework-bundle": "^4.4|^5.3|^6.0",
"symfony/intl": "^4.4|^5.3|^6.0"
},
"conflict": {
"symfony/serializer": "6.0.0"
},
"replace": {
"misd/phone-number-bundle": "self.version"
},
"require-dev": {
"doctrine/doctrine-bundle": "^1.12|^2.0",
"phpunit/phpunit": "^8.4",
"symfony/form": "^4.4|^5.3",
"symfony/property-access": "^4.4|^5.3",
"symfony/serializer": "^4.4|^5.3",
"symfony/twig-bundle": "^4.4|^5.3",
"symfony/validator": "^4.4|^5.3"
"phpspec/prophecy-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
"symfony/form": "^4.4|^5.3|^6.0",
"symfony/property-access": "^4.4|^5.3|^6.0",
"symfony/serializer": "^4.4|^5.3|^6.0.1",
"symfony/twig-bundle": "^4.4|^5.3|^6.0",
"symfony/validator": "^4.4|^5.3|^6.0"
},
"suggest": {
"doctrine/doctrine-bundle": "Add a DBAL mapping type",
@ -3437,7 +3513,7 @@
"type": "symfony-bundle",
"extra": {
"branch-alias": {
"dev-master": "3.5.x-dev"
"dev-master": "3.6.x-dev"
}
},
"autoload": {
@ -3460,9 +3536,9 @@
],
"support": {
"issues": "https://github.com/odolbeau/phone-number-bundle/issues",
"source": "https://github.com/odolbeau/phone-number-bundle/tree/v3.5.0"
"source": "https://github.com/odolbeau/phone-number-bundle/tree/v3.6.0"
},
"time": "2021-10-27T11:58:46+00:00"
"time": "2021-12-07T09:07:46+00:00"
},
{
"name": "oro/doctrine-extensions",
@ -11019,6 +11095,77 @@
}
],
"packages-dev": [
{
"name": "composer/pcre",
"version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
"reference": "3d322d715c43a1ac36c7fe215fa59336265500f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2",
"reference": "3d322d715c43a1ac36c7fe215fa59336265500f2",
"shasum": ""
},
"require": {
"php": "^5.3.2 || ^7.0 || ^8.0"
},
"require-dev": {
"phpstan/phpstan": "^1",
"phpstan/phpstan-strict-rules": "^1.1",
"symfony/phpunit-bridge": "^4.2 || ^5"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "1.x-dev"
}
},
"autoload": {
"psr-4": {
"Composer\\Pcre\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Jordi Boggiano",
"email": "j.boggiano@seld.be",
"homepage": "http://seld.be"
}
],
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
"keywords": [
"PCRE",
"preg",
"regex",
"regular expression"
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
"source": "https://github.com/composer/pcre/tree/1.0.0"
},
"funding": [
{
"url": "https://packagist.com",
"type": "custom"
},
{
"url": "https://github.com/composer",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
"type": "tidelift"
}
],
"time": "2021-12-06T15:17:27+00:00"
},
{
"name": "composer/semver",
"version": "3.2.6",
@ -11102,25 +11249,27 @@
},
{
"name": "composer/xdebug-handler",
"version": "2.0.2",
"version": "2.0.3",
"source": {
"type": "git",
"url": "https://github.com/composer/xdebug-handler.git",
"reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339"
"reference": "6555461e76962fd0379c444c46fd558a0fcfb65e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/84674dd3a7575ba617f5a76d7e9e29a7d3891339",
"reference": "84674dd3a7575ba617f5a76d7e9e29a7d3891339",
"url": "https://api.github.com/repos/composer/xdebug-handler/zipball/6555461e76962fd0379c444c46fd558a0fcfb65e",
"reference": "6555461e76962fd0379c444c46fd558a0fcfb65e",
"shasum": ""
},
"require": {
"composer/pcre": "^1",
"php": "^5.3.2 || ^7.0 || ^8.0",
"psr/log": "^1 || ^2 || ^3"
},
"require-dev": {
"phpstan/phpstan": "^0.12.55",
"symfony/phpunit-bridge": "^4.2 || ^5"
"phpstan/phpstan": "^1.0",
"phpstan/phpstan-strict-rules": "^1.1",
"symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0"
},
"type": "library",
"autoload": {
@ -11146,7 +11295,7 @@
"support": {
"irc": "irc://irc.freenode.org/composer",
"issues": "https://github.com/composer/xdebug-handler/issues",
"source": "https://github.com/composer/xdebug-handler/tree/2.0.2"
"source": "https://github.com/composer/xdebug-handler/tree/2.0.3"
},
"funding": [
{
@ -11162,7 +11311,7 @@
"type": "tidelift"
}
],
"time": "2021-07-31T17:03:58+00:00"
"time": "2021-12-08T13:07:32+00:00"
},
{
"name": "doctrine/data-fixtures",
@ -11789,16 +11938,16 @@
},
{
"name": "phpspec/prophecy",
"version": "1.14.0",
"version": "v1.15.0",
"source": {
"type": "git",
"url": "https://github.com/phpspec/prophecy.git",
"reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e"
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
"reference": "d86dfc2e2a3cd366cee475e52c6bb3bbc371aa0e",
"url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
"reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13",
"shasum": ""
},
"require": {
@ -11850,9 +11999,9 @@
],
"support": {
"issues": "https://github.com/phpspec/prophecy/issues",
"source": "https://github.com/phpspec/prophecy/tree/1.14.0"
"source": "https://github.com/phpspec/prophecy/tree/v1.15.0"
},
"time": "2021-09-10T09:02:12+00:00"
"time": "2021-12-08T12:19:24+00:00"
},
{
"name": "phpstan/phpstan",
@ -11920,16 +12069,16 @@
},
{
"name": "phpunit/php-code-coverage",
"version": "9.2.9",
"version": "9.2.10",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
"reference": "f301eb1453c9e7a1bc912ee8b0ea9db22c60223b"
"reference": "d5850aaf931743067f4bfc1ae4cbd06468400687"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f301eb1453c9e7a1bc912ee8b0ea9db22c60223b",
"reference": "f301eb1453c9e7a1bc912ee8b0ea9db22c60223b",
"url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/d5850aaf931743067f4bfc1ae4cbd06468400687",
"reference": "d5850aaf931743067f4bfc1ae4cbd06468400687",
"shasum": ""
},
"require": {
@ -11985,7 +12134,7 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-code-coverage/issues",
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.9"
"source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.10"
},
"funding": [
{
@ -11993,7 +12142,7 @@
"type": "github"
}
],
"time": "2021-11-19T15:21:02+00:00"
"time": "2021-12-05T09:12:13+00:00"
},
{
"name": "phpunit/php-file-iterator",

View File

@ -1,23 +1,22 @@
<?php
declare(strict_types = 1);
return [
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
SymfonyCasts\Bundle\VerifyEmail\SymfonyCastsVerifyEmailBundle::class => ['all' => true],
Misd\PhoneNumberBundle\MisdPhoneNumberBundle::class => ['all' => true],
HtmlSanitizer\Bundle\HtmlSanitizerBundle::class => ['all' => true],
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
Symfony\Bundle\FrameworkBundle\FrameworkBundle::class => ['all' => true],
Symfony\Bundle\TwigBundle\TwigBundle::class => ['all' => true],
Twig\Extra\TwigExtraBundle\TwigExtraBundle::class => ['all' => true],
Symfony\Bundle\WebProfilerBundle\WebProfilerBundle::class => ['dev' => true, 'test' => true],
Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true],
Symfony\Bundle\DebugBundle\DebugBundle::class => ['dev' => true, 'test' => true],
Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true],
Doctrine\Bundle\DoctrineBundle\DoctrineBundle::class => ['all' => true],
Doctrine\Bundle\MigrationsBundle\DoctrineMigrationsBundle::class => ['all' => true],
Symfony\Bundle\SecurityBundle\SecurityBundle::class => ['all' => true],
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
SymfonyCasts\Bundle\VerifyEmail\SymfonyCastsVerifyEmailBundle::class => ['all' => true],
Misd\PhoneNumberBundle\MisdPhoneNumberBundle::class => ['all' => true],
HtmlSanitizer\Bundle\HtmlSanitizerBundle::class => ['all' => true],
Doctrine\Bundle\FixturesBundle\DoctrineFixturesBundle::class => ['dev' => true, 'test' => true],
SymfonyCasts\Bundle\ResetPassword\SymfonyCastsResetPasswordBundle::class => ['all' => true],
Fidry\PsyshBundle\PsyshBundle::class => ['dev' => true, 'test' => true],
Fidry\PsyshBundle\PsyshBundle::class => ['dev' => true, 'test' => true],
Knp\Bundle\TimeBundle\KnpTimeBundle::class => ['all' => true],
];

View File

@ -94,33 +94,39 @@
.note-info,
embed header {
display: flex;
justify-content: space-between;
align-items: center;
max-height: var(--big);
border-bottom: unset;
border-radius: var(--smaller) var(--smaller) 0 0;
font-size: var(--small);
padding: 0 var(--smaller) 0 0;
padding: 4px var(--smaller) 4px 0;
}
.note-info {
background: var(--gradient-backwards);
}
.note-author {
font-size: var(--default);
display: flex;
align-items: center;
align-self: center;
.note-url {
opacity: 0.5;
font-size: 0.9em;
margin-left: var(--smaller);
}
embed header {
font-size: var(--small);
justify-content: space-between;
}
.note-author-url {
margin-left: 4px;
}
.note-author-fullname {
font-weight: bold;
}
.note-author-nickname {
opacity: 0.5;
margin-left: var(--smaller);
}
.note-author-nickname::before {
content: '@';
}
.note-actions {
margin-left: auto;
}
.note-actions ul {
display: flex;
vertical-align: middle;

View File

@ -50,6 +50,7 @@ class Note extends Entity
private ?string $content_type = null;
private ?string $content = null;
private ?string $rendered = null;
private ?int $reply_to;
private bool $is_local;
private ?string $source;
private int $scope = VisibilityScope::PUBLIC;
@ -113,6 +114,17 @@ class Note extends Entity
return $this->rendered;
}
public function setReplyTo(?int $reply_to): self
{
$this->reply_to = $reply_to;
return $this;
}
public function getReplyTo(): ?int
{
return $this->reply_to;
}
public function setIsLocal(bool $is_local): self
{
$this->is_local = $is_local;
@ -300,6 +312,16 @@ class Note extends Entity
});
}
public function getReplyToNote(): ?Note
{
return self::getWithPK($this->getReplyTo());
}
public function getReplies(): array
{
return Cache::getList('note-replies-' . $this->id, fn () => DB::dql('select n from note n where n.reply_to = :id', ['id' => $this->id]));
}
/**
* Whether this note is visible to the given actor
*/
@ -347,6 +369,7 @@ class Note extends Entity
'content' => ['type' => 'text', 'description' => 'note content'],
'content_type' => ['type' => 'varchar', 'not null' => true, 'default' => 'text/plain', 'length' => 129, 'description' => 'A note can be written in a multitude of formats such as text/plain, text/markdown, application/x-latex, and text/html'],
'rendered' => ['type' => 'text', 'description' => 'rendered note content, so we can keep the microtags (if not local)'],
'reply_to' => ['type' => 'int', 'foreign key' => true, 'target' => 'Note.id', 'multiplicity' => 'one to one', 'description' => 'note replied to, null if root of a conversation'],
'is_local' => ['type' => 'bool', 'not null' => true, 'description' => 'was this note generated by a local actor'],
'source' => ['type' => 'varchar', 'foreign key' => true, 'length' => 32, 'target' => 'NoteSource.code', 'multiplicity' => 'many to one', 'description' => 'fkey to source of note, like "web", "im", or "clientname"'],
'scope' => ['type' => 'int', 'not null' => true, 'default' => VisibilityScope::PUBLIC, 'description' => 'bit map for distribution scope; 0 = everywhere; 1 = this server only; 2 = addressees; 4 = groups; 8 = subscribers; 16 = messages; null = default'],
@ -360,6 +383,7 @@ class Note extends Entity
'note_created_id_is_local_idx' => ['created', 'is_local'],
'note_actor_created_idx' => ['actor_id', 'created'],
'note_is_local_created_actor_idx' => ['is_local', 'created', 'actor_id'],
'note_reply_to_idx' => ['reply_to'],
],
'fulltext indexes' => ['notice_fulltext_idx' => ['content']], // TODO make this configurable
];

View File

@ -14,6 +14,9 @@
"composer/ca-bundle": {
"version": "1.2.10"
},
"composer/pcre": {
"version": "1.0.0"
},
"composer/semver": {
"version": "3.2.4"
},
@ -163,6 +166,9 @@
"jcupitt/vips": {
"version": "v1.0.8"
},
"knplabs/knp-time-bundle": {
"version": "1.17.0"
},
"laminas/laminas-code": {
"version": "4.1.0"
},

View File

@ -72,14 +72,14 @@
{% block note_author %}
{# Microformat's h-card properties indicates a face icon is a "u-logo" #}
<a href="{{ actor_url }}" class="note-author u-url">
<strong class="note-author-fullname">
{% if fullname is not null %}
{{ fullname }}
{% else %}
{{ nickname }}
{% endif %}
</strong>
<header class="note-author-fullname" tabindex="0" title="{{ 'Begin a note by the user: ' | trans }} {{ nickname }}" >
{% if fullname is not null %}
{{ fullname }}
{% else %}
{{ nickname }}
{% endif %}
</header>
<a href="{{ actor_url }}" class="note-author-url u-url">
<em class="note-author-nickname">{{ nickname }}</em>
</a>
{% endblock note_author %}
@ -90,6 +90,17 @@
</aside>
{% endblock note_sidebar %}
{% block note_info %}
<div class="note-info">
{{ block('note_author') }}
<em>
<a href="{{ note.getUrl() }}" class="note-url">{{ 'in conversation' | trans }} {{ note.getModified() | ago }}</a>
</em>
{{ block('note_actions') }}
</div>
{% endblock note_info %}
{% macro macro_note(note, replies) %}
{% set nickname = note.getActorNickname() %}
{% set fullname = note.getActorFullname() %}
@ -100,12 +111,9 @@
<article class="h-entry hentry note" lang={{ note.getLanguageLocale() }}>
{{ block('note_sidebar') }}
<div class="note-wrapper">
<div tabindex="0" title="{{ 'Begin a note by the user: ' | trans }} {{ nickname }}." class="note-info">
{{ block('note_author') }}
{{ block('note_actions') }}
</div>
{{ block('note_info') }}
<section tabindex="0" role="dialog" class="e-content entry-content note-content">
<section role="dialog" class="e-content entry-content note-content">
{{ block('note_text') }}
{{ block('note_attachments') }}
{{ block('note_links') }}