Fórum OpenCart Brasil

Por um e-commerce livre, confiável e profissional

Suporte geral sobre problemas técnicos para OpenCart v2.x.
#77986
Olá bom dia a todos, estou tentando criar uma extensao ocmod para desativar os domingos no campo de calendario nas opções de produtos, isto é necessário por que o cliente não faz entregas aos domingos, porém no dia das mães sim.
A parte que interessa está aqui:
Código: Selecionar todos
		 <operation>
			<search position="replace"><![CDATA[
			 <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" data-date-format="YYYY-MM-DD HH:mm" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control" />
			]]></search>
			<add><![CDATA[
			 <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" data-date-format="DD/MM/YYYY HH:mm" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control" />
			]]></add> 
		</operation>

		 <operation>
			<search position="replace"><![CDATA[
			$('.date').datetimepicker({pickTime: false, minDate:new Date()});
			]]></search>
			<add><![CDATA[
			$('.date').datetimepicker({
    			pickTime: false,
    			minDate:new Date(),
    			daysOfWeekDisabled: [0],
    			beforeShowDay: function (Date) {
        			var mothersDay = [13, 05, 2018];
                    if (date.getDate() === mothersDay[0] && date.getMonth() === mothersDay[1] - 1 && date.getFullYear() === mothersDay[2]) return true;
                }
			});
			]]></add> 
		</operation>
Eu uso o "daysOfWeekDisabled: [0]," para desativar os domingos, ok funciona perfeito.
uso o "minDate:new Date()," para não deixar ativos datas anteriores a de hoje(atual do pedido).

Mas o problema está no "beforeShowDay", este não funciona de jeito nenhum!
é aqui que está a função que precisa ser disparada para ativar uma determinada data (dia das mães), mesmo que caia no domingo (fora a data informada no array outras que caem no domingo devem ser mantidas inativas).

Será que alguém ai bem entendido de javascript/jquery pode me dar uma luz?
#78082
Ninguém se habilitou? Vamos lá então, resolvi temporariamente de uma forma alternativa. Mas como está agora tenho de cadastrar todos os domingos do ano que serão desativados. Segue código da modificaçao (ocmod p/ oc2.3.0.2):
Código: Selecionar todos
<modification>
   <name><![CDATA[Formatar Data na pagina do produto]]></name>
   <code>DZ9DateFormat</code>
	<version><![CDATA[1.0]]></version>
	<author><![CDATA[Sandro M. Ferreira]]></author>
	<link><![CDATA[http://www.dz9agencia.com.br]]></link>

<file path="catalog/view/theme/*/template/product/product.tpl">

		<operation>
			<search position="replace"><![CDATA[
			<input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" data-date-format="YYYY-MM-DD" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control" />
			]]></search>
			<add><![CDATA[
			<input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" data-date-format="DD/MM/YYYY" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control" />   
			]]></add> 
		</operation>

		 <operation>
			<search position="replace"><![CDATA[
			 <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" data-date-format="YYYY-MM-DD HH:mm" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control" />
			]]></search>
			<add><![CDATA[
			 <input type="text" name="option[<?php echo $option['product_option_id']; ?>]" value="<?php echo $option['value']; ?>" data-date-format="DD/MM/YYYY HH:mm" id="input-option<?php echo $option['product_option_id']; ?>" class="form-control" />
			]]></add> 
		</operation>


		 <operation>
			<search position="replace"><![CDATA[
			$('.date').datetimepicker({pickTime: false, minDate:new Date()});
			]]></search>
			<add><![CDATA[
			$('.date').datetimepicker({
    			format: 'DD/MM/YYYY', //formata data Brasil
    			pickTime: false,
    			minDate:new Date(), //menor data ativa é hoje
    			//daysOfWeekDisabled: [0], (desativa domingos)
    			//enabledDates: [moment("05/13/2018")] (era pra ativar datas informadas, mas conflita com o acima)
                disabledDates: ['06/05/2018','20/05/2018','27/05/2018'] //(aqui estou desativando manualmente alguns domingos)
			});
			//console.log(enabledDates);
			]]></add> 
		</operation>
</file>
</modification>
A função: daysOfWeekDisabled: [0] (desativa todos os domingos), mas ela ativada junto do 'enabledDates' (ativa datas), o enabledDates não ativa os domingos que eu quero (algum feriado ou data comemorativa que a floricultura queira permitir entregas, mesmo que nos demais domingos do ano eles não façam entregas. Exemplo foi o dia das mães).
A ideia seria resolver este conflito.
#78159
Tente substituir a função jquery pela abaixo, lembrando que para o script funcionar perfeitamente o fuso horário do servidor deve esta configurado para o Brasil, caso não tiver você pode acrescentar esse código no início do php "date_default_timezone_set('America/Sao_Paulo');"
Código: Selecionar todos
$('.date').datetimepicker({
	format: 'DD/MM/YYYY', //formata data Brasil
	pickTime: false,
	minDate:new Date()<?php if (date( 'w' ) == 0) { ?>,
	disabledDates: ['<?php echo date( 'd/m/Y' ); ?>']<?php } ?>
});

Gente preciso de ajuda urgente. Na migraç&a[…]

Caro @reds , muito obrigado pela resposta.

PHP 8+ incompatibilidade

Toda tradução para a versão 3[…]

Ola @alex3257 Se você precisa apenas ver […]