Pular para conteúdo

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

ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine TINYINT NOT NULL DEFAULT 0;
ALTER TABLE mrbs_room
  ADD COLUMN coffee_machine SMALLINT NOT NULL DEFAULT 0;

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:

$datalist_options['entry.catering'] = array(
    'Coffee',
    'Sandwiches',
    'Hot lunch',
);

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:

$is_mandatory_field['entry.catering'] = true;

Ou apenas em áreas com IDs de banco de dados 1 e 3:

$is_mandatory_field['entry.catering'] = array(1, 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:

$is_private_field['entry.internal_notes'] = true;
$is_private_field['users.phone'] = true;

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:

$vocab_override['en']['entry.catering.placeholder'] =
    'State allergies or special requirements';

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:

$edit_entry_field_order = array(
    'name',
    'catering',
    'description',
);

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:

$report_search_field_order = array(
    'report_start',
    'report_end',
    'catering',
    'roommatch',
);

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 entry e repeat sã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.