Its always nice to make changes using a custom module instead of editing the core modules. That way, you will be able to debug your issues. Here is what works for me:
/custom_module/static/src/js/subst.js
function subst() {
var vars = {};
var x = document.location.search.substring(1).split('&');
for (var i in x) {
var z = x[i].split('=', 2);
vars[z[0]] = unescape(z[1]);
}
var x=['frompage', 'topage', 'page', 'webpage', 'section', 'subsection', 'subsubsection'];
for (var i in x) {
var y = document.getElementsByClassName(x[i]);
for (var j=0; j<y.length; ++j)
y[j].textContent = vars[x[i]];
}
var operations = {
'last-page': function (elt) {
elt.style.visibility = (vars.page === vars.topage) ? "visible" : "hidden";
},
'first-page': function (elt) {
elt.style.display = (vars.page == "1") ? "initial" : "none";
},
'other-page': function (elt) {
elt.style.display = (vars.page != "1") ? "initial" : "none";
},
};
for (var klass in operations) {
var y = document.getElementsByClassName(klass);
for (var j=0; j<y.length; ++j)
operations[klass](y[j]);
}
}
XML to replace enque subst.js using custom_module:
<template id="minimal_layout" inherit_id="report.minimal_layout">
<xpath expr="//script" position="replace">
<script src='/custom_module/static/src/js/subst.js'></script>
</xpath>
</template>
You can then use class="first-page" and class="other-page" in your views.
PS. Some older versions of the report module will enqueue the subst.js differently. Refer to that if you get an "id not found in view" error.