{"id":19640660,"url":"https://github.com/daniel-km/omeka-s-module-comment","last_synced_at":"2026-05-15T09:32:19.976Z","repository":{"id":148008257,"uuid":"116656610","full_name":"Daniel-KM/Omeka-S-module-Comment","owner":"Daniel-KM","description":"Module for Omeka S to add public and/or private commenting on item sets, items and media and to manage them.","archived":false,"fork":false,"pushed_at":"2023-11-23T08:54:20.000Z","size":237,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-09T18:57:59.734Z","etag":null,"topics":["commenting","crowdsourcing","omeka-s","omeka-s-module"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Daniel-KM.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-01-08T09:30:19.000Z","updated_at":"2023-02-09T11:32:31.000Z","dependencies_parsed_at":null,"dependency_job_id":"fe360cfe-5579-482c-b8d1-3db4081108db","html_url":"https://github.com/Daniel-KM/Omeka-S-module-Comment","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-S-module-Comment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-S-module-Comment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-S-module-Comment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Daniel-KM%2FOmeka-S-module-Comment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Daniel-KM","download_url":"https://codeload.github.com/Daniel-KM/Omeka-S-module-Comment/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240947648,"owners_count":19883030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["commenting","crowdsourcing","omeka-s","omeka-s-module"],"created_at":"2024-11-11T14:06:23.317Z","updated_at":"2026-05-15T09:32:19.969Z","avatar_url":"https://github.com/Daniel-KM.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"Comment (module for Omeka S)\n============================\n\n\u003e __New versions of this module and support for Omeka S version 3.0 and above\n\u003e are available on [GitLab], which seems to respect users and privacy better\n\u003e than the previous repository.__\n\n[Comment] is a module for [Omeka S] that allows users and/or public to comment\nresources. It includes both ReCaptchas and Akismet spam detection if needed.\nComments can be flagged and moderated.\n\nComment can be displayed in public view or not, allowing librarian to comment\nthe resource themselves, publicly or privately.\n\nWith the module [Guest], the user can see its own comments and subscribe to\nresources to be notified when a comment is added.\n\n\nInstallation\n------------\n\n### Module\n\nSee general end user documentation for [installing a module].\n\nThis module requires the module [Common], that should be installed first.\nThe optional module [Blocks Disposition] may be installed too for old themes.\n\nThe optional module [Guest] can be used to manage own comments.\n\n* From the zip\n\nDownload the last release [Comment.zip] from the list of releases, and\nuncompress it in the `modules` directory.\n\n* From the source and for development\n\nIf the module was installed from the source, rename the name of the folder of\nthe module to `Comment`.\n\nThen install it like any other Omeka module and follow the config instructions.\n\n* Askimet\n\nNote: Akismet requires a dependency that is not installed automatically.\n\n* For test\n\nThe module includes a comprehensive test suite with unit and functional tests.\nRun them from the root of Omeka:\n\n```sh\nvendor/bin/phpunit -c modules/Comment/phpunit.xml --testdox\n```\n\n\nDisplaying Comments\n-------------------\n\nThe comments are displayed automatically on item set, item or media pages\naccording to options set in site settings. They can be added to resource pages\nvia the resource blocks too.\n\nTo manage the display more precisely, use resource blocks or the module\n[Blocks Disposition], or add the following code in your theme:\n\n```php\n\u003c?php // Or via the helpers. ?\u003e\n\u003cdiv id=\"comments-container\" class=\"block block-comments-container\"\u003e\n    \u003c?= $this-\u003ecommentsResource($resource) ?\u003e\n    \u003c?= $this-\u003ecommentForm($resource) ?\u003e\n\u003c/div\u003e\n\n\u003c?php // Via a standard partial. ?\u003e\n\u003c?= $this-\u003epartial('common/comment', ['resource' =\u003e $resource]) ?\u003e\n```\n\nThe structure of comments, the comment itself, and the comment form can be\nthemed.\n\nIn the admin board, the comments are available in the details of the browse\npages and in the show pages of each resource. They can be filtered and managed\nin the main comment page.\n\n\nEmail Notifications\n-------------------\n\nThe module provides two types of email notifications:\n\n### Subscriber notifications\n\nUsers can subscribe to resources to be notified when new comments are published.\nWhen a logged-in user posts a comment, they are automatically subscribed to that\nresource. When a comment is approved (published), all subscribers to that resource\nreceive an email notification. Subscribers are notified when:\n\n- A new comment is created and immediately approved (no moderation required)\n- An existing comment is approved by a moderator\n\nSubscribers are *not* notified for comments pending moderation.\n\n### Moderator notifications\n\nModerators can be notified by email when comments require attention. To enable\nthis, add one or more email addresses in the main settings under \"Notify public\ncomments by email\" (one email per line).\n\nModerators are notified when:\n\n| Event                                      | Notification sent |\n|--------------------------------------------|-------------------|\n| New comment created (approved or pending)  | Yes               |\n| Comment edited by user                     | Yes               |\n| Comment flagged by user                    | Yes               |\n\nThe flagged comment notification includes:\n- Resource ID and title\n- Comment author name and email\n- Full comment body\n- Direct link to the admin review page\n\n### Customizing email templates\n\nAll email subjects and bodies can be customized in the main settings. Each email\ntype has configurable subject and body fields with placeholder support:\n\nSubscriber notification (sent to users who subscribed to a resource):\n- Placeholders: `{site_name}`, `{resource_id}`, `{resource_title}`, `{resource_url}`, `{comment_author}`, `{comment_body}`\n\nModerator notification (sent when a comment is created or edited):\n- Placeholders: `{site_name}`, `{resource_id}`, `{resource_title}`, `{resource_url}`, `{comment_author}`, `{comment_email}`, `{comment_body}`\n\nFlagged comment notification (sent when a comment is flagged):\n- Placeholders: `{site_name}`, `{resource_id}`, `{resource_title}`, `{comment_author}`, `{comment_email}`, `{comment_body}`, `{admin_url}`\n\nIf a template field is left empty, the default template is used.\n\n\nComment History\n---------------\n\nAll changes to comments are tracked in a history log. The following actions are\nrecorded:\n\n| Action      | Data stored                    |\n|-------------|--------------------------------|\n| `edit`      | Previous body content          |\n| `approve`   | -                              |\n| `unapprove` | -                              |\n| `flag`      | -                              |\n| `unflag`    | -                              |\n| `spam`      | -                              |\n| `unspam`    | -                              |\n\nEach history entry includes:\n- Action type\n- Timestamp (ISO 8601 format)\n- User ID (who performed the action)\n- Additional data (when applicable)\n\nThe history is available via the API (`o:history`) and can be used to review\nchanges or restore previous versions of a comment.\n\n\nOptions\n-------\n\nThe comment module makes use of both ReCaptchas and the Akismet spam-detection\nservice. You will want to get API keys to both of these services and add them to\nOmeka S main configuration for ReCaptchas key on inside the main settings page.\n\nIf not enabled, a simple anti-spam is available too.\n\n### Rate limiting\n\nTo prevent spam and abuse, a rate limiting feature is available. Configure it in\nthe main settings:\n\n- Max comments: Maximum number of comments allowed per IP address within the\n  time period (set to 0 to disable)\n- Period (minutes): Time window for the rate limit\n\nWhen the limit is exceeded, users receive a \"Too many comments\" error and must\nwait before posting again.\n\n### Alias mode\n\nLogged-in users can optionally comment using an alias (custom name and email)\ninstead of their account information. This feature is disabled by default. To\nenable it, go to main settings and enable \"Allow users to comment with an alias\".\n\nWhen enabled, users see a choice when posting a comment:\n- Account: Uses their registered name and email\n- Use an alias: Allows entering a custom name and email\n\nThe comment remains linked to the user's account (visible to administrators),\nbut the displayed name and email are the custom values. This is useful for users\nwho want to comment under a pseudonym while still being accountable.\n\nNote: The alias name and email are stored with each comment independently, so\nchanging the user's account information later does not affect existing comments.\n\n### Anonymous mode\n\nLogged-in users can optionally comment anonymously. This feature is disabled by\ndefault. To enable it, go to main settings and enable \"Allow users to comment\nanonymously\"\n\nWhen enabled, users see an additional option when posting a comment:\n- Account: Uses their registered name and email\n- Comment anonymously: Displays \"[Anonymous]\" as the author name\n\nThe comment remains linked to the user's account for moderation purposes (visible\nto administrators), but the public display shows \"[Anonymous]\" instead of the\nuser's name. The email is not stored with the comment.\n\nBoth alias mode and anonymous mode can be enabled simultaneously, giving users\nthree options: account, alias, or anonymous.\n\n\nUse Cases\n---------\n\n### Limited, moderated commenting\n\nAn institution wants only trusted people to leave comments for anyone to read.\nIt doesn’t trust some of them enough to allow comments to be automatically\npublic.\n\nThe comments can be moderated by the global admin, the site admin, the editor or\nthe reviewer.\n\n### Open commenting, with registered users getting to submit comments without approval\n\nInstall and configure the [Guest] module. Set commenting to Public so that\nanyone can comment.\n\n### Closed commenting for resources management\n\nIt’s possible to comment resources internally, for example to improve the\nquality of metadata, or in a discussion between an author and a reviewer.\n\n### Groups\n\nTo manage comments, you may add groups with item sets in settings.\nFor better urls, you may add a redirection with module [Redirector].\n\n\nTODO\n----\n\n- [x] Move some parameters from main settings to site settings.\n- [x] Add comment edit history tracking.\n- [x] Add rate limiting for spam prevention.\n- [x] Add alias mode for logged-in users.\n- [x] Add anonymous mode for logged-in users.\n- [ ] Use PrepareMessage from module Common for email templates.\n- [ ] Convert comment into annotations (module Annotate).\n- [ ] Manage comments with module Guest.\n- [ ] Manage comments on site pages.\n\n\nWarning\n-------\n\nUse it at your own risk.\n\nIt’s always recommended to backup your files and your databases and to check\nyour archives regularly so you can roll back if needed.\n\n\nTroubleshooting\n---------------\n\nSee online issues on the [module issues] page.\n\n\nLicense\n-------\n\nThis module is published under the [CeCILL v2.1] license, compatible with\n[GNU/GPL] and approved by [FSF] and [OSI].\n\nThis software is governed by the CeCILL license under French law and abiding by\nthe rules of distribution of free software. You can use, modify and/ or\nredistribute the software under the terms of the CeCILL license as circulated by\nCEA, CNRS and INRIA at the following URL \"http://www.cecill.info\".\n\nAs a counterpart to the access to the source code and rights to copy, modify and\nredistribute granted by the license, users are provided only with a limited\nwarranty and the software’s author, the holder of the economic rights, and the\nsuccessive licensors have only limited liability.\n\nIn this respect, the user’s attention is drawn to the risks associated with\nloading, using, modifying and/or developing or reproducing the software by the\nuser in light of its specific status of free software, that may mean that it is\ncomplicated to manipulate, and that also therefore means that it is reserved for\ndevelopers and experienced professionals having in-depth computer knowledge.\nUsers are therefore encouraged to load and test the software’s suitability as\nregards their requirements in conditions enabling the security of their systems\nand/or data to be ensured and, more generally, to use and operate it in the same\nconditions as regards security.\n\nThe fact that you are presently reading this means that you have had knowledge\nof the CeCILL license and that you accept its terms.\n\n\nCopyright\n---------\n\n* Copyright Daniel Berthereau, 2018-2026 (see [Daniel-KM])\n\nFirst version was a full rewrite from the RRCHNM Omeka Classic [Commenting plugin].\nNext improvements were implemented for the [Musée de Bretagne], currently under\nthe proprietary software Flora.\n\n\n[Comment]: https://gitlab.com/Daniel-KM/Omeka-S-module-Comment\n[Omeka S]: https://omeka.org/s\n[Omeka Classic]: https://omeka.org/classic\n[Commenting plugin]: https://omeka.org/classic/plugins/Commenting\n[Common]: https://gitlab.com/Daniel-KM/Omeka-S-module-Common\n[Guest]: https://gitlab.com/Daniel-KM/Omeka-S-module-Guest\n[Blocks Disposition]: https://gitlab.com/Daniel-KM/Omeka-S-module-BlocksDisposition\n[installing a module]: https://omeka.org/s/docs/user-manual/modules/#installing-modules\n[Redirector]: https://gitlab.com/Daniel-KM/Omeka-S-module-Redirector\n[module issues]: https://gitlab.com/Daniel-KM/Omeka-S-module-Comment/-/issues\n[CeCILL v2.1]: https://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html\n[GNU/GPL]: https://www.gnu.org/licenses/gpl-3.0.html\n[FSF]: https://www.fsf.org\n[OSI]: http://opensource.org\n[Musée de Bretagne]: http://collections.musee-bretagne.fr\n[GitLab]: https://gitlab.com/Daniel-KM\n[Daniel-KM]: https://gitlab.com/Daniel-KM \"Daniel Berthereau\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel-km%2Fomeka-s-module-comment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaniel-km%2Fomeka-s-module-comment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaniel-km%2Fomeka-s-module-comment/lists"}