Paskal 23 окт 2013, 20:34

BBCodes в темах

Здравствуйте!
У меня на форуме есть раздел аукцион. Есть необходимость, что бы при выставлении лот на странице можно бы было выставлять сроки окончания. Соответственно каждый лот /тема/ будет отсчитывать свое время до окончания.

Время устанавливает автор темы.
На форум в качестве теста установил коды
Использование BBCode:
+
Замена HTML:
+
Но к сожалению при моей необходимости не работают. Может здесь нужен другой код, или прописать надо другое.

setTimeout("CountDowndmn(cdyear,cdmonth,cdday)",1000);} CountDowndmn(2011,06,01); //Дата отсчета: год, месяц, число
если оставляю эту дату то пишет, что конкурс закончен.
Когда изменяю на настоящий год, месяц и на два дня вперед то счет идет. Как на скрипте выше.
Но не работает с кнопками в сообщениях.
Комментарии: 14

CabinetAdmin 24 окт 2013, 14:24 Сообщение

В использование BBCode у вас есть {SIMPLETEXT}, в скрипте нет, если нужно чтобы автор темы сам забивал нужную дату, то поменяйте:

Код: Выделить всё

CountDowndmn(2011,06,01);
на:

Код: Выделить всё

CountDowndmn({SIMPLETEXT});
В теме используете таким образом:

Код: Выделить всё

[Taimer]2013,10,25[/Taimer]
Paskal » Вчера, 23:34 писал(а):Но не работает с кнопками в сообщениях.
Здесь не очень понял, с какими кнопками?
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 24 окт 2013, 15:10 Сообщение

Здравствуйте!
Спасибо большое за помощь и отзыв на мою проблему.
С датой в теме разобрался, но она округляется до 0 часов, можно ли кроме даты еще устанавливать и конкретное время окончания аукциона? Например как здесь у меня сейчас выставлено http://sellbook.com.ua/viewtopic.php?f= ... &sk=t&sd=a

Хотя в темах время окончания для всех одинаковое, так как в скрипте установил 2013.10.26
А вот как сделать, что бы каждая тема работала не зависимо друг от друга.
  • 0

CabinetAdmin 24 окт 2013, 15:27 Сообщение

Ну, если сделать как я описал выше, то будет у каждой темы в скрипте свои настройки даты и работать они будут независимо друг от друга. Или я неправильно понял?...
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 24 окт 2013, 15:39 Сообщение

с датой все получается, но осталось выставить время. Как это сделать пока вопрос?
  • 0

CabinetAdmin 24 окт 2013, 16:29 Сообщение

Время? Время скорее всего никак не сделать, нужно вносить правки в скрипт, какие именно я к сожалению не подскажу, попробую конечно "поковыряться" в скрипте, но вряд ли у меня что-то выйдет:)
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 24 окт 2013, 19:13 Сообщение

Спасибо большое, буду очень благодарен если получится.
  • 0

CabinetAdmin 28 окт 2013, 15:05 Сообщение

Как вы смотрите на такой вариант?
Использование BBCode:

Код: Выделить всё

[Taimer]{TEXT}[/Taimer]
Замена HTML:

Код: Выделить всё

<script language="JavaScript">
TargetDate = "{TEXT}";
BackColor = "";
ForeColor = "";
CountActive = true;
CountStepper = -1;
LeadingZero = false;
DisplayFormat = "До окончания конкурса осталось:<br /> %%D%% дн. %%H%% ч. %%M%% мин. и %%S%% сек.";
FinishMessage ="Конкурс закончился!";

/* Count Down */
function calcage(secs, num1, num2) {
	s = ((Math.floor(secs/num1))%num2).toString();
	if (LeadingZero && s.length < 2)
		s = "0" + s;
	return  + s;
}

function CountBack(secs) {
	if (secs < 0) {
		document.getElementById("cntdwn").innerHTML = FinishMessage;
		return;
	}
	DisplayStr = DisplayFormat.replace(/%%D%%/g, calcage(secs,86400,100000));
	DisplayStr = DisplayStr.replace(/%%H%%/g, calcage(secs,3600,24));
	DisplayStr = DisplayStr.replace(/%%M%%/g, calcage(secs,60,60));
	DisplayStr = DisplayStr.replace(/%%S%%/g, calcage(secs,1,60));

	document.getElementById("cntdwn").innerHTML = DisplayStr;
	if (CountActive)
		setTimeout("CountBack(" + (secs+CountStepper) + ")", SetTimeOutPeriod);
}

function putspan(backcolor, forecolor) {
	document.write("<div id='cntdwn' style='text-align: center; background-color:" + backcolor + 
                "; color:" + forecolor + "'></div>");
}

if (typeof(BackColor)=="undefined")
	BackColor = "";
if (typeof(ForeColor)=="undefined")
	ForeColor= "";
if (typeof(TargetDate)=="undefined")
	TargetDate = "12/31/2020 05:00 AM";
