ThinkFree

Installation

Follow these steps to install this script on your wiki.

  1. Go to Service managmenent inside the Control Panel.
  2. Under Add Service, click Local and select type Extension.
  3. Enter a descriptive name and the SID: sid://mindtouch.com/2007/12/dekiscript
  4. Add "manifest" to the config section with value set to http://scripts.mindtouch.com/thinkfree.xml
  5. Add extra configuration values as listed below under Configuration (If Configuration is not listed below, ignore this step.)
  6. Click on add service.

Related Links: DekiScript service, Extension Overview, DekiScript Overview, Extension Demos.


Overview

This extension contains functions for displaying Microsoft Office documents. This script requires MindTouch Deki 8.05.1 or later.

Functions:

  1. thinkfree.viewer

thinkfree.viewer(document, width, height, type) : xml

View a document.

Parameters:

NameTypeDescription
documenturiDocument uri.
widthnum(optional) Width of viewer. (default: 90%)
heightnum(optional) Height of viewer. (default: 425)
typestr(optional) Document type (either \"write\", \"calc\", or \"show\"; default: detect automatically)


Source Code

<extension>
  <title>MindTouch ThinkFree Extension</title>
  <label>ThinkFree</label>
  <copyright>Copyright (c) 2007, 2008 MindTouch, Inc.</copyright>
  <description>This extension contains functions for displaying Microsoft Office documents.</description>
  <uri.help>http://wiki.developer.mindtouch.com/MindTouch_Deki/Extensions/ThinkFree</uri.help>
  <uri.logo>http://scripts.mindtouch.com/logos/thinkfree-logo.png</uri.logo>
  <namespace>thinkfree</namespace>

  <requires host="MindTouch Deki 8.05.1" />

  <function>
    <name>viewer</name>
    <description>View a document.</description>
    <param name="document" type="uri">Document uri.</param>
    <param name="width" type="num" optional="true">Width of viewer. (default: 90%)</param>
    <param name="height" type="num" optional="true">Height of viewer. (default: 425)</param>
    <param name="type" type="str" optional="true">Document type (either \"write\", \"calc\", or \"show\"; default: detect automatically)</param>
    <return>
      <html xmlns:eval="http://mindtouch.com/2007/dekiscript">
        <body>
          <eval:if test="$type == 'write'"><eval:expr value="iframe($document, $width, $height, 'WRITE_VIEWER')" /></eval:if>
          <eval:elseif test="$type == 'calc'"><eval:expr value="iframe($document, $width, $height, 'CALC_VIEWER')" /></eval:elseif>
          <eval:elseif test="$type == 'show'"><eval:expr value="iframe($document, $width, $height, 'SHOW_VIEWER')" /></eval:elseif>
          <eval:else>
            <eval:define var="ext" value="var parts = uri.parse($document); var last = parts.path[#parts.path-1]; var index = string.lastindexof(last, '.'); (index >= 0) ? string.substr(last, index + 1) : ''">
              <eval:if test="list.contains(['doc', 'rtf', 'txt'], ext)"><eval:expr value="iframe($document, $width, $height, 'WRITE_VIEWER')" /></eval:if>
              <eval:elseif test="list.contains(['xls', 'csv'], ext)"><eval:expr value="iframe($document, $width, $height, 'CALC_VIEWER')" /></eval:elseif>
              <eval:elseif test="list.contains(['ppt', 'pps'], ext)"><eval:expr value="iframe($document, $width, $height, 'SHOW_VIEWER')" /></eval:elseif>
              <eval:else>ERROR: unable to determine document type, use 'type' argument to specify type</eval:else>
            </eval:define>
          </eval:else>
        </body>
      </html>
    </return>
  </function>

  <function>
    <access>private</access>
    <name>iframe</name>
    <param name="document" type="uri" />
    <param name="width" type="num" optional="true" />
    <param name="height" type="num" optional="true" />
    <param name="type" type="str" />
    <return>
      <html xmlns:eval="http://mindtouch.com/2007/dekiscript">
        <body>
          <iframe eval:src="'http://viewer.thinkfree.com/view.jsp?app=' .. $type .. '&amp;open=' .. uri.encode($document)" eval:width="web.size($width ?? 0.9)" eval:height="web.size($height ?? 425)" marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no" />
        </body>
      </html>
    </return>
  </function>
</extension>


Samples

   Output

To embed a 600 by 400 ThinkFree viewer for a word processing document:

{{ thinkfree.viewer("http://wiki.opengarden.org/@api/deki/files/1217", 600, 400, "write") }}
./ThinkFree1.JPG

To embed a 600 by 400 ThinkFree viewer for a spreadsheet:

{{ thinkfree.viewer("http://wiki.opengarden.org/@api/deki/files/1218", 600, 400, "calc") }}
./ThinkFree2.JPG

To embed a 600 by 400 ThinkFree viewer for a presentation:

{{ thinkfree.viewer("http://wiki.opengarden.org/@api/deki/files/1219", 600, 400, "show") }} 
./ThinkFree3.JPG

  

Tag page

Files 3

FileSizeDateAttached by 
 SampleDoc.doc Preview
No description
23.5 kB23:47, 19 Oct 2007BrigetteKActions
 SamplePowerpoint.ppt Preview
No description
8.5 kB00:06, 20 Oct 2007BrigetteKActions
 SampleSpreadsheet.xls Preview
No description
13.5 kB00:03, 20 Oct 2007BrigetteKActions
Viewing 1 of 1 comments: view all
Will this api also work with files on a local share? I have tried but it did not work.
Posted 20:06, 3 Dec 2007
Viewing 1 of 1 comments: view all
You must login to post a comment.
Powered by MindTouch Deki v.8.08