рдкреГрд╖реНрдареЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред рдПрдЯрд▓рд╕рд┐рдпрди рд╕рдВрдЧрдо рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдкреНрд▓рдЧрдЗрди

Atlassian Confluence рдореЗрдВ рдорд╣рд╛рди рдкреЗрдЬ рд╕рдВрд╕реНрдХрд░рдг рддреБрд▓рдирд╛рддреНрдордХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣реИред рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдЬрд╛ рдкрд╛рдПрдВрдЧреЗред рдХреИрд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рдореЗрдВ рд╕рдорд╛рдкреНрдд рдкреНрд▓рдЧрдЗрди рдХреА рдЦреЛрдЬ рдиреЗ рдХреЛрдИ рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджрд┐рдпрд╛ рдФрд░ рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред

рдЙрдкрдХрд░рдг


рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • Oracle JDK рдпрд╛ AdoptOpenJDK 1.8, OpenJDK рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ;
  • рдПрдЯрд▓рд╕рд┐рдпрди рдПрд╕рдбреАрдХреЗ - рдмрд┐рдирд╛ рдПрд╕рдПрдордПрд╕ рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдХреЗ рд╡рд┐рдВрдбреЛрдЬ рдФрд░ рд▓рд┐рдирдХреНрд╕ / рдореИрдХ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рд╕реЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ;
  • рдЕрдкрд╛рдЪреЗ рдорд╛рд╡реЗрди
  • рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдорд╛рд╣реМрд▓, рдореЗрд░реЗ рдкрд╛рд╕ рдЗрдВрдЯреЗрд▓реАрдЬ рдЖрдИрдбрд┐рдпрд╛ рд╣реИред

рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ


рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ atlas-create-confluence-plugin рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рджрд░реНрдЬ рдХрд░реЗрдВ:

  • group-id: com.kshch.confluence.plugins
  • рдХрд▓рд╛рдХреГрддрд┐-рдЖрдИрдбреА: рдЕрдВрддрд░-рдкреГрд╖реНрда
  • рд╕рдВрд╕реНрдХрд░рдг: 1.0.0-SNAPSHOT
  • рдкреИрдХреЗрдЬ: com.kshch.confluence.plugins.diff.page

рдЕрд╕реЗрдВрдмрд▓реА рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрд╕рдбреАрдХреЗ рд╕реЗ рдорд╛рд╡реЗрди рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред xmlред

 <repository> <id>atlassian-public</id> <url>https://packages.atlassian.com/maven/repository/public</url> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>warn</checksumPolicy> </snapshots> <releases> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> </releases> </repository> <pluginRepository> <id>atlassian-public</id> <url>https://maven.atlassian.com/repository/public</url> <releases> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <updatePolicy>never</updatePolicy> <checksumPolicy>warn</checksumPolicy> </snapshots> </pluginRepository> 

рдЖрдИрдбреАрдИ рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЦреЛрд▓реЗрдВ, рдбреАрдмрдЧ рдореЛрдб confluence:debug рдореЗрдВ рдХреЙрдиреНрдлреНрд▓реБрдПрдВрд╕ рдЪрд▓рд╛рдПрдВ confluence:debug



рдФрд░ http: // localhost: 1990 / рд╕рдВрдЧрдо / рдкрд░ рд╕реНрдерд╛рдиреАрдп рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред рд▓реЙрдЧрд┐рди рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ, рдкрд╛рд╕рд╡рд░реНрдб рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХред рдбреЗрдЯрд╛рдмреЗрд╕ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╕реНрдерд╛рди рдФрд░ рдХрдИ рд▓реЗрдЦ рдмрдирд╛рдП рд╣реИрдВред

рдереЛрдбрд╝реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛


рдореЗрдиреВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╡реЗрдм-рдЖрдЗрдЯрдо рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдЯрд▓рд╕рд┐рдпрди-рдкреНрд▓рдЧрдЗрдиредрдПрдХреНрд╕рдПрд▓рдПрдо рдкреНрд▓рдЧрдЗрди рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

 <web-item key="diff-page-menu" name="Diff Page" section="system.content.action/secondary" weight="300"> <description>Add diff item to drop-down menu</description> <label key="diff.page.menu.name"/> <link linkId="diff-page">/plugins/diffPage/diffPagePopup.action?spaceKey=${space.key}&sourcePageId=${page.id}</link> <condition class="com.atlassian.confluence.plugin.descriptor.web.conditions.HasPageCondition"/> </web-item> 

