Hello!
I'm fairly new to Confluence and Velocity.
I was able to create a macro that removes table borders on a page.
Now I am attempting to create a macro that allows the user to set the table border between 0 and 2 pixels, unique for each table on the page! (The user will use a separate macro for each table).
At the moment, using a div and class, the last chunk CSS code affects every table on the page, as expected. So I would like to use an id instead, and generate the id to be unique using a time stamp.
However, the code is now ineffective.
Any thoughts?
CODE
## This macro takes a table and lets the user choose a border width limited to 0 (none), 1, or 2 ## @param width:title=Width|type=enum|enumValues=0,1,2|desc=Set border width, limited to 0,1, or 2 ## #if (!$paramwidth) #set ($border = "0px") #else #set($border = "${paramwidth}px") #end ## <style> .tableWrapper th { border: $border; border-style: solid; } .tableWrapper td { border: $border; border-style: solid; } </style> ## <div class=tableWrapper> $body </div>
CODE
## This macro takes a table and lets the user choose a border width limited to 0 (none), 1, or 2 ## @param width:title=Width|type=enum|enumValues=0,1,2|desc=Set border width, limited to 0,1, or 2 ## #if (!$paramwidth) #set ($border = "0px") #else #set($border = "${paramwidth}px") #end #set($id = $content.getCurrentDate().getTime()) ## <style> .$id th { border: $border; border-style: solid; } .$id td { border: $border; border-style: solid; } </style> ## <div id=$id> $body </div>
That's nearly there, but id attributes cannot be numbers, well perhaps now with HTML5. Instead try something like:
#set($id = "random-" + $action.dateFormatter.calendar.timeInMillis)
Hat tip: @Joseph Clark-- https://answers.atlassian.com/questions/218260/random-number-with-velocity
If that doesn't work, add a data-border-width attribute to the wrapping div and then use JavaScript to apply that to the enclosed table cells -- classy, I know.
Thank you so so much!! This worked beautifully!
I had to remove the dash, and I didn't include the <span>, but it's perfect!
For anyone interested, here is the full solution:
## This macro takes a table and lets the user choose a border width limited to 0 (none), 1, or 2 ## @param width:title=Width|type=enum|enumValues=0,1,2|desc=Set border width, limited to 0,1, or 2 ## #if (!$paramwidth) #set ($border = "0px") #else #set($border = "${paramwidth}px") #end #set($id = "random" + $action.dateFormatter.calendar.timeInMillis) ## <style> .$id th { border: $border; border-style: solid; } .$id td { border: $border; border-style: solid; } </style> ## <div class=$id> $body </div>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
It looks like the editor added the nasty <span> -- I didn't write that. Glad you got the gist of it ;)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.