Campos personalizados¶
MRBS 1.12.2 pode descobrir colunas adicionais do banco de dados e usá-las como campos para reservas, salas e usuários. Os campos personalizados são, portanto, extensões de esquema e não configurações que criam colunas automaticamente.
Faça backup primeiro
Faça backup do banco de dados e teste a alteração em uma instância que não seja de produção. As atualizações do MRBS não criam, migram nem removem colunas específicas da instalação.
Onde os campos personalizados são suportados¶
| Tabela de banco de dados | Propósito | Regra importante |
|---|---|---|
entry |
Dados extras para uma reserva individual | Adicione a coluna idêntica a repeat |
repeat |
Dados de modelo para uma reserva recorrente | Mantenha o nome, tipo, comprimento, nulidade e padrão idênticos a entry |
room |
Propriedades extras de espaço ou recursos | Exibido e editado com dados da sala |
users |
Dados extras do perfil do usuário | Usado apenas com autenticação de banco 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.
Use apenas letras, números e sublinhados no nome de uma coluna. Para compatibilidade com PostgreSQL, comece com uma letra ou sublinhado. Prefira nomes estáveis e em minúsculas, como participant_count ou catering.
Tipos de banco de dados suportados¶
| Tipo SQL | MRBS controle |
|---|---|
TEXT |
Texto multilinha |
VARCHAR |
Entrada 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 |
Use 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 do banco de dados é usado quando uma nova linha é criada. Escolha os padrões deliberadamente, especialmente para 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; nenhum token repeat.catering é necessário. Os campos Room e User usam tokens como room.coffee_machine e users.phone.
Consulte Texto e traduções para substituições de vocabulário, arquivos de idioma e páginas de Ajuda traduzidas.
Escolha o comportamento de entrada¶
Escolhas fixas¶
$select_options substitui 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 exibe, pesquisa e relata o valor (Coffee). Isso 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, portanto, 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 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 gratuita¶
Use $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 usuários, portanto, teste o comportamento antes de usar.
Campos obrigatórios, privados e validados¶
Torne um campo obrigatório em todos os lugares:
Ou apenas em áreas com IDs de banco 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.
Campos personalizados privados são suportados para entry e users:
Isso protege o valor somente quando as reservas privadas estão habilitadas e configuradas. Teste todas as funções relevantes; não use a privacidade da interface do usuário como um substituto para minimizar dados confidenciais.
A validação de 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 em um local seguro para segredos ou marcações não confiáveis.
Ordem dos campos de controle¶
Coloque os campos de reserva explicitamente nas páginas de criação e visualização:
Os campos não listados são anexados em 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 reserva:
$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, projete e teste uma extensão específica do site em vez de presumir que $select_options as traduz automaticamente.
Alterar, remover e atualizar¶
Antes de encurtar uma coluna ou alterar seu tipo, inspecione os valores existentes e teste a conversão. Antes de remover um campo, remova suas referências de configuração, implante essa alteração, confirme se o aplicativo funciona e só então elimine a coluna através do processo normal de alteração do banco de dados. Para campos de reserva, altere entry e repeat.
Registre cada coluna personalizada na documentação de operações do site e verifique-a novamente após cada atualização do MRBS. Os scripts de esquema MRBS padrão não possuem essas 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 excluir uma reserva funciona.
- Uma série recorrente e uma ocorrência podem ser editadas corretamente.
- Os padrões do banco de dados são aplicados a novos registros.
- 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 usuários exibe apenas os campos pretendidos.
- Os procedimentos de backup e restauração incluem o esquema estendido.