рдЬрд╣рд╛рдВ:

  • рдЕрдиреБрднрд╛рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ - рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЗ рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ;
  • рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рдЬрди - рдЫрдБрдЯрд╛рдИ рдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ;
  • рд▓реЗрдмрд▓ рдЯреИрдЧ рдХреА рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╣ рдХреБрдВрдЬреА рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдореЗрдиреВ рдЖрдЗрдЯрдо рдХрд╛ рдирд╛рдо рд╕рдВрд╕рд╛рдзрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ;
  • рд▓рд┐рдВрдХ рдЯреИрдЧ - рдЗрд╕рдореЗрдВ рд▓рд┐рдВрдХ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рд▓рд┐рдВрдХрдЖрдИрдбреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдЗрд╕рдХреА рдЖрдИрдбреА рд╣реИ;
  • рд╣рд╛рд▓рдд - рдХреЗрд╡рд▓ рдкреГрд╖реНрда рдкрд░, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

Diff-page.properties рдореЗрдВ рд▓рд╛рдЗрди рдЬреЛрдбрд╝реЗрдВ:
diff.page.menu.name=Diff page

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдиреБрд╡рд╛рдж рд╕рд╣рд╛рдпрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг рдмрдирд╛рдПрдВрдЧреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрд╕реА рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдХреЛ diff-page_ru_RU.properties рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ред

maven package рдЪрд▓рд╛рдПрдВред рдкреНрд▓рдЧрдЗрди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрдЧрд╛ рдФрд░ рд╣рдорд╛рд░рд╛ рдореЗрдиреВ рдЖрдЗрдЯрдо рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред



рдореЛрдбрд▓ рдЦрд┐рдбрд╝рдХреА


рдкреГрд╖реНрда рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореЛрдбрд▓ рд╡рд┐рдВрдбреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред Atlassian-plugin.xml рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ

рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди рдЬреЛрдбрд╝реЗрдВ:

 <web-resource key="diff-page-popup-resources" name="diff-page Popup Web Resources"> <dependency>com.atlassian.auiplugin:ajs</dependency> <dependency>com.atlassian.auiplugin:dialog2</dependency> <resource type="download" name="diff-page-popup.js" location="/js/diff-page-popup.js"/> <context>page</context> </web-resource> 

рдЬрд╣рд╛рдВ:

  • рдирд┐рд░реНрднрд░рддрд╛ рдЯреИрдЧ - рдирд┐рд░реНрднрд░рддрд╛;
  • рд╕рдВрд╕рд╛рдзрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рд╕рдВрд╕рд╛рдзрди, рдирд╛рдо рдФрд░ рд╕реНрдерд╛рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддреА рд╣реИрдВ;
  • рд╕рдВрджрд░реНрдн рдЯреИрдЧ - рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджреГрд╢реНрдпрддрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдпреВрдЖрд░рдПрд▓ рдХреЗ рд▓рд┐рдП рд╣реИрдВрдбрд▓рд░реНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:

 <xwork name="Diff Page Action" key="diff-page-action"> <description>Diff page action</description> <package name="diff-page-package" extends="default" namespace="/plugins/diffPage"> <default-interceptor-ref name="defaultStack"/> <action name="diffPage" class="com.kshch.confluence.plugins.diff.page.action.DiffPageAction"> <result name="success" type="velocity">/templates/diff-page.vm</result> </action> <action name="diffPagePopup" class="com.kshch.confluence.plugins.diff.page.action.DiffPagePopupAction"> <result name="success" type="velocity">/templates/diff-page-popup.vm</result> </action> </package> </xwork> 

рдЬрд╣рд╛рдВ:

  • рдХрд╛рд░реНрд░рд╡рд╛рдИ рдЯреИрдЧ рдХрд╛ рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ - рд▓рд┐рдВрдХ рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╡рд░реНрдЧ - рдЗрд╕реЗ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рд╡рд░реНрдЧ;
  • рдЯреИрдЧ рдкрд░рд┐рдгрд╛рдо - рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдХреЗ рд╡реЗрдЧ рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рд▓рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред

