The following code will modify all electronic file links, such as PDF documents, to open using ElectronicFile.aspx instead of DocView.aspx in Laserfiche WebLink 11.x
1. Open Browse.aspx in a text editor, copy the code below and paste it right above the </body> element.
<script>
(function() {
var proxied = window.XMLHttpRequest.prototype.send;
var sent = false;
window.XMLHttpRequest.prototype.send = function() {
sent = true;
var pointer = this
var intervalId = window.setInterval(function(){
console.log('Ready State: ' + pointer.readyState);
if(pointer.readyState != 4){
return;
}
clearInterval(intervalId);
if(sent)
transform_links();
sent = false;
}, 1);
return proxied.apply(this, [].slice.call(arguments));
};
// After initial load, observe the table that contains the links for any additions due to scrolling
var t = document.getElementsByClassName('p-datatable-table')[0];
var observer = new MutationObserver(entryname_column_changes);
observer.observe(t, {
attributes: false,
childList: true, // report added/removed nodes
subtree: true, // observe any descendant elements
});
})();
function entryname_column_changes(mutations){
for (let mutation of mutations) {
if (mutation.type === 'childList') {
transform_links();
}
}
}
function transform_links() {
//Obtain the EntryNameColumn cells in the browse table and loop through them after a slight delay
$(".EntryNameColumn").delay(500).each(function () {
//console.log($(this).text());
// Find all A elements
$(this).find("a").each(function() {
// Get all a elements that have a class value of ElectronicFileIcon
var ef = $(this).find("div.ElectronicFileIcon");
// console.log($(this).attr("href"));
// console.log(ef.length);
if(ef.length == 1){
// Get the existing URL
var old_url = $(this).attr("href");
// Transform links that have not already been processed
if(old_url.includes('DocView')){
// Create a new URL based upon the old one
var new_url = old_url.replace("DocView","ElectronicFile").replace("?id=","?docid=");
// Replace old URL with our new one
$(this).attr("href",new_url);
// Clone the content which removes all existing event handlers
var b = $(this).clone();
// Replace existing content with the clone content which will allow the ElectronicFile link to work.
$(this).replaceWith(b);
}
}
});
});
};
</script>
2. Save browse.aspx and refresh the page. All of the electronic file links should now open directly.
Hope this helps!
Wesley Funderberg