Is there a way in Confluence to create a checkbox without it being a task?

I would like to create a checklist on a confluence page, but the list is not a list of tasks. I have looked at the checklist plug-in, but don't want to create a page for each item on the list (could be as large as 20 or 30 items). Anyone have any ideas?

7 answers

1 accepted

5 votes
Davin Studer Community Champion Dec 02, 2014

How about something like this? Just put a comma separated list in the macro body.

Macro Name:
dynamic_checkboxes

Macro Title:
Dynamic Checkboxes

Description:
This will create dynamic checkboxes from a comma separated list.

Macro Body Processing:
Escaped

Template:

## Developed by: Davin Studer
## Date created: 12/2/2014
## @noparams

#set ($containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager'))
#set ($getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null))
#set ($containerManager=$getInstanceMethod.invoke(null,null))
#set ($containerContext=$containerManager.containerContext)
#set ($contentPropertyManager=$containerContext.getComponent('contentPropertyManager'))
#set ($d = '$')

#if($req.getParameter('submit') == "true" && $req.getParameter('checkbox') && $req.getParameter('checkbox') != "")
    #if($req.getParameter('value') && $req.getParameter('value') != "")
        #set ($value = $req.getParameter('value'))
    #else
        #set ($value = "")
    #end
    $contentPropertyManager.setStringProperty($content, $req.getParameter('checkbox'), $value)
#end
 
#if ($body != "")
    <form class="aui" id="dynCheckboxForm">
    #foreach($box in $body.split(","))
        #if($contentPropertyManager.getStringProperty($content, "dynCheckbox$box") == "checked")
            #set($checked = 'checked="checked"')
        #else
            #set($checked = '')
        #end
        <div class="checkbox">
            <input class="checkbox dynCheckbox" type="checkbox" name="dynCheckbox$box" id="dynCheckbox$box" $checked value="checked" />
            <label for="dynCheckbox$box">$box</label>
        </div>  
    #end
    </form>
#end

<script type="text/javascript">
AJS.toInit(function(){
    AJS.$('.dynCheckbox').click(function(){
        AJS.${d}.ajax({
            type: 'GET',
			data: {
                submit: 'true',
                checkbox: AJS.$(this).attr('id'),
                value: AJS.$(this).is(':checked') ? 'checked' : ''
            },
			url: "$content.getUrlPath()",
			success: function(data) {
			},
			error: function() {
			}
        });
    });
});
</script>

I guess I hit my limit for comments yesterday, so had to wait until today to say thanks. This is exactly what I needed.

Davin Studer Community Champion Dec 03, 2014

Glad it works.

This is Fansastic! Thank you

This is a fantastic macro but it doesn't save the checked state for me. Is there any way to do it?

Hello Davin, you're an absolute legend for sharing this! The code doesn't seem to work for me. I pasted the code and entered the corresponding title,name and macro body processing.

 

When I insert the macro i get this error 

 

"Error rendering macro 'dynamic_checkboxes' : Error occurred rendering template content"

 

Any ideas? I'm on confluence server 6.4.0

That is because when Atlassian migrated this forus from their previous site they messed up code blocks. So, all the html is now escaped out. Copy the code and do a find a replace on these in this order ...

 FindReplace
&&
&lt;<
&gt;>

If I have Conflunce-cloud, where do I write this code?

Davin Studer Community Champion Apr 04, 2018

There is no way to do this with the cloud version as you cannot write user macros.

Just want to add a simple solution that I found to this problem in case others are still looking to do this.

If the task does not have any text after it, it does not register as a task. So to create a checklist I put the task checkbox into a table cell by itself with the items for the checklist in a cell beside it.

It functions purely as a checkbox then with saved state and does not register as a task. Really easy to add with the shortcut [] as well.

image2016-8-8 21:8:40.png

Davin Studer Community Champion Aug 08, 2016

Nice work around.

not "working arround" with me.

placing the "checkbox-symbol" OUTSIDE the table (somewhere on the page) = OK
saving the page will create a checkbox that users can click on the viewpage.

placing the "checkbox-symbol" INSIDE the table = NOK. users cannot click the checkbox on the viewpage.

see https://answers.atlassian.com/questions/41460975

Just enter [] without blanks - automaticly converted to a checkbox. Very usefull in tables instead of using yes/no or similar stuff

Roland,

I understand you have no plans to spend money purchasing the plugin to help you with checkboxes, but may be, a bit more advanced plugin will help you to solve this particular problem, as well as anything else when you want to store some structured data in Confluence. Take a look at ConfiForms

Various types of forms: checklists, registrations, feedback... also, with rest api, so you can do some reporting when needed 

0 vote

Hi Ronald,

I believe you are looking to a macro like this one: Checkbox by Gumvillage.

I hope this helps.

Cheers,

Rodrigo

Thanks for your response. I did see that macro, but was trying to avoid spending money for a checkbox.

Addons also cause headaches when upgrading to the next build. I find it very unfortunate that most answers on answers.atlassian.com are someone telling us to buy paid plugins, especially considering the price of the base product.

Davin Studer Community Champion Jul 06, 2016

The above user macro is free. I promise I won't charge for it. smile

0 vote
Davin Studer Community Champion Dec 02, 2014

Is there a reason you can't use the task list for this?

A little more information might help. We have spaces for client projects. The space has an area with meeting notes and action items are identified during these meetings and tracked as tasks in confluence. Additional project work is tracked in JIRA. The main page of the clients space shows these action items. As part of the project plan there is a "shopping list" of items we need from the client. The space contains a page with a list of these items and I would like to turn this list into a checklist without adding to the action item list. I can filter tasks from that page using a label, but then I would also lose the ability to note action items/tasks on that page and wanted to avoid that. I think what I'm really going to need to do, is learn how to write my own macro for a checkbox and add it as a user macro, but I just don't have the time to do that right now.

Suggest an answer

Log in or Sign up to answer
Atlassian Community Anniversary

Happy Anniversary, Atlassian Community!

This community is celebrating its one-year anniversary and Atlassian co-founder Mike Cannon-Brookes has all the feels.

Read more
Community showcase
Published 8 hours ago in Confluence

Think you know shares vs. @mentions in Confluence? Take this collab quiz.

To anyone who doubts that Atlassians are a little too obsessed with collaboration, and tools related thereto, let me describe a recent discussion we had (which took place on our internal Confluence, ...

85 views 2 4
Read article

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you