atlascamp 2011: confluence 4 and beyond

79

Upload: sherif-mansour

Post on 29-Jan-2018

3.832 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: AtlasCamp 2011: Confluence 4 and Beyond
Page 2: AtlasCamp 2011: Confluence 4 and Beyond

Sherif MansourConfluence Product Manager, Atlassian

Charles MillerConfluence Architect, Atlassian

Confluence 4 and Beyond

2

Page 3: AtlasCamp 2011: Confluence 4 and Beyond

• Confluence 4 for

• Users

• Plugin Developers

• Beyond the 4.0 editing experience

• Releases

• Other 4.0 developer improvements

Agenda

3

Page 4: AtlasCamp 2011: Confluence 4 and Beyond

Confluence 4.0

4

Page 5: AtlasCamp 2011: Confluence 4 and Beyond

Confluence 4.0

4

Page 6: AtlasCamp 2011: Confluence 4 and Beyond

5

Page 7: AtlasCamp 2011: Confluence 4 and Beyond

5

experiences Fir! class

Page 8: AtlasCamp 2011: Confluence 4 and Beyond

5

experiences Fir! class

Page 9: AtlasCamp 2011: Confluence 4 and Beyond

6

First class for content

Page 10: AtlasCamp 2011: Confluence 4 and Beyond

6

• Value increases with content

First class for content

Page 11: AtlasCamp 2011: Confluence 4 and Beyond

6

• Value increases with content

• Start of collaboration cycle

First class for content

Page 12: AtlasCamp 2011: Confluence 4 and Beyond

7

Page 13: AtlasCamp 2011: Confluence 4 and Beyond

7

You

Page 14: AtlasCamp 2011: Confluence 4 and Beyond

7

You

Page 15: AtlasCamp 2011: Confluence 4 and Beyond

7

You

Page 16: AtlasCamp 2011: Confluence 4 and Beyond

8

Page 17: AtlasCamp 2011: Confluence 4 and Beyond

9

Page 18: AtlasCamp 2011: Confluence 4 and Beyond

9

Brilliantly Simple

Page 19: AtlasCamp 2011: Confluence 4 and Beyond

10

Page 20: AtlasCamp 2011: Confluence 4 and Beyond

10

Packed with Power

visual macros advanced tables

Page 21: AtlasCamp 2011: Confluence 4 and Beyond

11

Page 22: AtlasCamp 2011: Confluence 4 and Beyond

11

Intelligent and Fast

autoformat wiki markup autocomplete + shortcut luv

paste images

h1. Hi -> Hi

*bold* -> bold

:) ->

Page 23: AtlasCamp 2011: Confluence 4 and Beyond

12

Page 24: AtlasCamp 2011: Confluence 4 and Beyond

12

Familiarly Social

Page 25: AtlasCamp 2011: Confluence 4 and Beyond

13

First Class Content Creation Experience

Page 26: AtlasCamp 2011: Confluence 4 and Beyond

13

First Class Content Creation Experience

Brilliantly Simple Packed with Power

Intelligent and Fast Familiarly Social

Page 27: AtlasCamp 2011: Confluence 4 and Beyond

14

Page 28: AtlasCamp 2011: Confluence 4 and Beyond

14

Page 29: AtlasCamp 2011: Confluence 4 and Beyond

15

Page 30: AtlasCamp 2011: Confluence 4 and Beyond

Confluence 2.x15

Page 31: AtlasCamp 2011: Confluence 4 and Beyond

Confluence 2.x Confluence 3.x15

Page 32: AtlasCamp 2011: Confluence 4 and Beyond

Confluence 2.x Confluence 4.xConfluence 3.x15

Page 33: AtlasCamp 2011: Confluence 4 and Beyond

16

Confluence 4.x

Page 34: AtlasCamp 2011: Confluence 4 and Beyond

16

Confluence 4.x

Page 35: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 36: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 37: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 38: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 39: AtlasCamp 2011: Confluence 4 and Beyond

17

You control this experience

Confluence 4.x

Page 40: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 41: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 42: AtlasCamp 2011: Confluence 4 and Beyond

17

Confluence 4.x

Page 43: AtlasCamp 2011: Confluence 4 and Beyond

18

Confluence 4.x

• No macro parameter knowledge required

• No need for the user to know about the macro

• Create a more WYSIWYG experience

