I never thought I'd want signatures because I don't like seeing them in every single reply. This may have been mentioned above but I'm not seeing it, and so... Does this have any setting to make it so that the signature is only shown in the first post (topic starter)? If not, is this even possible to add eventually?

    010101 Honestly, not something i'd considered, but it makes sense.
    I'll have a look once I crack the permissions side of things 🙂

    katos working on it but really struggling with the permissions. Always open for PRs for assistance though. I’m short on time currently but hoping to sit down and dive into it properly ASAP

    I admire anyone with the skills to write great extensions, I certainly don't have them. It will be excellent if you can round this off with these 2 essential functions.

    The following error happens after deleting an user at FreeFlarum (ref.):

    TypeError: Cannot read properties of undefined (reading 'attributes')
        at e.<anonymous> (index.js:28:50)
        at e.forEach.t.<computed> [as view] (extend.js:35:16)
        at Function.a (render.js:30:16)
        at render.js:155:45
        at render.js:160:3
        at l (render.js:66:8)
        at u (render.js:50:5)
        at render.js:134:5
        at l (render.js:63:14)
        at u (render.js:50:5)

    Source:

    PHP Flarum info (with Signature extension disabled):

    Flarum core 1.1.1
    PHP version: 8.0.9
    MySQL version: 5.5.5-10.6.3-MariaDB-1:10.6.3+maria~focal
    Loaded extensions: Core, date, libxml, openssl, pcre, zlib, filter, hash, json, pcntl, Reflection, SPL, session, standard, sodium, mysqlnd, PDO, xml, calendar, ctype, curl, dom, mbstring, FFI, fileinfo, ftp, gd, gettext, gmp, iconv, intl, exif, mysqli, pdo_mysql, Phar, posix, readline, shmop, SimpleXML, sockets, sysvmsg, sysvsem, sysvshm, tokenizer, xmlreader, xmlwriter, xsl, Zend OPcache
    +---------------------------------+---------+--------+
    | Flarum Extensions               |         |        |
    +---------------------------------+---------+--------+
    | ID                              | Version | Commit |
    +---------------------------------+---------+--------+
    | flarum-flags                    | v1.1.0  |        |
    | flarum-tags                     | v1.1.0  |        |
    | flarum-lock                     | v1.1.0  |        |
    | flarum-sticky                   | v1.1.0  |        |
    | flarum-markdown                 | v1.1.1  |        |
    | flarum-suspend                  | v1.1.0  |        |
    | flarum-approval                 | v1.1.0  |        |
    | v17development-seo              | v1.8.0  |        |
    | v17development-blog             | 0.4.2   |        |
    | the-turk-stickiest              | 2.0.3   |        |
    | sycho-profile-cover             | v1.3.0  |        |
    | migratetoflarum-canonical       | 1.0.0   |        |
    | michaelbelgium-discussion-views | v7.1.1  |        |
    | matteocontrini-imgur-upload     | v3.9.1  |        |
    | justoverclock-newsfeed          | 1.0.1   |        |
    | fof-user-directory              | 1.2.0   |        |
    | fof-user-bio                    | 1.0.1   |        |
    | fof-sitemap                     | 1.0.2   |        |
    | fof-profile-image-crop          | 1.0.1   |        |
    | fof-polls                       | 1.0.5   |        |
    | fof-pages                       | 1.0.1   |        |
    | fof-nightmode                   | 1.1.5   |        |
    | fof-links                       | 1.0.3   |        |
    | fof-linguist                    | 1.0.3   |        |
    | fof-forum-statistics-widget     | 1.0.2   |        |
    | fof-default-user-preferences    | 1.0.0   |        |
    | fof-cookie-consent              | 1.0.1   |        |
    | fof-byobu                       | 1.1.0   |        |
    | fof-bbcode-details              | 1.0.0   |        |
    | fof-ban-ips                     | 1.0.0   |        |
    | fof-analytics                   | 1.0.0   |        |
    | flarum-subscriptions            | v1.1.0  |        |
    | flarum-statistics               | v1.1.0  |        |
    | flarum-mentions                 | v1.1.3  |        |
    | flarum-likes                    | v1.1.0  |        |
    | flarum-lang-english             | v1.1.0  |        |
    | flarum-lang-dutch               | v1.0    |        |
    | flarum-emoji                    | v1.1.1  |        |
    | flarum-bbcode                   | v1.1.0  |        |
    | clarkwinkelmann-group-list      | 1.0.0   |        |
    | clarkwinkelmann-emojionearea    | 1.0.0   |        |
    | clarkwinkelmann-author-change   | 1.0.2   |        |
    | askvortsov-pwa                  | v3.1.1  |        |
    | askvortsov-moderator-warnings   | v0.6.1  |        |
    | askvortsov-discussion-templates | v0.8.3  |        |
    | askvortsov-categories           | v3.0.4  |        |
    | acpl-mobile-tab                 | 1.0.5   |        |
    +---------------------------------+---------+--------+
    Base URL: https://www.xxx.nl
    Installation path: /data/host/xxx/app
    Queue driver: sync
    Mail driver: log
    Debug mode: off

    Equinemarkt might be able to provide more information regarding this issue(?). Thanks

      SKevo Very strange - Thanks for the report! I'll have to have a look at this one 🙂

      14 days later

      @katos, did you get any further with the permission issues?

      It would be great if a user could decide wether he sees signatures (of other users) or not. Some user don't want to see them and it makes posts less place consuming.

        m4v3rick I’m going to be honest, I’ve not had chance to look at all lately. We’re undergoing huge changes at work and I’m transitioning into an entirely new role. It’s been rather manic but I’m hoping that it’ll settle down soon enough for me to take a peek.

        Apologies for the delays

          katos

          No worries and congrats to your new position!
          If you take a look at it sometime it would be great considering the user decision to see signatures. Thanks!

          Zedd add -W to the composer command as suggested in the output you shared.

          • Zedd replied to this.

            luceos okayy thank you 😃
            I'm afraid something will happen that's why I'm asking

            how can i disable signature function for specific user group?
            i mean i want to enable only for admin and moderator

              22 days later

              Zedd I'm getting the same error. Eventually managed to install it with

              composer require katosdev/signature:*

              But now I'm on 1.1.3 version and can't update it on 1.2

              When I try with : composer update katosdev/signature:2.1 -W I'm getting this error

                Problem 1
                  - Root composer.json requires katosdev/signature *, 2.1, found katosdev/signature[dev-master, 1.0.0, ...,                                           1.2] but it does not match the constraint.
                11 days later

                hrvoje_hr There is no version 2.1?

                composer update katosdev/signature:2.1 -W will therefore always fail

                m4v3rick Slowly, I might add! Apologies, I'm really finding it difficult to put aside the time for this one.

                13 days later

                HasanMerkit as already mentioned, this feature is a work in progress as I attempt to fit in the updates around my work.

                The extension is opensource and I encourage any PRs to assist with pushing this feature request along 😄

                7 days later

                How hard would it be to add a setting to disable the editor? Believe it or not, I want plain text signatures only.

                Trick if you only want signatures to show in first post. It's a cleaner option so that the user's crazy signature (if crazy - with a lot of text, links, and images) is at least only shown once per thread.

                /* Signature - first post only */
                .PostStream-item[data-index="0"] .SignatureWrapper {
                display: block;
                }
                .PostStream-item .SignatureWrapper {
                display: none;
                }

                Just realized the latest version of this won't install for me. I'm stuck on an old version. When trying to install the latest I get:

                Problem 1
                    - Root composer.json requires katosdev/signature ^1.2 -> satisfiable by katosdev/signature[1.2].
                    - katosdev/signature 1.2 requires symfony/css-selector ^6.0.2 -> found symfony/css-selector[v6.0.2, v6.0.3] but the package is fixed to v5.4.3 (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.

                I'm not good enough with composer commands to know what to do...

                  010101 Something has locked your symfony/css-selector version. Can you post your composer.lock contents here? 🙂

                    katos Well, turns out that is part of the problem, but I'm realizing it all goes back to the fact that my host's command line interface is stuck at using php 7.4.28. They gave me a command to run to use php 8+, but it doesn't work. I'm going to chat with them again to figure out how to do these composer updates with php 8+. 😬

                    30 minutes later...

                    I found the command that works with my host to force php8+ usage. I now have the latest version of this extension installed. 😃

                    katos Alternatively you can have images, I am working on a feature to deny images / code etc for specific groups.

                    Yes, a list of activate/deactivate option like that would be great (allow/deny image, how much links allowed, max character limit, enable or not different font size...) as well as hiding the related buttons of deactivated options in the signature writing box.

                    15 days later

                    r4nchy try adding the -W option to your command:

                    composer require katosdev/signature:"*" -W
                    a month later

                    Any updates on the security (e.g. user groups) or plain text requests?

                      22 days later

                      Ahh I see the extension is not following SRI and therefore breaks integrity checks. Anyone know what scripts are loading unsecured?

                      2 months later

                      katos If just we had an option to hide or show signatures from guest that would be nice!
                      Sometimes users just use signature to spam links and getting backlinks. So if we don't display signature to guests and google, there is no problem for SEO. Only logged in users are enough to see signatures.

                      Do you think you can add this option to set who can see signatures in forum?
                      I think this can make this extension more usable.

                      5 months later

                      Thanks for developing this extension.

                      I want to translate the following screenshot. However, I could not find related item in FoF Linguist. Nor could I find the related part in the source code. I really need some help here.

                      Thanks.

                      2 months later

                      Hi, I found another issue with this extension. I am not sure if happens to others too or not.

                      The little icon of the signature is not showing up on my Android phone. Here is a screenshot:


                      Can anyone please tell me what does "target" mean in the "insert link" window?

                      Here is a screenshot:

                      10 days later

                      Hi,
                      Just installed this extension to migrate users' signatures from another forum and noticed that if you open a users public profile, the URL for "Signature" is not correct, it's pointing to /settings/signature instead of something like /u/4/signature. When viewing as admin it actually opens an empty multiline text edit box.

                        3 months later

                        Hi, I been using this extension for some time.

                        Now, users cannot add new signature.

                        Is the following error related to the above issue?

                        [2023-07-05 10:41:17] flarum.ERROR: ParseError: syntax error, unexpected token ")" in /home/hrjh/public_html/flarum/vendor/symfony/css-selector/XPath/Extension/NodeExtension.php:65
                        Stack trace:
                        #0 /home/hrjh/public_html/flarum/vendor/composer/ClassLoader.php(428): Composer\Autoload\includeFile('/home/hrjh/publ...')
                        #1 /home/hrjh/public_html/flarum/vendor/symfony/css-selector/XPath/Translator.php(56): Composer\Autoload\ClassLoader->loadClass('Symfony\Compone...')
                        #2 /home/hrjh/public_html/flarum/vendor/symfony/css-selector/CssSelectorConverter.php(40): Symfony\Component\CssSelector\XPath\Translator->construct()
                        #3 /home/hrjh/public_html/flarum/vendor/symfony/dom-crawler/Crawler.php(1201): Symfony\Component\CssSelector\CssSelectorConverter->
                        construct(true)
                        #4 /home/hrjh/public_html/flarum/vendor/symfony/dom-crawler/Crawler.php(740): Symfony\Component\DomCrawler\Crawler->createCssSelectorConverter()
                        #5 /home/hrjh/public_html/flarum/vendor/katosdev/signature/src/Validation/ValidateSignature.php(35): Symfony\Component\DomCrawler\Crawler->filter('img')
                        #6 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/RouteHandlerFactory.php(41): katosdev\Signature\Validation\ValidateSignature->handle(Object(Laminas\Diactoros\ServerRequest))
                        #7 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/ExecuteRoute.php(27): Flarum\Http\RouteHandlerFactory->Flarum\Http{closure}(Object(Laminas\Diactoros\ServerRequest), Array)
                        #8 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ExecuteRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Closure))
                        #9 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Api/Middleware/ThrottleApi.php(33): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #10 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Api\Middleware\ThrottleApi->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #11 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/CheckCsrfToken.php(44): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #12 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\CheckCsrfToken->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #13 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/ResolveRoute.php(69): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #14 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ResolveRoute->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #15 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/SetLocale.php(51): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #16 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\SetLocale->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #17 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithHeader.php(58): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #18 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\AuthenticateWithHeader->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #19 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/AuthenticateWithSession.php(31): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #20 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\AuthenticateWithSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #21 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/RememberFromCookie.php(52): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #22 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\RememberFromCookie->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #23 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/StartSession.php(61): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #24 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\StartSession->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #25 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Api/Middleware/FakeHttpMethods.php(29): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #26 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Api\Middleware\FakeHttpMethods->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #27 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/ParseJsonBody.php(28): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #28 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ParseJsonBody->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #29 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/HandleErrors.php(57): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #30 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\HandleErrors->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #31 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/InjectActorReference.php(25): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #32 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\InjectActorReference->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #33 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #34 /home/hrjh/public_html/flarum/vendor/middlewares/request-handler/src/RequestHandler.php(84): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #35 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\RequestHandler->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #36 /home/hrjh/public_html/flarum/vendor/middlewares/base-path-router/src/BasePathRouter.php(101): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #37 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\BasePathRouter->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #38 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Middleware/OriginalMessages.php(36): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #39 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Laminas\Stratigility\Middleware\OriginalMessages->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #40 /home/hrjh/public_html/flarum/vendor/middlewares/base-path/src/BasePath.php(73): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #41 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Middlewares\BasePath->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #42 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Middleware/ProcessIp.php(24): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #43 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/Next.php(49): Flarum\Http\Middleware\ProcessIp->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\Next))
                        #44 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(75): Laminas\Stratigility\Next->handle(Object(Laminas\Diactoros\ServerRequest))
                        #45 /home/hrjh/public_html/flarum/vendor/laminas/laminas-stratigility/src/MiddlewarePipe.php(64): Laminas\Stratigility\MiddlewarePipe->process(Object(Laminas\Diactoros\ServerRequest), Object(Laminas\Stratigility\EmptyPipelineHandler))
                        #46 /home/hrjh/public_html/flarum/vendor/laminas/laminas-httphandlerrunner/src/RequestHandlerRunner.php(73): Laminas\Stratigility\MiddlewarePipe->handle(Object(Laminas\Diactoros\ServerRequest))
                        #47 /home/hrjh/public_html/flarum/vendor/flarum/core/src/Http/Server.php(45): Laminas\HttpHandlerRunner\RequestHandlerRunner->run()
                        #48 /home/hrjh/public_html/flarum/public/index.php(26): Flarum\Http\Server->listen()
                        #49 {main}

                        Flarum information

                        Sorry, I cannot provide that information for now.


                        when I upgrade flarum, here was one of the problems listed:

                        Problem 2
                        - symfony/css-selector[v6.0.0, ..., v6.0.19] require php >=8.0.2 -> your php version (7.4.33) does not satisfy that requirement.
                        - symfony/css-selector[v6.1.0, ..., v6.2.7] require php >=8.1 -> your php version (7.4.33) does not satisfy that requirement.

                        when I run composer why symfony/css-selector command

                        It says:

                        katosdev/signature 1.2   requires symfony/css-selector (^6.0.2)                               
                        tijsverkoyen/css-to-inline-styles 2.2.6 requires symfony/css-selector (^2.7  ||  ^ 3.0  ||  ^ 4.0  ||  ^ 5.0  ||  ^ 6.0 ) 

                        If you need to login and check:
                        user:guest
                        email: free123@gmail.com
                        password:12345678

                        Acutally, I am using 8.0 now.

                        18 days later

                        Can we add limitations to signatures? Some users accidentally added large image and it's kind of disruptive. Also it would be good if we can limit text characters and no images. Thanks

                        2 months later

                        Apologies for the issues that people are having with this extension.
                        I honestly truly never expected the extension to be so popular when I revived it, and sadly had previously not had the time to dedicate to it.

                        I am pleased to announce though that this weekend I will be kick-starting a revamp of this extension and working on updating and introducing features!

                        Keep your eyes peeled for further announcements! 👀

                        This extension has unexpectedly multifunctional features for traditional forum.

                        acseven This has been on my backlog for some time - Will look into this and get this sorted!