Estou criando um formulário no Drupal 7 com a API do formulário. No momento, posso criar um campo de entrada de calendário comum com o seguinte código:
$form['services_tab']['schedule_datepicker'] = array(
'#title' => t('Pick the desired date'),
'#type' => 'date_popup',
'#date_year_range' => '0:0',
'#date_format' => 'Y-m-d',
'#prefix' => '<div id="datepicker-schedule">',
'#suffix' => '</div>',
);
No momento, posso exibir o lindo pop-up do calendário. O que estou tentando alcançar é ativar ou desativar determinadas datas com base em uma regra como: desativar todos os sábados e domingos; ou até remover o estado de clique de datas específicas com base em uma lista de feriados nacionais ...
Isso é algo que pode ser alcançado com a codificação PHP ou precisa ser feito com o jQuery? Caso o jQuery seja a solução, eu gostaria de receber dicas de como fazer isso ... O calendário é uma tabela, mas as células da tabela não têm um ID ou algo que possa me ajudar a encontrá-las e desativá-las com base em uma regra. ..
Obrigado.
Respostas:
Você pode passar algumas opções do Datepicker do php para o elemento date_popup através da chave '#datepicker_options':
Com esse método, você pode passar quase qualquer opção, exceto aquelas que aceitam uma função como valor, como
beforeShowDay
a necessária para restringir fins de semana ou feriados de acordo com a resposta referenciada pelo Nikit: /programming/501943/can- the-jquery-ui-datepicker-ser-feito-para-desativar-sabados-e-domingos-e-holidPortanto, o javascript é necessário. Primeiro, você precisa incluir um arquivo js personalizado do código do módulo:
e forneça algum código
FOO.js
para estender as configurações definidas pelo módulo date_popup com nossas próprias opções.Aqui está um exemplo que adiciona a opção básica para desativar fins de semana para todos os widgets de selecionador de datas na página:
Estender aos feriados é deixado como um exercício para o leitor :)
Nota: as três ocorrências de
FOO
meus exemplos não precisam ser o mesmo literal, ou seja: você pode fornecer umBAZ
comportamentoBAR.js
deFOO.module
.Atualização: para estender o exposto acima para a disponibilidade de dias personalizados, basta adicionar uma função retornando verdadeiro / falso para o dia recebido pelos parâmetros.
Você pode encontrar um exemplo mais completo no módulo Restrições de data .
fonte
Eu usei o módulo Data Restrictions. Isso fornece e opção para restringir a data no número de parâmetros, como data fixa, data relativa etc.
fonte