No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluence - Atlassian Summit 2010

11,340 views

Published on

No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluence

Charles Hall, Astrium & Jim Severino, Atlassian

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
  • <br /><object type="application/x-shockwave-flash" data="http://cdn.episodic.com/player/EpisodicPlayer.swf?config=http%3A%2F%2Fcdn.episodic.com%2Fshows%2Fqgxefentgirm%2Fqhxo8hwleqs6%2Fconfig.xml" width="350" height="288"><param name="movie" value="http://cdn.episodic.com/player/EpisodicPlayer.swf?config=http%3A%2F%2Fcdn.episodic.com%2Fshows%2Fqgxefentgirm%2Fqhxo8hwleqs6%2Fconfig.xml"></param><embed src="http://cdn.episodic.com/player/EpisodicPlayer.swf?config=http%3A%2F%2Fcdn.episodic.com%2Fshows%2Fqgxefentgirm%2Fqhxo8hwleqs6%2Fconfig.xml" width="350" height="288" type="application/x-shockwave-flash"></embed></object>
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
11,340
On SlideShare
0
From Embeds
0
Number of Embeds
1,700
Actions
Shares
0
Downloads
90
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide





















































































































  • No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluence - Atlassian Summit 2010

    1. 1. 1
    2. 2. No coding necessary Building user macros and dynamic reports inside Confluence Charles Hall Wiki Project Manager Astrium 2
    3. 3. Who we are Europe’s leading satellite manufacturer, number 3 worldwide. www.astrium.eads.net 3
    4. 4. Agenda • What is a user macro? • Worked example – colored tables • Worked example – watermark for wiki pages • Showcase 4
    5. 5. User macros • What is a user macro? • Added functionality • Removes complexity for authors • Facilitates re-use • Restrictions • Used by users but… • …installed by system admins 5
    6. 6. User macros • Where can they be used? • Pages • Templates • In other user macros But not… • Custom HTML (administration screen) • What do they consist of? • HTML • Javascript • Velocity Template Language (VTL) • References to Confluence objects 6
    7. 7. Complexity vs Functionality High Effort Capability Functionality Complexity High Low Standard Wiki {html} User Custom plugins markup macros 7
    8. 8. An example A performance testing tool – {response-time} See your cheat sheet for details of this macro 8
    9. 9. Introducing jQuery “I thought you said no coding?” • A Javascript library for simplifying HTML document traversal, event handling, and adding AJAX support easily • Already used by Confluence • Minimizes Javascript coding 9
    10. 10. Worked example 1 – colored tables No more boring tables! 10
    11. 11. Worked example 1 – colored tables Listing 2 ## Macro name: color-table ## Macro has a body: N ## Body format: n/a ## Output: HTML ## Comment header ## Developed by: Charles Hall ## Developed for: All users ## Date created: 23/02/2010 ## Installed by: Charles Hall ## Apply coloring to alternate rows of tables. <script type="text/javascript" defer="defer"> jQuery(document).ready(function() { jQuery("tr:even").css("background-color", "#318db6"); jQuery("tr:odd").css("background-color", "#f86a46"); }); </script> 11
    12. 12. Worked example 1 – side effects Test, test then test some more! 12
    13. 13. Firebug to the rescue Pinpoint the table(s) we want to modify Point & Click 13
    14. 14. Worked example 1 – revised version Listing 2 ## Macro name: color-table ## Macro has a body: N ## Body format: n/a ## Output: HTML ## ## Developed by: Charles Hall ## Developed for: All users ## Date created: 23/02/2010 ## Installed by: Charles Hall ## Apply coloring to alternate rows of any tables with the class of confluenceTable. <script type="text/javascript" defer="defer"> jQuery(document).ready(function() element.class { jQuery("table.confluenceTable tr:nth-child (odd)").css("background-color", "#f86a46"); jQuery("table.confluenceTable tr:nth-child (even)").css("background-color", "#318db6"); }); </script> 14
    15. 15. Worked example 1 – Accepting parameters {color-table:A2C1D5|BFEBEF} 15
    16. 16. Worked example 1 – Accepting parameters Listing 2 ## Apply coloring to alternate rows of any tables with the class of confluenceTable. #set($oddcolor= $param0) #set($evencolor= $param1) ## Check for valid odd color, otherwise use default #if (!$oddcolor) #set ($oddcolor="ffffff") #end ## Check for valid even color, otherwise use default #if (!$evencolor) #set ($evencolor="ededed") #end 16
    17. 17. Worked Example 2 - Using Confluence objects 17
    18. 18. Worked example 2 – Referencing the image {watermark:draft.gif|no-repeat|1000} Listing 3 #set($image= $param0) #set($repeat = $param1) #set($minheight= $param2) <script type="text/javascript" defer="defer"> jQuery(document).ready(function() { jQuery('#mainViewPane').css('background-image', 'url($config.getBaseUrl() $content.getAttachmentNamed("$image").getDownloadPath())'); … 2 strings joined together 18
    19. 19. Worked example 2 – Setting the repeat behaviour Listing 3 #set($repeat = $param1) … ## Add the specified repeat behaviour #if ($repeat) jQuery('#mainViewPane').css('background-repeat', '$repeat'); #end … 19
    20. 20. Worked example 2 – Specifying a minimum height Listing 3 #set($minheight = $param2) … ## Check for a specified minimum height #if ($minheight) jQuery('#mainViewPane').css('height', '$minheight'); #end … 20
    21. 21. Worked example 2 – reusing How about defining some standard watermarks to help users? • Draft • Company logo Could we make the syntax easier too? • {draft-watermark} • {company-watermark} 21
    22. 22. Worked example 2 – reusing Listing 3 … ## Check for full image path or attachment name #if($image.startsWith("http",0)) #set($url=$image) #else #set($url=$config.getBaseUrl()+ $content.getAttachmentNamed("$image").getDownloadPath()) #end … 22
    23. 23. Worked example 2 – reusing Listing 4 ## Macro name: draft-watermark ## Macro has a body: N ## Body format: n/a ## Output: HTML ## ## Developed by: Charles Hall ## Developed for: Astrium wiki Calling the existing user macro ## Date created: 19/04/2010 ## Installed by: Charles Hall ## N.B. Calls the watermark user macro ## draft.gif must reside in "company" space #set($url="http://globalcorp.com/confluence/download/attachments/74416134/draft.gif") $action.getHelper().renderConfluenceMacro("{watermark:$url|no-repeat|1000}") 23
    24. 24. Showcase 24
    25. 25. Gradient background 25
    26. 26. Page theme 26
    27. 27. Client-side RSS feed reader 27
    28. 28. Tweaking another plug-in 28
    29. 29. Tweaking a standard feature
    30. 30. In summary • Add real functionality • Users can control behaviour • Access to some Confluence objects • Can perform useful UI tweaks • Can be re-used in other macros Useful resources • See your cheat sheet 30
    31. 31. Building Awesome Dashboards with Confluence Jim Severino, Atlassian
    32. 32. Confluence Free Plugins + Your Data = Awesome
    33. 33. JDBC
    34. 34. Plugins For Reporting: 1. SQL 2. Chart 3. Run 4. Scripting
    35. 35. Plugin: SQL {sql} Wiki JDBC DB
    36. 36. Plugin: SQL {sql} Table JDBC DB
    37. 37. Plugin: Chart {chart} {sql} Table DB
    38. 38. Plugin: Chart {chart} {sql} Table DB
    39. 39. https://confluence.foo.com /FOO/Sales+Report? run_1_category=motorcycles &run_1=run
    40. 40. https://confluence.foo.com/FOO/Sales+Report ?run_1_category=motorcycles Other Parameters! &run_1_foo=...&run_1_bar=...
    41. 41. Plugin: Run {run} {chart} {sql} Table DB
    42. 42. Scripting
    43. 43. Text Image (c) United Feature Comics
    44. 44. Rule #1: Macro Security
    45. 45. Recommendation: Use the Macro Security Plugin.
    46. 46. Rule #2: Datasource Security
    47. 47. Rule #3: Summary Databases
    48. 48. Recommendation: Run Reports off a Summary Database
    49. 49. Plugins For Reporting: 1. SQL 2. Chart 3. Run 4. Scripting
    50. 50. http://bit.ly/ howto-report

    ×