diff options
-rw-r--r-- | etherpad/etc/etherpad.localdev-default.properties | 1 | ||||
-rw-r--r-- | etherpad/src/etherpad/utils.js | 50 | ||||
-rw-r--r-- | etherpad/src/plugins/testplugin/controllers/testplugin.js | 15 | ||||
-rw-r--r-- | etherpad/src/plugins/testplugin/templates/page.ejs | 23 | ||||
-rw-r--r-- | etherpad/src/plugins/testplugin/templates/testplugin.ejs | 10 | ||||
-rw-r--r-- | etherpad/src/templates/pad/pad_body2.ejs | 576 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/500_body.ejs (renamed from etherpad/src/templates/500_body.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/admin/pluginmanager.ejs (renamed from etherpad/src/templates/admin/pluginmanager.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/email/padinvite.ejs (renamed from etherpad/src/templates/email/padinvite.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/framed/framedfooter.ejs (renamed from etherpad/src/templates/framed/framedfooter.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/framed/framedheader-pro.ejs (renamed from etherpad/src/templates/framed/framedheader-pro.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/framed/framedheader.ejs (renamed from etherpad/src/templates/framed/framedheader.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/framed/framedpage-pro.ejs (renamed from etherpad/src/templates/framed/framedpage-pro.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/framed/framedpage.ejs (renamed from etherpad/src/templates/framed/framedpage.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/html.ejs (renamed from etherpad/src/templates/html.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/main/home.ejs (renamed from etherpad/src/templates/main/home.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/main/pro_signup_body.ejs (renamed from etherpad/src/templates/main/pro_signup_body.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/misc/pad_default.ejs (renamed from etherpad/src/templates/misc/pad_default.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/notice.ejs (renamed from etherpad/src/templates/notice.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pad/create_body.ejs (renamed from etherpad/src/templates/pad/create_body.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pad/pad_body2.ejs | 499 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pad/pad_iphone_body.ejs (renamed from etherpad/src/templates/pad/pad_iphone_body.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pad/padview_body.ejs (renamed from etherpad/src/templates/pad/padview_body.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/page.ejs | 139 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro-account/recover.ejs (renamed from etherpad/src/templates/pro-account/recover.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro-account/sign-in.ejs (renamed from etherpad/src/templates/pro-account/sign-in.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro-help/main.ejs (renamed from etherpad/src/templates/pro-help/main.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro-help/pro-help-template.ejs (renamed from etherpad/src/templates/pro-help/pro-help-template.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/account/account-welcome-email.ejs (renamed from etherpad/src/templates/pro/account/account-welcome-email.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/account/forgot-password-email.ejs (renamed from etherpad/src/templates/pro/account/forgot-password-email.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/account/forgot-password.ejs (renamed from etherpad/src/templates/pro/account/forgot-password.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/account/my-account.ejs (renamed from etherpad/src/templates/pro/account/my-account.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/account/signin.ejs (renamed from etherpad/src/templates/pro/account/signin.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/admin/account-manager.ejs (renamed from etherpad/src/templates/pro/admin/account-manager.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/admin/admin-template.ejs (renamed from etherpad/src/templates/pro/admin/admin-template.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/admin/delete-account.ejs (renamed from etherpad/src/templates/pro/admin/delete-account.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/admin/manage-account.ejs (renamed from etherpad/src/templates/pro/admin/manage-account.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/admin/new-account.ejs (renamed from etherpad/src/templates/pro/admin/new-account.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/padlist/pro-padlist.ejs (renamed from etherpad/src/templates/pro/padlist/pro-padlist.ejs) | 0 | ||||
-rw-r--r-- | etherpad/src/themes/default/templates/pro/pro_home.ejs (renamed from etherpad/src/templates/pro/pro_home.ejs) | 0 | ||||
-rw-r--r-- | infrastructure/framework-src/modules/ejs.js | 16 |
41 files changed, 735 insertions, 594 deletions
diff --git a/etherpad/etc/etherpad.localdev-default.properties b/etherpad/etc/etherpad.localdev-default.properties index 98327fd..374101f 100644 --- a/etherpad/etc/etherpad.localdev-default.properties +++ b/etherpad/etc/etherpad.localdev-default.properties @@ -20,3 +20,4 @@ transportPrefix = /comet transportUseWildcardSubdomains = true useHttpsUrls = false useVirtualFileRoot = ./src +theme = default diff --git a/etherpad/src/etherpad/utils.js b/etherpad/src/etherpad/utils.js index 3e35f00..1d139ed 100644 --- a/etherpad/src/etherpad/utils.js +++ b/etherpad/src/etherpad/utils.js @@ -40,6 +40,8 @@ import("etherpad.admin.plugins"); jimport("java.lang.System.out.print"); jimport("java.lang.System.out.println"); +jimport("java.io.File"); + //---------------------------------------------------------------- // utilities //---------------------------------------------------------------- @@ -57,17 +59,58 @@ function randomUniquePadId() { // template rendering //---------------------------------------------------------------- +function findExistsingFile(files) { + for (var i = 0; i < files.length; i++) { + var f = new File('./src' + files[i]); + if (f.exists()) + return files[i]; + } +} + function findTemplate(filename, plugin) { - if (plugin != undefined) - return '/plugins/' + plugin + '/templates/' + filename; + var files = []; + + if (plugin != undefined) { + files.push('/plugins/' + plugin + '/templates/' + filename); + files.push('/themes/' + appjet.config.theme + '/plugins/' + plugin + '/templates/' + filename); + files.push('/themes/default/plugins/' + plugin + '/templates/' + filename); + } + files.push('/themes/' + appjet.config.theme + '/templates/' + filename); + files.push('/themes/default/templates/' + filename); + + return findExistsingFile(files); +} + +function Template(params, plugin) { + this._defines = {} + this._params = params; + this._params.template = this; + this._plugin = plugin; +} + +Template.prototype.define = function(name, fn) { + this._defines[name] = fn; + return ''; +} + +Template.prototype.use = function (name, fn, arg) { + if (this._defines[name] != undefined) + return this._defines[name](arg); + else if (fn != undefined) + return fn(arg); else - return '/templates/' + filename; + return ''; +} + +Template.prototype.inherit = function (template) { + return renderTemplateAsString(template, this._params, this._plugin); } function renderTemplateAsString(filename, data, plugin) { data = data || {}; data.helpers = helpers; // global helpers data.plugins = plugins; // Access callHook and the like... + var template = new Template(data, plugin); var f = findTemplate(filename, plugin); //"/templates/"+filename; if (! appjet.scopeCache.ejs) { @@ -76,6 +119,7 @@ function renderTemplateAsString(filename, data, plugin) { var cacheObj = appjet.scopeCache.ejs[filename]; if (cacheObj === undefined || fileLastModified(f) > cacheObj.mtime) { var templateText = readFile(f); + templateText += "<%: template.use('body', function () { return ''; }); %> "; cacheObj = {}; cacheObj.tmpl = new EJS({text: templateText, name: filename}); cacheObj.mtime = fileLastModified(f); diff --git a/etherpad/src/plugins/testplugin/controllers/testplugin.js b/etherpad/src/plugins/testplugin/controllers/testplugin.js index 0c79e06..da74ade 100644 --- a/etherpad/src/plugins/testplugin/controllers/testplugin.js +++ b/etherpad/src/plugins/testplugin/controllers/testplugin.js @@ -29,7 +29,6 @@ import("sqlbase.sqlbase"); import("sqlbase.sqlcommon"); import("sqlbase.sqlobj"); - function onRequest() { var isPro = pro_utils.isProDomainRequest(); var userId = padusers.getUserId(); @@ -47,11 +46,13 @@ function onRequest() { var isProUser = (isPro && ! padusers.isGuest(userId)); - renderHtml("testplugin.ejs", - { - isPro: isPro, - isProAccountHolder: isProUser, - account: getSessionProAccount(), // may be falsy - }, 'testplugin'); + renderHtml( + "testplugin.ejs", + { + isPro: isPro, + isProAccountHolder: isProUser, + account: getSessionProAccount(), // may be falsy + }, + 'testplugin'); return true; } diff --git a/etherpad/src/plugins/testplugin/templates/page.ejs b/etherpad/src/plugins/testplugin/templates/page.ejs new file mode 100644 index 0000000..71633c0 --- /dev/null +++ b/etherpad/src/plugins/testplugin/templates/page.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. */ %> + +<% template.define('body', function() { var ejs_data=''; %> + <div id="blabla"> + <h1>Page header</h1> + <%: template.use('content', function() { var ejs_data=''; %> + Original content + <% return ejs_data; }); %> + <div>footer</div> + </div> +<% return ejs_data; }); %> diff --git a/etherpad/src/plugins/testplugin/templates/testplugin.ejs b/etherpad/src/plugins/testplugin/templates/testplugin.ejs index f70ca8d..69c4453 100644 --- a/etherpad/src/plugins/testplugin/templates/testplugin.ejs +++ b/etherpad/src/plugins/testplugin/templates/testplugin.ejs @@ -24,6 +24,10 @@ limitations under the License. */ %> helpers.addToHead('\n<style type="text/css" title="dynamicsyntax"></style>\n'); %> -<div id="padpage"> - Welcome to the test plugin -</div> +<% template.inherit('page.ejs') %> + +<% template.define('content', function() { var ejs_data=''; %> + <div id="padpage"> + Welcome to the test plugin + </div> +<% return ejs_data; }); %> diff --git a/etherpad/src/templates/pad/pad_body2.ejs b/etherpad/src/templates/pad/pad_body2.ejs deleted file mode 100644 index 0eb9029..0000000 --- a/etherpad/src/templates/pad/pad_body2.ejs +++ /dev/null @@ -1,576 +0,0 @@ -<% /* -Copyright 2009 Google Inc. -Copyright 2010 Pita, Peter Martischka - -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, '"'); //" -%> - -<% - 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, """), '"'); //" - } - 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="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"> - <table border="0" cellpadding="0" cellspacing="0" width="100%" id="docbartable"> - <tr> - <td><img src="/static/img/jun09/pad/roundcorner_left.gif"></td> - <td id="docbarpadtitle"><span><%= initialTitle %></span></td> - <td width="100%"> </td> - <% - plugins.callHookStr('docbarItemsAll', {}, '', '<td class="docbarbutton">', '</td>'); - plugins.callHookStr('docbarItemsPad', {}, '', '<td class="docbarbutton">', '</td>'); - %> - <% if (isProAccountHolder) { %> - <td id="docbarsecurity-outer" class="docbarbutton"> - <a href="javascript:void(0)" id="docbarsecurity"> - <img src="/static/img/jun09/pad/icon_security.gif">Security - </a> - </td> - <% } /* isProAccountHolder */ %> - <td id="docbaroptions-outer" class="docbarbutton"> - <a href="javascript:void(0)" id="docbaroptions"> - <img src="/static/img/jun09/pad/icon_pad_options.gif">Pad Options</a> - </td> - <td id="docbarimpexp-outer" class="docbarbutton"> - <a href="javascript:void(0)" id="docbarimpexp"> - <img src="/static/img/jun09/pad/icon_import_export.gif">Import/Export</a> - </td> - <td id="docbarsavedrevs-outer" class="docbarbutton"> - <a href="javascript:void(0)" id="docbarsavedrevs"> - <img src="/static/img/jun09/pad/icon_saved_revisions.gif">Saved revisions</a> - </td> - <td id="docbarslider-outer" class="docbarbutton highlight"> - <a target="_blank" href="/ep/pad/view/<%= localPadId %>/latest" id="docbarslider"> - <img src="/static/img/jun09/pad/icon_time_slider.gif">Time Slider</a> - </td> - <td><img src="/static/img/jun09/pad/roundcorner_right_orange.gif"></td> - </tr> - </table> - <% 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, Word, or RTF:</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.') %> - <%= exportLink('doc', 4, 'Microsoft Word', true) %> - <%= exportLink('pdf', 5, 'PDF', true) %> - <%= exportLink('odt', 6, 'OpenDocument', true) %> - </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> - <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><div> - <div class="pickerswatchouter n9"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n10"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n11"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n12"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n13"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n14"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n15"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n16"><div class="pickerswatch"><!-- --></div></div> - </div><div> - <div class="pickerswatchouter n17"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n18"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n19"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n20"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n21"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n22"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n23"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n24"><div class="pickerswatch"><!-- --></div></div> - </div><div> - <div class="pickerswatchouter n25"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n26"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n27"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n28"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n29"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n30"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n31"><div class="pickerswatch"><!-- --></div></div> - <div class="pickerswatchouter n32"><div class="pickerswatch"><!-- --></div></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"> - <table cellpadding="0" cellspacing="0" border = "0" id="editbartable"><tr> - <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> - <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('bold'));" title="Bold (ctrl-B)"><img src="/static/img/jun09/pad/editbar_bold.gif"></a></td> - <td class="editbarbutton"> <a href="javascript:void (window.pad&&pad.editbarClick('italic'));" title="Italics (ctrl-I)"><img src="/static/img/jun09/pad/editbar_italic.gif"></a></td> - <td class="editbarbutton"> <a href="javascript:void (window.pad&&pad.editbarClick('underline'));" title="Underline (ctrl-U)"><img src="/static/img/jun09/pad/editbar_underline.gif"></a></td> - <td class="editbarbutton"> <a href="javascript:void (window.pad&&pad.editbarClick('strikethrough'));" title="Strikethrough"><img src="/static/img/jun09/pad/editbar_strikethrough.gif"></a></td> - <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> - - <td> </td> - - <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> - <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('insertunorderedlist'));" title="Toggle Bullet List"><img src="/static/img/jun09/pad/editbar_insertunorderedlist.gif"></a></td> - <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> - - <td> </td> - - <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> - <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('indent'));" title="Indent List"><img src="/static/img/jun09/pad/editbar_indent.gif"></a></td> - <td class="editbarbutton"><a href="javascript:void (window.pad&&pad.editbarClick('outdent'));" title="Unindent List"><img src="/static/img/jun09/pad/editbar_outdent.gif"></a></td> - <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> - - <td> </td> - - <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> - <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('clearauthorship'));" title="Clear Authorship Colors"><img src="/static/img/jun09/pad/editbar_clearauthorship.gif"></a></td> - <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> - - <td> </td> - - <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> - <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('undo'));" title="Undo (ctrl-Z)"><img src="/static/img/jun09/pad/editbar_undo.gif"></a></td> - <td class="editbarbutton"><a href="javascript:void (window.pad&&pad.editbarClick('redo'));" title="Redo (ctrl-Y)"><img src="/static/img/jun09/pad/editbar_redo.gif"></a></td> - <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> - - <td width="100%"> </td> - </tr></table> - <table cellpadding="0" cellspacing="0" border = "0" id="editbarsavetable"> - <tr> - <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> - <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('save'));" title="Save Revision"><img src="/static/img/jun09/pad/editbar_save.gif"></a></td> - <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> - </tr> - </table> - </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="feedbackbox"> - <div id="feedbackbox-tl"><!-- --></div> - <div id="feedbackbox-tr"><!-- --></div> - <div id="feedbackbox-bl"><!-- --></div> - <div id="feedbackbox-br"><!-- --></div> - <div id="feedbackbox-back"><!-- --></div> -<%/* <a href="javascript:void(0)" id="feedbackbox-send"><!-- --></a> - <input type="text" id="feedbackbox-email" class="modalfield" /> - <textarea id="feedbackbox-message" rows="6" cols="40" class="modalfield"></textarea> - <div id="feedbackbox-response"><!-- --></div>*/%> - <div id="feedbackbox-contents"> - <div id="feedbackbox-contentsinner"> - <p><strong>Great, we love feedback! What kind?</strong></p> - <ul id="uservoicelinks"> - <li><a href="http://uservoice.etherpad.com/pages/17280-feature-requests" target="_blank">Feature Request</a></li> - <li><a href="http://uservoice.etherpad.com/pages/17285-bugs-and-problems" target="_blank">Bug Report</a></li> - <li><a href="http://uservoice.etherpad.com/pages/22732-how-are-you-using-etherpad-" target="_blank">How I'm Using It</a></li> - <li><a href="http://uservoice.etherpad.com/pages/22751-general-questions" target="_blank">Other Question</a></li> - <li><a href="http://uservoice.etherpad.com/pages/22733-general-feedback" target="_blank">Other Feedback</a></li> - </ul> - <p>These links will open UserVoice in a new window.</p> - <p id="feedbackemails">You can also send email to <a href="feedback"><tt>feedback</tt></a>, <a href="support"><tt>support</tt></a>, or <a href="bugs"><tt>bugs</tt></a> at <tt>etherpad.com</tt>.</p> - </div> - </div> - <a href="javascript:void(0)" id="feedbackbox-hide"><!-- --></a> - </div> - <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/etherpad/src/templates/500_body.ejs b/etherpad/src/themes/default/templates/500_body.ejs index 291e0fd..291e0fd 100644 --- a/etherpad/src/templates/500_body.ejs +++ b/etherpad/src/themes/default/templates/500_body.ejs diff --git a/etherpad/src/templates/admin/pluginmanager.ejs b/etherpad/src/themes/default/templates/admin/pluginmanager.ejs index 077d10a..077d10a 100644 --- a/etherpad/src/templates/admin/pluginmanager.ejs +++ b/etherpad/src/themes/default/templates/admin/pluginmanager.ejs diff --git a/etherpad/src/templates/email/padinvite.ejs b/etherpad/src/themes/default/templates/email/padinvite.ejs index c6467b8..c6467b8 100644 --- a/etherpad/src/templates/email/padinvite.ejs +++ b/etherpad/src/themes/default/templates/email/padinvite.ejs diff --git a/etherpad/src/templates/framed/framedfooter.ejs b/etherpad/src/themes/default/templates/framed/framedfooter.ejs index 7994e38..7994e38 100644 --- a/etherpad/src/templates/framed/framedfooter.ejs +++ b/etherpad/src/themes/default/templates/framed/framedfooter.ejs diff --git a/etherpad/src/templates/framed/framedheader-pro.ejs b/etherpad/src/themes/default/templates/framed/framedheader-pro.ejs index 73b0e99..73b0e99 100644 --- a/etherpad/src/templates/framed/framedheader-pro.ejs +++ b/etherpad/src/themes/default/templates/framed/framedheader-pro.ejs diff --git a/etherpad/src/templates/framed/framedheader.ejs b/etherpad/src/themes/default/templates/framed/framedheader.ejs index d6c25cb..d6c25cb 100644 --- a/etherpad/src/templates/framed/framedheader.ejs +++ b/etherpad/src/themes/default/templates/framed/framedheader.ejs diff --git a/etherpad/src/templates/framed/framedpage-pro.ejs b/etherpad/src/themes/default/templates/framed/framedpage-pro.ejs index b3acb07..b3acb07 100644 --- a/etherpad/src/templates/framed/framedpage-pro.ejs +++ b/etherpad/src/themes/default/templates/framed/framedpage-pro.ejs diff --git a/etherpad/src/templates/framed/framedpage.ejs b/etherpad/src/themes/default/templates/framed/framedpage.ejs index b1590f8..b1590f8 100644 --- a/etherpad/src/templates/framed/framedpage.ejs +++ b/etherpad/src/themes/default/templates/framed/framedpage.ejs diff --git a/etherpad/src/templates/html.ejs b/etherpad/src/themes/default/templates/html.ejs index 056d7a7..056d7a7 100644 --- a/etherpad/src/templates/html.ejs +++ b/etherpad/src/themes/default/templates/html.ejs diff --git a/etherpad/src/templates/main/home.ejs b/etherpad/src/themes/default/templates/main/home.ejs index aa5d934..aa5d934 100644 --- a/etherpad/src/templates/main/home.ejs +++ b/etherpad/src/themes/default/templates/main/home.ejs diff --git a/etherpad/src/templates/main/pro_signup_body.ejs b/etherpad/src/themes/default/templates/main/pro_signup_body.ejs index e984878..e984878 100644 --- a/etherpad/src/templates/main/pro_signup_body.ejs +++ b/etherpad/src/themes/default/templates/main/pro_signup_body.ejs diff --git a/etherpad/src/templates/misc/pad_default.ejs b/etherpad/src/themes/default/templates/misc/pad_default.ejs index 96b7e25..96b7e25 100644 --- a/etherpad/src/templates/misc/pad_default.ejs +++ b/etherpad/src/themes/default/templates/misc/pad_default.ejs diff --git a/etherpad/src/templates/notice.ejs b/etherpad/src/themes/default/templates/notice.ejs index 311694f..311694f 100644 --- a/etherpad/src/templates/notice.ejs +++ b/etherpad/src/themes/default/templates/notice.ejs diff --git a/etherpad/src/templates/pad/create_body.ejs b/etherpad/src/themes/default/templates/pad/create_body.ejs index 5fec49a..5fec49a 100644 --- a/etherpad/src/templates/pad/create_body.ejs +++ b/etherpad/src/themes/default/templates/pad/create_body.ejs diff --git a/etherpad/src/themes/default/templates/pad/pad_body2.ejs b/etherpad/src/themes/default/templates/pad/pad_body2.ejs new file mode 100644 index 0000000..a19e685 --- /dev/null +++ b/etherpad/src/themes/default/templates/pad/pad_body2.ejs @@ -0,0 +1,499 @@ +<% /* +Copyright 2009 Google Inc. +Copyright 2010 Pita, Peter Martischka + +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. */ %> + +<% template.inherit('page.ejs') %> + +<% + helpers.setHtmlTitle("EtherPad: "+pageTitle); + helpers.includeJs("ace.js"); + helpers.includeJs("collab_client.js"); + helpers.includeJs("pad_userlist.js"); + helpers.includeJs("pad_chat.js"); + helpers.includeJs("pad_impexp.js"); + helpers.includeJs("pad_savedrevs.js"); + helpers.includeJs("pad_connectionstatus.js"); + + var padUrlAttrValue = request.url.split("?", 1)[0].replace(/\"/g, '"'); + + 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, """), '"'); //" + } + pieces.push('>', label); + /* if (title) { + pieces.push('<sup>?</sup>'); + }*/ + pieces.push('</a>'); + return pieces.join(''); + } +%> + + +<% template.define('docBarTitleEditor', function() { var ejs_data=''; %> + <% 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> +<% return ejs_data; }); %> + + +<% template.define('docBarItems', function() { var ejs_data=''; %> + <% if (isProAccountHolder) { %> + <td id="docbarsecurity-outer" class="docbarbutton"> + <a href="javascript:void(0)" id="docbarsecurity"> + <img src="/static/img/jun09/pad/icon_security.gif">Security + </a> + </td> + <% } /* isProAccountHolder */ %> + <td id="docbaroptions-outer" class="docbarbutton"> + <a href="javascript:void(0)" id="docbaroptions"> + <img src="/static/img/jun09/pad/icon_pad_options.gif">Pad Options</a> + </td> + <td id="docbarimpexp-outer" class="docbarbutton"> + <a href="javascript:void(0)" id="docbarimpexp"> + <img src="/static/img/jun09/pad/icon_import_export.gif">Import/Export</a> + </td> + <td id="docbarsavedrevs-outer" class="docbarbutton"> + <a href="javascript:void(0)" id="docbarsavedrevs"> + <img src="/static/img/jun09/pad/icon_saved_revisions.gif">Saved revisions</a> + </td> + <td id="docbarslider-outer" class="docbarbutton highlight"> + <a target="_blank" href="/ep/pad/view/<%= localPadId %>/latest" id="docbarslider"> + <img src="/static/img/jun09/pad/icon_time_slider.gif">Time Slider</a> + </td> +<% return ejs_data; }); %> + + +<% template.define('docBarDropdowns', function() { var ejs_data=''; %> + <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, Word, or RTF:</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.') %> + <%= exportLink('doc', 4, 'Microsoft Word', true) %> + <%= exportLink('pdf', 5, 'PDF', true) %> + <%= exportLink('odt', 6, 'OpenDocument', true) %> + </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 */ %> +<% return ejs_data; }); %> + + +<% template.define('sideBar', function() { var ejs_data=''; %> + <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> + <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><div> + <div class="pickerswatchouter n9"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n10"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n11"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n12"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n13"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n14"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n15"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n16"><div class="pickerswatch"><!-- --></div></div> + </div><div> + <div class="pickerswatchouter n17"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n18"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n19"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n20"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n21"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n22"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n23"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n24"><div class="pickerswatch"><!-- --></div></div> + </div><div> + <div class="pickerswatchouter n25"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n26"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n27"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n28"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n29"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n30"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n31"><div class="pickerswatch"><!-- --></div></div> + <div class="pickerswatchouter n32"><div class="pickerswatch"><!-- --></div></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> +<% return ejs_data; }); %> + + +<% template.define('editBarItemsLeft', function() { var ejs_data=''; %> + <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> + <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('bold'));" title="Bold (ctrl-B)"><img src="/static/img/jun09/pad/editbar_bold.gif"></a></td> + <td class="editbarbutton"> <a href="javascript:void (window.pad&&pad.editbarClick('italic'));" title="Italics (ctrl-I)"><img src="/static/img/jun09/pad/editbar_italic.gif"></a></td> + <td class="editbarbutton"> <a href="javascript:void (window.pad&&pad.editbarClick('underline'));" title="Underline (ctrl-U)"><img src="/static/img/jun09/pad/editbar_underline.gif"></a></td> + <td class="editbarbutton"> <a href="javascript:void (window.pad&&pad.editbarClick('strikethrough'));" title="Strikethrough"><img src="/static/img/jun09/pad/editbar_strikethrough.gif"></a></td> + <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> + + <td> </td> + + <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> + <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('insertunorderedlist'));" title="Toggle Bullet List"><img src="/static/img/jun09/pad/editbar_insertunorderedlist.gif"></a></td> + <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> + + <td> </td> + + <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> + <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('indent'));" title="Indent List"><img src="/static/img/jun09/pad/editbar_indent.gif"></a></td> + <td class="editbarbutton"><a href="javascript:void (window.pad&&pad.editbarClick('outdent'));" title="Unindent List"><img src="/static/img/jun09/pad/editbar_outdent.gif"></a></td> + <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> + + <td> </td> + + <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> + <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('clearauthorship'));" title="Clear Authorship Colors"><img src="/static/img/jun09/pad/editbar_clearauthorship.gif"></a></td> + <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> + + <td> </td> + + <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> + <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('undo'));" title="Undo (ctrl-Z)"><img src="/static/img/jun09/pad/editbar_undo.gif"></a></td> + <td class="editbarbutton"><a href="javascript:void (window.pad&&pad.editbarClick('redo'));" title="Redo (ctrl-Y)"><img src="/static/img/jun09/pad/editbar_redo.gif"></a></td> + <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> +<% return ejs_data; }); %> + + +<% template.define('editBarItemsRight', function() { var ejs_data=''; %> + <td><img src="/static/img/jun09/pad/editbar_groupleft.gif" width="2" height="24"></td> + <td class="editbarbutton editbargroupsfirst"><a href="javascript:void (window.pad&&pad.editbarClick('save'));" title="Save Revision"><img src="/static/img/jun09/pad/editbar_save.gif"></a></td> + <td><img src="/static/img/jun09/pad/editbar_groupright.gif" width="2" height="24"></td> +<% return ejs_data; }); %> + + +<% template.define('contentArea', function() { var ejs_data=''; %> + <div id="editorloadingbox">Loading...</div> + <div id="editorcontainer"><!-- --></div> +<% return ejs_data; }); %> + + +<% template.define('modals', function() { var ejs_data=''; %> + <div id="modaloverlay"><div id="modaloverlay-inner"><!-- --></div></div> + + <div id="mainmodals"> + <div id="feedbackbox"> + <div id="feedbackbox-tl"><!-- --></div> + <div id="feedbackbox-tr"><!-- --></div> + <div id="feedbackbox-bl"><!-- --></div> + <div id="feedbackbox-br"><!-- --></div> + <div id="feedbackbox-back"><!-- --></div> + <%/* <a href="javascript:void(0)" id="feedbackbox-send"><!-- --></a> + <input type="text" id="feedbackbox-email" class="modalfield" /> + <textarea id="feedbackbox-message" rows="6" cols="40" class="modalfield"></textarea> + <div id="feedbackbox-response"><!-- --></div>*/%> + <div id="feedbackbox-contents"> + <div id="feedbackbox-contentsinner"> + <p><strong>Great, we love feedback! What kind?</strong></p> + <ul id="uservoicelinks"> + <li><a href="http://uservoice.etherpad.com/pages/17280-feature-requests" target="_blank">Feature Request</a></li> + <li><a href="http://uservoice.etherpad.com/pages/17285-bugs-and-problems" target="_blank">Bug Report</a></li> + <li><a href="http://uservoice.etherpad.com/pages/22732-how-are-you-using-etherpad-" target="_blank">How I'm Using It</a></li> + <li><a href="http://uservoice.etherpad.com/pages/22751-general-questions" target="_blank">Other Question</a></li> + <li><a href="http://uservoice.etherpad.com/pages/22733-general-feedback" target="_blank">Other Feedback</a></li> + </ul> + <p>These links will open UserVoice in a new window.</p> + <p id="feedbackemails">You can also send email to <a href="feedback"><tt>feedback</tt></a>, <a href="support"><tt>support</tt></a>, or <a href="bugs"><tt>bugs</tt></a> at <tt>etherpad.com</tt>.</p> + </div> + </div> + <a href="javascript:void(0)" id="feedbackbox-hide"><!-- --></a> + </div> + <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> + +<% return ejs_data; }); %> diff --git a/etherpad/src/templates/pad/pad_iphone_body.ejs b/etherpad/src/themes/default/templates/pad/pad_iphone_body.ejs index 96279ce..96279ce 100644 --- a/etherpad/src/templates/pad/pad_iphone_body.ejs +++ b/etherpad/src/themes/default/templates/pad/pad_iphone_body.ejs diff --git a/etherpad/src/templates/pad/padview_body.ejs b/etherpad/src/themes/default/templates/pad/padview_body.ejs index 75c38fe..75c38fe 100644 --- a/etherpad/src/templates/pad/padview_body.ejs +++ b/etherpad/src/themes/default/templates/pad/padview_body.ejs diff --git a/etherpad/src/themes/default/templates/page.ejs b/etherpad/src/themes/default/templates/page.ejs new file mode 100644 index 0000000..7dd36ad --- /dev/null +++ b/etherpad/src/themes/default/templates/page.ejs @@ -0,0 +1,139 @@ +<% /* +Copyright 2009 Google Inc. +Copyright 2010 Pita, Peter Martischka + +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.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("draggable.js"); + helpers.includeJs("pad_utils.js"); + helpers.includeJs("pad_cookie.js"); + helpers.includeJs("pad_editor.js"); + helpers.includeJs("pad_editbar.js"); + helpers.includeJs("pad_docbar.js"); + helpers.includeJs("pad_modals.js"); + helpers.includeJs("pad2.js"); + helpers.suppressGA(); + helpers.setRobotsPolicy({index: false, follow: false}); + +%> + +<% template.define('body', function() { var ejs_data=''; %> + <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="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"> + <%: template.use('docBarTitle'); %> + <table border="0" cellpadding="0" cellspacing="0" width="100%" id="docbartable"> + <tr> + <td><img src="/static/img/jun09/pad/roundcorner_left.gif"></td> + <td id="docbarpadtitle"><span><%= initialTitle %></span></td> + <td width="100%"> </td> + <% + plugins.callHookStr('docbarItemsAll', {}, '', '<td class="docbarbutton">', '</td>'); + plugins.callHookStr('docbarItemsPad', {}, '', '<td class="docbarbutton">', '</td>'); + %> + <%: template.use('docBarItems'); %> + <td><img src="/static/img/jun09/pad/roundcorner_right_orange.gif"></td> + </tr> + </table> + <%: template.use('docBarTitleEditor'); %> + <%: template.use('docBarDropdowns'); %> + </div><!-- /docbar --> + </div> + + <div id="padmain"> + <div id="padsidebar"><%: template.use('sideBar'); %></div> + + <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"> + <table cellpadding="0" cellspacing="0" border = "0" id="editbartable"> + <tr> + <%: template.use('editBarItemsLeft'); %> + <td width="100%"> </td> + </tr> + </table> + <table cellpadding="0" cellspacing="0" border = "0" id="editbarsavetable"> + <tr> + <%: template.use('editBarItemsRight'); %> + </tr> + </table> + </div> + </div> + <div id="editorcontainerbox"><%: template.use('contentArea'); %></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 --> + + <%: template.use('modals'); %> + +<% return ejs_data; }); %> diff --git a/etherpad/src/templates/pro-account/recover.ejs b/etherpad/src/themes/default/templates/pro-account/recover.ejs index 686fe3b..686fe3b 100644 --- a/etherpad/src/templates/pro-account/recover.ejs +++ b/etherpad/src/themes/default/templates/pro-account/recover.ejs diff --git a/etherpad/src/templates/pro-account/sign-in.ejs b/etherpad/src/themes/default/templates/pro-account/sign-in.ejs index 470bbc4..470bbc4 100644 --- a/etherpad/src/templates/pro-account/sign-in.ejs +++ b/etherpad/src/themes/default/templates/pro-account/sign-in.ejs diff --git a/etherpad/src/templates/pro-help/main.ejs b/etherpad/src/themes/default/templates/pro-help/main.ejs index 428d7f7..428d7f7 100644 --- a/etherpad/src/templates/pro-help/main.ejs +++ b/etherpad/src/themes/default/templates/pro-help/main.ejs diff --git a/etherpad/src/templates/pro-help/pro-help-template.ejs b/etherpad/src/themes/default/templates/pro-help/pro-help-template.ejs index 9cc8205..9cc8205 100644 --- a/etherpad/src/templates/pro-help/pro-help-template.ejs +++ b/etherpad/src/themes/default/templates/pro-help/pro-help-template.ejs diff --git a/etherpad/src/templates/pro/account/account-welcome-email.ejs b/etherpad/src/themes/default/templates/pro/account/account-welcome-email.ejs index 25af6f8..25af6f8 100644 --- a/etherpad/src/templates/pro/account/account-welcome-email.ejs +++ b/etherpad/src/themes/default/templates/pro/account/account-welcome-email.ejs diff --git a/etherpad/src/templates/pro/account/forgot-password-email.ejs b/etherpad/src/themes/default/templates/pro/account/forgot-password-email.ejs index 4595cee..4595cee 100644 --- a/etherpad/src/templates/pro/account/forgot-password-email.ejs +++ b/etherpad/src/themes/default/templates/pro/account/forgot-password-email.ejs diff --git a/etherpad/src/templates/pro/account/forgot-password.ejs b/etherpad/src/themes/default/templates/pro/account/forgot-password.ejs index bbc78dd..bbc78dd 100644 --- a/etherpad/src/templates/pro/account/forgot-password.ejs +++ b/etherpad/src/themes/default/templates/pro/account/forgot-password.ejs diff --git a/etherpad/src/templates/pro/account/my-account.ejs b/etherpad/src/themes/default/templates/pro/account/my-account.ejs index 9634285..9634285 100644 --- a/etherpad/src/templates/pro/account/my-account.ejs +++ b/etherpad/src/themes/default/templates/pro/account/my-account.ejs diff --git a/etherpad/src/templates/pro/account/signin.ejs b/etherpad/src/themes/default/templates/pro/account/signin.ejs index c67bea6..c67bea6 100644 --- a/etherpad/src/templates/pro/account/signin.ejs +++ b/etherpad/src/themes/default/templates/pro/account/signin.ejs diff --git a/etherpad/src/templates/pro/admin/account-manager.ejs b/etherpad/src/themes/default/templates/pro/admin/account-manager.ejs index f1b443f..f1b443f 100644 --- a/etherpad/src/templates/pro/admin/account-manager.ejs +++ b/etherpad/src/themes/default/templates/pro/admin/account-manager.ejs diff --git a/etherpad/src/templates/pro/admin/admin-template.ejs b/etherpad/src/themes/default/templates/pro/admin/admin-template.ejs index e1a7736..e1a7736 100644 --- a/etherpad/src/templates/pro/admin/admin-template.ejs +++ b/etherpad/src/themes/default/templates/pro/admin/admin-template.ejs diff --git a/etherpad/src/templates/pro/admin/delete-account.ejs b/etherpad/src/themes/default/templates/pro/admin/delete-account.ejs index 3de2122..3de2122 100644 --- a/etherpad/src/templates/pro/admin/delete-account.ejs +++ b/etherpad/src/themes/default/templates/pro/admin/delete-account.ejs diff --git a/etherpad/src/templates/pro/admin/manage-account.ejs b/etherpad/src/themes/default/templates/pro/admin/manage-account.ejs index 72529b4..72529b4 100644 --- a/etherpad/src/templates/pro/admin/manage-account.ejs +++ b/etherpad/src/themes/default/templates/pro/admin/manage-account.ejs diff --git a/etherpad/src/templates/pro/admin/new-account.ejs b/etherpad/src/themes/default/templates/pro/admin/new-account.ejs index 2f2cccf..2f2cccf 100644 --- a/etherpad/src/templates/pro/admin/new-account.ejs +++ b/etherpad/src/themes/default/templates/pro/admin/new-account.ejs diff --git a/etherpad/src/templates/pro/padlist/pro-padlist.ejs b/etherpad/src/themes/default/templates/pro/padlist/pro-padlist.ejs index b762679..b762679 100644 --- a/etherpad/src/templates/pro/padlist/pro-padlist.ejs +++ b/etherpad/src/themes/default/templates/pro/padlist/pro-padlist.ejs diff --git a/etherpad/src/templates/pro/pro_home.ejs b/etherpad/src/themes/default/templates/pro/pro_home.ejs index 8d92139..8d92139 100644 --- a/etherpad/src/templates/pro/pro_home.ejs +++ b/etherpad/src/themes/default/templates/pro/pro_home.ejs diff --git a/infrastructure/framework-src/modules/ejs.js b/infrastructure/framework-src/modules/ejs.js index bf14ed3..58c67bc 100644 --- a/infrastructure/framework-src/modules/ejs.js +++ b/infrastructure/framework-src/modules/ejs.js @@ -33,6 +33,7 @@ import("jsutils.*"); import("funhtml"); +import("etherpad.log"); jimport("java.lang.System.out.println"); jimport("net.appjet.ajstdlib.execution.executeCodeInNewScope"); @@ -75,12 +76,13 @@ var EjsScanner = function(source, left, right) { this.double_left = left+'%%'; this.double_right = '%%'+right; this.left_equal = left+'%='; + this.left_colon = left+'%:'; this.left_comment = left+'%#'; if(left=='[') { - this.SplitRegexp = /(\[%%)|(%%\])|(\[%=)|(\[%#)|(\[%)|(%\]\n)|(%\])|(\n)/; + this.SplitRegexp = /(\[%%)|(%%\])|(\[%:)|(\[%=)|(\[%#)|(\[%)|(%\]\n)|(%\])|(\n)/; } else { - this.SplitRegexp = new RegExp('('+this.double_left+')|(%%'+this.double_right+')|('+this.left_equal+')|('+this.left_comment+')|('+this.left_delimiter+')|('+this.right_delimiter+'\n)|('+this.right_delimiter+')|(\n)') + this.SplitRegexp = new RegExp('('+this.double_left+')|(%%'+this.double_right+')|('+this.left_equal+')|('+this.left_colon+')|('+this.left_equal+')|('+this.left_comment+')|('+this.left_delimiter+')|('+this.right_delimiter+'\n)|('+this.right_delimiter+')|(\n)') } this.source = source; @@ -178,7 +180,7 @@ EjsBuffer.prototype = { /* Adaptation from the Compiler of erb.rb */ EjsCompiler = function(source, left) { - this.pre_cmd = ['var ___ejsO = "";']; + this.pre_cmd = ['var ejs_data = "";']; this.post_cmd = new Array(); this.source = ' '; if (source != null) @@ -217,7 +219,7 @@ EjsCompiler.prototype = { compile: function(options) { options = options || {}; this.out = ''; - var put_cmd = "___ejsO += "; + var put_cmd = "ejs_data += "; var insert_cmd = put_cmd; var buff = new EjsBuffer(this.pre_cmd, this.post_cmd); var content = ''; @@ -241,6 +243,7 @@ EjsCompiler.prototype = { break; case scanner.left_delimiter: case scanner.left_equal: + case scanner.left_colon: case scanner.left_comment: scanner.stag = token; if (content.length > 0) @@ -277,6 +280,9 @@ EjsCompiler.prototype = { case scanner.left_equal: buff.push(insert_cmd + "(EjsScanner.to_text(" + content + "))"); break; + case scanner.left_colon: + buff.push(insert_cmd + content); + break; } scanner.stag = null; content = ''; @@ -302,7 +308,7 @@ EjsCompiler.prototype = { ' with(_VIEW) {', ' with (_CONTEXT) {', this.out, - ' return ___ejsO;', + ' return ejs_data;', ' }', ' }', '};' |