atlascamp 2013: confluence patterns

80
Ryan Thomas Atlassian Confluence Patterns Getting the most out of your add-on May 2013

Upload: colleenfry

Post on 23-Jan-2015

250 views

Category:

Technology


0 download

DESCRIPTION

 

TRANSCRIPT

Page 1: AtlasCamp 2013: Confluence patterns

Ryan ThomasAtlassian

Confluence PatternsGetting the most out of your add-on

May 2013

Page 2: AtlasCamp 2013: Confluence patterns

About Me

Page 3: AtlasCamp 2013: Confluence patterns

• OnDemand Team Lead

• Ex-Confluence Developer

• From Sydney, Australia

[email protected]

• @RyanAtlassian

About Me

Page 4: AtlasCamp 2013: Confluence patterns
Page 5: AtlasCamp 2013: Confluence patterns

In Context

Page 6: AtlasCamp 2013: Confluence patterns

In Context Notification

Page 7: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big

Notification

Page 8: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 9: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 10: AtlasCamp 2013: Confluence patterns

What is a design pattern?

Page 11: AtlasCamp 2013: Confluence patterns

“a design pattern is a general reusable solution to a commonly occurring problem”

What is a design pattern?

Page 12: AtlasCamp 2013: Confluence patterns

In ContextEditor Pattern

Page 13: AtlasCamp 2013: Confluence patterns

In Context Pattern

Making sure the object your macro creates is contextual inside of the editor!

Page 14: AtlasCamp 2013: Confluence patterns

In Context Pattern

Making sure the object your macro creates is contextual inside of the editor!

Page 15: AtlasCamp 2013: Confluence patterns

In Context Pattern 1

A vanilla macro placeholder does not give enough context about the macro.

Page 16: AtlasCamp 2013: Confluence patterns

In Context Pattern 1

A vanilla macro placeholder does not give enough context about the macro.

Use an Image Based Placeholder for your macro.

Page 17: AtlasCamp 2013: Confluence patterns

In Context Pattern 1

Page 18: AtlasCamp 2013: Confluence patterns

In Context Pattern 1

Page 19: AtlasCamp 2013: Confluence patterns

In Context Pattern 1• Image Based Placeholders allow you to

dynamically generate an image to use for rendering in the editor.

• Easy to retrofit to your existing macros.

https://developer.atlassian.com/display/CONFDEV/Providing+an+Image+as+a+Macro+Placeholder+in+the+Editor

Page 20: AtlasCamp 2013: Confluence patterns

In Context Pattern 1• Image Based Placeholders allow you to

dynamically generate an image to use for rendering in the editor.

• Easy to retrofit to your existing macros.

https://developer.atlassian.com/display/CONFDEV/Providing+an+Image+as+a+Macro+Placeholder+in+the+Editor

Page 21: AtlasCamp 2013: Confluence patterns

In Context Pattern 2

Your macro augments or modifies the properties of images.

Page 22: AtlasCamp 2013: Confluence patterns

In Context Pattern 2

Your macro augments or modifies the properties of images.

Instead of using a macro, add this functionality to the Image Property Dialog.

Page 23: AtlasCamp 2013: Confluence patterns

In Context Pattern 2

Page 24: AtlasCamp 2013: Confluence patterns

In Context Pattern 2

Page 25: AtlasCamp 2013: Confluence patterns

In Context Pattern 2• Allows you to extend the Image Property

Dialog

• Use it when your macro modifies the properties of images and you wish for more seamless integration with the editor.

https://developer.atlassian.com/display/CONFDEV/Extending+the+Image+Properties+Dialog

Page 26: AtlasCamp 2013: Confluence patterns

In Context Pattern 3

Your macro generates a link when rendered.

Page 27: AtlasCamp 2013: Confluence patterns

In Context Pattern 3

Your macro generates a link when rendered.

Extend the Link Browser Dialog to add the functionality here, instead of using a macro.

Page 28: AtlasCamp 2013: Confluence patterns

In Context Pattern 3

Page 29: AtlasCamp 2013: Confluence patterns

In Context Pattern 3

Select a repository...

Page 30: AtlasCamp 2013: Confluence patterns

https://developer.atlassian.com/display/CONFDEV/Extending+the+Confluence+Insert+Link+Dialog

In Context Pattern 3• Useful for complex links, or links that

require a lot of parameters.

• Useful for links that have some administration setup

• Simplifies the user experience.

Page 31: AtlasCamp 2013: Confluence patterns