if (typeof(DisplayFormat)=="undefined")
	DisplayFormat = "%%D%% Days, %%H%% Hours, %%M%% Minutes, %%S%% Seconds.";
if (typeof(CountActive)=="undefined")
	CountActive = true;
if (typeof(FinishMessage)=="undefined")
	FinishMessage = "";
if (typeof(CountStepper)!="number")
	CountStepper = -1;
if (typeof(LeadingZero)=="undefined")
	LeadingZero = true;

CountStepper = Math.ceil(CountStepper);
if (CountStepper == 0)
	CountActive = false;
var SetTimeOutPeriod = (Math.abs(CountStepper)-1)*1000 + 990;
putspan(BackColor, ForeColor);
var dthen = new Date(TargetDate);
var dnow = new Date();
if(CountStepper>0)
	ddiff = new Date(dnow-dthen);
else
	ddiff = new Date(dthen-dnow);
gsecs = Math.floor(ddiff.valueOf()/1000);
CountBack(gsecs);
</script>
Подсказка:

Код: Выделить всё

Обратный отсчёт: [taimer]12/31/2013 18:00[/taimer]
Единственное чего нет, это склонений: день, дней, дня, час, часа и тд.
Плюс можно сделать оформление шрифта и фона для времени до и после. Чтобы изменить цвет шрифта и заднего фона для отчёта времени, в настройках скрипта (в самом начале) находите:

Код: Выделить всё

BackColor = "";
ForeColor = "";
Между "" добавляете свои цвета, например white или #FFFFFF:

Код: Выделить всё

BackColor = "white";
ForeColor = "red";
BackColor - цвет фона, ForeColor - цвет шрифта.

Для оформления цвета после окончания отсчёта, находите:

Код: Выделить всё

if (typeof(BackColor)=="undefined")
	BackColor = "";
if (typeof(ForeColor)=="undefined")
	ForeColor= "";
Меняете так же как и для оформления до, BackColor - фон, ForeColor - шрифт.
Можно дополнительное оформление сделать, добавив в тему стиля, к примеру:

Код: Выделить всё

#cntdwn {
	padding: 5px;
	border: 1px dotted #000;
}
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 29 окт 2013, 09:18 Сообщение

Это то, что нужно!!! Спасибо Вам и Респект! +++
С цветами по работаю, и протестирую окончательно.
немного уточню при установке необходимо

Код
[Taimer]{TEXT}[/Taimer]

Изменить на:
Код
[taimer]{TEXT}[/taimer]

Ув. CabinetAdmin у Вас "руки Золотые".... ну в общем "Золотые руки" (помните как в к-ф "Москва слезам не верит").
Еще раз спасибо за помощь. И спасибо за нужный и полезный форум.
  • 0

CabinetAdmin 29 окт 2013, 13:49 Сообщение

Paskal » Сегодня, 12:18 писал(а):Код
[Taimer]{TEXT}[/Taimer]

Изменить на:
Код
[taimer]{TEXT}[/taimer]
Оно для движка форума одинаково, что с большой буквы, что с маленькой. Главное отличие от первоначальной версии, это вместо {SIMPLETEXT} стоит {TEXT}.
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 29 окт 2013, 16:24 Сообщение

Все оставил как есть, работает отлично.
За исключением того, что решил что бы после окончания времени шрифт менялся автоматически на красный. Перепробовал варианты но без изменения. Если изменить одновременно на красный шрифт ДО и После то шрифт меняется ( и во время аукциона). А так, что бы изменился После вопрос пока для меня открыт.
  • 0

CabinetAdmin 29 окт 2013, 17:04 Сообщение

Хм... Вроде испытывал, работало, сейчас попробовал, не хотит... То ли я пока его модернизировал чего-то выкинул, то ли комментировал "по ходу пьесы". Посмотрю, может чуть переделать скрипт придётся:)

Но самый простой способ, это забыть про выставление цвета через скрипт, а вместо:

Код: Выделить всё

FinishMessage ="Конкурс закончился!";
поставить:

Код: Выделить всё

FinishMessage ="<span class='finish'>Конкурс закончился!</span>";
И в тему стиля добавить:

Код: Выделить всё

#cntdwn { color: black; }
#cntdwn .finish { color: red; }
В таком варианте даже проще, можно даже некоторые моменты в скрипте удалить.
+например
А можно сделать так, чтобы пользователь сам выбирал цвет отсчёта времени, а по окончании он был всегда красным... Можно чтобы он оба цвета сам выбирал...
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 30 окт 2013, 14:57 Сообщение

Все что выше поменял, сократил. А куда именно вставить в тему стиля этот код?

#cntdwn { color: black; }
#cntdwn .finish { color: red; }
  • 0

CabinetAdmin 30 окт 2013, 16:06 Сообщение

Просто в самый конец.
  • 0
Хочешь поблагодарить? Есть способы: заходи на форум, создавай темы, делись опытом и наработками, общайся!

Paskal 30 окт 2013, 16:53 Сообщение

Получилось, работает как и надо! Еще раз спасибо огромное!
  • 0

Похожие темы