• You control the experience, seamless integration

Page 44: AtlasCamp 2011: Confluence 4 and Beyond

19

1. Insert menu

2. Formatting menu

3. Custom property panel buttons

4. Rendered images as macro placeholders

5. Footer actions

6. Default parameter in placeholder

Confluence 4.x

Page 45: AtlasCamp 2011: Confluence 4 and Beyond

19

1. Insert menu

2. Formatting menu

3. Custom property panel buttons

4. Rendered images as macro placeholders

5. Footer actions

6. Default parameter in placeholder

Confluence 4.x

2:15 pmThursday

Ryan Thomas

Page 46: AtlasCamp 2011: Confluence 4 and Beyond

20

Page 47: AtlasCamp 2011: Confluence 4 and Beyond

20

Fir! class

Page 48: AtlasCamp 2011: Confluence 4 and Beyond

• 4.1 - Page Layouts

• 4.2 - Template Improvements

Beyond 4.0

21

Page 49: AtlasCamp 2011: Confluence 4 and Beyond

Sherif MansourConfluence Product Manager, Atlassian

Confluence 4 and Beyond

22

Charles MillerConfluence Architect, Atlassian

Page 50: AtlasCamp 2011: Confluence 4 and Beyond

Sherif MansourConfluence Product Manager, Atlassian

Confluence 4 and Beyond

22

Charles MillerConfluence Architect, Atlassian

Page 51: AtlasCamp 2011: Confluence 4 and Beyond

…that aren’t the rich text editor

Two cool things for 4.0

23

Charles MillerConfluence Architect, Atlassian

Page 52: AtlasCamp 2011: Confluence 4 and Beyond

Closure Templates

24

Page 53: AtlasCamp 2011: Confluence 4 and Beyond

• Language-neutral

• Compiled to Javascript for the client

• Component-based

Closure Templates

25http://code.google.com/closure/templates/index.html

Page 54: AtlasCamp 2011: Confluence 4 and Beyond

Defining a template

26

{namespace Confluence.Templates.Example}/** * Renders a Hello message. * @param name the name of the user */{template .helloWorld} <div>Hello {$name}!</div>{/template}

https://developer.atlassian.com/display/CONFDEV/Templating+in+JavaScript+with+Soy

example.soy

Page 55: AtlasCamp 2011: Confluence 4 and Beyond

Looping and Branching

27

{foreach $child in $children} {call .pageInfo data="$child"} {param oddRow: index($child) % 2 /} {/call}{ifEmpty} {getText(‘page.has.no.children’)} {/foreach}

Page 56: AtlasCamp 2011: Confluence 4 and Beyond

Invoking a template

28

var data = {name: “John Smith”}

Confluence.Templates.Example.helloWorld(data);

https://developer.atlassian.com/display/CONFDEV/Templating+in+JavaScript+with+Soy

example.js

Page 57: AtlasCamp 2011: Confluence 4 and Beyond

Compiling a template

29

<web-resource key="example-resources"> <transformation extension="soy"> <transformer key="soyTransformer"/> </transformation>

<resource type="download" name="example-soy.js" location="/soy/example.soy"/></web-resource>

atlassian-plugin.xml

https://developer.atlassian.com/display/PLUGINFRAMEWORK/Web+Resource+Transformer+Plugin+Module

Page 58: AtlasCamp 2011: Confluence 4 and Beyond

• Bundled plugin in Confluence 4.0

• Server-side templates supported in 4.1

Closure (Soy) Templates

30

Page 59: AtlasCamp 2011: Confluence 4 and Beyond

JSON-RPC

31

Page 60: AtlasCamp 2011: Confluence 4 and Beyond

• SOAP

• Complicated XML protocol

• Made easy with tool support

• XML-RPC

• Simpler XML protocol

• Widely available libraries

RPC

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

Page 61: AtlasCamp 2011: Confluence 4 and Beyond

• Data transport agnostic (usually XML/JSON)

• Pure HTTP, no need for library support

• Limited Confluence API

REST

33

Page 62: AtlasCamp 2011: Confluence 4 and Beyond

• Simple JSON protocol

• RPC, not REST

• Easy to use from the browser

JSON-RPC

34

Page 63: AtlasCamp 2011: Confluence 4 and Beyond

• Too much protocol overhead

• Still requires a client-side library

Standard JSON-RPC

