How can I append a string to a wiki page on confluence?

agam360 September 7, 2013

I'd like to progremmatically append a string to the end of a wiki page/article on our wiki (using Java from play framework).

I tried going though the APIs but I didn't find any relevant methods to do so.

What should I do to acheive this?

3 answers

1 accepted

2 votes
Answer accepted
Amalia
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 8, 2013

You can do it like this:

//login to Confluence
            String token = service.login(user, passwd);
            
            // get page
            RemotePage page = service.getPage(token, "spaceKey", "page title");
            page.setContent(page.getContent() + "<p>append here</p>");
            
            //define the update options
            RemotePageUpdateOptions opt = new RemotePageUpdateOptions();
            opt.setVersionComment("new update");
            opt.setMinorEdit(true);
            
            // make some changes
            RemotePage updated = new RemotePage();
            updated = service.updatePage(token, page, opt);

            System.out.println("Content updated");
 
            System.out.println("content: " + updated.getContent()
            		+ "\nversion: " + updated.getVersion()
            		);

For more information:

https://developer.atlassian.com/display/CONFDEV/Confluence+XML-RPC+and+SOAP+APIs

https://developer.atlassian.com/display/CONFDEV/Remote+Confluence+Data+Objects

https://developer.atlassian.com/display/CONFDEV/Remote+Confluence+Methods

agam360 September 8, 2013

I made something similar (without the API function - raw xml) but it seems to not work when I try to insert html elements like <br /> - how can I update the pages with some basic html (specificly line breaks). - edit: I fixed it, the parser thought that it was a child node - though it shouldn't be.

1 vote
Bob Swift OSS (Bob Swift Atlassian Apps)
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 7, 2013

For those that just want to add text to pages (not do the programming part :) ), then modifyPage from Confluence Command Line Interface will do that. Use content to add text to the start of a page and content2 to add text to the end of the page.

agam360 September 8, 2013

And how can I do it programmatically? (an example or direction will be appreciated).

0 votes
HarryH
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Leaders.
September 7, 2013

You can add a conflucense listener, https://developer.atlassian.com/display/CONFDEV/Event+Listener+Module

And when detecting the page is created/updated, and then you can update the content of the page by appending the string, please refer to ContentEntityObject class in conflucence api, it allows to get and set the body content. You can search the class from https://docs.atlassian.com/atlassian-confluence/5.1.3/

agam360 September 7, 2013

I don't need a listener, I want to append the string from a remote server on his call. When my remote server wants to append a string, then is when I want to trigger the API call, but I couldn't find a proper example to do so.

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events