рдПрдХ рдирдпрд╛ рдкреИрдХреЗрдЬ com.kshch.confluence.plugins.diff.page.action рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕рдореЗрдВ DiffPagePopupAction рдХреНрд▓рд╛рд╕ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ 2 рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде ConfluenceActionSupport рддрдХ рдлреИрд▓реА рд╣реБрдИ рд╣реИред

 private String spaceKey; private Long sourcePageId; 

рд╣рдо рдЙрдирдХреЗ рд▓рд┐рдП рдЧреЗрдЯрд░реНрд╕ рдФрд░ рд╕реЗрдЯрд░ рдЬрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред SpaceKey рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╡рд░реНрддрдорд╛рди рд╕реНрдерд╛рди рдХреА рдХреБрдВрдЬреА рд╣реЛрдЧреА, рдФрд░ sourcePageId рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреГрд╖реНрда рдХреА рдЖрдИрдбреА рд╣реЛрдЧреАред

рдЪрд▓реЛ рд╕рд╛рдордиреЗ рдЪрд▓рддреЗ рд╣реИрдВред рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, AUI рдврд╛рдВрдЪреЗ рд╕реЗ рдбрд╛рдпрд▓реЙрдЧ 2 рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдПрдХ рдлрд╝реЙрд░реНрдо, рдПрдХ рд╕рдмрдорд┐рдЯ рдмрдЯрди рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЗрдирдкреБрдЯ рдФрд░ рд╕реНрд╡рдд: рдкреВрд░реНрдг-рд╕реНрдерд╛рди рдФрд░ рд╕рдВрд╡рд╛рдж рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдд: рдкреГрд╖реНрда рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдЕрдВрддрд░рд┐рдХреНрд╖ рдФрд░ рдкреГрд╖реНрда рдХреА рдкрд╕рдВрдж рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдкрд░рд┐рдгрд╛рдо /templates/diff-page-popup.vm рдореЗрдВ рд╕рд╣реЗрдЬреЗрдВред

 <section role="dialog" id="diff-page-popup" class="aui-layer aui-dialog2 aui-dialog2-medium" aria-hidden="true" data-aui-remove-on-hide="true"> <form action="$action.getBootstrapManager().getWebAppContextPath()/plugins/diffPage/diffPage.action" method="get" class="aui"> ... <input type="hidden" name="sourcePageId" value="$action.getSourcePageId()"> <input class="text autocomplete-space" type="text" id="diff-page-space" name="spaceKey" data-max="10" data-none-message="$action.getText("diff.page.popup.no.result")" placeholder="$action.getText("diff.page.popup.select.space")" value="$action.getSpaceKey()" data-template="{key}"> <input type="text" class="text autocomplete-page" name="destinationPageName" data-max="10" placeholder="$action.getText("diff.page.popup.select.page")" data-none-message="$action.getText("diff.page.popup.no.result")"> <button id="dialog-diff-button" class="aui-button aui-button-primary">$action.getText("diff.page.popup.diff")</button> ... </form> </section> 

рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ /js/diff-page-popup.js рдмрдирд╛рдПрдВ:

 (function ($) { $(function () { AJS.$('#diff-page').unbind('click'); AJS.$('#diff-page').bind("click", function (e) { e.preventDefault(); var link = AJS.$(this); AJS.$.get(link.attr('href'), function (response) { AJS.$('.aui-page-panel').after(response); AJS.dialog2("#diff-page-popup").show(); Confluence.Binder.autocompletePage(AJS.$("#diff-page-popup-binder")); }); return false; }); }); })(AJS.$); 

рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдп рдорд╛рдирдХ рдХреНрд▓рд┐рдХ рдШрдЯрдирд╛ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдФрд░ рд▓рд┐рдВрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╣рдореЗрдВ рдПрдХ рдкреЙрдк-рдЕрдк рд╡рд┐рдВрдбреЛ рджрд┐рдЦрд╛рдирд╛ рд╣реИред

maven package рдЪрд▓рд╛рдПрдВ рдФрд░ рдкреГрд╖реНрда рдФрд░ рд╕реНрдерд╛рди рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЯреВрд▓рдЯрд┐рдк 2 рд╡рд░реНрдгреЛрдВ рдХреЗ рд╕реЗрдЯ рдХреЗ рдмрд╛рдж рд╕рдХреНрд░рд┐рдп рд╣реЛрддрд╛ рд╣реИред



рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛


рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред Com.kshch.confluence.plugins.diff.page.action рдкреИрдХреЗрдЬ рдореЗрдВ рдПрдХ рдФрд░ DiffPageAction рдХреНрд▓рд╛рд╕ рдЬреЛрдбрд╝реЗрдВ рдЬреЛ ConfluenceActionSupport рддрдХ рдлреИрд▓реА рд╣реБрдИ рд╣реИ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде PageAware рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИред

 private Long sourcePageId; private Long destinationPageId; private String spaceKey; private String destinationPageName; private String sourcePageTitle; private String destinationPageTitle; private String diff; private Page sourcePage; private Differ differ; private final PageManager pageManager; 

рдЬрд╣рд╛рдВ:

  • sourcePageId - рд╕реНрд░реЛрдд рдкреГрд╖реНрда рдХреА рдЖрдИрдбреА;
  • рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рди рдЖрдИрдбреАрдбреА - рдкреГрд╖реНрда рдХреА рдЖрдИрдбреА рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ;
  • spaceKey - рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреБрдВрдЬреА;
  • рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рдирдирд╛рдо - рддреБрд▓рдирд╛ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдкреГрд╖реНрда рдХрд╛ рдирд╛рдо;
  • sourcePageTitle - рд╕реНрд░реЛрдд рдкреГрд╖реНрда рдХрд╛ рд╢реАрд░реНрд╖рдХ;
  • рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рдирдЯрд╛рдЗрдЯрд▓ - рддреБрд▓рдирд╛ рдХрд┐рдП рдЧрдП рдкреГрд╖реНрда рдХрд╛ рд╢реАрд░реНрд╖рдХ;
  • рддреБрд▓рдирд╛ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реИред

рд╣рдо рдЧреЗрдЯрдЕрдк рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЧреЗрдЯрдЕрдк рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рднреА рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝реАрд▓реНрдб sourcePageId, spaceKey рдФрд░ рдбреЗрд╕реНрдЯрд┐рдиреЗрд╢рдирдирд╛рдо рдореЗрдВ рд╡рд╣ рдбреЗрдЯрд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧрд╛ рдЬреЛ рдбрд╛рдпрд▓реЙрдЧ 2 рдХреЗ рдЕрдВрджрд░ рдлрд╝реЙрд░реНрдо рд╕реЗ рдЖрдпрд╛ рдерд╛ред

 @Override public AbstractPage getPage() { return this.sourcePage; } 

рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд╖реНрдкрд╛рджрди рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЙрд╕ рдореЗрдВ рд╣реИ рдХрд┐ рдкреНрд▓рдЧрдЗрди рдХрд╛ рдореБрдЦреНрдп рддрд░реНрдХ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдпрд╛ рд╣реИред

 @Override public String execute() throws Exception { if (this.sourcePageId != null && this.spaceKey != null && this.destinationPageName != null) { this.sourcePage = this.pageManager.getPage(this.sourcePageId); Page destinationPage = this.pageManager.getPage(this.spaceKey, this.destinationPageName); if (this.sourcePage != null && destinationPage != null) { this.destinationPageId = destinationPage.getId(); this.sourcePageTitle = this.sourcePage.getTitle(); this.destinationPageTitle = destinationPage.getTitle(); this.diff = this.differ.diff(this.sourcePage, destinationPage); } } return super.execute(); } 

рдпрд╣ 2 рдкреГрд╖реНрдареЛрдВ рдХреЗ рд╕рд╛рдордиреЗ рдХреА рддреБрд▓рдирд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдиреА рд╣реБрдИ рд╣реИред рдпрд╣ рдПрдХ рдкреЙрдкрдЕрдк рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред

рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдмрдирд╛рдПрдВ /templates/diff-page.vmред рдЗрд╕рдореЗрдВ, рд▓реЗрдЖрдЙрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рддреНрд░реБрдЯрд┐ рдЬрд╛рдВрдЪ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

 #if ($action.getDiff()) #diffBody() #else <div class="aui-message aui-message-error"> <p class="title"> <strong>$action.getText("diff.page.error")</strong> </p> <p>$action.getText("diff.page.error.message")</p> </div> #end 

рдкреНрд▓рдЧрдЗрди рдХрд╛ рд▓реЗрдЦрди рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, maven package рдЪрд▓рд╛рдПрдВ, рдкреГрд╖реНрда рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЖрдирдВрдж рд▓реЗрдВред



рдкреВрд░рд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛрдб GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ ред

Source: https://habr.com/ru/post/hi433466/


All Articles