Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

HTML
<script>

function
 download_file(data, fileName) {
	
var fileData = data;
	
var byteChars = $.base64('decode', fileData);
	
	
var ab = new ArrayBuffer(byteChars.length);
	
var ia = new Uint8Array(ab);
	
for (var i = 0; i < byteChars.length; i++) {
		ia[i] = byteChars.charCodeAt(i);
	}				
	
var blob = new Blob([ab], { type: 'application/pdf' }); 
	
	
if (window.navigator.msSaveOrOpenBlob) { // IE hack; see http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx
 	    window.navigator.msSaveOrOpenBlob(blob, fileName);
	   
	}
	
else {
		
var downloadUrl = URL.createObjectURL(blob);
		$(
"#download")
		.attr({
			
'download': fileName,
			
'href': downloadUrl
		});	
		$(
"#download")[0].click();
		window.history.back();
	}
	
};


function getQueryParameters() {
    var queryParams = {};
    var query = window.location.search.substring(1);
    var pairs = query.split('&');
    for (var i = 0; i < pairs.length; i++) {
        var pair = pairs[i].split('=');
        var key = decodeURIComponent(pair[0]);
        var value = decodeURIComponent(pair[1]);
        queryParams[key] = value;
    }
    return queryParams;
}

function updateMacroOnExistingPage() {

	console.log("updateMacroOnExistingPage");

    var queryParams = getQueryParameters();
    console.log("Queryparams: ", queryParams);
	

    // Define the macro name and parameters based on query parameters
    var macroName = 'Mineaftaler';
    var macroParameters = {
	    include_user_info: true,
 		REST_HTML_URL: 'http://foedus01.nsi.netic.dk:8080/NSI_Aftaler-1.1.1-SNAPSHOT/rest/html',
	    REST_DOWNLOAD_URL: 'http://foedus01.nsi.netic.dk:8080/NSI_Aftaler-1.1.1-SNAPSHOT/rest/base64encodefilebytes'
     };

    // Generate the updated macro markup
    var updatedMacroMarkup = '{' + macroName + ':';
    for (var key in macroParameters) {
        if (macroParameters.hasOwnProperty(key)) {
            updatedMacroMarkup += key + '=' + macroParameters[key] + '|';
        }
    }
    // Remove the trailing '|' character
    updatedMacroMarkup = updatedMacroMarkup.slice(0, -1);
    updatedMacroMarkup += '}';

    // Page ID of the existing Confluence page
    var pageId = '33594461'; // Replace with the actual Page ID

    // Make an AJAX request to retrieve the current page content
    AJS.$.ajax({
        url: '/rest/api/content/' + pageId + '?expand=body.storage,version',
        type: 'GET',
        success: function(data) {
            // Get the current page content

			console.log("Get content ok - data: ", data);

            var currentContent = data.body.storage.value;
			
			console.log("CurrentContent: ", currentContent);

			var incParm = "<ac:parameter ac:name=\"include_user_info\">true</ac:parameter>";
			var incParm2 = '<ac:parameter ac:name="include_user_info">true</ac:parameter>';
			var newParm = "<ac:parameter ac:name=\"include_user_info\">true</ac:parameter><ac:parameter ac:name=\"aftaledokument\">xxx.pdf</ac:parameter>"

			var result1 = currentContent.indexOf(incParm);
			var result2 = currentContent.indexOf(incParm2);
			
			console.log("Result 1: ", result1);
			console.log("Result 2: ", result2);

			var acParms = '<ac:parameter ac:name="REST_HTML_URL">http://foedus01.nsi.netic.dk:8080/NSI_Aftaler-1.1.1-SNAPSHOT/rest/html</ac:parameter>';
			acParms = acParms + '<ac:parameter ac:name="REST_DOWNLOAD_URL">http://foedus01.nsi.netic.dk:8080/NSI_Aftaler-1.1.1-SNAPSHOT/rest/base64encodefilebytes</ac:parameter>';
			acParms = acParms + '<ac:parameter ac:name="include_user_info">true</ac:parameter>'

			for (var key in queryParams) {
				if (queryParams.hasOwnProperty(key)) {
				    acParms = acParms + '<ac:parameter ac:name="' + key + '">' + queryParams[key]) + '</ac:parameter>';
				}
			}	

			acParms = acParms + '</ac:structured-macro>'
            
            // Replace the old macro markup with the updated macro markup
            // var updatedContent = currentContent.replace(/(\{MineAftaler:[^\}]+\})/g, updatedMacroMarkup);
			//var updatedContent = currentContent.replace(incParm, newParm);
			
			//var strippedContent = currentContent.replace(/<ac:parameter.*<\/ac:structured-macro>/g, acParms);
			// console.log("strippedContent: ", strippedContent);
			
			var updatedContent = currentContent.replace(/<ac:parameter.*<\/ac:structured-macro>/g, acParms);
			console.log("Updatedcontent: ", updatedContent);

            // Create a JSON payload for the REST API request to update the page
            var payload = {
                version: {
                   number: data.version.number + 1 // Increment this number if you want to update the page content
                },  
                type: 'page',      
                title: 'Mine aftaler',
                body: {
                    storage: {
                        value: updatedContent,
                        representation: 'storage'
                    }
                }
            };

            // Make an AJAX request to update the page content
            AJS.$.ajax({
                url: '/rest/api/content/' + pageId,
                type: 'PUT',
                contentType: 'application/json',
                data: JSON.stringify(payload),
                success: function(data) {
                    console.log('Macro on the page updated successfully.');
                },
                error: function(error) {
                    console.error('Error updating macro on the page:', error);
                }
            });
        },
        error: function(error) {
            console.error('Error retrieving page content:', error);
        }
    });
}
AJS.toInit(function() {
    updateMacroOnExistingPage();
});

</script>

...