35http://groups.google.com/group/json-rpc

Page 64: AtlasCamp 2011: Confluence 4 and Beyond

• Exposes all XML-RPC/SOAP services as JSON-RPC

• Authentication via web login session

• Supports both standard JSON-RPC and a web-friendly “light” protocol

JSON-RPC plugin

36https://plugins.atlassian.com/plugin/details/40277

Page 65: AtlasCamp 2011: Confluence 4 and Beyond

JSON-RPC Light Request

37

[ "DOC" ]POST /rpc/json-rpc/confluenceservice-v2/getSpace

Page 66: AtlasCamp 2011: Confluence 4 and Beyond

JSON-RPC Light Response

38

{ key : "DOC", name : "Documentation Space", url : "http://wiki.example.com/display/DOC", homePage : "Home", description : "Product Documentation" }

POST /rpc/json-rpc/confluenceservice-v2/getSpace

Page 67: AtlasCamp 2011: Confluence 4 and Beyond

Calling from jQuery

39

jQuery.ajax({ url: Confluence.getContextPath() + “/rpc/json-rpc/confluenceservice-v2/getSpace”, type: “POST”, dataType: “json”, contentType: "application/json", data: JSON.stringify([ AJS.Meta.get(“space-id”) ]), success: function(data) { show_space(data) }, error: function(data) { show_error(data) }});

Page 68: AtlasCamp 2011: Confluence 4 and Beyond

• Available from plugins.atlassian.com

• Compatible with Confluence 3.5 or later

• Will be bundled with Confluence 4.1

Confluence JSON-RPC Plugin

40

Page 69: AtlasCamp 2011: Confluence 4 and Beyond

Putting them together…

41

Page 70: AtlasCamp 2011: Confluence 4 and Beyond

42

Page 71: AtlasCamp 2011: Confluence 4 and Beyond

43

Page 72: AtlasCamp 2011: Confluence 4 and Beyond

Retrieve with JSON-RPC

44

jQuery.ajax({ url: Confluence.getContextPath() + "/rpc/json-rpc/confluenceservice-v2/getPageHistory", type: "POST", dataType: "json", contentType: "application/json", data: JSON.stringify([ AJS.Meta.get("page-id") ]), success: function(data) { show_history_popup(data) }, error: function(data) { show_error_popup(data) } });

Page 73: AtlasCamp 2011: Confluence 4 and Beyond

Display with Closure

45

function show_history_popup(historyData) { popup = AJS.ConfluenceDialog({ width : 865, height: 530, id: "page-history-dialog", onCancel: cancel }); ... popup.addPanel( Confluence.Templates.Plugins.Pagehistory.popup( { histories: historyData }) popup.show();}

Page 74: AtlasCamp 2011: Confluence 4 and Beyond

Display with Closure

46

/** * Displays the page history popup * * @param histories array of the history objects to list */{template .popup} <form name="diff" method="GET" action="{contextPath}/pages/diffpagesbyversion.action">

<input type="submit" value="{getText('compare.selected')}"> <input type="hidden" name="pageId" value="{$histories[0].id}"> <table id="page-history-container" width="100%" cellspacing="0" class="tableview"> <tr> <th>&nbsp;</th> <th>{getText('heading.version.number')}</th> <th>{getText('heading.version.date')}</th> <th>{getText('heading.comment')}</th> </tr>

{foreach $history in $histories} {call .historyRow data="$history"} {param current: isFirst($history)/} {/call} {/foreach} </table> </form>{/template}

pagehistory-template.soy

Page 75: AtlasCamp 2011: Confluence 4 and Beyond

Cheat it into the menu…

47

$("#action-view-history-link").click(function(e) { show_history(); e.preventDefault();});

Page 76: AtlasCamp 2011: Confluence 4 and Beyond

48

Page 77: AtlasCamp 2011: Confluence 4 and Beyond

Download the code

49

https://bitbucket.org/cmiller_atlassian/atlascamp-pagehistory-demo

Page 78: AtlasCamp 2011: Confluence 4 and Beyond

Thank you

50

• Learn more about Confluence 4:

1.http://atlss.in/confluence4

2.Hands-on Developer Sessions

3.“Pimp my Confluence Plugin” - Thursday, 2:15pm

[email protected], [email protected]

Page 79: AtlasCamp 2011: Confluence 4 and Beyond

Thank you!