Campos personalizados¶
MRBS 1.12.2 pode descobrir colunas adicionais da base de dados e utilizá-las como campos para reservas, salas e utilizadores. Os campos personalizados são, portanto, extensões de esquema e não definições que criam colunas automaticamente.
Faça backup primeiro
Faça cópias de segurança da base de dados e teste a alteração numa instância que não seja de produção. MRBS as atualizações não criam, migram ou removem colunas específicas do site.
Onde os campos personalizados são suportados¶
| Tabela de base de dados | Finalidade | Regra importante |
|---|---|---|
entry |
Dados extra para uma reserva individual | Adicione a coluna idêntica a repeat |
repeat |
Dados de modelo para uma reserva recorrente | Manter o nome, o tipo, o comprimento, a nulidade e o padrão idênticos a entry |
room |
Propriedades extra de espaço ou recursos | Exibido e editado com dados da sala |
users |
Dados extra do perfil do utilizador | Utilizado apenas com autenticação de base de dados |
Uma coluna entry sem uma coluna repeat idêntica causa falha nas operações de reserva recorrentes. Trate o par como uma mudança de esquema.
Utilize apenas letras, números e sublinhados no nome de uma coluna. Para compatibilidade com PostgreSQL, comece por uma letra ou sublinhado. Prefira nomes estáveis e em minúsculas, como participant_count ou catering.
Tipos de base de dados suportados¶
| Tipo SQL | MRBS controlo |
|---|---|
TEXT |
Texto multilinha |
VARCHAR |
Introdução de texto ou texto multilinha, dependendo do comprimento máximo |
DATE |
Entrada de data |
DECIMAL / NUMERIC |
Entrada de número |
INT |
Entrada inteira |
SMALLINT / TINYINT |
Caixa de seleção, interpretada como um valor booleano |
Utilize SMALLINT para campos personalizados booleanos em PostgreSQL e TINYINT em MySQL. Outros tipos de colunas não são suportados pela manipulação automática de campos personalizados.
Adicione um campo ao esquema¶
Os exemplos assumem o prefixo de tabela padrão mrbs_. Substitua-o se $db_tbl_prefix tiver outro valor.
Campo de reserva¶
Este exemplo adiciona uma opção de catering opcional:
ALTER TABLE mrbs_entry
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
ALTER TABLE mrbs_repeat
ADD COLUMN catering VARCHAR(32) DEFAULT NULL;
Ambas as instruções funcionam com MySQL e PostgreSQL. Verifique as definições resultantes em ambas as tabelas antes de abrir o formulário de reserva.
Caixa de seleção da sala¶
Em MRBS 1.12.2, o padrão da base de dados é utilizado quando é criada uma nova linha. Escolha os padrões deliberadamente, especialmente para os campos e caixas de seleção obrigatórios.
Dê ao campo um rótulo traduzido¶
Sem substituição, MRBS deriva o rótulo do nome da coluna. Defina um rótulo por idioma ativo em config.inc.php:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
Para um par entry/repeat, defina apenas entry.catering; não é necessário nenhum token repeat.catering. Os campos Room e User utilizam tokens como room.coffee_machine e users.phone.
Consulte Texto e traduções para obter as substituições de vocabulário, ficheiros de idioma e páginas de Ajuda traduzidas.
Escolha o comportamento de entrada¶
Escolhas fixas¶
$select_options substitui a entrada gratuita por uma lista de seleção:
$select_options['entry.catering'] = array(
'' => 'Please select',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
Para uma matriz associativa, MRBS armazena a chave (c) e apresenta, pesquisa e reporta o valor (Coffee). Isto permite alterar o texto sem reescrever os dados armazenados.
Evite chaves que consistem apenas em dígitos: PHP converte chaves de string do tipo inteiro em inteiros, pelo que MRBS pode interpretar o array como indexado. Inclui uma opção vazia quando uma seleção obrigatória deve começar desmarcada.
$select_options é compatível com os campos entry.name, entry.description, campos entry personalizados e campos users personalizados. As legendas das opções configuradas são sequências de todo o site; o próprio rótulo do campo pode ser traduzido com $vocab_override.
Sugestões com entrada livre¶
Utilize $datalist_options para sugestões enquanto ainda aceita outro valor:
Suporta os mesmos campos que $select_options. Com listas de dados associativos, a chave armazenada pode surpreender os utilizadores, por isso teste o comportamento antes de utilizar.
Campos obrigatórios, privados e validados¶
Torne um campo obrigatório em todos os locais:
Ou apenas em áreas com os IDs de base de dados 1 e 3:
As regras obrigatórias específicas da área aplicam-se apenas aos campos entry. Uma caixa de seleção obrigatória deve ser marcada antes do envio.
São suportados campos personalizados privados para entry e users:
Isto protege o valor apenas quando as reservas privadas estão ativadas e configuradas. Teste todas as funções relevantes; não utilize a privacidade da interface do utilizador como um substituto para minimizar os dados confidenciais.
A validação do padrão está atualmente limitada a campos de texto personalizados users:
$pattern['users.zip_code'] = '^[0-9]{5}(?:-[0-9]{4})?$';
$vocab_override['en']['users.zip_code.oninvalid'] =
'Enter a ZIP code such as 12345 or 12345-6789';
Os campos de texto de entrada podem ter espaços reservados traduzidos:
Os padrões do lado do cliente melhoram o feedback, mas não transformam um campo num local seguro para segredos ou marcações não fiáveis.
Ordem dos campos de controlo¶
Coloque os campos de reserva explicitamente nas páginas de criação e visualização:
Os campos não listados são anexados na sua ordem normal. Os campos personalizados também podem ser colocados no formulário de pesquisa do relatório:
Exemplo completo¶
Depois de adicionar catering a ambas as tabelas de reservas:
$vocab_override['en']['entry.catering'] = 'Catering';
$vocab_override['de']['entry.catering'] = 'Verpflegung';
$vocab_override['fr']['entry.catering'] = 'Restauration';
$vocab_override['es']['entry.catering'] = 'Catering';
$select_options['entry.catering'] = array(
'' => '—',
'c' => 'Coffee',
's' => 'Sandwiches',
'h' => 'Hot lunch',
);
$is_mandatory_field['entry.catering'] = array(1, 3);
$edit_entry_field_order = array('name', 'catering', 'description');
$report_search_field_order = array(
'report_start',
'report_end',
'catering',
);
As legendas das opções neste exemplo permanecem as mesmas em todos os idiomas da UI. Se as legendas das opções traduzidas forem um requisito, desenhe e teste uma extensão específica do website em vez de assumir que $select_options as traduz automaticamente.
Alterar, remover e atualizar¶
Antes de encurtar uma coluna ou alterar o seu tipo, inspecione os valores existentes e teste a conversão. Antes de remover um campo, remova as suas referências de configuração, implante essa alteração, confirme se a aplicação funciona e só depois elimine a coluna através do processo normal de alteração da base de dados. Para os campos de reserva, altere entry e repeat.
Registe cada coluna personalizada na documentação de operações do website e verifique-a novamente após cada atualização do MRBS. Os scripts de esquema MRBS padrão não possuem estas colunas.
Lista de verificação de verificação¶
- As definições
entryerepeatsão idênticas para todos os campos de reserva. - Criar, editar, visualizar, copiar e eliminar uma reserva funciona.
- Uma série recorrente e uma ocorrência podem ser editadas corretamente.
- Os padrões da base de dados são aplicados a novos registos.
- O comportamento obrigatório, privado, de seleção, lista de dados e validação funciona por função e área.
- Os rótulos aparecem em todos os idiomas configurados.
- Pesquisa, relatórios, email, exportação de calendário e importação/exportação mostram valores seguros.
- A administração de salas e utilizadores apenas apresenta os campos pretendidos.
- Os procedimentos de cópia de segurança e restauro incluem o esquema alargado.