You would like to capture data a user pastes into the Confluence editor, to better represent it.

In Context Pattern 4

Page 32: AtlasCamp 2013: Confluence patterns

You would like to capture data a user pastes into the Confluence editor, to better represent it.

Extend the editor autoconvert to convert user-pasted data into any editor content you like.

In Context Pattern 4

Page 33: AtlasCamp 2013: Confluence patterns

In Context Pattern 4• Register a paste handler

• Can convert to images or arbitrary wiki content, not just macros!

Page 34: AtlasCamp 2013: Confluence patterns

In Context Pattern 4• Register a paste handler

• Can convert to images or arbitrary wiki content, not just macros!

https://developer.atlassian.com/display/CONFDEV/Extending+Autoconvert

Page 35: AtlasCamp 2013: Confluence patterns

In Context PatternUse Case Plugin

PointMore Info

Macro generates an image Image Based Placeholder

https://developer.atlassian.com/display/CONFDEV/Providing+an+Image+as+a+Macro+Placeholder+in+the+Editor

Macro modifies images Extend the Image Dialog

https://developer.atlassian.com/display/CONFDEV/Extending+the+Image+Properties+Dialog

Macro create a link Extend the Link Dialog

https://developer.atlassian.com/display/CONFDEV/Extending+the+Confluence+Insert+Link+Dialog

Capture user-pasted content

Extend Autoconvert https://developer.atlassian.com/display/CONFDEV/Extending+Autoconvert

Page 36: AtlasCamp 2013: Confluence patterns

You’re Too BigEditor Pattern

Page 37: AtlasCamp 2013: Confluence patterns

Your macro has too many parameters, or you wish to provide a custom user experience.

You’re Too Big Pattern

Page 38: AtlasCamp 2013: Confluence patterns

Your macro has too many parameters, or you wish to provide a custom user experience.

Write a custom editor dialog for your macro.

You’re Too Big Pattern

Page 39: AtlasCamp 2013: Confluence patterns

You’re Too Big Pattern

Page 40: AtlasCamp 2013: Confluence patterns

You’re Too Big Pattern

Page 41: AtlasCamp 2013: Confluence patterns

You’re Too Big Pattern

Page 42: AtlasCamp 2013: Confluence patterns

You’re Too Big Pattern

