вопрос
Установил на 9.6 скрипт отчета времени до определенной даты. Но он почему то не работает.
В простом файле html работает а на движке - нет.
Что только не пробовал. Сам скрипт вставил в шаблон main.tpl как отдельный блок {include file="clock.tpl"}, но идет глюк.
вот сам скрипт в clock.tpl:
в файле main,tpl прописал:
jquery.countdown.js:
test.js:
Запускаю в простом файле html - работает как часики. А когда на DLE, то вроде бы начинает работать и тут же останавливается и не работает.
Подскажите, пожалуйста, что надо и где поправить, чтобы стал работать на DLE?
В простом файле html работает а на движке - нет.
Что только не пробовал. Сам скрипт вставил в шаблон main.tpl как отдельный блок {include file="clock.tpl"}, но идет глюк.
вот сам скрипт в clock.tpl:
<script type="text/javascript">
$(document).ready(function() {
do_counter();
});
</script>
в файле main,tpl прописал:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery.countdown.js"></script>
<script type="text/javascript" src="js/test.js"></script>
</head>
jquery.countdown.js:
(function( $ ) {
var init = function( userOptions ) {
var options = {
stepTime: 60,
format: "dd:hh:mm:ss",
startTime: "01:12:32:55",
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
autoStart: true,
timerEnd: function() {
},
image: "digits.png"
};
var digits = [], interval;
// Draw digits in given container
var createDigits = function(where) {
var c = 0;
var hCounter = 0;
var mCounter = 0;
var sCounter = 0;
// Check the incoming startTime
// console.log("options.startTime = " + options.startTime);
if ((typeof options.startTime == 'object') && (options.startTime.constructor == Date)) {
// console.log("Have been passed a date object? hopefully?");
var now = new Date();
if (options.startTime.getTime() < now.getTime()) {
options.startTime.setFullYear(options.startTime.getFullYear() + 1);
// console.log("options.startTime is now = " + options.startTime);
}
// console.log("options.startTime.getTime() = " + options.startTime.getTime());
// console.log("now.getTime() = " + now.getTime());
var datediff = Math.ceil((options.startTime.getTime() - now.getTime()) / 1000);
// console.log("datediff = " + datediff);
var days = Math.floor(datediff / 86400);
// console.log("days = " + days);
var hours = Math.floor((datediff % 86400) / 3600);
var minutes = Math.floor(((datediff % 86400) % 3600) / 60);
var seconds = ((datediff % 86400) % 3600) % 60;
options.startTime = days + ":" + hours + ":" + minutes + ":" + seconds;
}
_startTime = options.startTime.split("");
// Count the number of ":" in the startTime.
cCounter = 0;
for (var i = 0; i < _startTime.length; i++) {
if (isNaN(parseInt(_startTime[i]))) {
// console.log("cCounter++ (" + _startTime[i] + ")");
cCounter = cCounter + 1;
}
}
// Zero pad each section of the startTime if required.
// console.log("options.startTime = " + options.startTime)
var chunks = options.startTime.split(":");
// console.log("chunks.length = " + chunks.length);
var newstartTime = "";
for (var i = 0; i < chunks.length; i++) {
var max = 59;
if (chunks.length == 3) {
if (i == 0) {
max = 23;
}
}
if (chunks.length == 4) {
if (i == 0) {
max = 9999;
}
if (i == 1) {
max = 23;
}
}
if (chunks[i] > max) {
chunks[i] = max;
}
if (chunks[i].length < 2) {
chunks[i] = "0" + chunks[i];
}
}
options.startTime = chunks.join(":");
// console.log("options.startTime = " + options.startTime)
// Calculate what the format should be:
switch (cCounter) {
case 3:
// console.log("options.startTime.split(':', 1).length is " + options.startTime.split(":")[0].length);
if (options.startTime.split(":")[0].length == 3) {
options.format = "ddd:hh:mm:ss";
} else {
options.format = "dd:hh:mm:ss";
}
break;
case 2:
options.format = "hh:mm:ss";
break;
case 1:
options.format = "mm:ss";
break;
case 0:
options.format = "ss";
break;
}
// console.log("cCounter == " + cCounter);
// console.log("options.format == " + options.format);
// Iterate each startTime digit, if it is not a digit
// we'll assume that it's a separator
options.startTime = options.startTime.split("");
options.format = options.format.split("");
// console.log("options.startTime = " + options.startTime);
// console.log("options.startTime.length = " + options.startTime.length);
for (var i = 0; i < options.startTime.length; i++) {
// console.log("options.startTime[" + i + "] = " + options.startTime[i]);
if (parseInt(options.startTime[i]) >= 0) {
// console.log("parseInt >= 0");
var elem = jQuery('<div id="cnt_' + i + '" class="cntDigit" />').css({
height: options.digitHeight * options.digitImages * 10,
"float": 'left', background: 'url(\'' + options.image + '\')',
width: options.digitWidth});
// console.log("elem = " + elem);
digits.push(elem);
margin(c, -((parseInt(options.startTime[i]) * options.digitHeight *
options.digitImages)));
digits[c].__max = 9;
// Add max digits, for example, first digit of minutes (mm) has
// a max of 5. Conditional max is used when the left digit has reach
// the max. For example second "hours" digit has a conditional max of 4
// console.log("options.format[" + i + "] = " + options.format[i]);
switch (options.format[i]) {
case 'h':
if (hCounter < 1) {
// console.log("digits[c] = " + digits[c]);
digits[c].__max = 2;
// console.log("settings digits[" + c + "].__max = 2");
hCounter = 1;
} else {
digits[c].__condmax = 3;
// console.log("settings digits[" + c + "].__condmax = 3");
}
break;
case 'd':
digits[c].__max = 9;
break;
case 'm':
if (mCounter < 1) {
digits[c].__max = 5;
mCounter = 1;
} else {
digits[c].__condmax = 9;
}
break;
case 's':
if (sCounter < 1) {
digits[c].__max = 5;
sCounter = 1;
} else {
digits[c].__condmax = 9;
}
break;
}
++c;
} else {
elem = jQuery('<div class="cntSeparator"/>').css({"float": 'left'}).text(options.startTime[i]);
}
where.append('<div>');
where.append(elem);
where.append('</div>');
}
};
// Set or get element margin
var margin = function(elem, val) {
if (val !== undefined)
return digits[elem].css({'marginTop': val + 'px'});
return parseInt(digits[elem].css('marginTop').replace('px', ''));
};
// Makes the movement. This is done by "digitImages" steps.
var moveStep = function(elem) {
// console.log("digits[elem] = " + digits[elem]);
digits[elem]._digitInitial = -(digits[elem].__max * options.digitHeight * options.digitImages);
return function _move() {
mtop = margin(elem) + options.digitHeight;
if (mtop == options.digitHeight) {
margin(elem, digits[elem]._digitInitial);
if (elem > 0) moveStep(elem - 1)();
else {
clearInterval(interval);
for (var i = 0; i < digits.length; i++) margin(i, 0);
options.timerEnd();
return;
}
if ((elem > 0) && (digits[elem].__condmax !== undefined) &&
(digits[elem - 1]._digitInitial == margin(elem - 1)))
margin(elem, -(digits[elem].__condmax * options.digitHeight * options.digitImages));
return;
}
margin(elem, mtop);
if (margin(elem) / options.digitHeight % options.digitImages != 0)
setTimeout(_move, options.stepTime);
if (mtop == 0) digits[elem].__isma = true;
}
};
var start = function() {
if (interval == undefined)
interval = setInterval(moveStep(digits.length - 1), 1000);
}
var pause = function() {
if (interval) {
window.clearInterval(interval);
interval = undefined;
}
}
this.data("countdown", {
"start": start,
"pause": pause
});
$.extend(options, userOptions);
this.css({height: options.digitHeight, overflow: 'hidden'});
createDigits(this);
if (options.autoStart) {
start();
}
};
$.fn.countdown = function( method ) {
var methods = this.data("countdown");
if ( methods && methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return init.apply( this, arguments );
} else {
$.error( 'Method ' + method + ' does not exist on jQuery.countdown' );
}
};
})( jQuery );
test.js:
function do_counter() {
$('#counter2').countdown({
startTime: "9",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits.png"
});
$('#counter3').countdown({
startTime: "60",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits_transparent.png"
});
$('#counter4').countdown({
startTime: "1:1",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits_inverted.png"
});
$('#counter5').countdown({
startTime: "11:11",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits2.png"
});
$('#counter6').countdown({
startTime: "1:1:1",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits2_red.png"
});
$('#counter7').countdown({
startTime: "11:11:11",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits2_blue.png"
});
$('#counter8').countdown({
startTime: "1:1:1:1",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits2_green.png"
});
$('#counter9').countdown({
startTime: "11:11:11:11",
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits2_yellow.png"
});
var _date = new Date();
_date.setMonth(4);
_date.setDate(19);
_date.setHours(15);
_date.setMinutes(0);
_date.setSeconds(0);
$('#counter10').countdown({
startTime: _date,
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "http://localhost/optina-pustin.info/clok/img/digits_transparent.png"
});
var _date = new Date();
_date.setMonth(0);
_date.setDate(1);
_date.setHours(0);
_date.setMinutes(0);
_date.setSeconds(0);
$('#counter11').countdown({
startTime: _date,
stepTime: 1,
digitImages: 6,
digitWidth: 53,
digitHeight: 77,
image: "img/digits2_orange.png"
});
};
Запускаю в простом файле html - работает как часики. А когда на DLE, то вроде бы начинает работать и тут же останавливается и не работает.
Подскажите, пожалуйста, что надо и где поправить, чтобы стал работать на DLE?