templates bugfix - now supports multiple conditionals of the same variable; added data-favourited button and deprecated reliance on BS3

v1.18.x
psychobunny 11 years ago
parent 168052bf45
commit 48e36e3c31

@ -291,8 +291,7 @@ define(function() {
var pid = $(this).parents('li').attr('data-pid');
var uid = $(this).parents('li').attr('data-uid');
var element = $(this).find('i');
if ($(element).hasClass('fa-star-o')) {
if ($(this).attr('data-favourited') == 'false') {
socket.emit('api:posts.favourite', {
pid: pid,
room_id: app.currentRoom
@ -542,7 +541,9 @@ define(function() {
var favEl = document.querySelector('.post_rep_' + data.pid).nextSibling;
if (favEl) {
favEl.className = 'fa fa-star';
$(favEl).parent().addClass('btn-warning');
$(favEl).parent()
.addClass('btn-warning')
.attr('data-favourited', true);
}
}
});
@ -552,7 +553,9 @@ define(function() {
var favEl = document.querySelector('.post_rep_' + data.pid).nextSibling;
if (favEl) {
favEl.className = 'fa fa-star-o';
$(favEl).parent().removeClass('btn-warning');
$(favEl).parent()
.removeClass('btn-warning')
.attr('data-favourited', false);
}
}
});

@ -241,7 +241,7 @@
}
function makeConditionalRegex(block) {
return new RegExp("<!--[\\s]*IF " + block + "[\\s]*-->[\\s\\S]*<!--[\\s]*ENDIF " + block + "[\\s]*-->", 'g');
return new RegExp("<!--[\\s]*IF " + block + "[\\s]*-->([\\s\\S]*?)<!--[\\s]*ENDIF " + block + "[\\s]*-->", 'g');
}
function getBlock(regex, block, template) {
@ -311,25 +311,26 @@
} else {
function checkConditional(key, value) {
var conditional = makeConditionalRegex(key),
conditionalBlock = conditional.exec(template);
if (conditionalBlock !== null) {
conditionalBlock = conditionalBlock[0].split(/<!-- ELSE -->/);
if (conditionalBlock[1]) {
// there is an else statement
if (!value) {
template = template.replace(conditional, conditionalBlock[1]);
matches = template.match(conditional);
if (matches !== null) {
for (var i = 0, ii = matches.length; i < ii; i++) {
var conditionalBlock = matches[i].split(/<!-- ELSE -->/);
if (conditionalBlock[1]) {
// there is an else statement
if (!value) {
template = template.replace(matches[i], conditionalBlock[1]);
} else {
template = template.replace(matches[i], conditionalBlock[0]);
}
} else {
template = template.replace(conditional, conditionalBlock[0]);
// regular if statement
if (!value) {
template = template.replace(matches[i], '');
}
}
} else {
// regular if
if (!value) {
template = template.replace(conditional, '');
}
}
}
}
}
@ -341,7 +342,6 @@
checkConditional('@last', blockInfo.iterator === blockInfo.total);
}
template = replace(namespace + d, data[d], template);
}
}

@ -66,12 +66,9 @@
<div class="btn-group">
<button class="btn btn-sm btn-default follow main-post" type="button" title="Be notified of new replies in this topic"><i class="fa fa-eye"></i></button>
<button class="favourite btn btn-sm btn-default <!-- IF posts.favourited --> btn-warning <!-- ENDIF posts.favourited -->" type="button">
<button data-favourited="{posts.favourited}" class="favourite btn btn-sm btn-default <!-- IF posts.favourited --> btn-warning <!-- ENDIF posts.favourited -->" type="button">
<span class="favourite-text">[[topic:favourite]]</span>
<span class="post_rep_{posts.pid}">{posts.reputation} </span>
<!-- IF posts.favourited -->
<i class="fa fa-star"></i>
<!-- ELSE -->

Loading…
Cancel
Save