AJS.bind(“init.rte”, function() {

AJS.MacroBrowser.setMacroJsOverride(“myMacro”, { opener: function(macro) { // Dialog drawing code goes here... } }

}

Easy to do!

Page 43: AtlasCamp 2013: Confluence patterns

You’re Too Big Pattern

https://developer.atlassian.com/display/AUI/Dialog

• Use AJS.MacroBrowser.setMacroJsOverride to override the editor functionality for a macro & display your own dialog.

• Do this when you have too many parameters, or you want a custom editor experience.

Page 44: AtlasCamp 2013: Confluence patterns

You’re Too Big Pattern

https://developer.atlassian.com/display/AUI/Dialog

• Use AJS.MacroBrowser.setMacroJsOverride to override the editor functionality for a macro & display your own dialog.

• Do this when you have too many parameters, or you want a custom editor experience.

Page 45: AtlasCamp 2013: Confluence patterns

Think of the 90%Editor Pattern

Page 46: AtlasCamp 2013: Confluence patterns

The 90% PatternThink of the 90% use case!

Page 47: AtlasCamp 2013: Confluence patterns

The 90% PatternThink of the 90% use case!

Page 48: AtlasCamp 2013: Confluence patterns

You are building a macro with a number of common parameters.

The 90% Pattern 1

Page 49: AtlasCamp 2013: Confluence patterns

You are building a macro with a number of common parameters.

Add them to the macro property panel.

The 90% Pattern 1

Page 50: AtlasCamp 2013: Confluence patterns

The 90% Pattern 1Extend the property panel with common parameters

Page 51: AtlasCamp 2013: Confluence patterns

The 90% Pattern 1Extend the property panel with common parameters

Colour preset buttons

Page 52: AtlasCamp 2013: Confluence patterns

The 90% Pattern 1Extend the property panel with common parameters

Colour preset buttons

Text input field

Page 53: AtlasCamp 2013: Confluence patterns

AJS.Confluence.PropertyPanel.Macro.registerButtonHandler("buttonId", function(e, macroNode) {     updateMacro(macroNode, "paramValue"); });

var updateMacro = function(macroNode, param) {    var $macroDiv = AJS.$(macroNode);    AJS.Rte.getEditor().selection.select($macroDiv[0]);    AJS.Rte.BookmarkManager.storeBookmark();     var macroRenderRequest = {        contentId: Confluence.Editor.getContentId(),        macro: {            name: "status-light",            params: {"percentage": param},            defaultParameterValue: "",            body : ""        }    };     tinymce.confluence.MacroUtils.insertMacro(macroRenderRequest);};

Page 54: AtlasCamp 2013: Confluence patterns

AJS.Confluence.PropertyPanel.Macro.registerButtonHandler("buttonId", function(e, macroNode) {     updateMacro(macroNode, "paramValue"); });

https://developer.atlassian.com/display/CONFDEV/Extending+the+Macro+Property+Panel

Page 55: AtlasCamp 2013: Confluence patterns

Your macro has many required parameters, trying to cater to every eventuality.

The 90% Pattern 2

Page 56: AtlasCamp 2013: Confluence patterns

Your macro has many required parameters, trying to cater to every eventuality.

Think about the parameters you’re making required!

The 90% Pattern 2

Page 57: AtlasCamp 2013: Confluence patterns

The 90% Pattern 2

The status macro does it wrong!

Page 58: AtlasCamp 2013: Confluence patterns

The 90% Pattern 2

• These will cause the macro edit dialog to always be displayed

• Is the field actually required, or could you set a sensible default for it?

• Using sensible defaults can lead to a smoother user experience

Think about required parameters!

Page 59: AtlasCamp 2013: Confluence patterns

NotificationAdmin Pattern

Page 60: AtlasCamp 2013: Confluence patterns

Notification Pattern

Page 61: AtlasCamp 2013: Confluence patterns

Notification Pattern

Page 62: AtlasCamp 2013: Confluence patterns

You have configuration needed to be done by an administrator.

Notification Pattern 1

Page 63: AtlasCamp 2013: Confluence patterns

You have configuration needed to be done by an administrator.

Create an Administration Task Item so that admins can track and complete the config.

Notification Pattern 1

Page 64: AtlasCamp 2013: Confluence patterns

Notification Pattern 1

Page 65: AtlasCamp 2013: Confluence patterns

Notification Pattern 1

<web-item key="plugin-admin-task" section="system.admin.tasks/general" weight="150">

<label key="plugin.admin.task.title"/> <description key="plugin.admin.task.description"/> <link id="configure-mail">/admin/mail/viewmailservers.action</link> <condition class="com.atlassian.examples.DefaultMailServerExistsCondition" invert="true"/></web-item>

Add a web-item to the system.admin.tasks/general section

atlassian-plugin.xml

Page 66: AtlasCamp 2013: Confluence patterns

Notification Pattern 1• Ensure your addon is correctly configured

by creating an administrator task for it

• Admin tasks display in the Confluence Administration page.

• The can be checked off as completed by administrators

https://developer.atlassian.com/display/CONFDEV/Creating+an+Admin+Task

Page 67: AtlasCamp 2013: Confluence patterns

You want to keep your users informed of what’s new when they install your plugin.

Notification Pattern 2

Page 68: AtlasCamp 2013: Confluence patterns

You want to keep your users informed of what’s new when they install your plugin.

Configure a post-install-url for your plugin.

Notification Pattern 2

Page 69: AtlasCamp 2013: Confluence patterns

Notification Pattern 2

Page 70: AtlasCamp 2013: Confluence patterns

Notification Pattern 2<plugin-info> <description>${project.description}</description> <version>${project.version}</version> <vendor name="${project.organization.name}" url="${project.organization.url}"/>

<param name="configure.url">/plugins/servlet/configureServlet</param> <param name="post.install.url">/plugins/servlet/installServlet</param> <param name="post.update.url">/plugins/servlet/installServlet</param></plugin-info>

atlassian-plugin.xml

Page 71: AtlasCamp 2013: Confluence patterns

Notification Pattern 2• Specifies a page that appears after

installation, or update

• Keep administrators up to date with the latest features of your addon

• Only appears when installed via Atlassian Marketplace

https://developer.atlassian.com/display/UPM/Plugin+Metadata+Files+used+by+UPM+and+Marketplace

Page 72: AtlasCamp 2013: Confluence patterns
Page 73: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 74: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 75: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 76: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 77: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 78: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

Page 79: AtlasCamp 2013: Confluence patterns

In Context

You’re Too Big The 90%

Notification

https://developer.atlassian.com/

Page 80: AtlasCamp 2013: Confluence patterns

Thank you!