I have .txt documents that I want to attach and easily view in the browser. Confluence can't preview a .txt, so it has to be downloaded. I don't want to paste the text into a confluence page. Browsers natively can display .txt, so it is an odd limitiation.
The lack of preview for a text document is very surprising. This seems like a basic feature.
I don't think there is a way to preview it. I did create a user macro a few years ago to embed the contents of a txt file into a page. The user macro is below.
Macro Name:
text
Macro Title:
Text Document
Macro Body Processing:
No macro body
Template:
## Developed by: Davin Studer ## Date created: 05/07/2014 ## @param TXTName:title=Text File Name|type=string|required=true|desc=The name of the attached TXT file. (ex. Stuff.txt, Stuff.csv, Stuff.sh, Stuff.bat) ## @param Page:title=Page Title|type=confluence-content|required=false|desc=If not specified, the current page is used. (for a page in another space use the format "spacekey:page name") #set( $id=$action.dateFormatter.calendar.timeInMillis ) #if( $paramPage && $paramPage != "" ) ########################## ## Get the page manager ## ########################## #set( $containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager') ) #set( $getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null) ) #set( $containerManager=$getInstanceMethod.invoke(null,null) ) #set( $containerContext=$containerManager.containerContext ) #set( $pageManager=$containerContext.getComponent('pageManager') ) ########################## ## Find the page ## ########################## #set( $parts = $paramPage.split(":") ) #set( $i = 0 ) #set( $len = 0 ) #set( $key = "" ) #set( $name = "" ) ##Having trouble finding out the length/size of $parts ... brute force it #foreach( $part in $parts ) #set( $len = $len + 1 ) #end #if( $len == 1 ) #set( $key = $content.spaceKey ) #set( $name = $paramPage ) #else #foreach( $part in $parts ) #if( $i == 0 ) #set( $key = $part ) #set( $i = $i + 1 ) #else #set( $name = $part ) #end #end #end #set( $tempcontent = "" ) #if( $pageManager ) #set( $tempcontent = $pageManager.getPage($key, $name) ) #end #if( $tempcontent && $tempcontent != "" ) #set( $content = $tempcontent ) #else The page "$paramPage" was not found in this space. #set( $content = "" ) #end #end #set( $attachments = $attachmentManager.getLatestVersionsOfAttachments($content) ) #set( $baseUrl = $action.getGlobalSettings().getBaseUrl() ) #set( $url = "" ) #foreach( $attachment in $attachments ) #if( $attachment.getTitle().toLowerCase() == $paramTXTName.toLowerCase() ) #set( $url = $attachment.getDownloadPathWithoutVersion() ) #end #end #set( $d = '$' ) <style> #text${id} pre {white-space: pre-wrap;} </style> <div id="text$id"> <ac:structured-macro ac:name="noformat"> <ac:parameter ac:name="nopanel">true</ac:parameter> <ac:plain-text-body><![CDATA[ ]]></ac:plain-text-body> </ac:structured-macro> </div> <script type="text/javascript"> AJS.toInit(function(){ AJS.${d}.get("$baseUrl$url", function( data ) { AJS.$('#text$id pre').text(data); }); }); </script>
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.