aboutsummaryrefslogtreecommitdiffstats
path: root/trunk/etherpad/src/templates/pad
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander@sulfrian.net>2010-06-08 08:22:05 +0200
committerAlexander Sulfrian <alexander@sulfrian.net>2010-06-08 08:22:05 +0200
commitd7c5ad7d6263fd1baf9bfdbaa4c50b70ef2fbdb2 (patch)
treeae0b65da6432f4c26c8d5a7319efbda5d172846c /trunk/etherpad/src/templates/pad
parentfa61221dcd89fcd72cba2c97971626f456c86e5d (diff)
downloadetherpad-d7c5ad7d6263fd1baf9bfdbaa4c50b70ef2fbdb2.tar.gz
etherpad-d7c5ad7d6263fd1baf9bfdbaa4c50b70ef2fbdb2.tar.xz
etherpad-d7c5ad7d6263fd1baf9bfdbaa4c50b70ef2fbdb2.zip
reverted folder structure change for better mergeing with upstream
Diffstat (limited to 'trunk/etherpad/src/templates/pad')
-rw-r--r--trunk/etherpad/src/templates/pad/create_body.ejs26
-rw-r--r--trunk/etherpad/src/templates/pad/create_body_rafter.ejs23
-rw-r--r--trunk/etherpad/src/templates/pad/exporthtml.ejs28
-rw-r--r--trunk/etherpad/src/templates/pad/pad_body.ejs69
-rw-r--r--trunk/etherpad/src/templates/pad/pad_body2.ejs472
-rw-r--r--trunk/etherpad/src/templates/pad/pad_content.ejs297
-rw-r--r--trunk/etherpad/src/templates/pad/pad_download_link.ejs27
-rw-r--r--trunk/etherpad/src/templates/pad/pad_iphone_body.ejs29
-rw-r--r--trunk/etherpad/src/templates/pad/padfull_body.ejs32
-rw-r--r--trunk/etherpad/src/templates/pad/padslider_body.ejs41
-rw-r--r--trunk/etherpad/src/templates/pad/padview_body.ejs141
-rw-r--r--trunk/etherpad/src/templates/pad/total_users_exceeded.ejs29
12 files changed, 1214 insertions, 0 deletions
diff --git a/trunk/etherpad/src/templates/pad/create_body.ejs b/trunk/etherpad/src/templates/pad/create_body.ejs
new file mode 100644
index 0000000..742821f
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/create_body.ejs
@@ -0,0 +1,26 @@
+<% /* 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. */ %><% helpers.setHtmlTitle("SplinePad [beta]: Create a new pad?"); %>
+
+<div id="createpadpage" class="fpcontent">
+ <form action="<%= request.path %>" method="post">
+
+ <p><tt id="padurl">http://<%= request.host %>/<%= toHTML(padId) %></tt></p>
+
+ <br/>
+ <p>There is no SplinePad document here. Would you like to create one?</p>
+
+ <input type="hidden" name="padId" value="<%= toHTML(padId) %>" />
+ <input type="submit" id="createPad" value="Create Pad" />
+ </form>
+</div>
diff --git a/trunk/etherpad/src/templates/pad/create_body_rafter.ejs b/trunk/etherpad/src/templates/pad/create_body_rafter.ejs
new file mode 100644
index 0000000..28252c7
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/create_body_rafter.ejs
@@ -0,0 +1,23 @@
+<% /* 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. */ %><% helpers.setHtmlTitle("EtherPad: Create a new pad?"); %>
+
+<div id="createpadpage" class="fpcontent">
+
+ <p><tt>http://<%= request.host %>/<%= toHTML(padId) %></tt></p>
+
+ <p><strong>There is no EtherPad document here.</strong></p>
+
+ <p style="color:red">Creation of new free pads is permanently disabled as part of EtherPad's acquisition by Google. <a href="http://<%= fullSuperdomain %>/ep/blog/posts/google-acquires-appjet">Read more.</a></p>
+
+</div>
diff --git a/trunk/etherpad/src/templates/pad/exporthtml.ejs b/trunk/etherpad/src/templates/pad/exporthtml.ejs
new file mode 100644
index 0000000..288a595
--- /dev/null
+++ b/trunk/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/trunk/etherpad/src/templates/pad/pad_body.ejs b/trunk/etherpad/src/templates/pad/pad_body.ejs
new file mode 100644
index 0000000..d932cd6
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/pad_body.ejs
@@ -0,0 +1,69 @@
+<% /* 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. */ %><%
+ var padIdHtml = toHTML(request.url.split("?", 1)[0]);
+%>
+
+<% helpers.setHtmlTitle("EtherPad: "+toHTML(proTitle || request.path.substr(1))); %>
+<% helpers.setBodyId("padbody") %>
+<% helpers.addBodyClass(bodyClass) %>
+<% helpers.includeCss("pad.css") %>
+<% helpers.includeJs("undo-xpopup.js") %>
+<% helpers.includeCometJs() %>
+<% helpers.includeJQuery(); %>
+<% helpers.includeJs("json2.js") %>
+<% helpers.includeJs("ace.js") %>
+<% helpers.includeJs("collab_client.js") %>
+<% helpers.includeJs("pad.js") %>
+<% helpers.suppressGA() %>
+<% helpers.setRobotsPolicy({index: false, follow: false}) %>
+
+<div id="padpage">
+
+<div id="modaloverlay">
+ <div id="modaldialog">
+ <div id="dialogtopbar">Foo.</div>
+ <table id="dialogcontenttable" cellpadding="0" cellspacing="0" border="0"><tr>
+ <td id="dialogcontent">This is a modal dialog!</td>
+ </tr></table>
+ </div>
+</div>
+<table id="padoutertable" cellpadding="0" cellspacing="0" border="0">
+<tr id="pot_toptr">
+ <td id="pot_shadlefttopseg" class="potshad">&nbsp;</td>
+ <td id="pot_top">
+ <a id="headhomelink" href="/">EtherPad</a>
+ <div id="headurl">
+ <label for="shareurl">Share this URL:</label>
+ &nbsp;<span id="shareurl"><%= padIdHtml %></span>
+ </div>
+ <a id="widthlink" href="javascript: void pad.toggleFullWidth()">M</a>
+ <a id="newpadlink" href="javascript:void pad.newPad()"
+ title="Create and open a new pad in a new window">New Pad</a>
+ </td>
+ <td id="pot_shadrighttopseg" class="potshad">&nbsp;</td>
+</tr>
+
+<tr>
+ <td id="pot_shadleft" class="potshad"><div><!-- --></div></td>
+ <td id="pot_main">
+ <div id="padcontent">
+ <%= contentHtml %>
+ </div><!-- /padcontent -->
+ </td>
+ <td id="pot_shadright" class="potshad"><div><!-- --></div></td>
+</tr>
+
+</table><!-- /padoutertable -->
+
+</div><!-- /padpage -->
diff --git a/trunk/etherpad/src/templates/pad/pad_body2.ejs b/trunk/etherpad/src/templates/pad/pad_body2.ejs
new file mode 100644
index 0000000..23b7adb
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/pad_body2.ejs
@@ -0,0 +1,472 @@
+<% /* 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. */ %>
+<% helpers.setHtmlTitle("EtherPad: "+pageTitle); %>
+<% helpers.setBodyId("padbody") %>
+<% helpers.addBodyClass(bodyClass) %>
+<% helpers.includeCss("pad2_ejs.css") %>
+<% helpers.includeJs("undo-xpopup.js") %>
+<% helpers.includeCometJs() %>
+<% helpers.includeJQuery(); %>
+<% helpers.includeJs("json2.js") %>
+<% helpers.includeJs("colorutils.js") %>
+<% helpers.includeJs("ace.js") %>
+<% helpers.includeJs("collab_client.js") %>
+<% helpers.includeJs("draggable.js") %>
+<% helpers.includeJs("pad_utils.js") %>
+<% helpers.includeJs("pad_cookie.js") %>
+<% helpers.includeJs("pad_editor.js") %>
+<% helpers.includeJs("pad_userlist.js") %>
+<% helpers.includeJs("pad_editbar.js") %>
+<% helpers.includeJs("pad_chat.js") %>
+<% helpers.includeJs("pad_docbar.js") %>
+<% helpers.includeJs("pad_impexp.js") %>
+<% helpers.includeJs("pad_savedrevs.js") %>
+<% helpers.includeJs("pad_connectionstatus.js") %>
+<% helpers.includeJs("pad_modals.js") %>
+<% helpers.includeJs("pad2.js") %>
+<% helpers.suppressGA() %>
+<% helpers.setRobotsPolicy({index: false, follow: false}) %>
+<%
+ var padUrlAttrValue = request.url.split("?", 1)[0].replace(/\"/g, '&quot;'); //"
+%>
+
+<%
+ function exportLink(type, n, label, requiresOffice, url, title) {
+ url = url || '/ep/pad/export/'+localPadId+'/latest?format='+type;
+ var classes = ["exportlink", "exporthref"+type, "n"+n];
+ if (requiresOffice && !hasOffice) {
+ classes.push("disabledexport");
+ }
+ else {
+ classes.push("requiresoffice");
+ }
+ var pieces = ['<a'];
+ pieces.push(' class="', classes.join(' '), '"');
+ pieces.push(' target="_blank"');
+ pieces.push(' href="', url, '"');
+ if (title) {
+ pieces.push(' title="', title.replace(/\"/g, "&quot;"), '"'); //"
+ }
+ pieces.push('>', label);
+ /* if (title) {
+ pieces.push('<sup>?</sup>');
+ }*/
+ pieces.push('</a>');
+ return pieces.join('');
+ }
+%>
+
+<div id="padpage">
+
+<div id="padtop">
+ <div id="topbar">
+ <% /* floated left */ %>
+ <div id="topbarleft"><!-- --></div>
+ <% /* <a href="#" id="topbarnewpad">New Pad</a> */ %>
+ <% /* floated right */ %>
+ <div id="topbarright"><!-- --></div>
+ <% /* <a href="#" id="topbarfullwidth">Toggle Width</a> */ %>
+ <% /* non-floated */ %>
+ <div id="topbarcenter">
+ <a href="/" id="topbaretherpad">EtherPad</a>
+ </div>
+<% if (isProAccountHolder) { %>
+ <a id="backtoprosite" href="/ep/padlist/">Return to pad list</a>
+ <div id="accountnav"><%= toHTML(account.email) %>
+ <a href="/ep/account/sign-out">(sign out)</a>
+ </div>
+<% } else if (isPro) { %>
+ <div id="accountnav">
+ <a href="<%= signinUrl %>">sign in</a>
+ </div>
+<% } %>
+ <div id="specialkeyarea"><!-- --></div>
+ </div>
+<!--
+ <div id="shuttingdown">
+ <strong style="color:red">Note: EtherPad.com is shutting down March 31, 2010.</strong>
+ <a href="http://<%= fullSuperdomain %>/ep/blog/posts/google-acquires-appjet">(more info)</a>
+ </div>
+ -->
+ <div id="alertbar">
+ <div id="servermsg">
+ <h3>Server Notice<span id="servermsgdate"><!-- --></span>:</h3>
+ <a id="hidetopmsg" href="javascript: void pad.hideServerMessage()">hide</a>
+ <p id="servermsgtext"><!-- --></p>
+ </div>
+ </div>
+
+ <div id="docbar">
+ <div id="docbarleft"><!-- --></div>
+ <div id="docbarpadtitle"><span><%= initialTitle %></span></div>
+<% if (isProAccountHolder) { %>
+ <div id="docbarsecurity-outer"><a href="javascript:void(0)" id="docbarsecurity">Security</a></div>
+<% } /* isProAccountHolder */ %>
+ <div id="docbaroptions-outer"><a href="javascript:void(0)" id="docbaroptions">Pad Options</a></div>
+ <div id="docbarsavedrevs-outer"><a href="javascript:void(0)" id="docbarsavedrevs">Saved revisions</a></div>
+ <div id="docbarimpexp-outer"><a href="javascript:void(0)" id="docbarimpexp">Import/Export</a></div>
+ <div id="docbarslider-outer"><a target="_blank" href="/ep/pad/view/<%= localPadId %>/latest" id="docbarslider">Time Slider</a></div>
+<% if (isProAccountHolder) { %>
+ <div id="docbarrenamelink">
+ <a href="javascript:void(0)">(rename)</a>
+ </div>
+<% } /* isProAccountHolder */ %>
+ <input type="text" id="padtitleedit"/>
+ <div id="padtitlebuttons">
+ <a id="padtitlesave" href="javascript:void(0)">Save</a>
+ <a id="padtitlecancel" href="javascript:void(0)">Cancel</a>
+ </div>
+ <div id="impexp-wrapper" class="dbpanel-wrapper">
+ <div id="impexp-panel" class="dbpanel-panel">
+ <div class="dbpanel-leftedge"><!-- --></div>
+ <div class="dbpanel-rightedge"><!-- --></div>
+ <div class="dbpanel-botleftcorner"><!-- --></div>
+ <div class="dbpanel-botrightcorner"><!-- --></div>
+ <div class="dbpanel-middle">
+ <div class="dbpanel-inner">
+ <div class="dbpanel-top"><!-- --></div>
+ </div>
+ <div class="dbpanel-bottom"><!-- --></div>
+ <div id="importexport">
+ <div id="impexp-import">
+ <div id="impexp-importlabel"><b>Import</b> from text file, HTML:</div>
+ <form id="importform" method="post" action="/ep/pad/impexp/import"
+ target="importiframe" enctype="multipart/form-data">
+ <div class="importformdiv" id="importformfilediv">
+ <input type="file" name="file" size="20" id="importfileinput" />
+ <div class="importmessage" id="importmessagefail"></div>
+ </div>
+ <div class="importmessage" id="importmessagesuccess">Successful!</div>
+ <div class="importformdiv" id="importformsubmitdiv">
+ <input type="hidden" name="padId" value="<%= encodeURIComponent(localPadId) %>" />
+ <span class="nowrap">
+ <input type="submit" name="submit" value="Import Now" disabled="disabled" id="importsubmitinput" />
+ <img alt="" id="importstatusball" src="/static/img/misc/status-ball.gif" align="top" />
+ <img alt="" id="importarrow" src="/static/img/may09/leftarrow2.gif" align="top" />
+ </span>
+ </div>
+ </form>
+ </div><!-- /impexp-import -->
+ <div id="impexp-export">
+ <div id="impexp-exportlabel"><b>Export</b> current pad as:</div>
+ <div id="exportlinks">
+ <%= exportLink('html', 1, 'HTML', false) %>
+ <%= exportLink('txt', 2, 'Plain text', false) %>
+ <%= exportLink('link', 3, 'Bookmark file', false, '/ep/pad/linkfile?padId='+localPadId, 'This will save a file that, when opened, takes you to this pad.') %>
+ </div>
+ </div><!-- /impexp-export -->
+ <div id="impexp-divider"><!-- --></div>
+ <div id="impexp-disabled-clickcatcher"><!-- --></div>
+ <a id="impexp-close" href="javascript:void(0)">Hide</a>
+ </div><!-- /importexport -->
+ </div>
+ </div>
+ </div>
+ <div id="savedrevs-wrapper" class="dbpanel-wrapper">
+ <div id="savedrevs-panel" class="dbpanel-panel">
+ <div class="dbpanel-leftedge"><!-- --></div>
+ <div class="dbpanel-rightedge"><!-- --></div>
+ <div class="dbpanel-botleftcorner"><!-- --></div>
+ <div class="dbpanel-botrightcorner"><!-- --></div>
+ <div class="dbpanel-middle">
+ <div class="dbpanel-inner">
+ <div class="dbpanel-top"><!-- --></div>
+ </div>
+ <div class="dbpanel-bottom"><!-- --></div>
+ </div>
+ <div id="savedrevisions">
+ <a href="javascript:void(0)" id="savedrevs-savenow">
+ Save Now
+ </a>
+ <div id="savedrevs-scrolly">
+ <div id="savedrevs-scrollleft" class="disabledscrollleft"><!-- --></div>
+ <div id="savedrevs-scrollright" class="disabledscrollright"><!-- --></div>
+ <div id="savedrevs-scrollouter">
+ <div id="savedrevs-scrollinner">
+ <!-- -->
+ </div>
+ </div>
+ </div>
+ <a id="savedrevs-close" href="javascript:void(0)">Hide</a>
+ </div><!-- /savedrevs close -->
+ </div>
+ </div><!-- /savedrevs-wrapper -->
+ <div id="revision-notifier"><span class="label">Saved:</span> <span class="name">Revision 1</span></div>
+ <div id="options-wrapper" class="dbpanel-wrapper">
+ <div id="options-panel" class="dbpanel-panel">
+ <div class="dbpanel-leftedge"><!-- --></div>
+ <div class="dbpanel-rightedge"><!-- --></div>
+ <div class="dbpanel-botleftcorner"><!-- --></div>
+ <div class="dbpanel-botrightcorner"><!-- --></div>
+ <div class="dbpanel-middle">
+ <div class="dbpanel-inner">
+ <div class="dbpanel-top"><!-- --></div>
+ </div>
+ <div class="dbpanel-bottom"><!-- --></div>
+ </div>
+ <div id="padoptions">
+ <div id="options-viewhead">Shared view options:</div>
+ <input type="checkbox" id="options-colorscheck" />
+ <label for="options-colorscheck" id="options-colorslabel">Authorship colors</label>
+ <input type="checkbox" id="options-linenoscheck" />
+ <label for="options-linenoscheck" id="options-linenoslabel">Line numbers</label>
+ <div id="options-fontlabel">Display font:</div>
+ <select id="viewfontmenu"><option value="normal">Normal</option><option value="monospace">Monospaced</option></select>
+ <div id="options-viewexplain">These options affect everyone's view of the pad.</div>
+ <a id="options-close" href="javascript:void(0)">Hide</a>
+ </div>
+ </div>
+ </div><!-- /options-wrapper -->
+<% if (isProAccountHolder) { %>
+ <div id="security-wrapper" class="dbpanel-wrapper">
+ <div id="security-panel" class="dbpanel-panel">
+ <div class="dbpanel-leftedge"><!-- --></div>
+ <div class="dbpanel-rightedge"><!-- --></div>
+ <div class="dbpanel-botleftcorner"><!-- --></div>
+ <div class="dbpanel-botrightcorner"><!-- --></div>
+ <div class="dbpanel-middle">
+ <div class="dbpanel-inner">
+ <div class="dbpanel-top"><!-- --></div>
+ </div>
+ <div class="dbpanel-bottom"><!-- --></div>
+ </div>
+ <div id="padsecurity">
+ <div id="security-access">
+ <div id="security-accesshead">Pad Access:</div>
+ <input type="radio" name="padaccess" id="access-private" value="deny"/>
+ <label for="access-private" id="access-private-label"><strong>Private</strong> (Team account-holders only)</label>
+ <input type="radio" name="padaccess" id="access-public" value="allow"/>
+ <label for="access-public" id="access-public-label"><strong>Public</strong> (Allow Internet guests)</label>
+ </div>
+ <div id="security-password">
+ <div id="security-passhead">Password:</div>
+ <div id="security-passbody">
+ <div class="nopassword" id="password-nonedit">
+ <div id="password-display">None</div>
+ <a href="javascript:void(0)" id="password-setlink">Set...</a>
+ <a href="javascript:void(0)" id="password-clearlink">Clear</a>
+ </div>
+ <div id="password-inedit">
+ <a href="javascript:void(0)" id="password-savelink">Save</a>
+ <a href="javascript:void(0)" id="password-cancellink">Cancel</a>
+ <input type="text" id="security-passwordedit" maxlength="31" />
+ </div>
+ </div>
+ </div>
+ <a id="security-close" href="javascript:void(0)">Hide</a>
+ </div>
+ </div>
+ </div><!-- /security-wrapper -->
+<% } /* isProAccountHolder */ %>
+ </div><!-- /docbar -->
+</div>
+
+<div id="padmain">
+ <div id="padsidebar">
+ <div id="padusers">
+ <div id="connectionbox" class="cboxconnecting">
+ <div id="connectionboxinner">
+ <div class="connecting">
+ Connecting...
+ </div>
+ <div class="reconnecting">
+ Reestablishing connection...
+ </div>
+ <div class="disconnected">
+ <h2 class="h2_disconnect">Disconnected.</h2>
+ <h2 class="h2_userdup">Opened in another window.</h2>
+ <h2 class="h2_unauth">No Authorization.</h2>
+ <div id="disconnected_looping">
+ <p><b>We're having trouble talking to the EtherPad synchronization server.</b>
+ You may be connecting through an incompatible firewall or proxy server.</p>
+ </div>
+ <div id="disconnected_initsocketfail">
+ <p><b>We were unable to connect to the EtherPad synchronization server.</b>
+ This may be due to an incompatibility with your web
+ browser or internet connection.</p>
+ </div>
+ <div id="disconnected_userdup">
+ <p><b>You seem to have opened this pad in another browser window.</b>
+ If you'd like to use this window instead, you can reconnect.</p>
+ </div>
+ <div id="disconnected_unknown">
+ <p><b>Lost connection with the EtherPad synchronization
+ server.</b> This may be due to a loss of network connectivity.</p>
+ </div>
+ <div id="disconnected_slowcommit">
+ <p><b>Server not responding.</b> This may be due to network connectivity issues or high load on the server.</p>
+ </div>
+ <div id="disconnected_unauth">
+ <p>Your browser's credentials or permissions have changed while viewing this pad. Try reconnecting.</p>
+ </div>
+ <div id="reconnect_advise">
+ <p>If this continues to happen, please <a target="_blank" href="/ep/support">let us know</a>
+ (opens in new window).</p>
+ </div>
+ <div id="reconnect_form">
+ <button id="forcereconnect">Reconnect Now</button>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div id="connectionstatus">
+ <!-- -->
+ </div>
+
+ <div id="myuser">
+ <div id="mycolorpicker">
+ <div class="pickerswatchouter n1"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n2"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n3"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n4"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n5"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n6"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n7"><div class="pickerswatch"><!-- --></div></div>
+ <div class="pickerswatchouter n8"><div class="pickerswatch"><!-- --></div></div>
+ <div id="mycolorpickersave">Save</div>
+ <div id="mycolorpickercancel">Cancel</div>
+ </div>
+ <div id="myswatchbox"><div id="myswatch"><!-- --></div></div>
+ <div id="myusernameform"><input type="text" id="myusernameedit" disabled="disabled" /></div>
+ <div id="mystatusform"><input type="text" id="mystatusedit" disabled="disabled" /></div>
+ </div>
+ <div id="otherusers">
+ <div id="guestprompts"><!-- --></div>
+ <table id="otheruserstable" cellspacing="0" cellpadding="0" border="0">
+ <tr><td></td></tr>
+ </table>
+ <div id="nootherusers"><a href="javascript:void(0)">Invite</a> other users and they will show up here.</div>
+ </div>
+ <div id="userlistbuttonarea">
+ <a href="javascript:void(0)" id="sharebutton">Share</a>
+ </div>
+ </div> <!-- /padusers -->
+
+ <div id="hdraggie"><!-- --></div>
+
+ <div id="padchat">
+<!-- <div id="chattop"><a href="#">View chat logs...</a></div> -->
+ <div id="chatlines">
+ <a href="javascript:void(0)" id="chatloadmore">Load more history...</a>
+ <div id="chatloadingmore">Loading history...</div>
+ </div>
+ <div id="chatbottom">
+ <div id="chatprompt">Chat:</div>
+ <div id="chatentryform"><input type="text" id="chatentrybox"/></div>
+ </div>
+ </div>
+ </div> <!-- /padsidebar -->
+
+ <div id="padeditor">
+ <div id="editbar" class="disabledtoolbar">
+ <% /* floated left */ %>
+ <div id="editbarleft"><!-- --></div>
+ <% /* floated right */ %>
+ <div id="editbarright"><!-- --></div>
+ <% /* non-floated */ %>
+ <div id="editbarinner">
+ <a href="javascript:void (window.pad&&pad.editbarClick('bold'));" class="editbarbutton bold" title="Bold (ctrl-B)">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('italic'));" class="editbarbutton italic" title="Italics (ctrl-I)">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('underline'));" class="editbarbutton underline" title="Underline (ctrl-U)">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('strikethrough'));" class="editbarbutton strikethrough" title="Strikethrough">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('h1'));" class="editbarbutton h1" title="H1">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('h2'));" class="editbarbutton h2" title="H2">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('h3'));" class="editbarbutton h3" title="H3">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('h4'));" class="editbarbutton h4" title="H4">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('h5'));" class="editbarbutton h5" title="H5">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('h6'));" class="editbarbutton h6" title="H6">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('clearauthorship'));" class="editbarbutton clearauthorship" title="Clear Authorship Colors">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('undo'));" class="editbarbutton undo" title="Undo (ctrl-Z)">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('redo'));" class="editbarbutton redo" title="Redo (ctrl-Y)">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('insertunorderedlist'));" class="editbarbutton insertunorderedlist" title="Toggle Bullet List">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('indent'));" class="editbarbutton indent" title="Indent List">&nbsp;</a>
+ <a href="javascript:void (window.pad&&pad.editbarClick('outdent'));" class="editbarbutton outdent" title="Unindent List">&nbsp;</a>
+ <div id="syncstatussyncing" title="Syncing..."><!-- --></div>
+ <div id="syncstatusdone" title="Synced."><!-- --></div>
+ <a href="javascript:void (window.pad&&pad.editbarClick('save'));" class="editbarbutton save" title="Save Revision">&nbsp;</a>
+ </div>
+ </div>
+ <div id="editorcontainerbox">
+ <div id="editorloadingbox">Loading...</div>
+ <div id="editorcontainer"><!-- --></div>
+ </div>
+ </div><!-- /padeditor -->
+
+ <div id="bottomarea">
+ <div id="viewbarcontents">
+ <div id="viewzoomtitle">Zoom:</div>
+ <select id="viewzoommenu"><option value="z85">85%</option><option value="z100">100%</option><option value="z115">115%</option><option value="z150">150%</option><option value="z200">200%</option><option value="z300">300%</option></select>
+ </div>
+
+ <div id="widthprefcheck"
+ class="<%= (prefs.isFullWidth?'widthprefchecked':'widthprefunchecked') %>"
+ ><!-- --></div>
+ <div id="sidebarcheck"
+ class="<%= (prefs.hideSidebar?'sidebarunchecked':'sidebarchecked') %>"
+ ><!-- --></div>
+ </div>
+
+</div><!-- /padmain -->
+
+</div><!-- /padpage -->
+
+<div id="modaloverlay"><div id="modaloverlay-inner"><!-- --></div></div>
+<div id="mainmodals">
+ <div id="sharebox">
+ <div id="sharebox-inner">
+ <a href="javascript:void(0)" id="sharebox-hide"><!-- --></a>
+ <div id="sharebox-stripe" class="sharebox-stripe-private">
+ <div class="public">
+ <strong>Public Pad:</strong> This pad is accessible to anyone who
+ visits its URL. To make it private, <a href="javascript:void(0)" class="setsecurity">change security settings</a>.
+ </div>
+ <div class="private">
+ <strong>Private Pad:</strong> This pad is only accessible to team account-holders. To allow anyone to access it, <a href="javascript:void(0)" class="setsecurity">change security settings</a>.
+ </div>
+ </div>
+ <div id="sharebox-forms">
+ <div id="sharebox-pastelink">Paste link over email or IM:</div>
+ <div id="sharebox-orsend">or send an email invitation...</div>
+ <a href="javascript:void(0)" id="sharebox-send"><!-- --></a>
+ <input id="sharebox-url" type="text" readonly="readonly" value="<%=padUrlAttrValue%>"/>
+ <input type="text" id="sharebox-to" class="modalfield" />
+ <input type="text" id="sharebox-subject" class="modalfield" />
+ <textarea id="sharebox-message" rows="6" cols="40" class="modalfield"></textarea>
+ <div id="sharebox-fieldname-to">To</div>
+ <div id="sharebox-fieldname-subject">Subject</div>
+ <div id="sharebox-fieldname-message">Message</div>
+ <div id="sharebox-dislink"><!-- --></div>
+ </div>
+ <div id="sharebox-shownwhenexpanded">
+ <div id="sharebox-response"><!-- --></div>
+ </div>
+ </div>
+ </div>
+</div>
+
+<% if (request.params.djs) { %>
+ <div id="djs"><!-- --></div>
+<% } %>
+
+<form id="reconnectform"
+ method="post"
+ action="/ep/pad/reconnect"
+ accept-charset="UTF-8"
+ style="display: none;">
+ <input type="hidden" class="padId" name="padId" />
+ <input type="hidden" class="diagnosticInfo"
+ name="diagnosticInfo" />
+ <input type="hidden" class="missedChanges" name="missedChanges" />
+</form>
diff --git a/trunk/etherpad/src/templates/pad/pad_content.ejs b/trunk/etherpad/src/templates/pad/pad_content.ejs
new file mode 100644
index 0000000..4e25c7f
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/pad_content.ejs
@@ -0,0 +1,297 @@
+<% /* 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. */ %><%
+ function checkboxPref(name, label) {
+ var r = ['<div class="prefcheckbox" id="checkpref', name, '">'];
+ r.push('<table cellspacing="0" cellpadding="0" border="0">');
+ r.push('<tr>');
+ r.push('<td class="checkboxcell" valign="middle"><input type="checkbox" /></td>');
+ r.push('<td class="labelcell" valign="middle">', label, '</td>');
+ r.push('</tr>');
+ r.push('</table>');
+ r.push('</div>');
+ return r.join('');
+ }
+
+ function exportOption(type, label, requiresOffice, url, title) {
+ url = url || '/ep/pad/export/'+padId+'/latest?format='+type;
+ var classes = [ "exportlink", "exporthref"+type ];
+ if (requiresOffice && !hasOffice) {
+ classes.push("disabledexport");
+ } else if (requiresOffice) {
+ classes.push("requiresoffice");
+ }
+ var aStartArr = ['<a '];
+ if (classes.length > 0) {
+ aStartArr.push(' class="'+classes.join(' ')+'"');
+ }
+ aStartArr.push(' target="_blank" href="', url, '">');
+ var aStart = aStartArr.join('');
+ var r = ['<div class="exportlink" id="export', type, '"'];
+ if (title) {
+ r.push(' title="'+title+'"');
+ }
+ r.push('>');
+ r.push('<table cellspacing="0" cellpadding="0" border="0">');
+ r.push('<tr>');
+ r.push('<td class="exportpic" valign="middle">');
+ r.push(aStart, '<img alt="" src="/static/img/may09/'+type+'.gif" />', '</a>');
+ r.push('</td>');
+ r.push('<td class="labelcell" valign="middle">');
+ r.push(aStart, label, '</a>');
+ if (title) {
+ r.push('<sup>?</sup>')
+ }
+ r.push('</td>');
+ if (requiresOffice) {
+ r.push('<td class="exportspinner" ');
+ r.push('id="exportspinner', type, '"');
+ r.push(' valign="middle"><img alt="" src="/static/img/misc/status-ball.gif" /></td>');
+ }
+ r.push('</tr>');
+ r.push('</table>');
+ r.push('</div>');
+ return r.join('');
+ }
+%>
+
+<div id="servermsg" class="topmsg hidden">
+ <p><b>Server Notice (<span id="servermsgdate"></span>)</b></p>
+ <br/>
+ <a id="hidetopmsg" href="javascript: void pad.hideTopMsg('server')">hide</a>
+ <p id="servermsgtext"></p>
+</div>
+
+<div id="bigtoperror_wrap" class="topmsg hidden">
+
+ <div class="bigtoperror" id="disconnected_looping">
+ <p><b>We're having trouble establishing a connection with an
+ EtherPad synchronization server.</b> You may be connecting through an incompatible firewall or
+ proxy server.</p>
+ </div>
+
+ <div class="bigtoperror" id="disconnected_userdup">
+ <p><b>You seem to have opened this pad in another browser
+ window.</b> If you'd like to use this window
+ instead, you can reconnect.</p>
+ </div>
+
+ <div class="bigtoperror" id="disconnected_slowcommit">
+ <p><b>We're having difficulties talking to the EtherPad
+ synchronization server.</b> This may be due to network connectivity issues or high load on the server.</p>
+ </div>
+
+ <div class="bigtoperror" id="disconnected_initsocketfail">
+ <p><b>We were unable to establish the initial connection with
+ the EtherPad synchronization server.</b> This may be due to an incompatibility with your web
+ browser or internet connection.</p>
+ </div>
+
+ <div class="bigtoperror" id="disconnected_unknown">
+ <p><b>Lost connection with the EtherPad synchronization
+ server.</b> This may be due to a loss of network connectivity.</p>
+ </div>
+
+ <div class="bigtoperror" id="reconnect_advise">
+ <p>If this continues to happen, please <a target="_blank" href="/ep/support">let us know</a>
+ (opens in new window).</p>
+ </div>
+
+ <div id="reconnect_form">
+ <p><button class="forcereconnect">Reconnect
+ Now</button></p>
+ </div>
+
+</div>
+
+<div id="padtablediv">
+<table id="padtable"
+ border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td id="topbar">
+ <div id="connectionstatus"
+ class="connecting">Connecting...</div>
+ <div id="topbarmsg">&nbsp;</div>
+ <a class="showhide" id="showsidebar" href="javascript:void pad.showSideBar();">
+ &laquo; show side bar
+ </a>
+ </td>
+ <td id="sidebartop">
+ <a class="showhide" id="hidesidebar" href="javascript:void pad.hideSideBar();">
+ hide &raquo;
+ </a>
+ </td>
+ </tr>
+
+ <tr id="sizedcontent">
+ <td id="editorcell" class="editorcell_loading" width="100%" valign="top">
+ <div id="editorcellinner">
+ <div id="loadingbox">
+ Loading...
+ </div>
+ <div id="toptoolbar" class="disabledtoolbar">
+ <a href="javascript:void pad.toolbarClick('bold');" class="toptoolbarbutton bold" title="Bold (ctrl-B)">&nbsp;</a>
+ <a href="javascript:void pad.toolbarClick('italic');" class="toptoolbarbutton italic" title="Italics (ctrl-I)">&nbsp;</a>
+ <a href="javascript:void pad.toolbarClick('underline');" class="toptoolbarbutton underline" title="Underline (ctrl-U)">&nbsp;</a>
+ <a href="javascript:void pad.toolbarClick('undo');" class="toptoolbarbutton undo" title="Undo (ctrl-Z)">&nbsp;</a>
+ <a href="javascript:void pad.toolbarClick('redo');" class="toptoolbarbutton redo" title="Redo (ctrl-Y)">&nbsp;</a>
+ <form id="padtitle" action="/"><input type="text" id="padtitleedit"/><span class="padtitlepad">Pad:</span> <span id="padtitletitle">&nbsp;</span> &nbsp;<span class="editlink">(<a href="javascript:void pad.editTitle();">rename</a>)</span><span class="oklink"><a href="javascript:void pad.submitTitle(true);">OK</a></span></form>
+ <a href="javascript:void pad.passwordClick();" id="passwordlock" title="" class="passwordhidden">&nbsp;</a>
+ </div>
+ <div id="editorcontainer"><!-- --></div>
+ <div id="bottoolbar" class="disabledtoolbar">
+ <div id="viewzoom">View Zoom: <select id="viewzoommenu"><option value="z85">85%</option><option value="z100">100%</option><option value="z115">115%</option><option value="z150">150%</option><option value="z200">200%</option><option value="z300">300%</option></select></div>
+ <div id="viewfont">View Font: <select id="viewfontmenu"><option value="normal">Normal</option><option value="code">Code</option></select></div>
+ </div>
+ </div>
+ </td>
+ <td id="sidebarcell" valign="top">
+ <div id="sidebar" class="sidebar_loading">
+ <div id="headuserlistwrap" class="sideheadwrap sh_uncollapsed"><p class="sidehead">Connected Users</p></div>
+ <div id="userlistwrap" class="sidebox">
+ <div id="userlist"><!-- setbyjs --></div>
+ <div id="invitemore">
+ <a class="small_link" id="invitemorelink" href="javascript:void pad.invitemoreShow();">invite more people...</a>
+ <div id="inviteinstructions" style="display:none;">
+ <p>To invite someone to this pad, just copy and paste them the URL to this page.</p>
+ <p id="emailinviteleadin">Or we can send them an invitation for you:</p>
+ <p>
+ Email:&nbsp;<input id="invite_email" type="text" name="email" value="" />
+ <input type="submit" id="invite_email_submit" value="Send" />
+ </p>
+ <p id="invite_email_status"><!-- --></p>
+ <p id="hideinstructions"><a class="small_link" href="javascript:void pad.invitemoreHide();">hide</a></p>
+ </div>
+ </div>
+ </div>
+ <div id="headchatbox" class="sideheadwrap sh_collapsed"><p id="chatheadname" class="sidehead">Chat</p></div>
+ <div class="sidebox hidden" id="chatbox">
+ <div id="chatmessages"><!-- --></div>
+ <div>
+ <table id="chatsaytable" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td width="5" valign="middle">Say:</td>
+ <td><input type="text" id="chatinput" /></td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <div id="headimportexport" class="sideheadwrap sh_collapsed"><p class="sidehead">Import/Export</p></div>
+ <div class="sidebox hidden" id="importexport">
+ <div id="exportsection">
+ <p id="headexport"><strong>Download</strong> as:</p>
+ <table>
+ <tr>
+ <td class="firsttd"><%= exportOption('html', 'HTML', false) %></td>
+ </tr>
+ <tr>
+ <td class="firsttd"><%= exportOption('txt', 'Plain text', false) %></td>
+ </tr>
+ <tr>
+ <td class="firsttd"><%= exportOption('link', 'Bookmark file', false,
+ '/ep/pad/linkfile?padId='+padId,
+ 'This will save a file that, when opened, takes you to this pad.') %></td>
+ </tr>
+ </table>
+ <div id="exportmessage"></div>
+ </div>
+ <div id="importsection">
+ <p id="headimport"><strong>Import</strong> text from file:</p>
+ <form id="importform" method="post" action="/ep/pad/impexp/import" target="importiframe" enctype="multipart/form-data">
+ <div class="importformdiv" id="importformfilediv">
+ <input type="file" name="file" size="20" id="importfileinput" />
+ <div class="importmessage" id="importmessagefail"></div>
+ </div>
+ <div class="importmessage" id="importmessagesuccess"></div>
+ <div class="importformdiv" id="importformsubmitdiv">
+ <input type="hidden" name="padId" value="<%= encodeURIComponent(padId) %>" />
+ <span class="nowrap">
+ <input type="submit" name="submit" value="Import Now" disabled="disabled" id="importsubmitinput" />
+ <img alt="" id="importstatusball" src="/static/img/misc/status-ball.gif" align="bottom" />
+ <img alt="" id="importarrow" src="/static/img/may09/leftarrow.gif" align="bottom" />
+ </span>
+ </div>
+ </form>
+ </div>
+ </div>
+ <div id="headrevisions" class="sideheadwrap sh_collapsed"><p class="sidehead">Saved Revisions</p></div>
+ <div class="sidebox hidden" id="revisions">
+ <div id="nosaveprivs">
+ Sorry, you have exceeded the maximum allowable
+ number of saved revisions.
+ </div>
+ <input id="savenow" type="submit" value="Save Now" />
+ <div id="revisionlist">
+ </div>
+ </div>
+ <div id="headprefs" class="sideheadwrap sh_collapsed"><p class="sidehead">Options</p></div>
+ <div class="sidebox hidden" id="prefs">
+ <%= checkboxPref("showcolors", "Highlight who typed what.") %>
+ <%= checkboxPref("wrap", "Wrap long lines.") %>
+ <%= checkboxPref("linenums", "Show line numbers.") %>
+ <%= checkboxPref("fullwidth", "Use full window width.") %>
+ <%= checkboxPref("jshighlight", "Highlight JavaScript syntax.") %>
+ </div>
+ <div id="headfeedback" class="sideheadwrap sh_collapsed"><p class="sidehead">Feedback</p></div>
+ <div class="sidebox hidden sidebox_last" id="feedback">
+ <div id="feedbackbox">
+ <p style="text-align: center;">Tell us what you
+ think of EtherPad!<br/>(Include your email if you want a response)</p>
+ <div id="formbox">
+ <textarea rows="5" cols="10" id="feedbackarea" name="feedbackarea"></textarea>
+ <input id="feedbacksubmit" type="submit"
+ value="Send to EtherPad Team" />
+ </div>
+ </div>
+ <div id="feedbackresult">
+ <p>Thanks for the feedback! Keep it coming.</p>
+ <p>You can also send feedback by email to
+ <span id="feedbackemail"
+ style="white-space: nowrap;">feedback@e***rp**d.com</span> to receive a personal
+ response.</p>
+ </div>
+ </div>
+ </div>
+ </td>
+ </tr>
+</table>
+</div><!-- #padtablediv -->
+
+<div style="clear: both;"><!-- --></div>
+
+<% if (request.params.djs) { %>
+ <div id="djs">&nbsp;</div>
+<% } %>
+
+<div id="appjetfooter">
+ Powered by <a target="_blank" href="/ep/about/appjet">AppJet</a>
+ <img id="plane" src="/static/img/tinyplane.gif" alt="AppJet" />
+</div><!-- /appjetfooter -->
+
+<form id="reconnect"
+ method="post"
+ action="/ep/pad/reconnect"
+ accept-charset="UTF-8"
+ style="display: none;">
+ <input type="hidden" id="padId" name="padId" />
+ <input type="hidden" id="diagnosticInfo"
+ name="diagnosticInfo" />
+ <input type="hidden" id="missedChanges" name="missedChanges" />
+</form>
+
+<form id="newpad"
+ name="newpad"
+ action="/ep/pad/newpad"
+ target="_blank"
+ style="display: none;">
+</form>
diff --git a/trunk/etherpad/src/templates/pad/pad_download_link.ejs b/trunk/etherpad/src/templates/pad/pad_download_link.ejs
new file mode 100644
index 0000000..e05d7d0
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/pad_download_link.ejs
@@ -0,0 +1,27 @@
+<% /* 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. */ %><%
+
+var host = request.host;
+helpers.addToHead('<meta http-equiv="refresh" content="0;url=http://'+host+'/'+padId+'" />');
+
+%>
+
+<div id="refreshpage">
+ <h1>Etherpad</h1>
+
+ <p>This pad document, <a href="http://<%= host %>/<%= padId %>"><%= padId %></a>, is stored on <a href="http://<%= host %>"><%= host %></a>. Please click the link below to access this pad.</p>
+
+ <a style="size: 200%; text-align: center;" href="http://<%= host %>/<%= padId %>">http://<%= host %>/<%= padId %></a>
+
+</div> \ No newline at end of file
diff --git a/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs b/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs
new file mode 100644
index 0000000..96279ce
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/pad_iphone_body.ejs
@@ -0,0 +1,29 @@
+<% /* 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. */ %>
+<div style="font-size: 4em; font-family: sans-serif; text-align: center;">
+
+ <p>EtherPad is not yet fully-functional on the iPhone.</p>
+
+ <a style="display: block; padding: 1em; border: 3px solid #333; background: #ddd; margin: 1em; -webkit-border-radius: 1em;"
+ href="/ep/pad/view/<%= padId %>/latest">
+ View Read-Only
+ </a>
+
+ <a style="display: block; padding: 1em; border: 3px solid #333; background: #ddd; margin: 1em; -webkit-border-radius: 1em;"
+ href="/<%= padId %>?skipIphoneCheck=1">
+ Proceed to Editor<br/>
+ <span style="font-size: .6em;">(may not be fully-functional)</span>
+ </a>
+
+</div>
diff --git a/trunk/etherpad/src/templates/pad/padfull_body.ejs b/trunk/etherpad/src/templates/pad/padfull_body.ejs
new file mode 100644
index 0000000..5f85b4e
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/padfull_body.ejs
@@ -0,0 +1,32 @@
+<% /* 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. */ %><div id="padfullpage" class="fpcontent">
+
+<h1>Pad is Full!</h1>
+
+<div id="msg">
+
+<div id="padurlwrap">
+<p><tt id="padurl">http://<%= request.host %>/<%= padId %></tt></p>
+</div>
+
+<p>Sorry, only <%= maxUsersPerPad %> people are allowed to edit a
+single pad at the same time in the free version of EtherPad.</p>
+
+<p>Please see our <a href="http://pad.spline.inf.fu-berlin.de/ep/about/pricing">pricing plans</a> for
+information about having more than <%= maxUsersPerPad %>
+collaborators.</p>
+
+</div>
+
+</div>
diff --git a/trunk/etherpad/src/templates/pad/padslider_body.ejs b/trunk/etherpad/src/templates/pad/padslider_body.ejs
new file mode 100644
index 0000000..51a9e84
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/padslider_body.ejs
@@ -0,0 +1,41 @@
+<% /* 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. */ %><%
+ helpers.setHtmlTitle(toHTML("Time Slider"));
+ helpers.setBodyId("padsliderbody");
+ helpers.includeCss("etherpad.css");
+ //helpers.includeCss("jqueryui/theme/ui.all.css");
+ helpers.setRobotsPolicy({index: false, follow: false});
+ helpers.includeJQuery();
+ //helpers.includeJs("jquery-ui-slider-1.5.3.js");
+ helpers.includeJs("json2.js");
+ helpers.includeJs("timeslider.js");
+
+ function dfmt(t) {
+ var d = new Date(t);
+ return d.toString();
+ }
+%>
+
+<!-- <div id="sliderui"></div> -->
+<p>Powered by <a href="/">EtherPad</a>.</p><br />
+<div id="controls">
+<a href="<%= request.url %>#" class="prev">prev</a> /
+<a href="<%= request.url %>#" class="next">next</a> &nbsp; &nbsp;
+<a href="<%= request.url %>#" class="play">play</a> /
+<a href="<%= request.url %>#" class="stop">stop</a> &nbsp; &nbsp;
+seek to #<input class="entry" type="text" size="6"/>
+<div id="currevdisplay"><span class="min">0</span> --- <span class="cur">0</span> --- <span class="max">0</span></div>
+</div>
+
+<div id="stuff">Loading...</div>
diff --git a/trunk/etherpad/src/templates/pad/padview_body.ejs b/trunk/etherpad/src/templates/pad/padview_body.ejs
new file mode 100644
index 0000000..e18ff12
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/padview_body.ejs
@@ -0,0 +1,141 @@
+<% /* 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. */ %><%
+ helpers.addBodyClass(bodyClass);
+ helpers.setHtmlTitle(toHTML(padId + " / " + rlabel));
+ helpers.setBodyId("padviewbody");
+ helpers.includeCss("broadcast.css");
+ helpers.setRobotsPolicy({index: false, follow: false})
+ helpers.includeJQuery();
+ helpers.includeCometJs();
+ helpers.includeJs("json2.js");
+ helpers.includeJs("pad_utils.js");
+ helpers.includeJs("broadcast_slider.js");
+ helpers.includeJs("broadcast_revisions.js");
+ helpers.includeJs("easysync2_client.js");
+ helpers.includeJs("domline_client.js");
+ helpers.includeJs("linestylefilter_client.js");
+ helpers.includeJs("cssmanager_client.js");
+ helpers.includeJs("broadcast.js");
+ helpers.addToHead('\n<style type="text/css" title="dynamicsyntax"></style>\n');
+
+ function dfmt(t) {
+ var d = new Date(t);
+ return d.toString();
+ }
+
+ function exportOption(type, label, requiresOffice, url, title) {
+ url = url || '/ep/pad/export/'+padId+'/'+revisionId+'?format='+type;
+ var aStart =
+ ['<a',
+ (requiresOffice && ! hasOffice ? ' class="disabledexport"' : ' href="'+url+'"'),
+ '>'].join('');
+ var r = ['<div class="exportlink" id="export', type, '"'];
+ if (title) {
+ r.push(' title="'+title+'"');
+ }
+ r.push('>');
+ r.push('<table cellspacing="0" cellpadding="0" border="0">');
+ r.push('<tr>');
+ r.push('<td class="exportpic" valign="middle">');
+ r.push(aStart, '<img src="/static/img/may09/'+type+'.gif" />', '</a>');
+ r.push('<td class="labelcell" valign="middle">');
+ r.push(aStart, label, '</a>');
+ if (title) {
+ r.push('<sup>?</sup>')
+ }
+ r.push('</td>');
+ r.push('</tr>');
+ r.push('</table>');
+ r.push('</div>');
+ return r.join('');
+ }
+%>
+
+<div id="padpage">
+<div id="topbar" style="margin: 7px; margin-top: 0px;">
+ <div id="topbarleft"><!-- --></div>
+ <div id="topbarright"><!-- --></div>
+ <div id="topbarcenter">
+ <a href="/" id="topbaretherpad">EtherPad</a>
+ </div>
+<% if (isProAccountHolder) { %>
+ <div id="accountnav"><%= toHTML(account.email) %>
+ <a href="/ep/account/sign-out">(sign out)</a>
+ </div>
+<% } else if (isPro) { %>
+ <div id="accountnav">
+ <a href="<%= signinUrl %>">sign in</a>
+ </div>
+<% } %>
+</div>
+
+<div id="timeslider-wrapper">
+<div id="error" style="display: none">It looks like you're having connection troubles. <a href="/ep/pad/view/<%= padId %>/latest">Reconnect now</a>.</div>
+<div id="timeslider" unselectable="on" style="display: none">
+ <div id="timeslider-left"></div>
+ <div id="timeslider-right"></div>
+ <div id="timer"><%= dateFormat %></div>
+ <div id="timeslider-slider">
+ <div id="ui-slider-handle">
+
+ </div>
+ <div id="ui-slider-bar">
+
+ </div>
+ </div>
+ <div id="playpause_button">
+ <div id="playpause_button_icon" class=""></div>
+ </div>
+ <div id="steppers">
+ <div class="stepper" id="leftstar"></div>
+ <div class="stepper" id="rightstar"></div>
+ <div class="stepper" id="leftstep"></div>
+ <div class="stepper" id="rightstep"></div>
+ </div>
+</div>
+</div>
+<div id="rightbars">
+<div id="rightbar"><a id="viewlatest" href="/ep/pad/view/<%= padId %>/latest">
+<% if (revisionId != "latest") { %>View latest content<% } else { %>Viewing latest content<% } %></a><br>
+<a class="tlink" href="/ep/pad/view/<%= padId %>/<%= revisionId %>" thref="/ep/pad/view/<%= padId %>/rev.%revision%">Link to this version</a>
+<% if (readOnly === false) { %><br><a class="tlink" href="/ep/pad/view/<%= roPadId %>/<%= revisionId %>" thref="/ep/pad/view/<%= roPadId %>/rev.%revision%">Link to read-only page</a><br><a href="/<%= padId %>">Edit this pad</a><% } %>
+<h2>Download as</h2>
+<img src="/static/img/may09/html.gif"><a class="tlink" href="/ep/pad/export/<%= padId %>/<%= revisionId %>?format=html" thref="/ep/pad/export/<%= padId %>/rev.%revision%?format=html">HTML</a><br>
+<img src="/static/img/may09/txt.gif" ><a class="tlink" href="/ep/pad/export/<%= padId %>/<%= revisionId %>?format=html" thref="/ep/pad/export/<%= padId %>/rev.%revision%?format=txt" >Plain text</a><br>
+
+
+</div>
+<div id="legend">
+<h2>Authors</h2>
+<table id="authorstable" border="0" cellspacing="0" cellpadding="0">
+
+</table>
+</div>
+
+</div>
+<div id="padmain"
+ <% if (request.userAgent.isIPhone()) { %> style="font-size: 3em;" <% } %>
+>
+<div id="titlebar"><h1><%= padTitle %></h1><div id="revision"><span id="revision_label"><%= rlabel %></span><br><span id="revision_date">
+Saved
+<%= ["Jan", "Feb", "March", "April", "May", "June", "July", "Aug", "Sept", "Oct", "Nov", "Dec"][new Date(savedWhen).getMonth()] %>
+<%= new Date(savedWhen).getDate() %>,
+<%= new Date(savedWhen).getFullYear() %>
+</span></div></div>
+ <div id="padcontent"
+ <% if (request.userAgent.isIPhone()) { %> style="font-size: 1.3em;" <% } %>
+ >
+<%= padHTML %></div>
+</div>
+</div>
diff --git a/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs b/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs
new file mode 100644
index 0000000..7ac7e1b
--- /dev/null
+++ b/trunk/etherpad/src/templates/pad/total_users_exceeded.ejs
@@ -0,0 +1,29 @@
+<% /* 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. */ %><div class="fpcontent"
+ style="font-family: Verdana, sans-serif; margin-top: 2em; border: 1px solid #ccc; padding: 1em; background: #eee;">
+
+ <h1>EtherPad Server Is Full</h1>
+
+ <p>Sorry, this EtherPad server is only licensed to service
+ <%= userQuota %> active users
+ within a <%= activeUserWindowHours %>-hour period,
+ and that quota is currently full.</p>
+
+ <p>Please contact your server administrator and ask him or her to
+ purchase a license with additional users.</p>
+
+ <a href="/">&laquo; Home</a>
+
+</div>
+