| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
⬇️ Install package: OJS / OMP 3.5 — or browse all Releases.
A generic plugin for Open Journal Systems (OJS) that restores a typeable (manual) ORCID field — the behaviour from older OJS versions — for journals where ORCID authentication (OAuth) is not configured. It covers the three places where the core hides the field: the author/contributor form, the public user registration page and the user profile.
⚠️ Manual entry is NOT the recommended way to collect ORCID iDs. The recommended approach remains authenticated ORCID (OAuth), where the author signs in at ORCID and the iD is verified at the source. A manually typed iD is unverified — it can be mistyped or belong to someone else. Use this plugin only as a fallback while your journal cannot enable ORCID OAuth; once you configure OAuth, the plugin goes inert and OJS takes over. See Why authenticated ORCID is recommended.
Developed and maintained by OJSBR. See the Credits & authorship section below.
| Application | Branch | Plugin release |
|---|---|---|
| OJS 3.5.x and OMP 3.5.x | stable-3_5_0 (default) | 1.1.6.0 |
Also applies to OJS 3.4.x, where the same core restriction was introduced.
Since 1.1.3.0 the same package serves OJS and OMP. The former orcidManualEntryOmp repository is archived; its releases stay available there.
Since OJS 3.4/3.5 the old ORCID plugin was merged into the core and the author ORCID field became read-only: it can only be filled by OAuth authentication (the author signs in at ORCID and authorises the journal). This is deliberate — an authenticated iD is verified at the source, so you know it really belongs to that person. A manually typed iD is not verified: it may be mistyped, invented, or belong to someone else, and it will not carry ORCID's "verified" status.
So the recommendation is: enable ORCID OAuth. See PKP's ORCID in OJS/OMP/OPS guide. Use this plugin only while you genuinely cannot enable OAuth (e.g. no ORCID member/public API credentials yet) and still need to record iDs. It is a pragmatic fallback, not a replacement for authentication.
Settings → Website → Plugins → ORCID manual (digitável) → Settings. Four boxes, and the defaults keep the plugin behaving exactly as it did before 1.1.4.0:
| Setting | Default | What it does |
|---|---|---|
| Show the ORCID field on the public registration page | on | Takes the field off that page without touching the profile, which always has it — otherwise nobody could ever record their own iD. |
| Require it when a new user registers | off | An account is not created without a valid iD. |
| Require it when an author or co-author is saved | off | A contributor is not saved without one, in the wizard and in Edit contributor. |
| Require it from every author to complete the submission | off | The submission cannot be completed while any contributor has no iD; the message names them, in the contributors panel of the last step. |
| Journal managers and section editors are exempt | on | Those two roles save a contributor and complete a submission with the iD still missing. Public registration is not covered: whoever registers holds no role in the journal yet. Being exempt never makes an invalid iD acceptable — it only lifts the requirement to have one. |
Upgrading from 1.1.4.0: the exemption arrives on. A journal that had already made the iD required and wants everybody held to it — editors included — has to untick that box.
What also matters is the guard: the plugin only acts while ORCID OAuth is off for the context — with OAuth on, these settings do nothing and the core owns the field.
OrcidManager::isEnabled() reads orcidEnabled from the journal (or the site), and it does not check whether the credentials are usable. A journal left with ORCID enabled and placeholder client id/secret ends up in limbo: a field nobody can fill and a plugin that stays silent. If the ORCID field does not show up, check Settings → Distribution → ORCID first, before suspecting a plugin conflict.
Site-wide registration (the site index, with no journal selected) is out of scope: the core disables ORCID there, and a context-enabled plugin is not loaded on that page.
The core blocks manual ORCID in four places; the plugin neutralizes each only when OAuth is off:
For the registration page and the user profile, the core already reads the orcid request variable — it just hides the field and drops the value when OAuth is off. Three more hooks close that gap, without replacing any core template:
Requiring the iD adds one more hook, and reuses the ones above:
Site-wide registration (no journal context) is out of scope: ORCID is disabled there by the core, and a context-enabled plugin is not loaded on that page.
PHPUnit (tests/*Test.php, on PKP\tests\PKPTestCase): the plugin class against the installed PKP and PKP's plugin registry, ORCID normalization, duplicate comparison by iD, where the field goes in the registration and profile forms, that other output is left alone, that the submitted value is escaped, that the output filter is named (Smarty names every closure filter "closure", so an unnamed one replaced another plugin's), that no core template is replaced and no iD reaches the server log, and the 38 translations. From the OJS root:
lib/pkp/lib/vendor/bin/phpunit --configuration lib/pkp/tests/phpunit.xml --no-coverage "$PWD/plugins/generic/orcidManualEntry/tests"Since 1.1.4.0 the suite also runs against the database of the installation: a submission is created with a contributor who has no iD, the core's own validation of the last step is called, and the message has to name that contributor — and has to disappear once the journal stops asking for the iD. The submission it creates is deleted, and the test skips itself where the installation looks like a live site.
Cypress (cypress/tests/functional/OrcidManualEntry.cy.js, run by pkp-github-actions on every push): enables the plugin, reads and saves its settings form, checks the registration page, the profile (a bare iD saved as its canonical URL, a wrong check digit refused, the iD cleared and the original put back) and contributors of a submission through the REST endpoints the contributor form uses (iD stored, the same iD refused for a second contributor even as a sandbox URL, a wrong check digit refused, the iD removed). With the iD required it then checks that a complete registration missing only the iD creates no account, that a contributor without one is refused, and that the submission is turned down by the very request the Submit button makes — and goes through once the journal stops asking. It works on an installation with no submission of its own: it creates one and deletes it, puts the settings back as it found them, and never touches a captcha.
Both suites are run by .github/actions/tests.sh, so a failure in either one fails the job.
Verified on OJS 3.5.0.3 and OMP 3.5.0.3 with ORCID OAuth off (37 unit tests and 12 browser tests on each), also with the WhatsApp Contributor plugin adding its own field to the registration form. Earlier manual checks (1.1.x) also covered a new submission inheriting the account's iD, the contributor modal reopening with the stored iD, and the plugin going inert once OAuth is on.
Tests are kept in the repository and are not part of the release package.
Generative AI (Claude Opus 5, by Anthropic) was used to write and run tests, improve the code and bring it in line with PKP standards. Every change is reviewed and tested by OJSBR, which is responsible for the published releases.
Issues and pull requests are welcome.
Distributed under the GNU GPL v3. See LICENSE and docs/COPYING.
Plugin genérico para o Open Journal Systems (OJS) que restaura um campo ORCID digitável (manual) — como nas versões anteriores do OJS — para revistas em que a autenticação ORCID (OAuth) não está configurada. Cobre os três lugares em que o núcleo esconde o campo: o formulário de autor/contribuidor, a tela pública de cadastro de usuário e o perfil do usuário.
⚠️ O preenchimento manual NÃO é a forma recomendada de coletar iDs ORCID. A recomendação continua sendo o ORCID autenticado (OAuth), em que o autor faz login no ORCID e o iD é verificado na fonte. Um iD digitado manualmente não é verificado — pode ser digitado errado ou pertencer a outra pessoa. Use este plugin apenas como alternativa temporária enquanto a revista não puder habilitar o ORCID OAuth; assim que o OAuth for configurado, o plugin fica inerte e o OJS assume o controle.
Desenvolvido e mantido pela OJSBR.
| Aplicação | Branch | Release do plugin |
|---|---|---|
| OJS 3.5.x e OMP 3.5.x | stable-3_5_0 (padrão) | 1.1.6.0 |
A partir da 1.1.3.0 o mesmo pacote serve OJS e OMP. O antigo orcidManualEntryOmp está arquivado; as releases dele continuam lá.
Vale também para o OJS 3.4.x, onde a mesma restrição do núcleo foi introduzida.
Desde o OJS 3.4/3.5 o antigo plugin ORCID foi incorporado ao núcleo e o campo ORCID do autor passou a ser somente-leitura: só pode ser preenchido via autenticação OAuth (o autor faz login no ORCID e autoriza a revista). Isso é proposital — um iD autenticado é verificado na origem, então você sabe que ele realmente pertence àquela pessoa. Um iD digitado manualmente não é verificado: pode conter erro de digitação, ser inventado ou ser de outra pessoa, e não recebe o status de "verificado" do ORCID.
Portanto, a recomendação é: habilitar o ORCID OAuth (veja o guia de ORCID da PKP). Use este plugin apenas enquanto realmente não for possível habilitar o OAuth e ainda assim for preciso registrar iDs. É uma alternativa pragmática, não um substituto da autenticação.
Instale em Configurações → Website → Plugins → Enviar um novo plugin, ou extraia a pasta em plugins/generic/ (ficando plugins/generic/orcidManualEntry/). Depois ative o ORCID manual (digitável) na lista de plugins Genéricos.
Configurações → Website → Plugins → ORCID manual (digitável) → Configurações. São quatro caixas, e o padrão mantém o plugin exatamente como era antes da 1.1.4.0:
| Opção | Padrão | O que faz |
|---|---|---|
| Exibir o campo ORCID na página pública de cadastro | ligada | Tira o campo daquela página sem mexer no perfil, que sempre o tem — senão ninguém conseguiria registrar o próprio iD. |
| Exigir no cadastro de novo usuário | desligada | A conta não é criada sem um iD válido. |
| Exigir no cadastro de autor ou coautor | desligada | O contribuidor não é salvo sem iD, no assistente e em Editar contribuidor. |
| Exigir de todos os autores para concluir a submissão | desligada | A submissão não pode ser concluída enquanto faltar o iD de algum contribuidor; a mensagem diz de quem, no painel de contribuidores da última etapa. |
| Gestores da revista e editores de seção ficam isentos | ligada | Esses dois papéis gravam um autor e concluem a submissão com o iD ainda faltando. O cadastro público não entra: quem se cadastra ainda não tem papel na revista. Estar isento nunca torna um iD inválido aceitável — apenas dispensa de ter um. |
Quem vem da 1.1.4.0: a isenção chega ligada. A revista que já exigia o iD e quer todo mundo preso à regra — editores inclusive — precisa desmarcar essa caixa.
O que também importa é a guarda: o plugin só age enquanto o ORCID OAuth estiver desligado no contexto — com o OAuth ligado essas opções não fazem nada e quem manda no campo é o núcleo.
O OrcidManager::isEnabled() lê o orcidEnabled da revista (ou do site) e não verifica se as credenciais prestam. Uma revista com o ORCID ligado e client id/secret de teste fica no limbo: campo que ninguém consegue preencher e plugin calado. Se o campo ORCID não aparecer, confira Configurações → Distribuição → ORCID antes de suspeitar de conflito entre plugins.
O cadastro em nível de site (o índice do portal, sem revista selecionada) está fora do escopo: o núcleo desliga o ORCID ali, e um plugin habilitado por contexto não é carregado nessa página.
PHPUnit em tests/ (sobre PKP\tests\PKPTestCase) e Cypress em cypress/tests/functional/ (rodado pelo pkp-github-actions a cada push), com os comandos da seção em inglês. O Cypress confere a tela de cadastro, o perfil (iD digitado só com os 16 dígitos gravado como URL canônica, dígito verificador errado recusado, iD apagado e o original devolvido) e os contribuidores de uma submissão em andamento pelos mesmos endpoints REST do formulário (iD gravado, o mesmo iD recusado para um segundo contribuidor mesmo como URL de sandbox, dígito errado recusado, iD removido), apagando os contribuidores que cria.
A obrigatoriedade entra pelo Submission::validateSubmit, a validação da última etapa do próprio núcleo — a mesma que o botão Enviar chama —, e a mensagem vai na chave contributors, a que o núcleo usa para os erros de autoria, para aparecer no painel de contribuidores e não só como aviso genérico. Desde a 1.1.4.0 a suíte também roda contra o banco da instalação (uma submissão com contribuidor sem iD, criada e apagada pelo teste) e, no navegador, prova que um cadastro completo sem o iD não cria conta e que a submissão é recusada pela própria requisição do botão Enviar.
Desde a 1.1.2.0 o campo do cadastro e do perfil entra por um filtro de saída do Smarty, sem substituir nenhum template do núcleo; a partir da 1.1.3.0 o filtro tem nome próprio, porque o Smarty chama todo filtro closure de "closure" e um apagava o de outro plugin (o campo do WhatsApp Contributor, por exemplo). Verificado no OJS 3.5.0.3 e no OMP 3.5.0.3 com o ORCID OAuth desligado: 37 testes de unidade e 12 de navegador em cada.
Os testes ficam no repositório e não fazem parte do pacote da release.
Foi usada IA generativa (Claude Opus 5, da Anthropic) para escrever e rodar testes, melhorar o código e alinhá-lo aos padrões da PKP. Toda mudança é revisada e testada pela OJSBR, que responde pelas releases publicadas.
Distribuído sob a GNU GPL v3. Veja LICENSE e docs/COPYING.
| Back | FazBrowse Home | New Git URL |