summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--etherpad/src/etherpad/control/pro/admin/pro_admin_control.js6
-rw-r--r--etherpad/src/etherpad/pne/pne_utils.js41
-rw-r--r--etherpad/src/static/css/pad2_ejs.css4
-rw-r--r--etherpad/src/static/js/broadcast_slider.js2
-rw-r--r--etherpad/src/templates/pad/exporthtml.ejs28
-rw-r--r--etherpad/src/templates/pro/admin/pro-config.ejs55
-rw-r--r--etherpad/src/themes/default/templates/pro/admin/admin-template.ejs2
-rw-r--r--infrastructure/com.etherpad.openofficeservice/importexport.scala110
-rw-r--r--infrastructure/lib/java_uno-3.2.0.jarbin0 -> 4205 bytes
-rw-r--r--infrastructure/lib/juh-3.2.0.jarbin0 -> 55517 bytes
-rw-r--r--infrastructure/lib/jurt-3.2.0.jarbin0 -> 108138 bytes
-rw-r--r--infrastructure/lib/ridl-3.2.0.jarbin0 -> 256497 bytes
-rw-r--r--infrastructure/lib/unoil-3.2.0.jarbin0 -> 1415707 bytes
-rw-r--r--infrastructure/net.appjet.oui/execution.scala1
14 files changed, 194 insertions, 55 deletions
diff --git a/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js b/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
index 6d482ce..1364176 100644
--- a/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
+++ b/etherpad/src/etherpad/control/pro/admin/pro_admin_control.js
@@ -48,17 +48,11 @@ function _getLeftnavItems() {
_PRO, [
[_PRO, null, "Admin"],
[_PNE_ONLY, "pne-dashboard", "Server Dashboard"],
- [_PNE_ONLY, "pne-license-manager/", "Manage License"],
[_PRO, "account-manager/", "Manage Accounts"],
[_PRO, "recover-padtext", "Recover Pad Text"],
[_PRO, null, "Configuration"],
[_PRO, [[_PNE_ONLY, "pne-config", "Private Server Configuration"],
[_PRO, "pro-config", "Application Configuration"]]],
- [_PNE_ONLY, null, "Documentation"],
- [_PNE_ONLY, "/ep/pne-manual/", "Administrator's Manual"],
- [_ONDEMAND_ONLY, null, "Billing"],
- [_ONDEMAND_ONLY, "billing/", "Payment Information"],
- [_ONDEMAND_ONLY, "billing/invoices", "Past Invoices"],
]
];
return nav;
diff --git a/etherpad/src/etherpad/pne/pne_utils.js b/etherpad/src/etherpad/pne/pne_utils.js
index bc105bd..073ad2a 100644
--- a/etherpad/src/etherpad/pne/pne_utils.js
+++ b/etherpad/src/etherpad/pne/pne_utils.js
@@ -117,6 +117,7 @@ function saveDbVersion() {
var _eepneAllowedConfigVars = [
'configFile',
+ 'etherpad.soffice',
'etherpad.useMySQL',
'etherpad.SQL_JDBC_DRIVER',
'etherpad.SQL_JDBC_URL',
@@ -134,54 +135,14 @@ var _eepneAllowedConfigVars = [
];
function isServerLicensed() {
- var licenseInfo = licensing.getLicense();
- if (!licenseInfo) {
- return false;
- }
- if (licensing.isVersionTooOld()) {
- return false;
- }
- if (licensing.isExpired()) {
- return false;
- }
return true;
}
function enableTrackingAgain() {
- delete appjet.cache.noMorePneTracking;
}
function pneTrackerHtml() {
- if (!isPNE()) {
- return "";
- }
- if (appjet.cache.noMorePneTracking) {
- return "";
- }
-
- var div = DIV({style: "height: 1px; width: 1px; overflow: hidden;"});
-
- var licenseInfo = licensing.getLicense();
- var key = null;
- if (licenseInfo) {
- key = md5(licenseInfo.key).substr(0, 16);
- }
-
- function trackData(name, value) {
- var imgurl = "http://etherpad.com/ep/tpne/t?";
- if (key) {
- imgurl += ("k="+key+"&");
- }
- imgurl += (encodeURIComponent(name) + "=" + encodeURIComponent(value));
- div.push(IMG({src: imgurl}));
- }
-
- trackData("ping", "1");
- trackData("dbdriver", appjet.config['etherpad.SQL_JDBC_DRIVER']);
- trackData("request.url", request.url);
-
appjet.cache.noMorePneTracking = true;
- return div;
}
diff --git a/etherpad/src/static/css/pad2_ejs.css b/etherpad/src/static/css/pad2_ejs.css
index 08e95d2..df367c4 100644
--- a/etherpad/src/static/css/pad2_ejs.css
+++ b/etherpad/src/static/css/pad2_ejs.css
@@ -166,9 +166,9 @@ a#hidetopmsg { position: absolute; right: 5px; bottom: 5px; }
{
position:absolute;
top: 6px;
- left: 570px;
+ right: 7px;
height: 24px;
- width:15px;
+ width:23px;
}
#editbarsavetable td, #editbartable td
diff --git a/etherpad/src/static/js/broadcast_slider.js b/etherpad/src/static/js/broadcast_slider.js
index 255d7f2..8977e3d 100644
--- a/etherpad/src/static/js/broadcast_slider.js
+++ b/etherpad/src/static/js/broadcast_slider.js
@@ -138,7 +138,7 @@ var global = this;
swatchtd.append(swatch);
tr.append(swatchtd);
var nametd = $('<td></td>');
- nametd.html(author.name || "unnamed");
+ nametd.text(author.name || "unnamed");
tr.append(nametd);
$("#authorstable").append(tr);
} else {
diff --git a/etherpad/src/templates/pad/exporthtml.ejs b/etherpad/src/templates/pad/exporthtml.ejs
new file mode 100644
index 0000000..288a595
--- /dev/null
+++ b/etherpad/src/templates/pad/exporthtml.ejs
@@ -0,0 +1,28 @@
+<% /* Copyright 2009 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS-IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */ %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+ <TITLE></TITLE>
+ <STYLE TYPE="text/css">
+ <!--
+ @page { margin: 0.79in }
+ P { margin-bottom: 0.08in }
+ -->
+ </STYLE>
+</HEAD>
+<BODY LANG="en-US" DIR="LTR">
+<%= pre ? '<PRE>' : '' %><%= content %><%= pre ? '</PRE>' : '' %>
+</BODY>
+</HTML> \ No newline at end of file
diff --git a/etherpad/src/templates/pro/admin/pro-config.ejs b/etherpad/src/templates/pro/admin/pro-config.ejs
new file mode 100644
index 0000000..32cb610
--- /dev/null
+++ b/etherpad/src/templates/pro/admin/pro-config.ejs
@@ -0,0 +1,55 @@
+<% /* Copyright 2009 Google Inc.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS-IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License. */ %>
+<h3 class="top">Application Configuration</h3>
+
+<%= messageDiv() %>
+
+<form action="<%= request.path %>" method="post">
+
+<table id="t-pro-config">
+ <tr>
+ <th width="50%" valign="top">Site Name (appears in
+ the header of all pages):</th>
+ <td width="50%" valign="top">
+ <input type="text" name="siteName" value="<%=
+ config.siteName %>" id="siteName" />
+ </td>
+ </tr>
+
+ <tr>
+ <th valign="top">Always require all users on this domain to use secure
+ (HTTPS) connections?</th>
+ <td valign="top">
+ <input type="checkbox" id="alwaysHttps" name="alwaysHttps"
+ <%= config.alwaysHttps ? 'checked="on"' : '' %> />
+ </td>
+ </tr>
+
+ <tr>
+ <th valign="top">Default pad text:</th>
+ <td valign="top">
+ <textarea name="defaultPadText" id="defaultPadText"><%=
+ config.defaultPadText %></textarea>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan="2" style="text-align: right;">
+ <input type="submit" name="save" value="Apply" />
+ </td>
+ </tr>
+</table>
+
+</form>
+
diff --git a/etherpad/src/themes/default/templates/pro/admin/admin-template.ejs b/etherpad/src/themes/default/templates/pro/admin/admin-template.ejs
index 0964e33..e1a7736 100644
--- a/etherpad/src/themes/default/templates/pro/admin/admin-template.ejs
+++ b/etherpad/src/themes/default/templates/pro/admin/admin-template.ejs
@@ -16,9 +16,11 @@ limitations under the License. */ %><% helpers.setHtmlTitle("Etherpad Administra
<div class="fpcontent">
<table id="admin-layout-table">
<tr>
+ <% if (validLicense) { %>
<td width="1%" id="admin-leftnav">
<%= renderAdminLeftNav() %>
</td>
+ <% } %>
<td width="99%" id="admin-right">
<%= getAdminContent() %>
</td>
diff --git a/infrastructure/com.etherpad.openofficeservice/importexport.scala b/infrastructure/com.etherpad.openofficeservice/importexport.scala
index f5150ad..606cff9 100644
--- a/infrastructure/com.etherpad.openofficeservice/importexport.scala
+++ b/infrastructure/com.etherpad.openofficeservice/importexport.scala
@@ -21,14 +21,24 @@ import net.appjet.common.sars.{SarsServer,SarsMessageHandler};
import java.io.{DataInputStream,DataOutputStream};
import java.io.{File,FileOutputStream,ByteArrayInputStream,ByteArrayOutputStream};
+/* Libraries needed for OO.org Conversion */
+import com.sun.star.bridge.{XBridge,XBridgeFactory};
+import com.sun.star.beans.{PropertyValue,XPropertySet};
+import com.sun.star.connection.{NoConnectException,XConnection,XConnector};
+import com.sun.star.container.XNamed;
+import com.sun.star.document.{XExporter,XFilter};
+import com.sun.star.frame.{XComponentLoader,XStorable};
+import com.sun.star.lang.{XComponent,XMultiComponentFactory};
+import com.sun.star.uno.{UnoRuntime,XComponentContext};
+
class OOSException(m: String) extends RuntimeException(m);
class UnsupportedFormatException(format: String) extends OOSException("Unsupported format: "+format);
object TemporaryFailure extends OOSException("Temporary failure");
-// stub object here. Please replace if you'd like to use openoffice!
object OpenOfficeServerUtility {
def checkServerAvailability(host: String, port: Int): Boolean = {
- return false;
+ // Assume the server is running; this is the responsibility of the user
+ return true;
}
def runOpenOfficeServer(path: String, host: String, port: Int, timeout: Int, wait: Boolean) {
// nothing
@@ -36,12 +46,82 @@ object OpenOfficeServerUtility {
}
class OpenOfficeFileConverter {
+ var host: String = "localhost";
+ var port: Int = 8100;
+
def setOpenOfficeServerDetails(host: String, port: Int) {
- // nothing
+ this.host = host;
+ this.port = port;
}
def convertFile(src: File, dst: File, converter: String, extension: String): Boolean = {
- return false;
+ try {
+ val fromFile: String = "file:///" + src.getAbsolutePath();
+ val toFile: String = "file:///" + dst.getAbsolutePath();
+
+ val cnx: String = "socket,host="+this.host+",port="+this.port+"";
+ val xRemoteContext: XComponentContext = com.sun.star.comp.helper.Bootstrap.createInitialComponentContext(null);
+ val x: Object = xRemoteContext.getServiceManager().createInstanceWithContext("com.sun.star.connection.Connector", xRemoteContext);
+ val xConnector: XConnector = UnoRuntime.queryInterface(classOf[XConnector], x).asInstanceOf[XConnector];
+ val connection: XConnection = xConnector.connect(cnx);
+
+ if(connection == null) {
+ throw new OOSException("Connection failure");
+ }
+ val x2: Object = xRemoteContext.getServiceManager().createInstanceWithContext("com.sun.star.bridge.BridgeFactory", xRemoteContext);
+ val xBridgeFactory: XBridgeFactory = UnoRuntime.queryInterface(classOf[XBridgeFactory], x2).asInstanceOf[XBridgeFactory];
+ val xBridge: XBridge = xBridgeFactory.createBridge("", "urp", connection, null);
+ val x3: Object = xBridge.getInstance("StarOffice.ServiceManager");
+ if (x3 == null) {
+ throw new OOSException("Failed to get bridge");
+ }
+
+ val xMultiComponentFactory: XMultiComponentFactory = UnoRuntime.queryInterface(classOf[XMultiComponentFactory], x3).asInstanceOf[XMultiComponentFactory];
+ val xProperySet: XPropertySet = UnoRuntime.queryInterface(classOf[XPropertySet], xMultiComponentFactory).asInstanceOf[XPropertySet];
+ val oDefaultContext: Object = xProperySet.getPropertyValue("DefaultContext");
+ val xComponentContext: XComponentContext = UnoRuntime.queryInterface(classOf[XComponentContext], oDefaultContext).asInstanceOf[XComponentContext];
+
+ val desktopObj: Object = xMultiComponentFactory.createInstanceWithContext("com.sun.star.frame.Desktop", xComponentContext);
+ val xcomponentloader: XComponentLoader = UnoRuntime.queryInterface(classOf[XComponentLoader], desktopObj).asInstanceOf[XComponentLoader];
+
+ if(xcomponentloader == null) {
+ throw new OOSException("XComponent Loader could not be loaded");
+ }
+
+ val loadProps: Array[PropertyValue] = new Array[PropertyValue](2);
+ loadProps(0) = new PropertyValue();
+ loadProps(0).Name = "Hidden";
+ loadProps(0).Value = boolean2Boolean(false);
+
+ loadProps(1) = new PropertyValue();
+ loadProps(1).Name = "UpdateDocMode";
+ loadProps(1).Value = "1";
+
+ val component: XComponent = xcomponentloader.loadComponentFromURL(fromFile,"_blank", 0, loadProps);
+
+ if (component == null) {
+ throw new OOSException("Failed to load document");
+ }
+
+ val convProps: Array[PropertyValue] = new Array[PropertyValue](2);
+ convProps(0) = new PropertyValue();
+ convProps(0).Name = "FilterName";
+ convProps(0).Value = converter;
+
+ val xstorable: XStorable = UnoRuntime.queryInterface(classOf[XStorable],component).asInstanceOf[XStorable];
+ if (xstorable == null) {
+ throw new OOSException("Storable could not be loaded");
+ }
+ xstorable.storeToURL(toFile, convProps);
+ component.dispose();
+ return true;
+ }
+ catch {
+ case e => {
+ e.printStackTrace();
+ throw new OOSException("Unknown exception occurred: "+e.getMessage());
+ }
+ }
}
}
@@ -69,6 +149,14 @@ object OpenOfficeService {
soffice = exec;
}
+ var openOfficeServerHost: String = "localhost";
+ var openOfficeServerPort: Int = 8100;
+
+ def setOpenOfficeServer(host: String, port: Int) {
+ openOfficeServerHost = host;
+ openOfficeServerPort = port;
+ }
+
def convertFile(from: String, to: String, bytes: Array[byte]): Array[byte] = {
if (from == to) {
return bytes;
@@ -77,8 +165,18 @@ object OpenOfficeService {
val tempFile = createTempFile(bytes, from);
val outFile = createTempFile(null, to);
- val openOfficeServerHost = "localhost";
- val openOfficeServerPort = 8100;
+ /*
+ Just hardcoding server and port here.
+ If you intend to use an Openoffice.org instance on a network machine,
+ do it at your risk.
+
+ Just, remember to setOpenOfficeServer from etherpad/importexport/importexport.js,
+ Also, remember that OO.org is reading and writing files over file:/// URI. So, make sure that
+ you can access the files from network machine. Hint, NFS. Not Need for Speed game, you idiot,
+ Network File System.
+
+ */
+
if (! OpenOfficeServerUtility.checkServerAvailability(openOfficeServerHost, openOfficeServerPort)) {
try {
OpenOfficeServerUtility.runOpenOfficeServer(soffice, openOfficeServerHost, openOfficeServerPort, 20000, true);
diff --git a/infrastructure/lib/java_uno-3.2.0.jar b/infrastructure/lib/java_uno-3.2.0.jar
new file mode 100644
index 0000000..1f23dd0
--- /dev/null
+++ b/infrastructure/lib/java_uno-3.2.0.jar
Binary files differ
diff --git a/infrastructure/lib/juh-3.2.0.jar b/infrastructure/lib/juh-3.2.0.jar
new file mode 100644
index 0000000..5345fe2
--- /dev/null
+++ b/infrastructure/lib/juh-3.2.0.jar
Binary files differ
diff --git a/infrastructure/lib/jurt-3.2.0.jar b/infrastructure/lib/jurt-3.2.0.jar
new file mode 100644
index 0000000..50f2346
--- /dev/null
+++ b/infrastructure/lib/jurt-3.2.0.jar
Binary files differ
diff --git a/infrastructure/lib/ridl-3.2.0.jar b/infrastructure/lib/ridl-3.2.0.jar
new file mode 100644
index 0000000..de46acb
--- /dev/null
+++ b/infrastructure/lib/ridl-3.2.0.jar
Binary files differ
diff --git a/infrastructure/lib/unoil-3.2.0.jar b/infrastructure/lib/unoil-3.2.0.jar
new file mode 100644
index 0000000..b1e77aa
--- /dev/null
+++ b/infrastructure/lib/unoil-3.2.0.jar
Binary files differ
diff --git a/infrastructure/net.appjet.oui/execution.scala b/infrastructure/net.appjet.oui/execution.scala
index f4f4d9e..dc17c29 100644
--- a/infrastructure/net.appjet.oui/execution.scala
+++ b/infrastructure/net.appjet.oui/execution.scala
@@ -39,6 +39,7 @@ import Util.enumerationToRichEnumeration;
class RequestWrapper(val req: HttpServletRequest) {
req.setCharacterEncoding("UTF-8");
+// REMOVED_COS_OF_COS ... ?
// private lazy val parameterNames =
// (for (i <- Conversions.convertSet(req.getParameterMap.keySet().asInstanceOf[java.util.Set[String]])) yield i).toList.toArray
// private def parameterValues(k: String) = req.getParameterValues(k);