Jump to content

Дата и время в выпадающем окне


Recommended Posts

Есть поле в товаре с типом datetime. Нужно, чтобы при установке курсора в этом поле выскакивало что-то на подобие этого:

 

Есть ли готовые решения?

Link to post
Share on other sites

Помнится, либо ДарАмал, либо Даня выкладывали скрин товара в админке и там было нечто похожее (только без времени). Может они подскажут, от куда это бралось. Сейчас попробую найти тему.

 

Вот нашел: http://forum.simplacms.ru/topic/3810-data-postupleniya-01-01-1970/?p=31101

Edited by koteyka
Link to post
Share on other sites

http://jqueryui.com/datepicker/

Кстати, в т.ч. и с помощью этой "библиотеки" осуществляется анимированный перенос товара в корзину (jquery-ui.min). Т.е. можно легко ее чуть расширить, добавив datepicker. <...> Смотрю API - со временем, кажется, все-таки не работает...

Link to post
Share on other sites

Нашел такую вещь: http://shublog.ru/ajax/jquery/jquery-calendars-and-datepickers/

Там есть datepicker - dynDateTime

Скачал его, в папку simpla/design/html/ закинул сам jquery.dynDateTime.js и папки css и lang.

в той же папке в файле index.tpl прописал

		<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>		
		<script type="text/javascript" src="jquery.dynDateTime.js"></script>
		<script type="text/javascript" src="lang/calendar-en.js"></script>
		<link rel="stylesheet" type="text/css" media="all" href="css/calendar-win2k-cold-1.css"  />

В файле product.tpl (там же) в тегах литерал вставил скрипт

				<script type="text/javascript">
					jQuery(document).ready(function() {
						jQuery("#dateTimeCustom").dynDateTime({
							showsTime: true,
							ifFormat: "%Y/%m/%d-%H:%M",
							daFormat: "%l;%M %p, %e %m,  %Y",
							align: "TL",
							electric: false,
							singleClick: false,
							displayArea: ".siblings('.dtcDisplayArea')",
							button: ".next()" //next sibling
						});
					});
				</script>

и в основной форме в див вставил вызов

				<span class="dtcDisplayArea"></span> <br/>
				<input type="text" name="dateTimeCust" id="dateTimeCustom"/>
				<button type="button">PICKER</button>

Вот что вышло

Но при нажатии на PICKER ничего не происходит.

Хотя сделал файл  html в той же папке, код в нем

<html>
	<head>
		<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.2.6/jquery.min.js"></script>		
		<script type="text/javascript" src="jquery.dynDateTime.js"></script>
		<script type="text/javascript" src="lang/calendar-en.js"></script>
		<link rel="stylesheet" type="text/css" media="all" href="css/calendar-win2k-cold-1.css"  />
	</head>
	<body>		
			
				<h3>Using time, custom format, display output, and different pop-up location</h3>
				<script type="text/javascript">
					jQuery(document).ready(function() {
						jQuery("#dateTimeCustom").dynDateTime({
							showsTime: true,
							ifFormat: "%Y/%m/%d-%H:%M",
							daFormat: "%l;%M %p, %e %m,  %Y",
							align: "TL",
							electric: false,
							singleClick: false,
							displayArea: ".siblings('.dtcDisplayArea')",
							button: ".next()" //next sibling
						});
					});
				</script>
				The selected date is <span class="dtcDisplayArea"></span> <br/>
				<input type="text" name="dateTimeCust" id="dateTimeCustom"/>
				<button type="button">PICKER</button>
				
    </body>
</html>

Так он срабатывает.

Где я что и не так сделал?

Link to post
Share on other sites

В общем сделал так, может кому пригодится. Делалось для http://forum.simplacms.ru/topic/4434-taymer-obratnogo-otscheta-akcii/

В файле simpla/design/html/product.tpl после 

 	<div id="name">
		<input class="name" name=name type="text" value="{$product->name|escape}"/> 
		<input name=id type="hidden" value="{$product->id|escape}"/> 
		<div class="checkbox">
			<input name=visible value='1' type="checkbox" id="active_checkbox" {if $product->visible}checked{/if}/> <label for="active_checkbox">Активен</label>
		</div>
		<div class="checkbox">
			<input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Рекомендуемый</label>
		</div>
	</div> 

 

