From 87d99c57e59930009eb00cac0c2403c6eb0ec100 Mon Sep 17 00:00:00 2001 From: Alberto Sanchez Gonzalez Date: Wed, 26 Apr 2023 12:27:34 +0200 Subject: [PATCH 1/7] feat: add brazilian portuguese language --- locales/pt-BR/messages.po | 92 +++++++++++++++++++++++++++++++++ locales/pt-BR/messages_po.js | 1 + locales/pt-BR/taosubject.rdf.po | 39 ++++++++++++++ 3 files changed, 132 insertions(+) create mode 100644 locales/pt-BR/messages.po create mode 100644 locales/pt-BR/messages_po.js create mode 100644 locales/pt-BR/taosubject.rdf.po diff --git a/locales/pt-BR/messages.po b/locales/pt-BR/messages.po new file mode 100644 index 0000000..f2599ed --- /dev/null +++ b/locales/pt-BR/messages.po @@ -0,0 +1,92 @@ +msgid "" +msgstr "" +"Project-Id-Version: tao-3x\n" +"PO-Revision-Date: 2023-04-21 15:46\n" +"Last-Translator: TAO Translation Team \n" +"MIME-Version: 1.0\n" +"Language: pt\n" +"sourceLanguage: en-US\n" +"targetLanguage: en-US\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Poedit-Basepath: ../../\n" +"X-Poedit-KeywordsList: __\n" +"X-Poedit-SearchPath-0: .\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tao-3x\n" +"X-Crowdin-Project-ID: 582145\n" +"X-Crowdin-Language: pt-BR\n" +"X-Crowdin-File: /taoTestTaker/locales/en-US/messages.po\n" +"X-Crowdin-File-ID: 1713\n" +"Language-Team: Portuguese, Brazilian\n" + +#, tao-public +msgid "Delete" +msgstr "Remover" + +msgid "Edit subject" +msgstr "Editar assunto" + +#, tao-public +msgid "Export" +msgstr "Exportar" + +#, tao-public +msgid "Import" +msgstr "Importar" + +msgid "Last updated on %2s" +msgstr "Última atualização em %2s" + +#, tao-public +msgid "Manage Schema" +msgstr "Gerenciar esquema" + +#, tao-public +msgid "Manage test takers" +msgstr "Gerenciar candidatos" + +#, tao-public +msgid "Move" +msgstr "Mover" + +#, tao-public +msgid "Move To" +msgstr "Mover para" + +#, tao-public +msgid "New class" +msgstr "Nova pasta" + +#, tao-public +msgid "New test-taker" +msgstr "Novo candidato" + +#, tao-public +msgid "Properties" +msgstr "Propriedades" + +#, tao-public +msgid "Record and manage test takers." +msgstr "Registre e gerencie os candidatos." + +msgid "Test taker saved" +msgstr "Candidato salvo" + +msgid "Test takers" +msgstr "Candidatos" + +#, tao-public +msgid "Test takers library" +msgstr "Biblioteca de candidatos" + +msgid "Test takers may be assigned to sets according to the relevant assessment context (Human resources management, education, edumetric monitoring, etc.)." +msgstr "Candidatos podem ser atribuídos a organismos de realização de testes conforme o contexto de avaliação relevante (gestão de recursos humanos, educação, monitoramento edumétrico, etc.)." + +#, tao-public +msgid "Test-takers" +msgstr "Candidatos" + +msgid "The Test takers module allows to record and manage test takers." +msgstr "O módulo de candidatos permite registrar e gerenciar os candidatos." + diff --git a/locales/pt-BR/messages_po.js b/locales/pt-BR/messages_po.js new file mode 100644 index 0000000..8afd8d7 --- /dev/null +++ b/locales/pt-BR/messages_po.js @@ -0,0 +1 @@ +{" AND ":" E "," and ":" e "," has been deleted successfully":" foi removido com sucesso"," is ":" \u00e9 "," next":" pr\u00f3ximo"," Remove criteria":" Remover crit\u00e9rios"," requires a subgrid adapter":" requer um adaptador de subgrid","%1$s expected but %2$s detected":"%1$s esperado, mas %2$s detectado","%d attempts left before your account is locked.":"%d tentativas restantes antes de sua conta ser bloqueada.","%d day":"%d dia","%d days":"%d dias","%h hour":"%h hora","%h hours":"%h% hora(s)","%i minute":"%i minuto","%i minutes":"%i minutos","%m month":"%m m\u00eas","%m months":"%m meses","%s %s selected":"%s de %s selecionados","%s (%s kb)":"%s (%s kb)","%s Class saved":"Classe %s salva","%s classes":"%s classes","%s Confirmation":"%s Confirma\u00e7\u00e3o","%s could not be released":"%s n\u00e3o p\u00f4de ser lan\u00e7ado","%s created":"%s criado","%s extension(s) to install.":"%s extens\u00e3o(\u00f5es) a instalar.","%s has been deleted":"%s foi exclu\u00eddo","%s has been released":"%s foi publicado","%s instances":"%s inst\u00e2ncia","%s is of a type that cannot be published":"%s \u00e9 de um tipo que n\u00e3o pode ser publicado","%s Locked":"%s Bloqueado","%s\u0022 is not a valid index identifier. It must start with a letter and contain letters, numbers or underscores only":"%s\u0022 n\u00e3o \u00e9 um identificador de \u00edndice v\u00e1lido. Deve come\u00e7ar com uma letra e conter apenas letras, n\u00fameros ou sublinhados","%y year":"%y ano","%y years":"%y anos","(empty)":"(vazio)","... reloading page.":"... atualizando a p\u00e1gina.","7-zip archive":"arquivo 7-zip","Filters<\/del>":"Filtros<\/del>","Options<\/del>":"Op\u00e7\u00f5es<\/del>"," %s <\/strong> has been moved to the background.":" %s <\/strong> foi movido para o plano de fundo.","> Extension %s succesfully installed.":"> Extens\u00e3o %s instalada com sucesso.","> Installation done.":"> Instala\u00e7\u00e3o conclu\u00edda.","a class":"uma classe","A date has to be a Datetime or timestamp":"Uma data deve ser uma do tipo datetime ou timestamp","A fatal error occured during the installation process.":"Ocorreu um erro fatal durante o processo de instala\u00e7\u00e3o.","A maintenance status must have a STATUS: \u0022%s\u0022 or \u0022%s":"Um status de manuten\u00e7\u00e3o deve ter um STATUS: \u0022%s\u0022 ou \u0022%s","A message with further instructions has been sent to your email address: %s":"Uma mensagem com mais instru\u00e7\u00f5es foi enviada para o seu endere\u00e7o de e-mail: %s","AAC audio":"\u00c1udio AAC","About":"Sobre","abs":"abs","Absolute value":"Valor absoluto","AC":"AC","Access Denied":"Acesso Negado","Access denied. Please renew your authentication!":"Acesso negado. Por favor, renove sua autentica\u00e7\u00e3o!","Account status":"Status da conta","Action":"A\u00e7\u00e3o","Action %s - removed %s positions":"A\u00e7\u00e3o %s - removeu %s posi\u00e7\u00f5es","Action `%s` is not configured in the action queue service":"A a\u00e7\u00e3o `%s` n\u00e3o est\u00e1 configurada na fila de tarefas","Action was not executed yet":"A a\u00e7\u00e3o ainda n\u00e3o foi executada","Actions":"A\u00e7\u00f5es","Add":"Adicionar","Add \/ Edit lists":"Adicionar \/ Editar listas","Add a CSV file":"Adicionar arquivo CSV","Add a user":"Adicionar usu\u00e1rio","Add an RDF\/XML file":"Adicionar um arquivo RDF\/XML","Add Consumer":"Adicionar Consumidor","add criteria":"adicionar crit\u00e9rios","Add file(s)":"Adicionar arquivo(s)","Add property":"Adicionar propriedade","Add Provider":"Adicionar provedor","Adding search index for %s":"Adicionando \u00edndice de pesquisa para %s","Adding search index for created resource":"Adicionando \u00edndice de pesquisa para o recurso criado","Adding the new class has failed":"Falha ao adicionar nova classe","Adding the new resource has failed":"Falha ao adicionar o novo recurso","Adding\/updating search index for updated resource":"Adicionando\/atualizando \u00edndice de pesquisa do recurso","Adobe Flash file":"Arquivo Adobe Flash","Advanced search, add filters":"Pesquisa avan\u00e7ada, adicionar filtros","aliases:":"alias:","all":"todos","all audios":"todos os \u00e1udios","All data will be removed in %s":"Todos os dados ser\u00e3o removidos em %s","All fields are required":"Todos os campos s\u00e3o obrigat\u00f3rios","all images":"todas as imagens","All rights reserved.":"Todos os direitos reservados.","all videos":"todos os v\u00eddeos","Allow for all domains":"Permitir para todos os dom\u00ednios","Allow for the following domains":"Permitir para os seguintes dom\u00ednios","Allow to generate publishable versions of deliveries ":"Permitir a gera\u00e7\u00e3o de vers\u00f5es public\u00e1veis de entregas ","Alpha version":"Vers\u00e3o alfa","An email has been sent":"Um e-mail foi enviado","An error occurred during user deletion":"Ocorreu um erro durante a exclus\u00e3o do usu\u00e1rio","An error occurred!":"Ocorreu um erro!","An exception occured while running \u0022%s":"Ocorreu uma exce\u00e7\u00e3o ao executar \u0022%s","an instance":"uma inst\u00e2ncia","Ans":"Ans","Apply":"Aplicar","Apply date range":"Aplicar intervalo de datas","Arc cosine":"Cosseno de arco","Arc sine":"Seno de arco","Arc tangent":"Arco tangente","Archived":"Arquivado","Are you sure to delete the versioned resource?\nThe history will be lost as well.":"Tem certeza que deseja excluir o recurso versionado?\nO hist\u00f3rico tamb\u00e9m ser\u00e1 perdido.","Are you sure you want to delete it?":"Tem a certeza que deseja remover?","Argument check failed: %s":"Falha ao verificar argumento: %s","Arguments %s and %s are mutually exclusive":"Argumentos %s e %s s\u00e3o mutuamente exclusivos","Arguments separator":"Separador de argumentos","array":"array","Assessment Activity":"Atividade da Avalia\u00e7\u00e3o","Assets":"M\u00eddias","Assign":"Atribuir","Assign User to role":"Atribuir fun\u00e7\u00e3o ao usu\u00e1rio","Assign Users":"Atribuir Usu\u00e1rios","Audio Video Interleave":"Intercala\u00e7\u00e3o de \u00e1udio e v\u00eddeo","Author":"Autor","Author Item":"Criar Item","Authoring":"Autoria","auto unlocked in %s":"auto desbloqueado em %s","Available":"Dispon\u00edvel","Available Extensions":"Extens\u00f5es dispon\u00edveis","Back":"Voltar","Back to listing":"Voltar \u00e0 lista","Base-10 logarithm":"Logaritmo na base 10","Beta version":"Vers\u00e3o Beta","Binary operator *":"Operador bin\u00e1rio *","Binary operator +":"Operador bin\u00e1rio +","Binary operator -":"Operador bin\u00e1rio -","Binary operator \/":"Operador bin\u00e1rio \/","Binary operator modulo":"M\u00f3dulo do operador bin\u00e1rio","Bitmap image":"Imagem bitmap","Blueprint":"Planta","Blueprints":"Diagramas","Blueprints library":"Biblioteca de Diagramas","Booklet":"Livraria","Booklets":"Livros","Booklets library":"Biblioteca de Favoritos","boolean":"booleano","Browse folders:":"Navegar em pastas:","Browse...":"Navegar...","C":"C","C file":"Arquivo C","C++ file (.cpp)":"Arquivo C++ (.cpp)","Calc speadsheet (Staroffice)":"Planilha Calc (Staroffice)","Calculator":"Calculadora","Calendar":"Calend\u00e1rio","Cancel":"Cancelar","cancel":"cancelar","cancel the action":"cancelar a\u00e7\u00e3o","Cancelled":"Cancelado","Cannot be edited":"N\u00e3o pode ser editado","Cannot divide by zero":"N\u00e3o \u00e9 poss\u00edvel dividir por 0","Cascading Style Sheets":"Folhas de estilo em cascata","Case sensitive":"Distin\u00e7\u00e3o entre mai\u00fasculas e min\u00fasculas","ceil":"teto","Change password":"Alterar senha","Change the password":"Alterar senha","Change the sign of the current operand":"Alterar o sinal do operador atual","Check all":"Marcar todas","Check All":"Marcar todas","Check-in":"Check-in","choices:":"op\u00e7\u00f5es:","Choose a value...":"Escolha um valor...","Choose export format":"Escolher formato de exporta\u00e7\u00e3o","Choose import format":"Escolha formato da importa\u00e7\u00e3o","class selected":"classe selecionada","Class uri provided is not a valid class.":"A classe uri fornecida n\u00e3o \u00e9 uma classe v\u00e1lida.","Cleaning up tmp space complete":"Limpeza de espa\u00e7o tmp completa","Cleaning up tmp space started":"Limpeza espa\u00e7o tmp iniciado","Clear":"Apagar","Clear All":"Apagar tudo","Clear all data":"Apagar todos os dados","Clear expression":"Apagar express\u00e3o","Clear History":"Limpar Hist\u00f3rico","Clear history":"Limpar hist\u00f3rico","Clear selection":"Apagar sele\u00e7\u00e3o","Clear the date time picker":"Limpar o seletor de data e hora","Clear the stored variables":"Limpar as vari\u00e1veis armazenadas","Click to reload.":"Clique para recarregar.","Close":"Fechar","Close dialog":"Fechar di\u00e1logo","Close message":"Fechar mensagem","Code Version":"Vers\u00e3o do C\u00f3digo","Collecting of abandoned actions in the action queue ...":"Coletando a\u00e7\u00f5es abandonadas na fila de tarefas ...","Column":"Coluna","Combine a selection of items into tests.":"Combinar uma sele\u00e7\u00e3o de itens em testes.","command":"comando","Commands:":"Comandos:","comment...":"coment\u00e1rio...","Commit":"Aplicar","Completed":"Conclu\u00eddo","Completed - Error":"Conclu\u00eddo - Erro","Compressed tar file":"Arquivo tar comprimido","Compute the expression":"Calcular a express\u00e3o","Confirm":"Confirmar","Connect to the TAO platform":"Conectar-se \u00e0 plataforma de TAO","Continue":"Continuar","Copy":"Copiar","Copy to":"Copiar para","Copy To":"Copiar em","Copy to clipboard":"Copiar para \u00e1rea de transfer\u00eancia","cos":"cos","cosh":"cosh","Cosine":"Cosseno","count":"contar","Create":"Criar","Create and design items and exercises.":"Criar e projetar itens e exerc\u00edcios.","Create instance of ":"Criar inst\u00e2ncia de ","Created":"Criado","Creating report ...":"Criando o relat\u00f3rio...","CSP Header settings were saved successfully!":"Configura\u00e7\u00f5es de cabe\u00e7alho CSP foram salvas com sucesso!","CSV":"CSV","CSV file":"Arquivo CSV","CSV Options":"Op\u00e7\u00f5es CSV","Cube root":"Raiz C\u00fabica","Current language":"Idioma atual","Current playback position":"Posi\u00e7\u00e3o atual da reprodu\u00e7\u00e3o","Data imported":"Dados importados","Data imported successfully":"Importado com sucesso","Data imported. Some records are invalid.":"Dados importados. Alguns registros s\u00e3o inv\u00e1lidos.","Data Language":"Idioma dos dados","Data language":"Idioma dos dados","Data not imported. All records are invalid.":"Os dados n\u00e3o importados. Todos os registros s\u00e3o inv\u00e1lidos.","Data source URI":"URI fonte de dados","Database file":"Arquivo de banco de dados","Date":"Data","date range":"per\u00edodo","date time":"data\/hora","date time range":"intervalo de tempo","Default search":"Pesquisa padr\u00e3o","default:":"padr\u00e3o:","Define the default values":"Definir valores padr\u00e3o","Deg":"Deg","Degree":"Grau","Delete":"Remover","Delete Left":"Excluir Esquerda","Delete Right":"Excluir Direita","Delete the term on the left side of the cursor":"Excluir o termo no lado esquerdo do cursor","Delete the term on the right side of the cursor":"Excluir o termo no lado direito do cursor","Deleting search index for %s":"Excluindo \u00edndice de pesquisa para %s","Deliveries":"Entregas","Deliveries library":"Biblioteca de entregas","Demo Sandbox":"Demo Sandbox","Did you mean %s?":"Voc\u00ea quis dizer %s?","Digit 0":"D\u00edgito 0","Digit 1":"D\u00edgito 1","Digit 2":"D\u00edgito 2","Digit 3":"D\u00edgito 3","Digit 4":"D\u00edgito 4","Digit 5":"D\u00edgito 5","Digit 6":"D\u00edgito 6","Digit 7":"D\u00edgito 7","Digit 8":"D\u00edgito 8","Digit 9":"D\u00edgito 9","Disabled %s":"Desativado %s","Do you wish to install the following extension(s):\n%s?":"Voc\u00ea deseja instalar a(s) seguinte(s) extens\u00e3o(s):\n%s?","Document templates (Staroffice)":"Modelos de documentos (Staroffice)","does not match":"n\u00e3o confere","Don\u0027t set":"N\u00e3o definir","Dot":"Ponto","Download":"Download","Download this file":"Download do arquivo","Drag file here":"Arraste o arquivo aqui","Drag files here":"Arraste os arquivos aqui","Drop the files to upload":"Solte o arquivo aqui para fazer o upload","Duplicate":"Duplicar","Edit":"Editar","Edit a user":"Editar usu\u00e1rio","Edit class %s":"Editar classe %s","Edit Instance":"Editar inst\u00e2ncia","Edit subject":"Editar assunto","Edit Tree":"Editar \u00e1rvore","Element":"Elemento","Element deleted.":"Elemento exclu\u00eddo.","Email":"Email","enabled":"habilitado","Enabled %s":"Habilitado %s","End of document reached. Continuing from the beginning.":"Fim do documento alcan\u00e7ado. Continuando desde o in\u00edcio.","Enhanced metafile":"Metarquivo aprimorado","Enter":"Entrar","Error":"Erro","Error adding search index for %s with message %s":"Erro ao adicionar \u00edndice de pesquisa para %s com mensagem %s","Error during file import":"Erro durante importa\u00e7\u00e3o do arquivo","Error in result":"Erro no resultado","Error in syntax":"Erro na sintaxe","Error in value":"Erro no valor","Error: %s":"Erro: %s","Event Log":"Registro de Eventos","Examples:":"Exemplos:","Exclusive (OR)":"Exclusivo (OU)","Execute":"Executar","Executing task %s failed":"Falha ao executar tarefa %s","exp":"exp","Exponent":"Expoente","Export":"Exportar","Export ":"Exportar ","Export \u0022%s\u0022 in %s":"Exportar \u0022%s\u0022 em %s","Export CSV":"Exportar como CSV","Export failed.":"Falha ao exportar.","Export Irregularities":"Inregularidades de exporta\u00e7\u00e3o","Export Metadata as RDF\/XML file":"Exportar metadados como arquivo RDF\/XML","Export succeeded.":"Exportado com sucesso.","Export Table":"Exportar tabela","Extension \u0022%s\u0022 has been installed":"Extens\u00e3o \u0022%s\u0022 foi instalada","Extensions manager":"Gerenciador de extens\u00f5es","Factorial":"Fatorial","Failed":"Falhou","Failed to delete index for %s":"Falha ao excluir arquivo %s","False":"Falso","Field delimiter":"Delimitador de campo","Field encloser":"Encerrador de campo","Fields must match":"Os campos devem coincidir","File":"Arquivo","File download failed":"O download do arquivo falhou","File name":"Nome do Arquivo","File Properties":"Propriedades do arquivo","file selected":"arquivo selecionado","File Uploader":"Carregador de Arquivos","files selected":"arquivo selecionado","Filter":"filtro","Filter by value":"Filtro por valor","Filtering mode":"Modo de filtragem","First Name":"Primeiro Nome","First page":"Primeira p\u00e1gina","First row column names":"Nome das colunas da primeira linha","Fit to width":"Ajustar \u00e0 largura","Flash video":"V\u00eddeo Flash","floor":"piso","Flowchart-based programming environment & TI Interactive Workbook":"Ambiente de programa\u00e7\u00e3o baseado em fluxograma e TI Interactive Workbook","Forbid for all domains":"Proibir todos os dom\u00ednios","Force HTTPS on this platform":"For\u00e7ar HTTPS nesta plataforma","Force Release":"For\u00e7ar Lan\u00e7amento","Forgot your password?":"Esqueceu sua senha?","Form":"Formul\u00e1rio","Form data not saved.":"Dados do formul\u00e1rio n\u00e3o salvos.","From":"De","Fuzzy Matching":"Fuzzy Matching","generated-value":"valores gerados","Generis Form":"Generis Form","Geogebra data file":"Arquivo de dados Geogebra","Get History":"Obter Hist\u00f3rico","Get the history list":"Obter a lista de hist\u00f3rico","GIF image":"Imagem GIF","Go Back":"Voltar","go back to home page":"retornar a p\u00e1gina inicial","Group test takers according to global features and classifications.":"takers de teste do grupo de acordo com recursos e classifica\u00e7\u00f5es globais.","Groups":"grupos","Groups library":"Biblioteca de grupos","GZip Compressed Archive":"Arquivo Comprimido GZip","Header file with extensionsLabels":"Arquivo de cabe\u00e7alho com extensLabels","Height":"Altura","Help":"Socorro","Hi, %s
You indicated that you have forgotten your TAO password.":"Ol\u00e1, %s
Voc\u00ea indicou que esqueceu a sua senha de TAO.","Hide detailed report":"Ocultar relat\u00f3rio detalhado","Hide password":"Ocultar senha","Highlight all":"Destaque todos","History":"Hist\u00f3rico","hours":"horas","Hyperbolic arc cosine":"Arco cosseno hiperb\u00f3lico","Hyperbolic arc sine":"Arco seno hiperb\u00f3lico","Hyperbolic arc tangent":"Arco tangente hiperb\u00f3lico","Hyperbolic cosine":"Cosseno hiperb\u00f3lico","Hyperbolic sine":"Seno hiperb\u00f3lico","Hyperbolic tangent":"Tangente hiperb\u00f3lica","Hypertext markup language":"Linguagem de marca\u00e7\u00e3o de hipertexto","I understand that this action is permanent.":"Eu entendo que esta a\u00e7\u00e3o n\u00e3o poder\u00e1 ser desfeita.","Identifier":"Identificador","If you do not wish to reset your password, just ignore this email and your password will remain the same.":"Se voc\u00ea n\u00e3o fez esta solicita\u00e7\u00e3o, voc\u00ea pode ignorar este e-mail e sua senha permanecer\u00e1 a mesma.","Implications failed:":"Implica\u00e7\u00f5es falharam:","Import":"Importar","Import ":"Importar ","Import a %s into \u0022%s":"Importar um %s para \u0022%s","Import Completed":"Importa\u00e7\u00e3o Completa","Import failed.":"A importa\u00e7\u00e3o falhou.","Import Metadata from CSV file":"Importar metadados de um arquivo CSV","Import Metadata from RDF file":"Importar Metadados de arquivo RDF","Import succeeded.":"Importa\u00e7\u00e3o bem sucedida.","Imported %1$d\/%2$d. Some records are invalid.":"Importado %1$d\/%2$d. Alguns registros s\u00e3o inv\u00e1lidos.","Imported %d resources":"%d recursos importados","Imported resource \u0022%s":"Recurso importado \u0022%s","impossible to update task status":"imposs\u00edvel atualizar o status da tarefa","In Progress":"Em Progresso","In progress":"Em progresso","Inclusive (AND)":"Inclusivo (E)","Index":"Indexa\u00e7\u00e3o","Index has been deleted for %s":"O \u00edndice foi exclu\u00eddo para %s","Infinity":"Infinito","Injector has to contains a valid \u0022destination\u0022 field.":"Injetor deve conter um campo \u0022destino\u0022 v\u00e1lido.","Injector has to contains a valid \u0022source\u0022 field.":"Injetor deve conter um campo \u0022fonte\u0022 v\u00e1lido.","Inline":"Alinhado","Install":"Instalar","Installation done.":"Instala\u00e7\u00e3o conclu\u00edda.","Installation...":"Instala\u00e7\u00e3o...","Installed Extensions":"Extens\u00f5es Instaladas","Installed Version":"Vers\u00e3o Instalada","Installing extension %s...":"Instalando extens\u00f5es %s...","Instance saved":"Inst\u00e2ncia salva","Interface Language":"Linguagem da Interface","Interface language":"Linguagem da interface","Invalid CSP header.":"Cabe\u00e7alho CSP inv\u00e1lido.","Invalid date range (must be after or the same as: %s)":"Intervalo de data inv\u00e1lido (deve ser depois ou o mesmo de: %s)","Invalid date range (must be after: %s)":"Intervalo de data inv\u00e1lido (deve ser ap\u00f3s: %s)","Invalid date range (must be before or the same as: %s)":"Intervalo de data inv\u00e1lido (deve ser depois ou o mesmo de: %s)","Invalid date range (must be before: %s)":"Intervalo de data inv\u00e1lido (deve ser ap\u00f3s: %s)","Invalid field length":"Tamanho do campo inv\u00e1lido","Invalid field range (maximum value: %s)":"Intervalo de campo inv\u00e1lido (valor m\u00e1ximo: %s)","Invalid field range (minimum value: %1$s, maximum value: %2$s)":"Intervalo de campo inv\u00e1lido (valor m\u00ednimo: %1$s, valor m\u00e1ximo: %2$s)","Invalid field range (minimum value: %s)":"Intervalo de campo inv\u00e1lido (valor m\u00ednimo: %s)","Invalid file size (minimum %1$s bytes, maximum %2$s bytes)":"Tamanho do arquivo inv\u00e1lido (m\u00ednimo de %1$s bytes, m\u00e1ximo de %2$s bytes)","Invalid file type!":"Tipo de arquivo inv\u00e1lido!","Invalid input":"Entrada inv\u00e1lida","Invalid input for function":"Entrada inv\u00e1lida para a fun\u00e7\u00e3o","Invalid JSON config file: %s":"Arquivo JSON de configura\u00e7\u00e3o inv\u00e1lido: %s","Invalid login or password. Please try again.":"Login ou senha inv\u00e1lidos. Por favor tente novamente.","Invalid login or password. Your account has been locked, please contact your administrator.":"Login ou senha inv\u00e1lidos. Sua conta foi bloqueada, por favor, entre em contato com o administrador.","invalid regular expression":"express\u00e3o regular inv\u00e1lida","Invalid values:":"Valor inv\u00e1lido:","Items":"Itens","Items library":"Biblioteca de itens","items per page":"itens por p\u00e1gina","Javascript code":"C\u00f3digo javascript","JPEG image":"imagem JPEG","Label":"T\u00edtulo","Label Path":"Endere\u00e7o do T\u00edtulo","Language":"Idioma","Last attempt before your account is locked.":"\u00daltima tentativa antes de sua conta ser bloqueada.","Last Name":"Sobrenome","Last page":"\u00daltima p\u00e1gina","Last result":"\u00daltimo resultado","Last updated on %2s":"\u00daltima atualiza\u00e7\u00e3o em %2s","Layout":"Layout","Left parenthesis":"Par\u00eantese esquerdo","less than a minute":"menos de um minuto","List":"Lista","List - Multiple choice - Check box":"Lista - M\u00faltipla escolha - Caixa de sele\u00e7\u00e3o","List - Multiple choice - Search input":"Lista - M\u00faltipla escolha - Entrada de pesquisa","List - Single choice - Drop down":"Lista - Simples - Drop down","List - Single choice - Radio button":"Lista - Simples - Radio button","List - Single choice - Search input":"Lista - Simples - Pesquisa","List item URI duplications found":"Duplica\u00e7\u00f5es de item de lista URI encontradas","List values":"Listar valores","Lists":"Listas","Load more":"Carregar mais","Loaded":"Carregado","Loaded at Startup":"Carregado na Inicializa\u00e7\u00e3o","Loading":"Carregando","Loading status":"Carregando status","Loading task status ...":"Carregando status da tarefa...","locked by %s":"bloqueado por %s","Log in":"Entrar","Log Out":"Sair","Login":"Entrar","Login available":"Acesso dispon\u00edvel","Login is already in use.":"Login j\u00e1 est\u00e1 em uso.","Login is empty.":"Login est\u00e1 vazio.","Logout":"Sair","LTI":"LTI","LTI Consumers":"Consumidores LTI","LTI Providers":"Provedores LTI","M4A audio":"\u00e1udio M4A","Main Menu":"Menu Principal","Maintenance service is already installed.":"O servi\u00e7o de manuten\u00e7\u00e3o j\u00e1 est\u00e1 instalado.","Maintenance service must have a persistence option.":"O servi\u00e7o de manuten\u00e7\u00e3o deve ter uma op\u00e7\u00e3o de persist\u00eancia.","Maintenance service was installed. Platform is disabled.":"O servi\u00e7o de manuten\u00e7\u00e3o foi instalado. A plataforma est\u00e1 desativada.","Maintenance service was installed. Platform is enabled.":"O servi\u00e7o de manuten\u00e7\u00e3o foi instalado. Plataforma habilitada.","Maintenance storage driver is not set":"O driver de armazenamento de manuten\u00e7\u00e3o n\u00e3o est\u00e1 definido","Manage Access Rights":"Gerenciar Permiss\u00f5es de Acesso","Manage Assets":"Gerenciar Ativos","Manage class schema":"Gerenciar esquema de classe","Manage data list":"Gerenciar lista de dados","Manage groups":"Gerenciar grupos","Manage items":"Gerenciar itens","Manage Media":"Gerenciar m\u00eddia","Manage Results":"Gerenciar Resultados","Manage roles":"Gerenciar fun\u00e7\u00f5es","Manage Roles and apply them to users.":"Gerenciar Fun\u00e7\u00f5es e aplic\u00e1-las aos usu\u00e1rios.","Manage Schema":"Gerenciar esquema","Manage Test Center":"Gerenciar Centro de Testes","Manage test takers":"Gerenciar candidatos","Manage tests":"Gerenciar testes","Manage users":"Gerenciar usu\u00e1rios","Manage Versioned File":"Gerenciar arquivo versionado","Map the properties to the CSV columns":"Mapear as propriedades das colunas CSV","Maximum selection reached":"Foi atingido o limite de sele\u00e7\u00f5es","Media":"M\u00eddia","Media Manager":"Gerenciador de M\u00eddia","Media Manager extension":"Extens\u00e3o do Media Manager","Media resize along with their container, e.g. 50% means half of the container size not half of the media size.":"Redimensionar a m\u00eddia junto com seu cont\u00eainer, por exemplo, 50% significa metade do tamanho do cont\u00eainer n\u00e3o metade do tamanho da m\u00eddia.","Message":"Mensagem","Messages":"Mensagens","Metadata export is not available for the selected resource.":"Exporta\u00e7\u00e3o de metadados n\u00e3o est\u00e1 dispon\u00edvel para o recurso selecionado.","Microsoft Excel":"Microsoft Excel","Microsoft Excel binary format":"Formato bin\u00e1rio do Microsoft Excel","Microsoft Office Document Imaging":"Imagens de documentos do Microsoft Office","Microsoft Powerpoint":"Microsoft PowerPoint","Microsoft Powerpoint slideshow":"Slideshow do Microsoft Powerpoint","Microsoft Project file":"Arquivo do Microsoft Project","Microsoft Visio file":"Arquivo do Microsoft Visio","Microsoft Word":"Microsoft Word","Microsoft Word template":"Modelo do Microsoft Word","Microsoft Works file":"Arquivo Microsoft Works","Microsoft XPS file":"Arquivo Microsoft XPS","MIME encapsulation of aggregate HTML documents":"Encapsulamento MIME de documentos HTML agregados","Mind mapping software application (free mind open source)":"Aplicativo de software de mapeamento mental (c\u00f3digo aberto livre)","minutes":"minutos","missing config %s for the service %s":"falta a configura\u00e7\u00e3o %s para o servi\u00e7o %s","Missing Parameters":"Par\u00e2metros ausentes","modulo":"m\u00f3dulo","More":"Mais","Move":"Mover","Move Left":"Mover \u00e0 esquerda","Move Right":"Mover \u00e0 direita","Move role":"Mover fun\u00e7\u00e3o","Move the cursor one step on the left":"Mova o cursor um passo \u00e0 esquerda","Move the cursor one step on the right":"Mova o cursor um passo \u00e0 direita","Move to":"Mover para","Move To":"Mover para","Moving this element will replace the properties of the previous class by those of the destination class :":"Mover este elemento ir\u00e1 substituir as propriedades da classe anterior por aquelas da classe de destino :","MP4 video":"V\u00eddeo MP4","MPEG audio":"\u00c1udio MPEG","MPEG video":"V\u00eddeo do MPEG","MPEG-4 audio file":"Arquivos de \u00e1udio MPEG-4","Multiple values delimiter":"Separador de valores m\u00faltiplos","Multiply the value by 10^x":"Multiplique o valor por 10^x","Mute":"Mudo","My custom text translation":"Tradu\u00e7\u00e3o de texto personalizada","My settings":"Minhas configura\u00e7\u00f5es","My settings (%s)":"Minhas configura\u00e7\u00f5es (%s)","Name":"Nome","Natural logarithm":"Logaritmo natural","New blueprint":"Novo diagrama","New booklet":"Novo booklet","New class":"Nova pasta","New delivery":"Nova entrega","New Group":"Novo Grupo","New item":"Novo item","New passage":"Nova passagem","New password":"Nova senha","New role":"Nova fun\u00e7\u00e3o","New test":"Novo teste","New Test Center":"Novo Centro de Testes","New test-taker":"Novo candidato","Next":"Pr\u00f3ximo","Next match":"Pr\u00f3xima Correspond\u00eancia","Next page":"Pr\u00f3xima p\u00e1gina","No":"N\u00e3o","No action specified":"Nenhuma a\u00e7\u00e3o especificada","No client translation bundles updated":"Nenhum pacote de tradu\u00e7\u00e3o de cliente atualizado","No extensions available.":"Nenhuma extens\u00e3o dispon\u00edvel.","no file not found in this location":"nenhum arquivo encontrado neste local","No file selected":"Nenhum arquivo selecionado","No files":"Nenhum arquivo","No item found. Please try other search criteria.":"Nenhum item encontrado. Verifique os crit\u00e9rios de pesquisa.","no label":"sem r\u00f3tulos","No Task yet":"N\u00e3o h\u00e1 tarefas ainda","Node duplication has failed":"Falha ao duplicar n\u00f3","Not enough arguments following: %s":"Argumentos insuficientes: %s","Not enough non-option arguments: got %s, need at least %s":"Argumentos n\u00e3o opcionais insuficientes: obteve %s, precisa de pelo menos %s","Not started":"N\u00e3o iniciado","Nothing imported":"Nada foi importado","Nothing to install !":"Nada para instalar!","Nothing to list!":"Nada para exibir!","Notifications":"Notifica\u00e7\u00f5es","notifications drivers aren\\\\\u0027t persistent. use a persistent database storage driver":"notifica\u00e7\u00f5es drivers n\u00e3o s\u00e3o salvos. use um driver de armazenamento","Nth root":"Raiz en\u00e9sima","number":"n\u00famero","Number of elements":"N\u00famero de elementos","of":"de","Off":"Desligado","Ogg Vorbis audio":"\u00c1udio Ogg Vorbis","Ogg Vorbis video":"V\u00eddeo Ogg Vorbis","OK":"OK","Ok":"Ok","Old Password":"Senha Antiga","On":"Ligado","Only allow for my own domain (%s)":"Permitir apenas meu dom\u00ednio (%s)","Only one of the field must have value %s":"Apenas um dos campos deve ter o valor %s","OpenDocument Database":"Banco de dados OpenDocument","OpenDocument Presentation":"Apresenta\u00e7\u00e3o OpenDocument","OpenDocument spreadsheet document":"Documento de planilha OpenDocument","OpenDocument text document":"Documento de texto OpenDocument","OpenDocument Text Template":"Modelo de Texto OpenDocument","Operated By ":"Operado por ","or":"ou","Outlook on the next Synchronization":"Outlook na pr\u00f3xima Sincroniza\u00e7\u00e3o","Page":"P\u00e1gina","Pascal file (.pas)":"Arquivo Pascal (.pas)","Password":"Senha","Password changed":"Senha Alterada","Password is empty.":"A senha est\u00e1 vazia.","Password reset":"Recuperar senha","Password successfully changed":"Senha alterada com sucesso","Passwords are not matching":"As senhas n\u00e3o coincidem","Pause":"Pausar","PDF file":"Arquivo PDF","Permission denied to write in the selected class":"Permiss\u00e3o negada para escrever na classe selecionada","Plain text":"Texto sem formata\u00e7\u00e3o","Platform Theming":"Tema da plataforma","Play":"Executar","Please confirm deletion":"Confirme a exclus\u00e3o","Please confirm deletion of %s.":"Por favor, confirme a exclus\u00e3o de %s.","Please confirm deletion of user %s":"Por favor, confirme a exclus\u00e3o do usu\u00e1rio %s","Please confirm locking of account %s":"Por favor confirme o bloqueio da conta %s","Please confirm property deletion!":"Por favor confirme a exclus\u00e3o da propriedade!","Please confirm this operation.":"Por favor confirme esta opera\u00e7\u00e3o.","Please confirm unlocking of account %s":"Por favor, confirme o desbloqueio da conta %s","Please contact %s or an administrator to release it":"Por favor contate %s ou um administrador para liber\u00e1-lo","Please contact your administrator.":"Por favor, contate o administrador.","Please contact your system administrator.":"Por favor, contate o administrador do sistema.","Please define your search in the search panel.":"Por favor, defina sua pesquisa no painel de pesquisa.","Please download the track and listen offline.":"Por favor, baixe a faixa e ou\u00e7a offline.","Please download the video and view offline.":"Por favor, baixe o v\u00eddeo e veja offline.","Please give a message to your commit":"Por favor informe o coment\u00e1rio para essa a\u00e7\u00e3o","Please provide a reason":"Por favor, informe um motivo","Please report bugs, ideas, comments or feedback on the TAO Forum":"Por favor, reporte bugs, ideias, coment\u00e1rios ou coment\u00e1rios no F\u00f3rum TAO","Please wait":"Aguarde","Please wait while ...":"Por favor aguarde um instante...","PNG image":"Imagem PNG","Portable Custom Interactions":"Intera\u00e7\u00f5es Personalizadas Port\u00e1teis","Position":"Posi\u00e7\u00e3o","Positionals:":"Posicionais:","Post install processing":"Processamento da p\u00f3s-instala\u00e7\u00e3o","Power of":"Poder de","Power of 10":"Poder de 10","Prepare, publish deliveries sessions.":"Prepare, publique as sess\u00f5es de entregas.","Preparing installation...":"Preparando a instala\u00e7\u00e3o...","Preview":"Visualizar","Previous":"Anterior","Previous match":"Combina\u00e7\u00e3o anterior","Previous page":"P\u00e1gina anterior","Proceed":"Prosseguir","Proctorio Review":"Revis\u00e3o do Proctorio","Properties":"Propriedades","Provided URL is not valid":"A URL fornecida n\u00e3o \u00e9 v\u00e1lida","Publish":"Publicar","Publish the test":"Publicar o teste","Queued":"Na fila","Quicktime video":"V\u00eddeo Quicktime","Rad":"Rad","Radian":"Radianos","random":"aleat\u00f3rio","Random value":"Valor aleat\u00f3rio","Range field is required":"O campo Intervalo \u00e9 obrigat\u00f3rio","RAR archive":"Arquivo RAR","RDF":"RDF","RealMedia file":"Arquivo RealMedia","Record and manage test takers.":"Registre e gerencie os candidatos.","Refresh":"Atualizar","Regenerate":"Regenerar","Release":"Lan\u00e7ar","Releasing the lock might cause the work in progress by %s to be lost.":"Liberar a trava pode fazer com que o trabalho em andamento por %s seja perdido.","Reload":"Recarregar","Remind":"Lembrar","Remind Last":"Lembrar \u00faltimo","Remind the last value":"Lembrar o \u00faltimo valor","Remind the next expression in the history":"Lembrar a pr\u00f3xima express\u00e3o na hist\u00f3ria","Remind the previous expression in the history":"Lembrar a pr\u00f3xima express\u00e3o na hist\u00f3ria","Remind the recorded value":"Lembrar o valor gravado","Remote Lists":"Listas Remotas","Remove":"Excluir","Remove criteria":"Remover crit\u00e9rios","Remove Message":"Remover Mensagem","Remove this file":"Remover esse arquivo","Removed %s directories":"%s diret\u00f3rios removidos","Removed %s files":"%s arquivos removidos","Removing: %s":"Removendo: %s","Rename":"Renomear","Repeat new password":"Repita a nova senha","Repeat password":"Repita a senha","Request a password reset via Email.":"Solicitar redefini\u00e7\u00e3o de senha por e-mail.","require notification ID":"requer notifica\u00e7\u00e3o ID","required":"obrigat\u00f3rio","required length":"comprimento obrigat\u00f3rio","Requires":"Obrigat\u00f3rio","Reset":"Redefinir","Reset the range values":"Redefinir os valores de intervalo","Resource":"Recurso","Resource copied":"Recurso copiado","Resource deleted":"Recurso exclu\u00eddo","Resource Identifier":"Identificador do Recurso","Resource Identifier could not be copied to the clipboard":"Identificador do recurso n\u00e3o p\u00f4de ser copiado para a \u00e1rea de transfer\u00eancia","Resource Identifier has been copied to the clipboard":"Identificador do Recurso foi copiado para a \u00e1rea de transfer\u00eancia","Resource not imported due to multiple super classes":"Recurso n\u00e3o foi importado devido a m\u00faltiplas super classes","Resource not imported due to multiple types":"Recurso n\u00e3o importado devido a m\u00faltiplos tipos","Resource saved":"Recursos salvos","resources":"recursos","Resources moved":"Recursos movidos","Resources successfully indexed":"Recursos indexados com sucesso","Resources was not indexed":"Os recursos n\u00e3o foram indexados","Responsive mode":"Modo responsivo","Restore sound":"Restaurar som","Results":"Resultados","Results library":"Biblioteca de resultados","Results Monitoring":"Monitoramento de Resultados","Return to sign in page":"Retornar para a p\u00e1gina de login","Rich Text Format file":"Formato de arquivo Rich Text","Right click the tree to manage your lists":"Clique com o bot\u00e3o direito na \u00e1rvore para gerenciar suas listas","Right parenthesis":"Par\u00eanteses direito","Role saved":"Fun\u00e7\u00e3o salva","Roles":"Fun\u00e7\u00f5es","Roles library":"Biblioteca de fun\u00e7\u00f5es","round":"rodada","Round to closest whole number":"Arredondar para o n\u00famero inteiro mais pr\u00f3ximo","Round to lower whole number":"Arredondar para baixo n\u00famero inteiro","Round to upper whole number":"Arredondar para cima n\u00famero inteiro","Row %s":"Linha %s","Running task %s":"Executando a tarefa: %s","Save":"Salvar","Saved.":"Salvo.","Scientific Calculator":"Calculadora cient\u00edfica","Scope":"Escopo","Search":"Pesquisa","Search %s":"Buscar %s","Search by properties":"Pesquisa por propriedades","Search sub-classes":"Pesquisar sub-classes","second":"segundo","seconds":"segundos","Security":"Seguran\u00e7a","Security settings":"Op\u00e7\u00f5es de seguran\u00e7a","Select":"Selecionar","select":"selecionar","Select a class":"Selecione uma classe","Select a destination":"Selecione um destino","Select a language":"Selecione um idioma","Select loaded %s":"Selecionar %s carregado","Select this file":"Selecione este arquivo","select...":"selecionar...","Selected":"Selecionado","Selected file:":"Selecione um arquivo:","Selection saved successfully":"Sele\u00e7\u00e3o salva com sucesso","self-locked":"autobloqueado","Set the trigonometric function to work in degrees":"Defina a fun\u00e7\u00e3o trigonom\u00e9trica para funcionar em graus","Set the trigonometric function to work in radians":"Defina a fun\u00e7\u00e3o trigonom\u00e9trica para trabalhar em radianos","Settings":"Confirgura\u00e7\u00f5es","Settings updated":"Configura\u00e7\u00f5es atualizadas","Show detailed report":"Mostrar relat\u00f3rio detalhado","Show password":"Mostrar senha","Sibelius music notation":"Nota\u00e7\u00e3o musical do Sibelius","Sign change":"Mudar sinal","sin":"seno","Sine":"Seno","sinh":"sinh","Size":"Tamanho","Some resources have not been moved: %s":"Alguns recursos n\u00e3o foram movidos: %s","Something unexpected happened.":"Algo inesperado aconteceu.","Sources that can embed this platform in an iFrame":"Fontes que podem incorporar essa plataforma em um iFrame","Square root":"Raiz quadrada","Start of document reached. Continuing from the end.":"In\u00edcio do documento alcan\u00e7ado. Continuando do final.","Status":"Status","Status of":"Status de","Store":"Armazenar","Store the value a variable":"Armazenar o valor de uma vari\u00e1vel","Storing digital video data on a computer game":"Armazenando dados de v\u00eddeo digitais em uma partida de computador","string":"string","Submit":"Enviar","Success":"Sucesso","Successfully cloned instance as %s":"Inst\u00e2ncia clonada com sucesso como %s","Successfully deleted %s":"Exclu\u00eddo com sucesso %s","Successfully imported \u0022%s":"Importado com sucesso \u0022%s","Successfully imported %s tripples":"%s tripples foram importados com sucesso","Successfully imported class \u0022%s":"Classe importada com sucesso \u0022%s","Successfully updated %s client translation bundles":"%s pacotes de tradu\u00e7\u00e3o de cliente atualizados com sucesso","Supported export formats":"Formatos de exporta\u00e7\u00e3o suportados","SVG image":"Imagem SVG","Syntax error":"Erro de sintaxe","Tagged image file":"Arquivo de imagem marcados","tan":"tan","Tangent":"Tangente","tanh":"tanh","Tao Default Theme":"Tema Padr\u00e3o do Tao","TAO Home":"TAO In\u00edcio","TAO Login":"TAO Login","TAO platform is already on live mode since %s":"Plataforma TAO j\u00e1 est\u00e1 ativa desde %s","TAO platform is already on maintenance mode since %s":"Plataforma TAO j\u00e1 est\u00e1 em modo de manuten\u00e7\u00e3o desde %s","TAO platform is live since %s.":"Plataforma TAO est\u00e1 ativa desde %s.","TAO platform is now live. It was in maintenance since %s":"A plataforma de TAO est\u00e1 ativa. Estava em manuten\u00e7\u00e3o desde %s","TAO platform is now under maintenance. It was in maintenance since %s":"Plataforma TAO agora est\u00e1 em manuten\u00e7\u00e3o. Estava em manuten\u00e7\u00e3o desde %s","TAO platform is under maintenance since %s":"Plataforma TAO est\u00e1 em manuten\u00e7\u00e3o desde %s","Task %s has been cancelled, message was not processed.":"Tarefa %s foi cancelada, mensagem n\u00e3o foi processada.","task created":"tarefa criada","Task Listing":"Listas de Tarefas","Task Name":"Nome da tarefa","Task not found":"Tarefa n\u00e3o encontrada","Task not returned any report.":"Tarefa n\u00e3o retornou nenhum relat\u00f3rio.","Task Queue":"Lista de tarefas","taskqueue":"taskqueue","Term":"Termo","Test center contains test taker and groups and are administer by a proctor":"Centro de testes cont\u00e9m taker e grupos de teste e s\u00e3o administrados por um perfil","Test Center List":"Lista Central de Teste","Test Centers":"Centros de teste","Test taker saved":"Candidato salvo","Test takers":"Candidatos","Test takers library":"Biblioteca de candidatos","Test takers may be assigned to sets according to the relevant assessment context (Human resources management, education, edumetric monitoring, etc.).":"Candidatos podem ser atribu\u00eddos a organismos de realiza\u00e7\u00e3o de testes conforme o contexto de avalia\u00e7\u00e3o relevante (gest\u00e3o de recursos humanos, educa\u00e7\u00e3o, monitoramento edum\u00e9trico, etc.).","Test-takers":"Candidatos","Tests":"Testes","Tests library":"Biblioteca de testes","TeX file":"Arquivo TeX","Text - Long - Box":"Texto Longo - Caixa","Text - Long - HTML editor":"Texto - Longo - Editor HTML","Text - Short - Field":"Texto - Curto - Campo","Text document file format (Staroffice)":"Formato de arquivo de documento de texto (Staroffice)","The action will be applied to":"A a\u00e7\u00e3o ser\u00e1 aplicada em","The action will be applied to the following":"A a\u00e7\u00e3o ser\u00e1 aplicada para os seguintes","The action will not be applied to ":"A a\u00e7\u00e3o n\u00e3o ser\u00e1 aplicada em ","The action will not be applied to the following":"A a\u00e7\u00e3o n\u00e3o ser\u00e1 aplicada para os seguintes","The column ":"A coluna ","The following criteria are not applicable to the selected class and have been removed from the search":"Os seguintes crit\u00e9rios n\u00e3o s\u00e3o aplic\u00e1veis \u00e0 classe selecionada e foram removidos da pesquisa","The format of this field is not valid.":"O formato deste campo n\u00e3o \u00e9 v\u00e1lido.","The imported file is not properly UTF-8 encoded.":"O arquivo importado n\u00e3o \u00e9 codificado corretamente em UTF-8.","The index identifier should not be empty":"O identificador de \u00edndice n\u00e3o deve estar vazio","The lock has been released":"O bloqueio foi liberado","The properties of the source class will be replaced by those of the destination class. This might result in a loss of metadata. Continue anyway?":"As propriedades da classe de origem ser\u00e3o substitu\u00eddas por aquelas da classe de destino. Isto pode resultar em perda de metadados. Continuar mesmo assim?","The server has sent an empty response":"O servidor enviou uma resposta vazia","The Test takers module allows to record and manage test takers.":"O m\u00f3dulo de candidatos permite registrar e gerenciar os candidatos.","The uploaded file is too large (maximum %s bytes)":"O arquivo enviado \u00e9 muito grande (m\u00e1ximo %s bytes)","The value for the property \u0022%s\u0022 must be unique.":"O valor para a propriedade \u0022%s\u0022 deve ser \u00fanico.","The value of this field must be a valid date format, e.g. YYYY-MM-DD":"O valor deste campo deve ser um formato de data v\u00e1lido, por exemplo AAAA-MM-DD","The value of this field must be an integer":"O valor deste campo deve ser um n\u00famero inteiro","The value of this field must be numeric":"O valor deste campo deve ser num\u00e9rico","There is nothing to list!":"N\u00e3o h\u00e1 nada para listar!","This %s is currently checked out":"Este %s est\u00e1 atualmente check-out","This field is required":"Este campo \u00e9 obrigat\u00f3rio","This field is too long":"Este campo \u00e9 muito longo","This field is too short":"Este campo \u00e9 muito curto","This is not a valid email address.":"Este n\u00e3o \u00e9 um endere\u00e7o de e-mail v\u00e1lido.","this is required":"campo obrigat\u00f3rio","This Login is already in use":"Login j\u00e1 est\u00e1 em uso","This media cannot be played!":"Esta m\u00eddia n\u00e3o pode ser reproduzida!","This or one of %s must have a value":"Este ou um dos %s devem ter um valor","This password reset link is no longer valid. It may have already been used. If you still wish to reset your password please request a new link":"Este link de redefini\u00e7\u00e3o de senha n\u00e3o \u00e9 mais v\u00e1lido. Ele pode ter j\u00e1 sido usado. Se voc\u00ea ainda deseja redefinir sua senha, solicite um novo link","This resource is locked":"Este recurso est\u00e1 bloqueado","This role is still given to one or more users. Please remove the role to these users first.":"Esta fun\u00e7\u00e3o ainda \u00e9 dado a um ou mais usu\u00e1rios. Por favor, remova a primeira fun\u00e7\u00e3o para esses usu\u00e1rios.","This should equal %s":"Isto deve ser igual a %s","This should not equal %s":"Isto n\u00e3o deve ser igual a %s","time":"hora","Time zone":"Fuso hor\u00e1rio","Title":"T\u00edtulo","to":"para","To reset your password, click the link below, or paste it into your browser. You will then be prompted to create a new password.":"Para redefinir sua senha, clique no link abaixo ou cole-o no seu navegador. Em seguida, ser\u00e1 solicitado a criar uma nova senha.","to translate":"para traduzir","Toggle multiple\/single selection":"Alternar sele\u00e7\u00e3o m\u00faltipla\/\u00fanica","Toggle the date time picker":"Alternar o seletor de data e hora","Tokenizer":"Tokenizer","Too many non-option arguments: got %s, maximum of %s":"Muitos argumentos n\u00e3o-op\u00e7\u00e3o: obteve %s, m\u00e1ximo de %s","Too many suggestions match your query. Only a few are listed":"Muitas sugest\u00f5es correspondem \u00e0 sua consulta. Somente algumas est\u00e3o listadas","Tools":"Ferramentas","Total duration":"Dura\u00e7\u00e3o total","Total:":"Total:","Translate":"Traduzir","Translate to":"Traduzir para","Translation parameters":"Par\u00e2metros de tradu\u00e7\u00e3o","Translation saved":"Tradu\u00e7\u00e3o salva","Transport Layer Security":"Seguran\u00e7a de Camada de Transporte","Tree - Multiple node choice ":"\u00c1rvore - M\u00faltipla escolha de n\u00f3 ","Tree values":"Valores da \u00e1rvore","Trees":"\u00c1rvores","True":"Verdadeiro","trunc":"trunc","Type":"Tipo","Type your search":"Digite sua pesquisa","Unable to access your account?":"N\u00e3o foi poss\u00edvel acessar sua conta?","Unable to change passwords in demo mode":"N\u00e3o foi poss\u00edvel alterar a senha em modo de demonstra\u00e7\u00e3o","Unable to copy the resource":"N\u00e3o \u00e9 poss\u00edvel copiar o recurso","Unable to delete %s":"N\u00e3o foi poss\u00edvel excluir %s","Unable to delete the selected resource":"N\u00e3o \u00e9 poss\u00edvel excluir o recurso selecionado","Unable to delete the selected resources":"N\u00e3o foi poss\u00edvel excluir os recursos selecionados","Unable to move the resources":"N\u00e3o \u00e9 poss\u00edvel mover recursos","Unable to open file %s":"N\u00e3o foi poss\u00edvel abrir o arquivo %s","Unable to process your request":"N\u00e3o foi poss\u00edvel processar sua solicita\u00e7\u00e3o","Unable to release the lock":"Imposs\u00edvel liberar o bloqueio","Unable to remove the property.":"N\u00e3o \u00e9 poss\u00edvel remover a propriedade.","Unable to save resource.":"N\u00e3o foi poss\u00edvel salvar o recurso.","unable to search into notification.":"n\u00e3o \u00e9 poss\u00edvel pesquisar na notifica\u00e7\u00e3o.","Unable to send the password reset request":"N\u00e3o foi poss\u00edvel enviar a solicita\u00e7\u00e3o de recupera\u00e7\u00e3o de senha","Unable to update the asset service":"N\u00e3o \u00e9 poss\u00edvel atualizar o servi\u00e7o","Unable to upload file":"N\u00e3o foi poss\u00edvel enviar o arquivo","Unable to upload file %s : %s":"N\u00e3o foi poss\u00edvel enviar o arquivo %s : %s","Unary operator +":"Operador Un\u00e1rio +","Unary operator -":"Operador Un\u00e1rio -","Uncheck all":"Desmarcar todos","Uncheck All":"Desmarcar todos","Undefined amount of the pages for pagination":"Valor indefinido das p\u00e1ginas para pagina\u00e7\u00e3o","Undefined amount of the totalPages for pagination":"Quantidade indefinida de p\u00e1ginas totais para pagina\u00e7\u00e3o","Undo":"Desfazer","Unexpected error. Please contact administrator":"Ocorreu um erro inesperado. Por favor, contate o administrador do sistema","Uninstall of %s failed":"Falha ao desinstalar de %s","Uninstalled %s":"%s desinstalado","UNIX Compressed Archive File":"Arquivo de Compress\u00e3o UNIX","unknown":"desconhecido","Unknown Error":"Erro desconhecido","unkown task id %s":"id tarefa desconhecido %s","Update":"Atualizar","Update ID : %s":"Atualizar o ID : %s","Updating search index":"Atualizando \u00edndice de busca","Upload":"Enviar","Upload into:":"Enviar para:","URI Path":"URI Path","Usage: ImportRdf RDF_FILE [MODEL_ID]":"Uso: ImportRdf RDF_FILE [MODEL_ID]","USAGE: please provide a valid extension id as second parameter":"USO: Por favor, forne\u00e7a um ID de extens\u00e3o v\u00e1lido como segundo par\u00e2metro","USAGE: please provide a valid service name as first parameter":"USO: Por favor, forne\u00e7a um nome de servi\u00e7o v\u00e1lido como primeiro par\u00e2metro","USAGE: please provide the service name as first parameter":"USO: por favor, forne\u00e7a o nome de servi\u00e7o como primeiro par\u00e2metro","Use a term":"Utilizar um termo","Use a variable":"Utilizar uma vari\u00e1vel","Use default value":"Utilizar valor padr\u00e3o","User":"Usu\u00e1rio","User %s can not be locked":"O usu\u00e1rio %s n\u00e3o pode ser bloqueado","User %s can not be unlocked":"O usu\u00e1rio %s n\u00e3o pode ser desbloqueado","User %s successfully locked":"Usu\u00e1rio %s bloqueado com sucesso","User %s successfully unlocked":"Usu\u00e1rio %s desbloqueado com sucesso","User added":"Usu\u00e1rio adicionado","User deleted successfully":"Usu\u00e1rio exclu\u00eddo com sucesso","User deletion not permitted on a demo instance":"Exclus\u00e3o de usu\u00e1rio n\u00e3o permitida em uma inst\u00e2ncia de demonstra\u00e7\u00e3o","User not found":"Usu\u00e1rio n\u00e3o encontrado","User saved":"Usu\u00e1rio salvo","User Settings":"Configura\u00e7\u00f5es de Usu\u00e1rio","Users":"Usu\u00e1rios","Validation for field \u0027%s\u0027 has failed. Language does not exist in the system":"Valida\u00e7\u00e3o do campo \u0027%s\u0027 falhou. Idioma n\u00e3o existe no sistema","Validation for field \u0027%s\u0027 has failed. List of values expected":"Valida\u00e7\u00e3o do campo \u0027%s\u0027 falhou. Lista de valores esperados","Validation for field \u0027%s\u0027 has failed. Should not be empty":"Valida\u00e7\u00e3o do campo \u0027%s\u0027 falhou. N\u00e3o deve estar vazio","Validation for field \u0027%s\u0027 has failed. Valid role expected. Given: %s":"Valida\u00e7\u00e3o para o campo \u0027%s\u0027 falhou. Fun\u00e7\u00e3o v\u00e1lida esperada. Dado: %s","Validation for field \u0027%s\u0027 has failed. Valid URI expected":"Falha na valida\u00e7\u00e3o do campo \u0027.%s\u0027. URI v\u00e1lido esperado","Validation for field \u0027%s\u0027 has failed. Valid URI expected. Given: %s":"A valida\u00e7\u00e3o do campo \u0027%s\u0027 falhou. URI v\u00e1lido esperado. Dado: %s","Value ellipsis":"Elipses de valor","Value of E":"Valor de E","Value of PI":"Valor do PI","Variable":"Vari\u00e1vel","Variable %s":"Vari\u00e1vel %s","Version":"Vers\u00e3o","View":"Visualizar","View and format the collected results.":"Visualizar e formatar os resultados coletados.","View report":"Visualizar relat\u00f3rio","View resources as a list":"Ver recursos como uma lista","View resources as a tree":"Ver recursos como uma \u00e1rvore","View Tree":"Ver \u00c1rvore","Wait is over":"Espera acabou","Waiting":"Aguardando","WAV audio":"\u00c1udio WAV","WebM audio":"\u00c1udio WebM","WebM video":"WebM v\u00eddeo","Whole number part":"Parte n\u00famero inteiro","Width":"Largura","Windows help file":"Arquivo de ajuda do Windows","Windows Media audio":"\u00c1udio do Windows Media","Windows Media file (metafile)":"Arquivo de m\u00eddia Windows (metafile)","Windows Media video":"\u00c1udio do Windows Media","Wrap image left":"Ajustar imagem \u00e0 direita","Wrap image right":"Ajustar imagem \u00e0 direita","Write Document":"Escrever Documento","Wrong or missing parameter extension, module or action":"Extens\u00e3o de par\u00e2metro errada ou ausente","Wrong parameter shownExtension":"Par\u00e2metro errado shownExtension","XML Editor":"Editor XML","XML file":"Arquivo XML","xmlEdit":"xmlEdit","Yes":"Sim","You are encountering a prolonged connectivity loss.":"Voc\u00ea est\u00e1 enfrentando uma perda de conectividade prolongada.","You are not allowed to write in the class %s":"Voc\u00ea n\u00e3o tem permiss\u00e3o para escrever na classe %s","You are not authorised to remove this lock":"Voc\u00ea n\u00e3o est\u00e1 autorizado a remover este bloqueio","You cannot delete the root node":"Voc\u00ea n\u00e3o pode remover o n\u00f3 ra\u00edz","You cannot move the selected resources in the class %s":"Voc\u00ea n\u00e3o pode mover os recursos selecionados para a classe %s","You currently have no access to the platform":"Atualmente voc\u00ea n\u00e3o tem acesso \u00e0 plataforma","You do not have the required rights to edit this resource.":"Voc\u00ea n\u00e3o tem permiss\u00e3o para editar este recurso.","You have been locked due to too many failed login attempts. ":"Voc\u00ea foi bloqueado devido a muitas tentativas de login. ","You have been logged out. Please login again":"A sua sess\u00e3o foi encerrada. Por favor, inicie sess\u00e3o novamente","You must activate JavaScript in your browser to run this application.":"Voc\u00ea deve ativar JavaScript no seu navegador para executar este aplicativo.","Your account has been locked, please contact your administrator.":"Sua conta foi bloqueada, por favor, contate o administrador.","Your browser does not meet the technical requirements to run TAO.":"Seu navegador n\u00e3o atende aos requisitos t\u00e9cnicos para executar o TAO.","Your browser does not support copying to the clipboard":"Seu navegador n\u00e3o suporta copiar para a \u00e1rea de transfer\u00eancia","Your browser doesn\u2019t support the audio player.":"Seu navegador n\u00e3o suporta o reprodutor de \u00e1udio.","Your browser doesn\u2019t support the video player.":"Seu navegador n\u00e3o suporta o reprodutor de v\u00eddeo.","Your mail":"Seu e-mail","Your TAO Password":"Sua senha TAO","ZIP archive":"Arquivo ZIP"} \ No newline at end of file diff --git a/locales/pt-BR/taosubject.rdf.po b/locales/pt-BR/taosubject.rdf.po new file mode 100644 index 0000000..16dbd26 --- /dev/null +++ b/locales/pt-BR/taosubject.rdf.po @@ -0,0 +1,39 @@ +msgid "" +msgstr "" +"Project-Id-Version: tao-3x\n" +"PO-Revision-Date: 2023-04-21 15:46\n" +"Last-Translator: TAO Translation Team \n" +"MIME-Version: 1.0\n" +"Language: pt\n" +"sourceLanguage: en-US\n" +"targetLanguage: en-US\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: tao-3x\n" +"X-Crowdin-Project-ID: 582145\n" +"X-Crowdin-Language: pt-BR\n" +"X-Crowdin-File: /taoTestTaker/locales/en-US/taosubject.rdf.po\n" +"X-Crowdin-File-ID: 1715\n" +"Language-Team: Portuguese, Brazilian\n" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#Subject +msgctxt "http://www.w3.org/2000/01/rdf-schema#label" +msgid "Test-taker" +msgstr "Candidato" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#Subject +msgctxt "http://www.w3.org/2000/01/rdf-schema#comment" +msgid "The Test-taker class" +msgstr "Classe de candidato" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole +msgctxt "http://www.w3.org/2000/01/rdf-schema#label" +msgid "Test Takers Manager" +msgstr "Gerente de candidatos" + +# http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole +msgctxt "http://www.w3.org/2000/01/rdf-schema#comment" +msgid "The Test Takers Manager Role" +msgstr "Função de Gestor de Candidatos" + From 65edefff541032bfc1c52070756d0324ca97defc Mon Sep 17 00:00:00 2001 From: Alberto Sanchez Gonzalez Date: Thu, 27 Apr 2023 21:09:53 +0200 Subject: [PATCH 2/7] feat: make use of dev branch on tao extension to add brazilian --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 42581ae..5aedc4a 100644 --- a/composer.json +++ b/composer.json @@ -59,6 +59,6 @@ "oat-sa/oatbox-extension-installer": "~1.1||dev-master", "oat-sa/tao-core": ">=50.24.6", "oat-sa/generis": ">=15.22", - "oat-sa/extension-tao-backoffice": ">=6.0.0" + "oat-sa/extension-tao-backoffice": "dev-feature/AUT-2995" } } From 6c3d139576ac4ddb8271bba9b48cf2e4b699dda8 Mon Sep 17 00:00:00 2001 From: Alberto Sanchez Gonzalez Date: Fri, 28 Apr 2023 17:24:08 +0200 Subject: [PATCH 3/7] feat: make use of dev branch on tao extension to add brazilian --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 5aedc4a..f5ceecd 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,7 @@ }, "require": { "oat-sa/oatbox-extension-installer": "~1.1||dev-master", - "oat-sa/tao-core": ">=50.24.6", + "oat-sa/tao-core": "dev-feature/AUT-2995", "oat-sa/generis": ">=15.22", "oat-sa/extension-tao-backoffice": "dev-feature/AUT-2995" } From 6a55c06c1f22cad8392ad562cda190d18c54fe31 Mon Sep 17 00:00:00 2001 From: Andrei Shapiro Date: Wed, 3 May 2023 22:16:28 +0000 Subject: [PATCH 4/7] chore: apply PSR-12 --- actions/Api.php | 3 +-- actions/Main.php | 1 - actions/RestTestTakers.php | 2 +- actions/SasImport.php | 1 - actions/TestTakerGenerisTree.php | 1 - actions/form/Search.php | 1 - actions/form/TestTaker.php | 3 +-- includes/raw_start.php | 2 ++ migrations/Version202105041023253148_taoTestTaker.php | 1 - models/CrudService.php | 5 ++--- models/CsvImporter.php | 3 +-- models/RdfImporter.php | 5 ++--- models/TestTakerImporter.php | 2 +- models/TestTakerService.php | 6 +++--- models/events/AbstractTestTakerEvent.php | 2 +- models/events/TestTakerClassCreatedEvent.php | 1 - models/events/TestTakerClassRemovedEvent.php | 1 - models/events/TestTakerExportedEvent.php | 1 - models/events/TestTakerUpdatedEvent.php | 2 +- models/routing/ApiRoute.php | 2 +- scripts/update/Updater.php | 2 +- test/integration/RestTestTakerTest.php | 2 +- test/integration/TestTakerTest.php | 1 - 23 files changed, 19 insertions(+), 31 deletions(-) diff --git a/actions/Api.php b/actions/Api.php index 4d58150..467ea76 100644 --- a/actions/Api.php +++ b/actions/Api.php @@ -34,7 +34,6 @@ */ class Api extends \tao_actions_CommonRestModule { - /** * Api constructor. * @security("hide"); @@ -44,7 +43,7 @@ public function __construct() parent::__construct(); $this->service = CrudService::singleton(); } - + /** * Optionnaly a specific rest controller may declare * aliases for parameters used for the rest communication diff --git a/actions/Main.php b/actions/Main.php index 665bd12..05af629 100644 --- a/actions/Main.php +++ b/actions/Main.php @@ -31,5 +31,4 @@ */ class Main extends \tao_actions_Main { - } diff --git a/actions/RestTestTakers.php b/actions/RestTestTakers.php index fc6aeef..d729ae3 100644 --- a/actions/RestTestTakers.php +++ b/actions/RestTestTakers.php @@ -144,7 +144,7 @@ class RestTestTakers extends \tao_actions_CommonRestModule * ) */ - const ROOT_CLASS = TaoOntology::CLASS_URI_SUBJECT; + public const ROOT_CLASS = TaoOntology::CLASS_URI_SUBJECT; /** * RestTestTakers constructor. diff --git a/actions/SasImport.php b/actions/SasImport.php index 8fa4b7f..67e0479 100644 --- a/actions/SasImport.php +++ b/actions/SasImport.php @@ -36,7 +36,6 @@ class SasImport extends Import { - /** * @see Subjects::__construct() * @security("hide") diff --git a/actions/TestTakerGenerisTree.php b/actions/TestTakerGenerisTree.php index 6ad59bf..013142b 100644 --- a/actions/TestTakerGenerisTree.php +++ b/actions/TestTakerGenerisTree.php @@ -34,7 +34,6 @@ */ class TestTakerGenerisTree extends tao_actions_GenerisTree { - /** * @see tao_actions_GenerisTree::setValues() */ diff --git a/actions/form/Search.php b/actions/form/Search.php index a4e86b5..e43e501 100644 --- a/actions/form/Search.php +++ b/actions/form/Search.php @@ -25,7 +25,6 @@ class Search extends \tao_actions_form_Search { - /** * (non-PHPdoc) * @see tao_actions_form_Search::getClassProperties() diff --git a/actions/form/TestTaker.php b/actions/form/TestTaker.php index 533bcb7..25a9587 100644 --- a/actions/form/TestTaker.php +++ b/actions/form/TestTaker.php @@ -35,7 +35,6 @@ */ class TestTaker extends \tao_actions_form_Users { - /** * Short description of method initElements * @@ -45,7 +44,7 @@ class TestTaker extends \tao_actions_form_Users */ public function initElements() { - + parent::initElements(); $this->form->removeElement(\tao_helpers_Uri::encode(GenerisRdf::PROPERTY_USER_DEFLG)); $this->form->removeElement(\tao_helpers_Uri::encode(GenerisRdf::PROPERTY_USER_ROLES)); diff --git a/includes/raw_start.php b/includes/raw_start.php index 36db537..3a9575f 100644 --- a/includes/raw_start.php +++ b/includes/raw_start.php @@ -21,12 +21,14 @@ */ ?> getClassService()->setTestTakerRole($resource); - + return $resource; } diff --git a/models/CsvImporter.php b/models/CsvImporter.php index f3e27fd..8355ba0 100644 --- a/models/CsvImporter.php +++ b/models/CsvImporter.php @@ -46,8 +46,7 @@ public function import($class, $form, $userId = null) $this->getTestTakerImportEventDispatcher() ->dispatch( $report, - function ($resource) - { + function ($resource) { return $this->getProperties($resource); } ); diff --git a/models/RdfImporter.php b/models/RdfImporter.php index 0b2b5cc..b49065a 100644 --- a/models/RdfImporter.php +++ b/models/RdfImporter.php @@ -90,8 +90,7 @@ public function import($class, $form, $userId = null) $this->getTestTakerImportEventDispatcher() ->dispatch( $report, - function ($resource) - { + function ($resource) { return $this->getProperties($resource); } ); @@ -181,7 +180,7 @@ protected function flatImport($content, core_kernel_classes_Class $class) $importedCount++; } - if ($isDuplicated && $strategy === self::OPTION_STRATEGY_IMPORT_ON_DUPLICATE){ + if ($isDuplicated && $strategy === self::OPTION_STRATEGY_IMPORT_ON_DUPLICATE) { $report->add( new Report( Report::TYPE_WARNING, diff --git a/models/TestTakerImporter.php b/models/TestTakerImporter.php index 51e9657..e1b6bdd 100644 --- a/models/TestTakerImporter.php +++ b/models/TestTakerImporter.php @@ -48,7 +48,7 @@ */ class TestTakerImporter extends RdsUserImportService { - const USER_IMPORTER_TYPE = 'test-taker'; + public const USER_IMPORTER_TYPE = 'test-taker'; /** * Add test taker role to user to import diff --git a/models/TestTakerService.php b/models/TestTakerService.php index 848147d..cdc1023 100644 --- a/models/TestTakerService.php +++ b/models/TestTakerService.php @@ -44,9 +44,9 @@ class TestTakerService extends OntologyClassService { use EventManagerAwareTrait; - const CLASS_URI_SUBJECT = 'http://www.tao.lu/Ontologies/TAOSubject.rdf#Subject'; + public const CLASS_URI_SUBJECT = 'http://www.tao.lu/Ontologies/TAOSubject.rdf#Subject'; - const ROLE_SUBJECT_MANAGER = 'http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole'; + public const ROLE_SUBJECT_MANAGER = 'http://www.tao.lu/Ontologies/TAOSubject.rdf#SubjectsManagerRole'; /** * @return core_kernel_classes_Class|null @@ -180,7 +180,7 @@ public function cloneInstance(\core_kernel_classes_Resource $instance, \core_ker { $loginProperty = new \core_kernel_classes_Property(GenerisRdf::PROPERTY_USER_LOGIN); $login = $instance->getUniquePropertyValue($loginProperty); - + $returnValue = parent::cloneInstance($instance, $clazz); $userService = \tao_models_classes_UserService::singleton(); try { diff --git a/models/events/AbstractTestTakerEvent.php b/models/events/AbstractTestTakerEvent.php index 1212c75..3c3b66e 100644 --- a/models/events/AbstractTestTakerEvent.php +++ b/models/events/AbstractTestTakerEvent.php @@ -60,7 +60,7 @@ public function getName() * which is a value of any type other than a resource. * @since 5.4.0 */ - function jsonSerialize() + public function jsonSerialize() { return [ 'testTakerUri' => $this->testTakerUri, diff --git a/models/events/TestTakerClassCreatedEvent.php b/models/events/TestTakerClassCreatedEvent.php index 1bb4bce..d816074 100644 --- a/models/events/TestTakerClassCreatedEvent.php +++ b/models/events/TestTakerClassCreatedEvent.php @@ -28,5 +28,4 @@ */ class TestTakerClassCreatedEvent extends AbstractTestTakerEvent { - } diff --git a/models/events/TestTakerClassRemovedEvent.php b/models/events/TestTakerClassRemovedEvent.php index 55058a8..8751a13 100644 --- a/models/events/TestTakerClassRemovedEvent.php +++ b/models/events/TestTakerClassRemovedEvent.php @@ -28,5 +28,4 @@ */ class TestTakerClassRemovedEvent extends AbstractTestTakerEvent { - } diff --git a/models/events/TestTakerExportedEvent.php b/models/events/TestTakerExportedEvent.php index efcd77d..46dffc1 100644 --- a/models/events/TestTakerExportedEvent.php +++ b/models/events/TestTakerExportedEvent.php @@ -28,5 +28,4 @@ */ class TestTakerExportedEvent extends AbstractTestTakerEvent { - } diff --git a/models/events/TestTakerUpdatedEvent.php b/models/events/TestTakerUpdatedEvent.php index 671ecf3..8c9b2ed 100644 --- a/models/events/TestTakerUpdatedEvent.php +++ b/models/events/TestTakerUpdatedEvent.php @@ -45,7 +45,7 @@ public function __construct($testTakerUri, array $properties) /** * @return array */ - function jsonSerialize() + public function jsonSerialize() { return [ 'testTakerUri' => $this->testTakerUri, diff --git a/models/routing/ApiRoute.php b/models/routing/ApiRoute.php index 930632c..cb5aeb0 100644 --- a/models/routing/ApiRoute.php +++ b/models/routing/ApiRoute.php @@ -24,7 +24,7 @@ class ApiRoute extends AbstractApiRoute { - const REST_CONTROLLER_PREFIX = 'oat\\taoTestTaker\\actions\\Rest'; + public const REST_CONTROLLER_PREFIX = 'oat\\taoTestTaker\\actions\\Rest'; /** * @inheritdoc diff --git a/scripts/update/Updater.php b/scripts/update/Updater.php index 7880635..270a5ea 100644 --- a/scripts/update/Updater.php +++ b/scripts/update/Updater.php @@ -95,7 +95,7 @@ public function update($initialVersion) } $this->skip('3.11.0', '7.6.0'); - + //Updater files are deprecated. Please use migrations. //See: https://github.com/oat-sa/generis/wiki/Tao-Update-Process diff --git a/test/integration/RestTestTakerTest.php b/test/integration/RestTestTakerTest.php index 8d805b5..2445628 100755 --- a/test/integration/RestTestTakerTest.php +++ b/test/integration/RestTestTakerTest.php @@ -23,7 +23,7 @@ use oat\tao\model\TaoOntology; use oat\generis\model\GenerisRdf; -use \core_kernel_users_Service; +use core_kernel_users_Service; use oat\tao\test\integration\RestTestCase; /** diff --git a/test/integration/TestTakerTest.php b/test/integration/TestTakerTest.php index 0222db0..77083d8 100755 --- a/test/integration/TestTakerTest.php +++ b/test/integration/TestTakerTest.php @@ -38,7 +38,6 @@ */ class TestTakerTest extends TaoPhpUnitTestRunner { - /** * @var TestTakerService */ From c3454d8a4781bc4cda9d4317b6358fb77cb2b1dc Mon Sep 17 00:00:00 2001 From: Alberto Sanchez Gonzalez Date: Thu, 4 May 2023 15:29:03 +0200 Subject: [PATCH 5/7] Revert "feat: make use of dev branch on tao extension to add brazilian" This reverts commit 65edefff541032bfc1c52070756d0324ca97defc. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index f5ceecd..9c71723 100644 --- a/composer.json +++ b/composer.json @@ -59,6 +59,6 @@ "oat-sa/oatbox-extension-installer": "~1.1||dev-master", "oat-sa/tao-core": "dev-feature/AUT-2995", "oat-sa/generis": ">=15.22", - "oat-sa/extension-tao-backoffice": "dev-feature/AUT-2995" + "oat-sa/extension-tao-backoffice": ">=6.0.0" } } From c1af0950942d8750f68d8c24b0c9d4845c2e20be Mon Sep 17 00:00:00 2001 From: Alberto Sanchez Gonzalez Date: Thu, 4 May 2023 15:29:05 +0200 Subject: [PATCH 6/7] Revert "feat: make use of dev branch on tao extension to add brazilian" This reverts commit 6c3d139576ac4ddb8271bba9b48cf2e4b699dda8. --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 9c71723..42581ae 100644 --- a/composer.json +++ b/composer.json @@ -57,7 +57,7 @@ }, "require": { "oat-sa/oatbox-extension-installer": "~1.1||dev-master", - "oat-sa/tao-core": "dev-feature/AUT-2995", + "oat-sa/tao-core": ">=50.24.6", "oat-sa/generis": ">=15.22", "oat-sa/extension-tao-backoffice": ">=6.0.0" } From ee755e5fccae494a8dfb2fcbcdb1d156759e52f6 Mon Sep 17 00:00:00 2001 From: Andrei Shapiro Date: Thu, 4 May 2023 13:56:38 +0000 Subject: [PATCH 7/7] chore: apply PSR-12 manual fixes --- actions/Export.php | 10 ++++--- actions/Import.php | 10 ++++--- actions/Main.php | 10 ++++--- actions/RestTestTakers.php | 6 ++-- actions/SasImport.php | 10 ++++--- actions/TestTaker.php | 13 ++++++--- actions/form/Search.php | 6 +++- actions/form/TestTaker.php | 10 ++++--- includes/constants.php | 9 ++++-- includes/raw_start.php | 13 +++++---- manifest.php | 10 ++++--- models/CrudService.php | 8 ++++-- models/CsvImporter.php | 8 ++++-- models/RdfImporter.php | 6 ++-- models/TestTakerImporter.php | 17 +++++------ models/TestTakerService.php | 9 ++++-- scripts/update/Updater.php | 23 +++++++++------ test/integration/RestTestTakerTest.php | 39 ++++++++++++++++++++++---- test/integration/TestTakerTest.php | 7 +++-- 19 files changed, 149 insertions(+), 75 deletions(-) diff --git a/actions/Export.php b/actions/Export.php index 0d07627..bf26e97 100644 --- a/actions/Export.php +++ b/actions/Export.php @@ -15,10 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); - * + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); */ namespace oat\taoTestTaker\actions; diff --git a/actions/Import.php b/actions/Import.php index fd9d9a4..2d0a803 100644 --- a/actions/Import.php +++ b/actions/Import.php @@ -15,10 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); - * + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); */ declare(strict_types=1); diff --git a/actions/Main.php b/actions/Main.php index 05af629..fddb63f 100644 --- a/actions/Main.php +++ b/actions/Main.php @@ -15,10 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); - * + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); */ namespace oat\taoTestTaker\actions; diff --git a/actions/RestTestTakers.php b/actions/RestTestTakers.php index d729ae3..d602a46 100644 --- a/actions/RestTestTakers.php +++ b/actions/RestTestTakers.php @@ -119,12 +119,14 @@ class RestTestTakers extends \tao_actions_CommonRestModule * @OA\Property( * property="userLanguage", * type="string", - * description="Interface language (uri or language code, 'fr-FR' or 'http://www.tao.lu/Ontologies/TAO.rdf#Langfr-FR' for example)" + * description="Interface language (uri or language code, 'fr-FR' + * or 'http://www.tao.lu/Ontologies/TAO.rdf#Langfr-FR' for example)" * ), * @OA\Property( * property="defaultLanguage", * type="string", - * description="Default language (uri or language code, 'fr-FR' or 'http://www.tao.lu/Ontologies/TAO.rdf#Langfr-FR' for example)" + * description="Default language (uri or language code, 'fr-FR' + * or 'http://www.tao.lu/Ontologies/TAO.rdf#Langfr-FR' for example)" * ), * @OA\Property( * property="firstName", diff --git a/actions/SasImport.php b/actions/SasImport.php index 67e0479..6d33cb8 100644 --- a/actions/SasImport.php +++ b/actions/SasImport.php @@ -15,10 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); - * + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); */ namespace oat\taoTestTaker\actions; diff --git a/actions/TestTaker.php b/actions/TestTaker.php index 775c794..1f1f44e 100644 --- a/actions/TestTaker.php +++ b/actions/TestTaker.php @@ -15,9 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); * 2013-2014 (update and modification) Open Assessment Technologies SA */ @@ -137,7 +140,9 @@ public function editSubject() $subject = $this->getCurrentInstance(); $addMode = false; - $login = (string) $subject->getOnePropertyValue(new core_kernel_classes_Property(GenerisRdf::PROPERTY_USER_LOGIN)); + $login = (string) $subject->getOnePropertyValue( + new core_kernel_classes_Property(GenerisRdf::PROPERTY_USER_LOGIN) + ); if (empty($login)) { $addMode = true; $this->setData('loginUri', tao_helpers_Uri::encode(GenerisRdf::PROPERTY_USER_LOGIN)); diff --git a/actions/form/Search.php b/actions/form/Search.php index e43e501..5b0fe8b 100644 --- a/actions/form/Search.php +++ b/actions/form/Search.php @@ -32,7 +32,11 @@ class Search extends \tao_actions_form_Search protected function getClassProperties() { $testTakerProps = \tao_helpers_form_GenerisFormFactory::getClassProperties($this->clazz, $this->getTopClazz()); - $userProps = \tao_helpers_form_GenerisFormFactory::getClassProperties(new \core_kernel_classes_Class(GenerisRdf::CLASS_GENERIS_USER), $this->getTopClazz()); + $userProps = \tao_helpers_form_GenerisFormFactory::getClassProperties( + new \core_kernel_classes_Class(GenerisRdf::CLASS_GENERIS_USER), + $this->getTopClazz() + ); + return array_merge($testTakerProps, $userProps); } } diff --git a/actions/form/TestTaker.php b/actions/form/TestTaker.php index 25a9587..c408249 100644 --- a/actions/form/TestTaker.php +++ b/actions/form/TestTaker.php @@ -15,10 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); - * + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2002-2008 (update and modification) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); */ namespace oat\taoTestTaker\actions\form; diff --git a/includes/constants.php b/includes/constants.php index 76b1a85..710e3a0 100755 --- a/includes/constants.php +++ b/includes/constants.php @@ -15,9 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2008-2010 (update and modification) Deutsche Institut für Internationale Pädagogische Forschung (under the project TAO-TRANSFER); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2008-2010 (update and modification) Deutsche Institut für Internationale Pädagogische Forschung + * (under the project TAO-TRANSFER); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); * */ diff --git a/includes/raw_start.php b/includes/raw_start.php index 3a9575f..5532817 100644 --- a/includes/raw_start.php +++ b/includes/raw_start.php @@ -1,4 +1,5 @@ -loginExists($propertiesValues[GenerisRdf::PROPERTY_USER_LOGIN])) { throw new \common_exception_PreConditionFailure("login already exists"); } - $propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD] = \core_kernel_users_Service::getPasswordHash()->encrypt($propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD]); - $type = isset($propertiesValues[OntologyRdf::RDF_TYPE]) ? $propertiesValues[OntologyRdf::RDF_TYPE] : $this->getRootClass(); + $propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD] = \core_kernel_users_Service::getPasswordHash() + ->encrypt($propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD]); + $type = $propertiesValues[OntologyRdf::RDF_TYPE] ?? $this->getRootClass(); $label = $propertiesValues[OntologyRdfs::RDFS_LABEL]; // hmmm unset($propertiesValues[OntologyRdfs::RDFS_LABEL]); @@ -125,7 +126,8 @@ public function update($uri = null, $propertiesValues = []) throw new \common_exception_PreConditionFailure("login update not allowed"); } if (isset($propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD])) { - $propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD] = \core_kernel_users_Service::getPasswordHash()->encrypt($propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD]); + $propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD] = \core_kernel_users_Service::getPasswordHash() + ->encrypt($propertiesValues[GenerisRdf::PROPERTY_USER_PASSWORD]); } parent::update($uri, $propertiesValues); // throw new common_exception_NotImplemented(); diff --git a/models/CsvImporter.php b/models/CsvImporter.php index 8355ba0..6fcad36 100644 --- a/models/CsvImporter.php +++ b/models/CsvImporter.php @@ -77,7 +77,7 @@ protected function getProperties($resource) if ((bool)$config['use_properties_for_event']) { return [ - 'hashForKey' => UserHashForEncryption::hash(TestTakerSavePasswordInMemory::getPassword()), + 'hashForKey' => UserHashForEncryption::hash(TestTakerSavePasswordInMemory::getPassword()), GenerisRdf::PROPERTY_USER_PASSWORD => $resource->getOnePropertyValue( new \core_kernel_classes_Property(GenerisRdf::PROPERTY_USER_PASSWORD) )->literal @@ -135,8 +135,10 @@ protected function getAdditionAdapterOptions() $returnValue = [ 'callbacks' => [ '*' => ['trim'], - GenerisRdf::PROPERTY_USER_PASSWORD => ['oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode'] - ] + GenerisRdf::PROPERTY_USER_PASSWORD => [ + 'oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode', + ], + ], ]; } else { $returnValue = [ diff --git a/models/RdfImporter.php b/models/RdfImporter.php index b49065a..7b5a93a 100644 --- a/models/RdfImporter.php +++ b/models/RdfImporter.php @@ -164,7 +164,8 @@ protected function flatImport($content, core_kernel_classes_Class $class) $report->add( new Report( Report::TYPE_WARNING, - 'Since the `Skip on duplicate` strategy was chosen, import will now skip this user, without importing it' + 'Since the `Skip on duplicate` strategy was chosen, import will now skip this ' + . 'user, without importing it' ) ); @@ -184,7 +185,8 @@ protected function flatImport($content, core_kernel_classes_Class $class) $report->add( new Report( Report::TYPE_WARNING, - 'Since the `Import on duplicate` strategy was chosen, import will import the user, but behaviour is unpredicted' + 'Since the `Import on duplicate` strategy was chosen, import will import the user, ' + . 'but behaviour is unpredicted' ) ); } diff --git a/models/TestTakerImporter.php b/models/TestTakerImporter.php index e1b6bdd..0a61c0a 100644 --- a/models/TestTakerImporter.php +++ b/models/TestTakerImporter.php @@ -34,16 +34,17 @@ * * Implementation of RdsUserImportService to import test-taker resource from a CSV * - ` - $userImporter = $this->getServiceLocator()->get(UserCsvImporterFactory::SERVICE_ID); - $importer = $userImporter->getImporter(TestTakerImporter::USER_IMPORTER_TYPE); - $report = $importer->import($filePath); - ` + * ` + * $userImporter = $this->getServiceLocator()->get(UserCsvImporterFactory::SERVICE_ID); + * $importer = $userImporter->getImporter(TestTakerImporter::USER_IMPORTER_TYPE); + * $report = $importer->import($filePath); + * ` * * or by command line: -` -sudo -u www-data php index.php 'oat\tao\scripts\tools\import\ImportUsersCsv' -t test-taker -f tao/test/user/import/example.csv -` + * ` + * sudo -u www-data php index.php 'oat\tao\scripts\tools\import\ImportUsersCsv' -t test-taker + * -f tao/test/user/import/example.csv + * ` * @package oat\taoTestTaker\models */ class TestTakerImporter extends RdsUserImportService diff --git a/models/TestTakerService.php b/models/TestTakerService.php index cdc1023..429cd21 100644 --- a/models/TestTakerService.php +++ b/models/TestTakerService.php @@ -15,9 +15,12 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg (under the project TAO & TAO2); - * 2008-2010 (update and modification) Deutsche Institut für Internationale Pädagogische Forschung (under the project TAO-TRANSFER); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); + * Copyright (c) 2002-2008 (original work) Public Research Centre Henri Tudor & University of Luxembourg + * (under the project TAO & TAO2); + * 2008-2010 (update and modification) Deutsche Institut für Internationale Pädagogische Forschung + * (under the project TAO-TRANSFER); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); * 2013-2014 (update and modification) Open Assessment Technologies SA */ diff --git a/scripts/update/Updater.php b/scripts/update/Updater.php index 270a5ea..29273b1 100644 --- a/scripts/update/Updater.php +++ b/scripts/update/Updater.php @@ -56,13 +56,18 @@ public function update($initialVersion) $extManager = $this->getServiceManager()->get(\common_ext_ExtensionsManager::SERVICE_ID); $taoTestTaker = $extManager->getExtensionById('taoTestTaker'); - $taoTestTaker->setConfig('csvImporterCallbacks', [ - 'callbacks' => [ - '*' => ['trim'], - GenerisRdf::PROPERTY_USER_PASSWORD => ['oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode'] - ], - 'use_properties_for_event' => false - ]); + $taoTestTaker->setConfig( + 'csvImporterCallbacks', + [ + 'callbacks' => [ + '*' => ['trim'], + GenerisRdf::PROPERTY_USER_PASSWORD => [ + 'oat\taoTestTaker\models\CsvImporter::taoSubjectsPasswordEncode', + ] + ], + 'use_properties_for_event' => false + ] + ); $this->setVersion('3.5.0'); } @@ -89,7 +94,9 @@ public function update($initialVersion) $extensionManager = $this->getServiceManager()->get(\common_ext_ExtensionsManager::SERVICE_ID); $extension = $extensionManager->getExtensionById('taoTestTaker'); $config = $extension->getConfig('csvImporterCallbacks'); - $config['callbacks'][GenerisRdf::PROPERTY_USER_UILG] = ['\tao_models_classes_LanguageService::filterLanguage']; + $config['callbacks'][GenerisRdf::PROPERTY_USER_UILG] = [ + '\tao_models_classes_LanguageService::filterLanguage', + ]; $extension->setConfig('csvImporterCallbacks', $config); $this->setVersion('3.11.0'); } diff --git a/test/integration/RestTestTakerTest.php b/test/integration/RestTestTakerTest.php index 2445628..2c4ab09 100755 --- a/test/integration/RestTestTakerTest.php +++ b/test/integration/RestTestTakerTest.php @@ -19,7 +19,9 @@ namespace oat\taoTestTaker\test\integration; +// phpcs:disable PSR1.Files.SideEffects include_once dirname(__FILE__) . '/../../includes/raw_start.php'; +// phpcs:enable PSR1.Files.SideEffects use oat\tao\model\TaoOntology; use oat\generis\model\GenerisRdf; @@ -35,6 +37,7 @@ */ class RestTestTakerTest extends RestTestCase { + // phpcs:disable PEAR.Functions.ValidDefaultValue private function checkPropertyValues($propertyValues, $property, $valueType = "literal", $value) { if (is_array($propertyValues)) { @@ -48,6 +51,7 @@ private function checkPropertyValues($propertyValues, $property, $valueType = "l $this->fail('$propertyValues should be an array'); } } + // phpcs:enable PEAR.Functions.ValidDefaultValue public function serviceProvider() { @@ -104,11 +108,21 @@ public function testReadTestTaker($uriSubject) $this->assertEquals($data["success"], true); $this->assertEquals($data["data"]["uri"], $uriSubject); - $this->checkPropertyValues($data["data"]["properties"], GenerisRdf::PROPERTY_USER_LOGIN, "literal", 'dummy_login'); + $this->checkPropertyValues( + $data["data"]["properties"], + GenerisRdf::PROPERTY_USER_LOGIN, + "literal", + 'dummy_login' + ); foreach ($data["data"]["properties"] as $propertyValue) { if ($propertyValue["predicateUri"] == GenerisRdf::PROPERTY_USER_PASSWORD) { - $this->assertTrue(\core_kernel_users_Service::getPasswordHash()->verify('dummy', $propertyValue["values"][0]["value"])); + $this->assertTrue( + \core_kernel_users_Service::getPasswordHash()->verify( + 'dummy', + $propertyValue["values"][0]["value"] + ) + ); } } } @@ -145,15 +159,30 @@ public function testUpdateTestTaker($uriSubject) $this->assertEquals($data["success"], true); $this->assertEquals($data["data"]["uri"], $uriSubject); - $this->checkPropertyValues($data["data"]["properties"], GenerisRdf::PROPERTY_USER_LOGIN, "literal", 'dummy_login'); + $this->checkPropertyValues( + $data["data"]["properties"], + GenerisRdf::PROPERTY_USER_LOGIN, + "literal", + 'dummy_login' + ); foreach ($data["data"]["properties"] as $propertyValue) { if ($propertyValue["predicateUri"] == GenerisRdf::PROPERTY_USER_PASSWORD) { - $this->assertTrue(\core_kernel_users_Service::getPasswordHash()->verify('blabla', $propertyValue["values"][0]["value"])); + $this->assertTrue( + \core_kernel_users_Service::getPasswordHash()->verify( + 'blabla', + $propertyValue["values"][0]["value"] + ) + ); } } - $this->checkPropertyValues($data["data"]["properties"], GenerisRdf::PROPERTY_USER_LASTNAME, "literal", 'patrick'); + $this->checkPropertyValues( + $data["data"]["properties"], + GenerisRdf::PROPERTY_USER_LASTNAME, + "literal", + 'patrick' + ); } public function testCreateTestTaker2() diff --git a/test/integration/TestTakerTest.php b/test/integration/TestTakerTest.php index 77083d8..ba0e95b 100755 --- a/test/integration/TestTakerTest.php +++ b/test/integration/TestTakerTest.php @@ -15,9 +15,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * - * Copyright (c) 2008-2010 (original work) Deutsche Institut für Internationale Pädagogische Forschung (under the project TAO-TRANSFER); - * 2009-2012 (update and modification) Public Research Centre Henri Tudor (under the project TAO-SUSTAIN & TAO-DEV); - * + * Copyright (c) 2008-2010 (original work) Deutsche Institut für Internationale Pädagogische Forschung + * (under the project TAO-TRANSFER); + * 2009-2012 (update and modification) Public Research Centre Henri Tudor + * (under the project TAO-SUSTAIN & TAO-DEV); */ namespace oat\taoTestTaker\test\integration;