Добавляем

	<div>	
		<script language="javascript" type="text/javascript" src="design/html/datetimepicker.js"></script>
		<label for="data_akcii">Дата окончания акции: </label><input class="data_akcii" type="text" name="data_akcii" id="data_akcii" value="{$product->data_akcii|escape}" maxlength="15" size="15"><a href="javascript:NewCal('data_akcii','yyyymmdd',true,24)"><img src="design/html/img/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>
	</div>
	<br>

 

В папку simpla/design/html/ кинуть содержимое архива http://yadi.sk/d/1uJqvny85COWv

Должно получиться так:

 

Скрипт я чуть подправил, но не смог сделать, чтобы неделя была с понедельника. Может кто подправит?

Link to post
Share on other sites

В БД поле добавил? Во всех файлах изменения сделал? Опиши ход действий - что где сделал. В админке когда добавил дату она сохранилась?

Link to post
Share on other sites

В БД поле добавил? Во всех файлах изменения сделал? Опиши ход действий - что где сделал. В админке когда добавил дату она сохранилась?

В админке добавил дату, все сохранилось.

Но я походу даже половины не сделал((

Я делал все так:

В общем сделал так, может кому пригодится. Делалось для http://forum.simplacms.ru/topic/4434-taymer-obratnogo-otscheta-akcii/

В файле simpla/design/html/product.tpl после 

<div id="name"><input class="name" name=name type="text" value="{$product->name|escape}"/><input name=id type="hidden" value="{$product->id|escape}"/><div class="checkbox"><input name=visible value='1' type="checkbox" id="active_checkbox" {if $product->visible}checked{/if}/> <label for="active_checkbox">Активен</label></div><div class="checkbox"><input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Рекомендуемый</label></div></div>
 

Добавляем

<div><script language="javascript" type="text/javascript" src="design/html/datetimepicker.js"></script><label for="data_akcii">Дата окончания акции: </label><input class="data_akcii" type="text" name="data_akcii" id="data_akcii" value="{$product->data_akcii|escape}" maxlength="15" size="15"><a href="javascript:NewCal('data_akcii','yyyymmdd',true,24)"><img src="design/html/img/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a></div><br>
 

В папку simpla/design/html/ кинуть содержимое архива http://tumko.ho.ua/datetimepicker.rar

Должно получиться так:

 

Скрипт я чуть подправил, но не смог сделать, чтобы неделя была с понедельника. Может кто подправит?

 

 

Скиньте пожалуйста ссылку или мануал, что нужно дальше править?
Link to post
Share on other sites

В simpla/ProductAdmin.php найди строку

$product->name = $this->request->post('name');

После нее вставь

$product->data_akcii = $this->request->post('data_akcii');

В /simpla/design/html/product.tpl после

 	<div id="name">
		<input class="name" name=name type="text" value="{$product->name|escape}"/> 
		<input name=id type="hidden" value="{$product->id|escape}"/> 
		<div class="checkbox">
			<input name=visible value='1' type="checkbox" id="active_checkbox" {if $product->visible}checked{/if}/> <label for="active_checkbox">Активен</label>
		</div>
		<div class="checkbox">
			<input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Рекомендуемый</label>
		</div>
	</div> 

Добавить

	<div>	
		<script language="javascript" type="text/javascript" src="design/html/datetimepicker.js"></script>
		<label for="data_akcii">Дата окончания акции: </label><input class="data_akcii" type="text" name="data_akcii" id="data_akcii" value="{$product->data_akcii|escape}" maxlength="15" size="15"><a href="javascript:NewCal('data_akcii','yyyymmdd',true,24)"><img src="design/html/img/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a>
	</div>
	<br>

В папку simpla/design/html/ кинуть содержимое архива http://yadi.sk/d/1uJqvny85COWv

В api/products.php в функции public function get_product, там где

p.name,
p.url,
........

Добавить

p.data_akcii,

Тоже самое сделать ниже в функции public function get_products

 

В базе данных выполнить запрос

ALTER TABLE `s_products` ADD `data_akcii` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';

Вывод самого гаджета

{include file = 'Lux-Countdown-Action/main.tpl'

         item = $product|default:false

         title = 'Акция: товар недели'
         description = 'Успейте купить до конца акции! Осталось'

         link_css = true
         link_engine = true}

делаешь в шаблоне product.tpl, там где тебе нужно.

Не забудь выполнить пункты из http://forum.simplacms.ru/topic/4434-taymer-obratnogo-otscheta-akcii/?p=4434

Всё.

 

Если всё сделано правильно, то в товаре получится примерно так

Link to post
Share on other sites

koteyka, в 16 Apr 2013 - 09:48, сказал(а):

В simpla/ProductAdmin.php найди строку

 

$product->name = $this->request->post('name');
После нее вставь

$product->data_akcii = $this->request->post('data_akcii');
В /simpla/design/html/product.tpl после

<div id="name"><input class="name" name=name type="text" value="{$product->name|escape}"/><input name=id type="hidden" value="{$product->id|escape}"/><div class="checkbox"><input name=visible value='1' type="checkbox" id="active_checkbox" {if $product->visible}checked{/if}/> <label for="active_checkbox">Активен</label></div><div class="checkbox"><input name=featured value="1" type="checkbox" id="featured_checkbox" {if $product->featured}checked{/if}/> <label for="featured_checkbox">Рекомендуемый</label></div></div>
Добавить

<div><script language="javascript" type="text/javascript" src="design/html/datetimepicker.js"></script><label for="data_akcii">Дата окончания акции: </label><input class="data_akcii" type="text" name="data_akcii" id="data_akcii" value="{$product->data_akcii|escape}" maxlength="15" size="15"><a href="javascript:NewCal('data_akcii','yyyymmdd',true,24)"><img src="design/html/img/cal.gif" width="16" height="16" border="0" alt="Pick a date"></a></div><br>
В папку simpla/design/html/ кинуть содержимое архива http://tumko.ho.ua/datetimepicker.rar

В api/products.php в функции public function get_product, там где

p.name,p.url,........
Добавить

p.data_akcii,
Тоже самое сделать ниже в функции public function get_products

 

В базе данных выполнить запрос

ALTER TABLE `s_products` ADD `data_akcii` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00';
Вывод самого гаджета

{include file = 'Lux-Countdown-Action/main.tpl'item = $product|default:falsetitle = 'Акция: товар недели'description = 'Успейте купить до конца акции! Осталось'link_css = truelink_engine = true}
делаешь в шаблоне product.tpl, там где тебе нужно.

Не забудь выполнить пункты из http://forum.simplacms.ru/topic/4434-taymer-obratnogo-otscheta-akcii/?p=4434

Всё.

 

Если всё сделано правильно, то в товаре получится примерно так

Несравненое спасибо, я сейчас попробую!
Link to post
Share on other sites
  • 1 year later...

Если б еще кто не пожалел выложить заново архив со счетчиком - совсем чудно было бы. Две хорошие, подробные, рабочие темы по нему, а сам исходник утерялся. Ни у кого не сохранился?
С уважением.

Link to post
Share on other sites
  • 2 weeks later...
  • 1 month later...

Не нужно искать никакой сторонний скрипт. В Simpla уже есть свой календарь, который прекрасно работает на странице добавления статей в блог.

0_12d88d_5d86acd4_orig.jpg

 

 

Просто подключите его на нужной странице в админке и пропишите имя поля в котором он должен появляться. Например так:

<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
<script>
$(function() {

	$('input[name="Имя поля"]').datepicker({
		regional:'ru',
		dateFormat: 'yy-mm-dd'
	});
</script>

Получаем:

 

0_12d88e_b02f30b9_orig.jpg

Edited by Maxman
Link to post
Share on other sites

спасибо, все работает

<script src="design/js/jquery/datepicker/jquery.ui.datepicker-ru.js"></script>
<script>
$(function() {

	$('input[name="data_akcii"]').datepicker({
		regional:'ru',
		dateFormat: 'yy-mm-dd'
	});
</script>

в нужном месте

<label class=property>Дата окончания акции: </label><input type=text name=data_akcii value='{$product->data_akcii|escape}'>
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...