[Cluster-devel] conga/luci/plone-custom Makefile README base.c ...
kupcevic at sourceware.org
kupcevic at sourceware.org
Wed Jul 26 16:55:40 UTC 2006
CVSROOT: /cvs/cluster
Module name: conga
Changes by: kupcevic at sourceware.org 2006-07-26 16:55:37
Added files:
luci/plone-custom: Makefile README base.css colophon
default_error_message_CUSTOM
document_edit_form_TEST dropdown.js_TEST
failsafe_login_form footer global_searchbox
highlightsearchterms.js_TEST login.js_TEST
login_failed login_form login_form_TEST
login_form_validate login_initial login_next
login_password login_success logo.jpg
main_template portlet_login registered
Log message:
luci/portal_skins/custom directory
Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/Makefile.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/README.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/base.css.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/colophon.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/default_error_message_CUSTOM.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/document_edit_form_TEST.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/dropdown.js_TEST.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/failsafe_login_form.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/footer.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/global_searchbox.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/highlightsearchterms.js_TEST.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login.js_TEST.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_failed.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_form.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_form_TEST.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_form_validate.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_initial.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_next.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_password.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/login_success.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/logo.jpg.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/main_template.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/portlet_login.diff?cvsroot=cluster&r1=NONE&r2=1.1
http://sourceware.org/cgi-bin/cvsweb.cgi/conga/luci/plone-custom/registered.diff?cvsroot=cluster&r1=NONE&r2=1.1
/cvs/cluster/conga/luci/plone-custom/Makefile,v --> standard output
revision 1.1
--- conga/luci/plone-custom/Makefile
+++ - 2006-07-26 16:55:37.612213000 +0000
@@ -0,0 +1,15 @@
+LUCI_USER=admin
+LUCI_PASS=changeme
+LUCI_FTP=luci:8021
+LUCI_HTTP=http://luci:8080/luci
+
+# import page local page templates to the Luci server
+import:
+ @if test "$(FILES)"; then \
+ ../load_site.py -u $(LUCI_USER):$(LUCI_PASS) $(LUCI_HTTP)/portal_skins/custom/ $(FILES) ; \
+ else \
+ find . -follow -maxdepth 1 -type f -not -name Makefile -not -name ".*" -not -name custom.xml -not -name README -print0 | xargs -0 ../load_site.py -u $(LUCI_USER):$(LUCI_PASS) $(LUCI_HTTP)/portal_skins/custom/ ; \
+ fi
+
+export:
+ @wget -q -r -nH --cut-dirs=3 "ftp://$(LUCI_USER):$(LUCI_PASS)@$(LUCI_FTP)/luci/portal_skins/custom/*"
/cvs/cluster/conga/luci/plone-custom/README,v --> standard output
revision 1.1
--- conga/luci/plone-custom/README
+++ - 2006-07-26 16:55:37.694665000 +0000
@@ -0,0 +1,4 @@
+custom.xml is a backup of whole portal_skins/custom directory, including methods, types and permisions.
+Other files are a content of the same dir.
+
+So, custom.xml is to be restored first, thru ZMI, the rest of files can be pushed using Makefile.
/cvs/cluster/conga/luci/plone-custom/base.css,v --> standard output
revision 1.1
--- conga/luci/plone-custom/base.css
+++ - 2006-07-26 16:55:37.779450000 +0000
@@ -0,0 +1,239 @@
+/*
+** Plone style sheet - Base Elements
+**
+** Style sheet documentation can be found at http://plone.org/documentation
+**
+** You should preferrably use ploneCustom.css to add your own CSS classes and to
+** customize your portal, as these are the base fundaments of Plone, and will
+** change and be refined in newer versions. Keeping your changes in
+** ploneCustom.css will make it easier to upgrade.
+**
+** Feel free to use whole or parts of this for your own designs, but give credit
+** where credit is due.
+**
+*/
+
+/* <dtml-with base_properties> (do not remove this :) */
+/* <dtml-call "REQUEST.set('portal_url', portal_url())"> (not this either :) */
+
+
+body {
+ font: &dtml-fontBaseSize; <dtml-var fontFamily>;
+ background-color: &dtml-backgroundColor;;
+ color: &dtml-fontColor;;
+ margin: 0;
+ padding: 0;
+}
+
+table {
+ font-size: 100%;
+}
+
+a {
+ color: &dtml-linkColor;;
+ background-color: transparent;
+}
+img {
+ border: none;
+ vertical-align: middle;
+}
+p {
+ margin: 0 0 0.75em 0;
+ line-height: 1.5em;
+}
+
+p img {
+ border: none;
+ margin: 0;
+}
+
+hr {
+ border: 0;
+ height: &dtml-borderWidth;;
+ color: &dtml-globalBorderColor;;
+ background-color: &dtml-globalBorderColor;;
+ margin: 0.5em 0 1em 0;
+}
+
+
+h1, h2, h3, h4, h5, h6 {
+ color: &dtml-fontColor;;
+ background-color: transparent;
+ font-family: <dtml-var headingFontFamily>;
+ font-weight: normal;
+ margin: 0 0 0.25em 0;
+ border-bottom: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+}
+
+h1 a,
+h2 a,
+h3 a,
+h4 a,
+h5 a,
+h6 a {
+ color: &dtml-fontColor; ! important;
+ text-decoration: none;
+}
+
+h1 {
+ font-size: 160%;
+}
+
+h2 {
+ font-size: 150%;
+}
+
+h3 {
+ font-size: 125%;
+ border-bottom: none;
+ font-weight: bold;
+}
+
+h4 {
+ font-size: 110%;
+ border-bottom: none;
+ font-weight: bold;
+}
+
+h5 {
+ font-size: 100%;
+ border-bottom: none;
+ font-weight: bold;
+}
+
+h6 {
+ font-size: &dtml-fontSmallSize;;
+ border-bottom: none;
+ font-weight: bold;
+}
+
+ul {
+ line-height: 1.5em;
+ margin: 0.5em 0 0 1.5em;
+ padding: 0;
+ list-style-image: url(&dtml-portal_url;/bullet.gif);
+ list-style-type: square;
+}
+
+ol {
+ line-height: 1.5em;
+ margin: 0.5em 0 0 2.5em;
+ padding: 0;
+ list-style-image: none;
+}
+
+li {
+ margin-bottom: 0.5em;
+}
+
+dt {
+ font-weight: bold;
+}
+
+dd {
+ line-height: 1.5em;
+ margin-bottom: 1em;
+}
+
+fieldset {
+ border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+ margin: 1em 0em 1em 0em;
+ padding: 0em 1em 1em 1em;
+ line-height: 1.5em;
+ width: auto;
+}
+legend {
+ background: &dtml-backgroundColor;;
+ padding: 0.5em;
+ font-size: 90%;
+}
+
+form {
+ border: none;
+ margin: 0;
+}
+
+label {
+ font-weight: bold;
+}
+
+textarea {
+ font: 100% Monaco, "Courier New", Courier, monospace;
+ border: &dtml-borderWidth; solid &dtml-globalBorderColor;;
+ color: &dtml-inputFontColor;;
+ background: White url(&dtml-portal_url;/input_background.gif) repeat-x;
+ width: 100%;
+}
+
+input {
+ font-family: <dtml-var fontFamily>;
+ border: &dtml-borderWidth; solid &dtml-globalBorderColor;;
+ color: &dtml-inputFontColor;;
+ vertical-align: middle;
+ background: White url(&dtml-portal_url;/input_background.gif) repeat-x;
+}
+select {
+ border: &dtml-borderWidth; solid &dtml-globalBorderColor;;
+ color: &dtml-inputFontColor;;
+ background-color: White;
+ vertical-align: top;
+}
+abbr, acronym, .explain {
+ border-bottom: &dtml-borderWidth; dotted &dtml-fontColor;;
+ color: &dtml-fontColor;;
+ background-color: transparent;
+ cursor: help;
+}
+q {
+ font-family: Baskerville, Georgia, serif;
+ font-style: italic;
+ font-size: 120%;
+}
+blockquote {
+ padding-left: 0.5em;
+ margin-left: 0;
+ border-left: 4px solid &dtml-globalBorderColor;;
+ color: &dtml-discreetColor;;
+}
+code {
+ font-family: Monaco, "Courier New", Courier, monospace;
+ font-size: 120%;
+ color: &dtml-fontColor;;
+ background-color: &dtml-globalBackgroundColor;;
+ padding: 0 0.1em;
+}
+pre {
+ font-family: Monaco, "Courier New", Courier, monospace;
+ font-size: 100%;
+ padding: 1em;
+ border: &dtml-borderWidth; &dtml-borderStyle; &dtml-globalBorderColor;;
+ color: &dtml-fontColor;;
+ background-color: &dtml-globalBackgroundColor;;
+ overflow: auto;
+}
+
+ins {
+ color: green;
+ text-decoration: none;
+}
+
+del {
+ color: red;
+ text-decoration: line-through;
+}
+
+/* Helper element to work with CSS floats */
+
+.visualClear {
+ display: block;
+ clear: both;
+}
+
+/* Hiding helper elements for old browsers */
+
+.netscape4 {
+ display: none;
+}
+
+
+/* </dtml-with> */
/cvs/cluster/conga/luci/plone-custom/colophon,v --> standard output
revision 1.1
--- conga/luci/plone-custom/colophon
+++ - 2006-07-26 16:55:37.866110000 +0000
@@ -0,0 +1,12 @@
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en" lang="en"
+ i18n:domain="plone">
+
+ <head><title></title></head>
+ <body>
+
+ <div id="portal-colophon" metal:define-macro="colophon" i18n:domain="plone">
+ </div>
+
+ </body>
+</html>
/cvs/cluster/conga/luci/plone-custom/default_error_message_CUSTOM,v --> standard output
revision 1.1
--- conga/luci/plone-custom/default_error_message_CUSTOM
+++ - 2006-07-26 16:55:37.951052000 +0000
@@ -0,0 +1,5 @@
+<html>
+
+Sorry, some internal error has occured :(
+
+</html>
/cvs/cluster/conga/luci/plone-custom/document_edit_form_TEST,v --> standard output
revision 1.1
--- conga/luci/plone-custom/document_edit_form_TEST
+++ - 2006-07-26 16:55:38.271118000 +0000
@@ -0,0 +1,185 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+ lang="en"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+
+ <body>
+
+ <div metal:fill-slot="main"
+ tal:define="errors options/state/getErrors;
+ editor python:member.getProperty('wysiwyg_editor','None');
+ wysiwyg python:test(editor and editor!='None', editor, 'None');
+ lockable python:hasattr(here, 'wl_isLocked');
+ isLocked python:lockable and here.wl_isLocked();">
+
+ <h1 i18n:translate="heading_edit_item">
+ Edit
+ <span i18n:name="itemtype">
+ <span i18n:translate=""
+ tal:content="python:here.getTypeInfo().Title()"
+ tal:omit-tag="">Item type</span>
+ </span>
+ </h1>
+
+ <p i18n:translate="description_edit_document">
+ Fill in the details of this document.
+ </p>
+
+ <form name="edit_form"
+ action="."
+ method="post"
+ enctype="multipart/form-data"
+ tal:attributes="action string:${here/getId}/${template/getId}" >
+
+ <fieldset>
+
+ <legend i18n:translate="legend_document_details">Document Details</legend>
+
+ <div class="field"
+ tal:condition="python:site_properties.getProperty('visible_ids', None)"
+ tal:define="error errors/id | nothing;
+ id python:request.get('id', test(here.show_id(),here.getId(),''));"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label for="id" i18n:translate="label_short_name">Short Name</label>
+
+ <div class="formHelp" i18n:translate="help_shortname">
+ Short Name is part of the item's web address.
+ For accessibility reasons, do not use spaces, upper case,
+ underscores, or special characters.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="text"
+ id="id"
+ name="id"
+ value=""
+ tal:attributes="value id"
+ />
+
+ </div>
+
+ <input type="hidden"
+ name="id"
+ tal:condition="python:not site_properties.getProperty('visible_ids', '')"
+ tal:attributes="value python:request.get('id', here.getId())"
+ />
+
+ <div class="field"
+ tal:define="error errors/title|nothing;
+ Title request/title | here/Title;"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label for="title" i18n:translate="label_title">Title</label>
+
+ <span class="fieldRequired" title="Required"
+ i18n:attributes="title title_required;"
+ i18n:translate="label_required">(Required)</span>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="text"
+ id="title"
+ name="title"
+ value=""
+ tal:attributes="value Title;"
+ />
+
+ </div>
+
+ <div class="field"
+ tal:define="description request/description | here/Description ">
+
+ <label for="description"
+ i18n:translate="label_description">Description</label>
+
+ <div class="formHelp" i18n:translate="help_description">
+ A brief description of the item.
+ </div>
+
+ <textarea id="description"
+ name="description"
+ tal:content="description">
+ Description
+ </textarea>
+ </div>
+
+ <div class="field"
+ tal:define="text python:request.get('text', getattr(here,'text',''));
+ cooked_text python:request.get('text',getattr(here,'cooked_text',''))">
+
+ <label for="text" i18n:translate="label_body_text">Body Text</label>
+
+ <tal:editor define="inputname string:text;
+ formname string:edit_form;
+ inputvalue text;
+ cooked_inputvalue cooked_text;">
+ <div metal:use-macro="here/wysiwyg_support/macros/wysiwygEditorBox">
+ The WYSIWYG code
+ </div>
+ </tal:editor>
+
+ <div metal:use-macro="here/wysiwyg_support/macros/textFormatSelector">
+ Format box, if needed
+ </div>
+
+ </div>
+
+ <div class="field"
+ tal:define="error errors/file|nothing;"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label for="file" i18n:translate="label_upload_contents_optional">Upload contents (optional)</label>
+
+ <div class="formHelp" i18n:translate="help_uploads">
+ Uploaded files will replace the body text entered above.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="file"
+ id="file"
+ name="file"
+ value=""
+ />
+ </div>
+
+
+ <div class="formControls"
+ tal:define="process_creation request/process_creation|nothing;">
+
+ <img src="" class="context"
+ tal:define="locked portal_object/lock_icon.gif;"
+ tal:condition="isLocked"
+ tal:replace="structure python:locked.tag(title='This item is locked')"
+ alt="Object locked"
+ i18n:attributes="alt"/>
+
+ <input class="context"
+ type="submit"
+ name="form.button.Save"
+ value="Save"
+ i18n:attributes="value label_save;"
+ tal:attributes="disabled python:test(isLocked, 'disabled', None);" />
+
+ <input class="standalone"
+ type="submit"
+ name="form.button.Cancel"
+ value="Cancel"
+ i18n:attributes="value label_cancel;" />
+ </div>
+ </fieldset>
+
+ <input type="hidden" name="form.submitted" value="1" />
+
+ </form>
+
+ <div metal:use-macro="here/document_byline/macros/byline">
+ Get the byline - contains details about author and modification date.
+ </div>
+
+ </div>
+
+ </body>
+</html>
/cvs/cluster/conga/luci/plone-custom/dropdown.js_TEST,v --> standard output
revision 1.1
--- conga/luci/plone-custom/dropdown.js_TEST
+++ - 2006-07-26 16:55:38.352754000 +0000
@@ -0,0 +1,170 @@
+/*
+ * This is the code for the dropdown menus. It uses the following markup:
+ *
+ * <dl class="actionMenu" id="uniqueIdForThisMenu">
+ * <dt class="actionMenuHeader">
+ * <!-- The following a-tag needs to be clicked to dropdown the menu -->
+ * <a href="some_destination">A Title</a>
+ * </dt>
+ * <dd class="actionMenuContent">
+ * <!-- Here can be any content you want -->
+ * </dd>
+ * </dl>
+ *
+ * When the menu is toggled, then the dl with the class actionMenu will get an
+ * additional class which switches between 'activated' and 'deactivated'.
+ * You can use this to style it accordingly, for example:
+ *
+ * .actionMenu.activated {
+ * display: block;
+ * }
+ *
+ * .actionMenu.deactivated {
+ * display: none;
+ * }
+ *
+ * When you click somewhere else than the menu, then all open menus will be
+ * deactivated. When you move your mouse over the a-tag of another menu, then
+ * that one will be activated and all others deactivated. When you click on a
+ * link inside the actionMenuContent element, then the menu will be closed and
+ * the link followed.
+ *
+ * This file uses functions from register_function.js, cssQuery.js and
+ * nodeutils.js.
+ *
+ */
+
+function isActionMenu(node) {
+ if (hasClassName(node, 'actionMenu')) {
+ return true;
+ }
+ return false;
+};
+
+function hideAllMenus() {
+ var menus = cssQuery('dl.actionMenu');
+ for (var i=0; i < menus.length; i++) {
+ replaceClassName(menus[i], 'activated', 'deactivated', true);
+ }
+};
+
+function toggleMenuHandler(event) {
+ if (!event) var event = window.event; // IE compatibility
+
+ // terminate if we hit a non-compliant DOM implementation
+ // returning true, so the link is still followed
+ if (!W3CDOM){return true;}
+
+ var container = findContainer(this, isActionMenu);
+ if (!container) {
+ return true;
+ }
+
+ // check if the menu is visible
+ if (hasClassName(container, 'activated')) {
+ // it's visible - hide it
+ replaceClassName(container, 'activated', 'deactivated', true);
+ } else {
+ // it's invisible - make it visible
+ replaceClassName(container, 'deactivated', 'activated', true);
+ }
+
+ return false;
+};
+
+function hideMenusHandler(event) {
+ if (!event) var event = window.event; // IE compatibility
+
+ hideAllMenus();
+
+ // we want to follow this link
+ return true;
+};
+
+function actionMenuDocumentMouseDown(event) {
+ if (!event) var event = window.event; // IE compatibility
+
+ if (event.target)
+ targ = event.target;
+ else if (event.srcElement)
+ targ = event.srcElement;
+
+ var container = findContainer(targ, isActionMenu);
+ if (container) {
+ // targ is part of the menu, so just return and do the default
+ return true;
+ }
+
+ hideAllMenus();
+
+ return true;
+};
+
+function actionMenuMouseOver(event) {
+ if (!event) var event = window.event; // IE compatibility
+
+ if (!this.tagName && (this.tagName == 'A' || this.tagName == 'a')) {
+ return true;
+ }
+
+ var container = findContainer(this, isActionMenu);
+ if (!container) {
+ return true;
+ }
+ var menu_id = container.id;
+
+ var switch_menu = false;
+ // hide all menus
+ var menus = cssQuery('dl.actionMenu');
+ for (var i=0; i < menus.length; i++) {
+ var menu = menus[i]
+ // check if the menu is visible
+ if (hasClassName(menu, 'activated')) {
+ switch_menu = true;
+ }
+ // turn off menu when it's not the current one
+ if (menu.id != menu_id) {
+ replaceClassName(menu, 'activated', 'deactivated', true);
+ }
+ }
+
+ if (switch_menu) {
+ var menu = cssQuery('#'+menu_id)[0];
+ if (menu) {
+ replaceClassName(menu, 'deactivated', 'activated', true);
+ }
+ }
+
+ return true;
+};
+
+function initializeMenus() {
+ // terminate if we hit a non-compliant DOM implementation
+ if (!W3CDOM) {return false;}
+
+ document.onmousedown = actionMenuDocumentMouseDown;
+
+ hideAllMenus();
+
+ // add toggle function to header links
+ var menu_headers = cssQuery('dl.actionMenu > dt.actionMenuHeader > a');
+ for (var i=0; i < menu_headers.length; i++) {
+ var menu_header = menu_headers[i];
+
+ menu_header.onclick = toggleMenuHandler;
+ menu_header.onmouseover = actionMenuMouseOver;
+ }
+
+ // add hide function to all links in the dropdown, so the dropdown closes
+ // when any link is clicked
+ var menu_contents = cssQuery('dl.actionMenu > dd.actionMenuContent');
+ for (var i=0; i < menu_contents.length; i++) {
+ menu_contents[i].onclick = hideMenusHandler;
+ }
+
+ // uncomment to enable sorting of elements
+ //var nodes = cssQuery('#objectMenu > dd.actionMenuContent li');
+ //sortNodes(nodes, getInnerTextFast);
+};
+
+registerPloneFunction(initializeMenus);
/cvs/cluster/conga/luci/plone-custom/failsafe_login_form,v --> standard output
revision 1.1
--- conga/luci/plone-custom/failsafe_login_form
+++ - 2006-07-26 16:55:38.436151000 +0000
@@ -0,0 +1,152 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+ i18n:domain="plone">
+<head>
+ <script type="text/javascript" tal:attributes="src python:context.portal_url()+'/login.js'" />
+</head>
+
+<body>
+
+<div tal:define="checkPermission nocall:here/portal_membership/checkPermission;
+ actions python:context.portal_actions.listFilteredActionsFor(context);
+ Iterator python:modules['Products.CMFPlone'].IndexIterator;
+ tabindex python:Iterator(pos=30000);
+ auth nocall:here/cookie_authentication|nothing;
+ came_from request/came_from|request/HTTP_REFERER|nothing;
+ came_from python:test(here.portal_url.isURLInPortal(came_from), came_from, None);
+ ztutils modules/ZTUtils;
+ errors options/state/getErrors;">
+
+<h1 i18n:translate="heading_sign_in">Please log in</h1>
+
+<p i18n:translate="description_sign_in">
+To access this part of the site, you need to log in with your user name and password.
+</p>
+
+<div id="enable_cookies_message" i18n:translate="enable_cookies_message" class="portalMessage" style="display:none">
+ Cookies are not enabled. You must <span i18n:name="enable_cookies">
+ <a href="enabling_cookies" i18n:translate="label_enable_cookies">enable cookies</a></span> before you can log in.
+</div>
+
+<div tal:condition="python: not auth" i18n:translate="login_form_disabled">
+ While cookie authentication is disabled, cookie-based login is not available.
+</div>
+
+<form tal:attributes="action python:context.absolute_url()+'/'+template.id"
+ method="post"
+ id="login_form"
+ tal:condition="python:auth">
+
+ <fieldset tal:define="ac_name auth/name_cookie;
+ ac_password auth/pw_cookie;
+ ac_persist auth/persist_cookie">
+
+ <legend i18n:translate="legend_account_details">Account details</legend>
+
+ <input type="hidden"
+ name="came_from"
+ value=""
+ tal:attributes="value came_from" />
+
+ <input type="hidden" name="form.submitted" value="1" />
+ <input type="hidden" name="js_enabled" id="js_enabled" value="0" />
+ <input type="hidden" name="cookies_enabled" id="cookies_enabled" value="" />
+ <input type="hidden" name="login_name" id="login_name" value="" />
+ <input type="hidden" name="pwd_empty" id="pwd_empty" value="0" />
+
+ <div class="field"
+ tal:define="error python:errors.get(ac_name, None);
+ value python:request.get('login_name', request.get(ac_name, None));"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_login_name"
+ tal:attributes="for ac_name">Login Name</label>
+
+ <div i18n:translate="help_login_name_caps"
+ class="formHelp">
+ Login names are case sensitive, make sure the caps lock key is not enabled.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="text"
+ size="15"
+ tabindex=""
+ tal:attributes="name ac_name;
+ id ac_name;
+ value value;
+ tabindex tabindex/next;"
+ />
+
+ </div>
+
+ <div class="field"
+ tal:define="error python:errors.get(ac_password, None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_password"
+ tal:attributes="for ac_password">Password</label>
+
+ <div class="formHelp">
+ <div i18n:translate="help_capslock_password">
+ Case sensitive, make sure caps lock is not enabled.
+ </div>
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="password"
+ size="15"
+ tabindex=""
+ tal:attributes="name ac_password;
+ id ac_password;
+ tabindex tabindex/next;"
+ />
+ </div>
+
+ <div class="field">
+
+ <input type="checkbox"
+ class="noborder formRememberName"
+ value="1"
+ checked="checked"
+ id="cb_remember"
+ tabindex=""
+ tal:attributes="name ac_persist;
+ tabindex tabindex/next;
+ checked python:request.get(ac_name, '') and 'checked' or None;"
+ />
+
+ <label for="cb_remember" i18n:translate="label_remember_my_name">Remember my name.</label>
+
+ <div i18n:translate="help_remember_my_name"
+ class="formHelp">
+ Check this to have your user name filled in automatically when you log in later.
+ </div>
+
+ </div>
+
+ <div class="formControls">
+
+ <input class="context"
+ tabindex=""
+ type="submit"
+ name="submit"
+ value="Log in"
+ i18n:attributes="value label_log_in;"
+ tal:attributes="tabindex tabindex/next;
+ onclick string:javascript:return setLoginVars('$ac_name','login_name','$ac_password','pwd_empty','js_enabled','cookies_enabled');"
+ />
+
+ </div>
+
+ <p i18n:translate="remember_to_log_out">
+ Please log out or exit your browser when you're done.
+ </p>
+
+ </fieldset>
+
+</form>
+</div>
+
+</body>
+</html>
/cvs/cluster/conga/luci/plone-custom/footer,v --> standard output
revision 1.1
--- conga/luci/plone-custom/footer
+++ - 2006-07-26 16:55:38.520401000 +0000
@@ -0,0 +1,31 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<body>
+<div id="portal-footer" metal:define-macro="portal_footer">
+
+<p>
+ <span i18n:translate="description_copyright" tal:omit-tag="">
+ The
+ <span>
+ <a href="http://redhat.com">Conga Cluster and Storage Management System</a>
+ </span>
+ is Copyright
+ <acronym title="Copyright" i18n:name="copyright" i18n:attributes="title title_copyright;">©</acronym>
+ 2000-<span i18n:name="current_year"
+ tal:define="now modules/DateTime/DateTime"
+ tal:content="now/year" />
+ by <a href="http://redhat.com/Conga">Red Hat, Inc</a>
+ </span>
+</p>
+
+<p>
+ <span i18n:translate="description_license">
+ Distributed under the
+ <span i18n:name="license">
+ <a href="http://creativecommons.org/licenses/GPL/2.0/" i18n:translate="label_gnu_gpl_licence">GNU GPL license</a>
+ </span>.
+ </span>
+</p>
+
+</div>
+</body>
+</html>
\ No newline at end of file
/cvs/cluster/conga/luci/plone-custom/global_searchbox,v --> standard output
revision 1.1
--- conga/luci/plone-custom/global_searchbox
+++ - 2006-07-26 16:55:38.602568000 +0000
@@ -0,0 +1,56 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+ i18n:domain="plone">
+
+<body>
+
+<!-- THE SEARCHBOX DEFINITION -->
+<div id="portal-searchbox" metal:define-macro="quick_search" tal:condition="not:isAnon">
+ <form name="searchform"
+ action="search"
+ tal:define="livesearch site_properties/enable_livesearch|nothing"
+ tal:attributes="action string:${portal_url}/search;
+ onsubmit python:test(livesearch==True,'return liveSearchSubmit()','')"
+ style="white-space:nowrap">
+
+ <label for="searchGadget" class="hiddenStructure"
+ i18n:translate="text_search">Search Site</label>
+
+ <div class="LSBox">
+ <input id="searchGadget"
+ tabindex=""
+ name="SearchableText"
+ type="text"
+ size="15"
+ value=""
+ title="Search Site"
+ accesskey="4"
+ i18n:attributes="title title_search_site;"
+ tal:attributes="value request/SearchableText|nothing;
+ tabindex tabindex/next"
+ class="visibility:visible" />
+
+ <input class="searchButton"
+ type="submit"
+ tabindex=""
+ value="Search"
+ tal:attributes="tabindex tabindex/next"
+ i18n:attributes="value label_search;" />
+
+ <div class="LSResult" id="LSResult" style=""><div class="LSShadow" id="LSShadow"></div></div>
+ </div>
+ </form>
+
+ <div id="portal-advanced-search"
+ class="hiddenStructure">
+ <a href="#"
+ tal:attributes="href string:$portal_url/search_form"
+ i18n:translate="label_advanced_search"
+ accesskey="5">
+ Advanced Search…
+ </a>
+ </div>
+
+</div>
+
+</body>
+</html>
/cvs/cluster/conga/luci/plone-custom/highlightsearchterms.js_TEST,v --> standard output
revision 1.1
--- conga/luci/plone-custom/highlightsearchterms.js_TEST
+++ - 2006-07-26 16:55:38.683685000 +0000
@@ -0,0 +1,79 @@
+function highlightTermInNode(node, word) {
+ var contents = node.nodeValue;
+ var index = contents.toLowerCase().indexOf(word.toLowerCase());
+ if (index < 0){return false};
+
+ var parent = node.parentNode;
+ if (parent.className != "highlightedSearchTerm") {
+ // make 3 shiny new nodes
+ var hiword = document.createElement("span");
+ hiword.className = "highlightedSearchTerm";
+ hiword.appendChild(document.createTextNode(contents.substr(index, word.length)));
+ parent.insertBefore(document.createTextNode(contents.substr(0, index)), node);
+ parent.insertBefore(hiword, node);
+ parent.insertBefore(document.createTextNode(contents.substr(index+word.length)), node);
+ parent.removeChild(node);
+ }
+}
+
+function highlightSearchTerms(terms, startnode) {
+ // terminate if we hit a non-compliant DOM implementation
+ if (!W3CDOM){return false};
+ if (!terms){return false};
+ if (!startnode){return false};
+
+ for (var term_index=0; term_index < terms.length; term_index++) {
+ // don't highlight reserved catalog search terms
+ var term = terms[term_index];
+ var term_lower = term.toLowerCase();
+ if (term_lower != 'not'
+ && term_lower != 'and'
+ && term_lower != 'or') {
+ walkTextNodes(startnode, highlightTermInNode, term);
+ }
+ }
+}
+
+function getSearchTermsFromURI(uri) {
+ var query;
+ if (typeof decodeURI != 'undefined') {
+ query = decodeURI(uri);
+ } else if (typeof unescape != 'undefined') {
+ // _robert_ ie 5 does not have decodeURI
+ query = unescape(uri);
+ } else {
+ // we just try to be lucky, for single words this will still work
+ }
+ var result = new Array();
+ if (window.decodeReferrer) {
+ var referrerSearch = decodeReferrer();
+ if (null != referrerSearch && referrerSearch.length > 0) {
+ result = referrerSearch;
+ }
+ }
+ var qfinder = new RegExp("searchterm=([^&]*)", "gi");
+ var qq = qfinder.exec(query);
+ if (qq && qq[1]) {
+ var terms = qq[1].replace(/\+/g,' ').split(/\s+/);
+ for (var i=0; i < terms.length; i++) {
+ if (terms[i] != '') {
+ result.push(terms[i]);
+ }
+ }
+ return result;
+ }
+ return result.length == 0 ? false : result;
+}
+
+function highlightSearchTermsFromURI() {
+ // terminate if we hit a non-compliant DOM implementation
+ if (!W3CDOM){return false};
+
+ // search-term-highlighter function -- Geir Bækholt
+ var terms = getSearchTermsFromURI(window.location.search);
+ // make sure we start the right place so we don't higlight menuitems or breadcrumb
+ var contentarea = getContentArea();
+ highlightSearchTerms(terms, contentarea);
+}
+
+registerPloneFunction(highlightSearchTermsFromURI);
/cvs/cluster/conga/luci/plone-custom/login.js_TEST,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login.js_TEST
+++ - 2006-07-26 16:55:38.764417000 +0000
@@ -0,0 +1,74 @@
+// Functions used by login pages
+
+function cookiesEnabled() {
+ // Test whether cookies are enabled by attempting to set a cookie and then change its value
+ // set test cookie
+ var c = "areYourCookiesEnabled=0";
+ document.cookie = c;
+ var dc = document.cookie;
+ // cookie not set? fail
+ if (dc.indexOf(c) == -1) return 0;
+ // change test cookie
+ c = "areYourCookiesEnabled=1";
+ document.cookie = c;
+ dc = document.cookie;
+ // cookie not changed? fail
+ if (dc.indexOf(c) == -1) return 0;
+ // delete cookie
+ document.cookie = "areYourCookiesEnabled=; expires=Thu, 01-Jan-70 00:00:01 GMT";
+ return 1;
+}
+
+function setLoginVars(user_name_id, alt_user_name_id, password_id, empty_password_id, js_enabled_id, cookies_enabled_id) {
+ // Indicate that javascript is enabled, set cookie status, copy username and password length info to
+ // alternative variables since these vars are removed from the request by zope's authentication mechanism.
+ if (js_enabled_id) {
+ el = document.getElementById(js_enabled_id);
+ if (el) { el.value = 1; }
+ }
+ if (cookies_enabled_id) {
+ el = document.getElementById(cookies_enabled_id);
+ // Do a fresh cookies enabled test every time we press the login button
+ // so that we are up to date in case the user enables cookies after seeing
+ // the cookies message.
+ if (el) { el.value = cookiesEnabled(); }
+ }
+ if (user_name_id && alt_user_name_id) {
+ user_name = document.getElementById(user_name_id)
+ alt_user_name = document.getElementById(alt_user_name_id)
+ if (user_name && alt_user_name) {
+ alt_user_name.value = user_name.value;
+ }
+ }
+ if (password_id && empty_password_id) {
+ password = document.getElementById(password_id)
+ empty_password = document.getElementById(empty_password_id)
+ if (password && empty_password) {
+ if (password.value.length==0) {
+ empty_password.value = '1';
+ } else {
+ empty_password.value = '0';
+ }
+ }
+ }
+ return 1;
+}
+
+function showCookieMessage(msg_id) {
+ // Show the element with the given id if cookies are not enabled
+ msg = document.getElementById(msg_id)
+ if (msg) {
+ if (cookiesEnabled()) {
+ msg.style.display = 'none';
+ } else {
+ msg.style.display = 'block';
+ }
+ }
+}
+
+function showEnableCookiesMessage() {
+ // Show the element with the id 'enable_cookies_message' if cookies are not enabled
+ showCookieMessage('enable_cookies_message')
+}
+// Call showEnableCookiesMessage after the page loads
+registerPloneFunction(showEnableCookiesMessage);
/cvs/cluster/conga/luci/plone-custom/login_failed,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_failed
+++ - 2006-07-26 16:55:38.952488000 +0000
@@ -0,0 +1,55 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+ lang="en"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+
+<body>
+
+<div metal:fill-slot="main">
+ <div metal:define-macro="login_failed"
+ tal:define="login_name python:request.get('login_name', '');">
+
+ <h1 i18n:translate="heading_sign_in_failure_auth">Sign-in failure</h1>
+
+ <p i18n:translate="description_not_logged_in_username_incorrect">
+ You are not currently logged in. Your user name and/or password
+ may be incorrect.
+ </p>
+
+ <p tal:condition="python: login_name == 'admin'">
+If you have forgotten your password, you can reset the password by logging in to the server as root and running the command <code>luci_admin password</code>.
+ </p>
+
+ <p i18n:translate="description_enable_cookies">
+ If your user name and password are correct, the problem may be that
+ your browser is not configured to <span i18n:name="link">
+ <a href="enabling_cookies"
+ i18n:translate="description_login_fail_enable_cookies">
+ accept cookies
+ </a></span>.
+ </p>
+
+ <p i18n:translate="description_still_failure">
+ If you are still reaching this page after correctly configuring
+ your browser, here are some possible reasons:
+ </p>
+
+ <ul>
+ <li i18n:translate="description_still_failure_reason1">
+ You may be running web filtering software that
+ disables cookies. If so, you will need to configure the
+ software so that it enables you to accept cookies from
+ <span tal:content="utool" tal:omit-tag="" i18n:name="url">url</span>
+ </li>
+ <li i18n:translate="description_still_failure_reason2">
+ Your computer may be behind a firewall or proxy server
+ that prevents cookies from being sent to or from your browser.
+ If so, you will need to ask your systems administrator if the
+ problem can be fixed.
+ </li>
+ </ul>
+ </div>
+</div>
+
+</body>
+</html>
/cvs/cluster/conga/luci/plone-custom/login_form,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_form
+++ - 2006-07-26 16:55:39.036214000 +0000
@@ -0,0 +1,165 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+
+<head>
+ <script type="text/javascript" metal:fill-slot="javascript_head_slot">
+ </script>
+ <metal:block fill-slot="top_slot"
+ tal:define="dummy python:request.set('disable_border',1)" />
+ </head>
+
+<body>
+
+<div metal:fill-slot="main"
+ tal:define="auth nocall:here/cookie_authentication|nothing;
+ came_from request/came_from|request/HTTP_REFERER|nothing;
+ came_from python:test(utool.isURLInPortal(came_from), came_from, None);
+ errors options/state/getErrors;">
+
+<h1 tal:condition="python:here.siteIsSetup()" i18n:translate="heading_sign_in">Please log in</h1>
+
+<p tal:condition="python:here.siteIsSetup()" i18n:translate="description_sign_in">
+To access this part of the site, you need to log in with your user name and password.
+</p>
+
+<div id="enable_cookies_message" i18n:translate="enable_cookies_message" class="portalMessage" style="display:none">
+ Cookies are not enabled. You must <span i18n:name="enable_cookies">
+ <a href="enabling_cookies" i18n:translate="label_enable_cookies">enable cookies</a></span> before you can log in.
+</div>
+
+<div tal:condition="python: not auth" i18n:translate="login_form_disabled">
+ While cookie authentication is disabled, cookie-based login is not available.
+</div>
+
+<div tal:omit-tag="" tal:condition="python: not here.siteIsSetup()">
+<h1>This site has not yet been initialized.</h1>
+<p>Please login to the server as root and run the command <code>luci_admin init</code> to initialize it.
+</div>
+
+<div style="margin-top:1em"
+ tal:define="ac_name auth/name_cookie;login_name python:request.get('login_name', request.get(ac_name, ''));"
+ tal:condition="python: errors and login_name == 'admin'" >
+If you have forgotten your password, you can reset the password by logging in to the server as root and running the command <code>luci_admin password</code>.
+</div>
+
+
+
+<form tal:attributes="action python:context.absolute_url()+'/'+template.id"
+ method="post"
+ id="login_form"
+ tal:condition="python:auth and here.siteIsSetup()">
+
+ <fieldset tal:define="ac_name auth/name_cookie;
+ ac_password auth/pw_cookie;
+ ac_persist auth/persist_cookie;
+ login_name python:request.get('login_name', request.get(ac_name, ''));">
+
+ <legend i18n:translate="legend_account_details">Account details</legend>
+
+ <input type="hidden"
+ name="came_from"
+ value=""
+ tal:attributes="value came_from" />
+
+ <input type="hidden" name="form.submitted" value="1" />
+ <input type="hidden" name="js_enabled" id="js_enabled" value="0" />
+ <input type="hidden" name="cookies_enabled" id="cookies_enabled" value="" />
+ <input type="hidden" name="login_name" id="login_name" value="" />
+ <input type="hidden" name="pwd_empty" id="pwd_empty" value="0" />
+
+ <div class="field"
+ tal:define="error python:errors.get(ac_name, None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_login_name"
+ tal:attributes="for ac_name">Login Name</label>
+
+ <div i18n:translate="help_login_name_caps"
+ class="formHelp">
+ Login names are case sensitive, make sure the caps lock key is not enabled.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="text"
+ size="15"
+ tabindex=""
+ tal:attributes="name ac_name;
+ id ac_name;
+ value login_name;
+ tabindex tabindex/next;"
+ />
+
+ </div>
+
+ <div class="field"
+ tal:define="error python:errors.get(ac_password, None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+ <label i18n:translate="label_password"
+ tal:attributes="for ac_password">Password</label>
+
+ <div class="formHelp">
+ <div i18n:translate="help_capslock_password">
+ Case sensitive, make sure caps lock is not enabled.
+ </div>
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="password"
+ size="15"
+ tabindex=""
+ tal:attributes="name ac_password;
+ id ac_password;
+ tabindex tabindex/next;"
+ />
+ </div>
+
+ <div class="field">
+
+ <input type="checkbox"
+ class="noborder formRememberName"
+ value="1"
+ checked="checked"
+ id="cb_remember"
+ tabindex=""
+ tal:attributes="name ac_persist;
+ tabindex tabindex/next;
+ checked python:request.get(ac_name, '') and 'checked' or None;"
+ />
+
+ <label for="cb_remember" i18n:translate="label_remember_my_name">Remember my name.</label>
+
+ <div i18n:translate="help_remember_my_name"
+ class="formHelp">
+ Check this to have your user name filled in automatically when you log in later.
+ </div>
+
+ </div>
+
+ <div class="formControls">
+
+ <input class="context"
+ tabindex=""
+ type="submit"
+ name="submit"
+ value="Log in"
+ i18n:attributes="value label_log_in;"
+ tal:attributes="tabindex tabindex/next;
+ onclick string:javascript:return setLoginVars('$ac_name','login_name','$ac_password','pwd_empty','js_enabled','cookies_enabled');"
+ />
+
+ </div>
+
+ <p i18n:translate="remember_to_log_out">
+ Please log out or exit your browser when you're done.
+ </p>
+
+ </fieldset>
+
+</form>
+</div>
+
+</body>
+</html>
/cvs/cluster/conga/luci/plone-custom/login_form_TEST,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_form_TEST
+++ - 2006-07-26 16:55:39.125829000 +0000
@@ -0,0 +1,178 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+
+<head>
+ <script type="text/javascript" metal:fill-slot="javascript_head_slot">
+ </script>
+ <metal:block fill-slot="top_slot"
+ tal:define="dummy python:request.set('disable_border',1)" />
+</head>
+
+<body>
+
+<div metal:fill-slot="main"
+ tal:define="auth nocall:here/cookie_authentication|nothing;
+ came_from request/came_from|request/HTTP_REFERER|nothing;
+ came_from python:test(utool.isURLInPortal(came_from), came_from, None);
+ errors options/state/getErrors;">
+
+<h1 i18n:translate="heading_sign_in">Please log in</h1>
+
+<p i18n:translate="description_sign_in">
+To access this part of the site, you need to log in with your user name and password.
+</p>
+
+<p i18n:translate="description_no_account"
+ tal:define="join python:[a['url'] for a in actions['user'] if a['id']=='join']"
+ tal:condition="python: join and checkPermission('Add portal member', here)">
+
+If you do not have an account here, head over to the
+
+<span i18n:name="registration_form">
+ <a href=""
+ tal:define="join python:join.pop();
+ join join;
+ join python:join+test(join.find('?')==-1, '?', '&')+ztu.make_query(came_from=came_from);"
+ tal:attributes="href join"
+ i18n:translate="description_no_account_registration_linktext">
+ registration form</a></span>.
+
+</p>
+
+<div id="enable_cookies_message" i18n:translate="enable_cookies_message" class="portalMessage" style="display:none">
+ Cookies are not enabled. You must <span i18n:name="enable_cookies">
+ <a href="enabling_cookies" i18n:translate="label_enable_cookies">enable cookies</a></span> before you can log in.
+</div>
+
+<div tal:condition="python: not auth" i18n:translate="login_form_disabled">
+ While cookie authentication is disabled, cookie-based login is not available.
+</div>
+
+<form tal:attributes="action python:context.absolute_url()+'/'+template.id"
+ method="post"
+ id="login_form"
+ tal:condition="python:auth">
+
+ <fieldset tal:define="ac_name auth/name_cookie;
+ ac_password auth/pw_cookie;
+ ac_persist auth/persist_cookie;
+ login_name python:request.get('login_name', request.get(ac_name, ''));">
+
+ <legend i18n:translate="legend_account_details">Account details</legend>
+
+ <input type="hidden"
+ name="came_from"
+ value=""
+ tal:attributes="value came_from" />
+
+ <input type="hidden" name="form.submitted" value="1" />
+ <input type="hidden" name="js_enabled" id="js_enabled" value="0" />
+ <input type="hidden" name="cookies_enabled" id="cookies_enabled" value="" />
+ <input type="hidden" name="login_name" id="login_name" value="" />
+ <input type="hidden" name="pwd_empty" id="pwd_empty" value="0" />
+
+ <div class="field"
+ tal:define="error python:errors.get(ac_name, None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_login_name"
+ tal:attributes="for ac_name">Login Name</label>
+
+ <div i18n:translate="help_login_name_caps"
+ class="formHelp">
+ Login names are case sensitive, make sure the caps lock key is not enabled.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="text"
+ size="15"
+ tabindex=""
+ tal:attributes="name ac_name;
+ id ac_name;
+ value login_name;
+ tabindex tabindex/next;"
+ />
+
+ </div>
+
+ <div class="field"
+ tal:define="error python:errors.get(ac_password, None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_password"
+ tal:attributes="for ac_password">Password</label>
+
+ <div class="formHelp">
+ <div i18n:translate="help_capslock_password">
+ Case sensitive, make sure caps lock is not enabled.
+ </div>
+ <div tal:condition="python:checkPermission('Mail forgotten password', here)"
+ i18n:translate="help_password_retrieval">
+ If you have forgotten your password,
+ <span i18n:name="click_here">
+ <a tal:attributes="href python:'mail_password_form?'+ztu.make_query(userid=login_name)"
+ i18n:translate="label_click_here_to_retrieve">click here to retrieve it</a>
+ </span>.
+ </div>
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="password"
+ size="15"
+ tabindex=""
+ tal:attributes="name ac_password;
+ id ac_password;
+ tabindex tabindex/next;"
+ />
+ </div>
+
+ <div class="field">
+
+ <input type="checkbox"
+ class="noborder formRememberName"
+ value="1"
+ checked="checked"
+ id="cb_remember"
+ tabindex=""
+ tal:attributes="name ac_persist;
+ tabindex tabindex/next;
+ checked python:request.get(ac_name, '') and 'checked' or None;"
+ />
+
+ <label for="cb_remember" i18n:translate="label_remember_my_name">Remember my name.</label>
+
+ <div i18n:translate="help_remember_my_name"
+ class="formHelp">
+ Check this to have your user name filled in automatically when you log in later.
+ </div>
+
+ </div>
+
+ <div class="formControls">
+
+ <input class="context"
+ tabindex=""
+ type="submit"
+ name="submit"
+ value="Log in"
+ i18n:attributes="value label_log_in;"
+ tal:attributes="tabindex tabindex/next;
+ onclick string:javascript:return setLoginVars('$ac_name','login_name','$ac_password','pwd_empty','js_enabled','cookies_enabled');"
+ />
+
+ </div>
+
+ <p i18n:translate="remember_to_log_out">
+ Please log out or exit your browser when you're done.
+ </p>
+
+ </fieldset>
+
+</form>
+</div>
+
+</body>
+</html>
/cvs/cluster/conga/luci/plone-custom/login_form_validate,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_form_validate
+++ - 2006-07-26 16:55:39.210468000 +0000
@@ -0,0 +1,50 @@
+## Controller Validator "login_form_validate"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=
+##title=Validate login
+##
+LOGIN_FAILED_MESSAGE = 'Login failed' # TODO need a friendlier message here
+
+request = context.REQUEST
+js_enabled = request.get('js_enabled',0) # is javascript enabled?
+js_enabled = js_enabled=='1' or js_enabled==1
+cookies_enabled = request.get('cookies_enabled',0) # are cookies enabled?
+cookies_enabled = cookies_enabled=='1' or cookies_enabled==1
+
+if js_enabled and not cookies_enabled:
+ # auth cookie won't persist -- erase it so users aren't confused
+ context.portal_membership.immediateLogout()
+ state.set(status='enable_cookies', portal_status_message='You must enable cookies before you can log in')
+ return state
+
+mt=context.portal_membership
+if mt.isAnonymousUser():
+ if js_enabled: # javascript is enabled - we can diagnose the failure
+ auth = getattr(context, 'cookie_authentication', None) # using cookie authentication?
+ if auth:
+ user_name = request.get('login_name', None)
+ password_empty = request.get('pwd_empty', None)=='1'
+ ac_name = auth.name_cookie
+ ac_password = auth.pw_cookie
+
+ if not user_name:
+ # no user name
+ state.setError(ac_name, 'Please enter your login name.', 'login_name_required')
+ if password_empty:
+ state.setError(ac_password, 'Please enter your password.', 'password_required')
+ verify_login_name = context.portal_properties.site_properties.getProperty('verify_login_name', 0)
+ if user_name and verify_login_name:
+ if mt.getMemberById(user_name) is None:
+ state.setError(ac_name, 'Authentication Error.', 'password_incorrect')
+ elif not password_empty:
+ state.setError(ac_password, 'Authentication Error.', 'password_incorrect')
+ state.set(status='failure', portal_status_message=LOGIN_FAILED_MESSAGE)
+ else: # no javascript - do low tech login failure
+ state.set(status='failure_page', portal_status_message=LOGIN_FAILED_MESSAGE)
+
+return state
/cvs/cluster/conga/luci/plone-custom/login_initial,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_initial
+++ - 2006-07-26 16:55:39.305913000 +0000
@@ -0,0 +1,13 @@
+## Controller Python Script "login_initial"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=
+##title=Handle a user's initial login
+##
+# do anything that must be done during a user's initial login here
+state.set(status='login_change_password')
+return state
/cvs/cluster/conga/luci/plone-custom/login_next,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_next
+++ - 2006-07-26 16:55:39.392837000 +0000
@@ -0,0 +1,50 @@
+## Controller Python Script "login_next"
+##bind container=container
+##bind context=context
+##bind namespace=
+##bind script=script
+##bind state=state
+##bind subpath=traverse_subpath
+##parameters=
+##title=login
+##
+from DateTime import DateTime
+import ZTUtils
+
+REQUEST=context.REQUEST
+
+membership_tool=context.portal_membership
+if membership_tool.isAnonymousUser():
+ REQUEST.RESPONSE.expireCookie('__ac', path='/')
+ return state.set(status='failure', portal_status_message='Login failed')
+
+came_from = REQUEST.get('came_from', None)
+util = context.plone_utils
+
+# if we weren't called from something that set 'came_from' or if HTTP_REFERER
+# is the 'logged_out' page, return the default 'login_success' form
+if came_from is not None:
+ scheme, location, path, parameters, query, fragment = util.urlparse(came_from)
+ template_id = path.split('/')[-1]
+ if template_id in ['login', 'login_success', 'login_password', 'login_failed', 'login_form', 'logged_in', 'logged_out', 'registered', 'mail_password', 'mail_password_form', 'join_form', 'require_login', 'member_search_results']:
+ came_from = ''
+ # It is probably a good idea in general to filter out urls outside the portal.
+ # An added bonus: this fixes some problems with a Zope bug that doesn't
+ # properly unmangle the VirtualHostMonster stuff when setting ACTUAL_URL
+ if not context.portal_url.isURLInPortal(came_from):
+ came_from = ''
+came_from = '/luci/homebase/'
+js_enabled = REQUEST.get('js_enabled','1') != '0'
+if came_from and js_enabled:
+ # If javascript is not enabled, it is possible that cookies are not enabled.
+ # If cookies aren't enabled, the redirect will log the user out, and confusion
+ # may arise. Redirect only if we know for sure that cookies are enabled.
+
+ # Add portal_status_message to the query string of the url we came from
+ query = context.create_query_string(query, portal_status_message='Welcome! You are now logged in.')
+ came_from = util.urlunparse((scheme, location, path, parameters, query, fragment))
+
+ REQUEST.RESPONSE.redirect(came_from)
+
+state.set(came_from=came_from)
+return state
/cvs/cluster/conga/luci/plone-custom/login_password,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_password
+++ - 2006-07-26 16:55:39.508045000 +0000
@@ -0,0 +1,109 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+ lang="en"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+
+<body>
+
+<tal:block tal:condition="exists: here/portal_skins | nothing"
+ tal:replace="nothing">
+
+ <tal:block tal:condition="here/portal_skins/updateSkinCookie | nothing"
+ tal:define="dummy here/setupCurrentSkin" />
+
+</tal:block>
+
+<div metal:fill-slot="main"
+ tal:define="errors options/state/getErrors;">
+
+ <h1 i18n:translate="heading_welcome">Welcome!</h1>
+
+ <p>
+ <span i18n:translate="description_logged_in">
+ This is the first time that you've logged in to
+ <span tal:content="portal_properties/title" tal:omit-tag="" i18n:name="here">here</span>.
+ </span>
+
+ </p>
+
+ <p i18n:translate="description_use_form_to_change_password">
+ Please use the form below to change your password.
+ </p>
+
+ <form tal:attributes="action python:context.absolute_url()+'/'+template.id"
+ name="change_password"
+ method="post">
+
+ <fieldset>
+ <legend i18n:translate="legend_password_details">Password Details</legend>
+
+ <input type="hidden" name="form.submitted" value="1" />
+ <input type="hidden" name="initial_login" value="1" />
+ <input type="hidden"
+ name="came_from"
+ value=""
+ tal:define="came_from request/came_from|nothing"
+ tal:condition="came_from"
+ tal:attributes="value came_from"
+ />
+
+
+ <div class="field"
+ tal:define="error python:errors.get('password', None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_new_password">New password</label>
+
+ <div class="formHelp" i18n:translate="help_new_password">
+ Enter your new password. Minimum 5 characters.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="password"
+ name="password"
+ size="10"
+ tabindex=""
+ tal:attributes="tabindex tabindex/next;"
+ />
+ </div>
+
+ <div class="field"
+ tal:define="error python:errors.get('confirm', None);"
+ tal:attributes="class python:test(error, 'field error', 'field')">
+
+ <label i18n:translate="label_confirm_password">Confirm password</label>
+
+ <div class="formHelp" i18n:translate="help_confirm_password">
+ Re-enter the password. Make sure the passwords are identical.
+ </div>
+
+ <div tal:content="error">Validation error output</div>
+
+ <input type="password"
+ name="confirm"
+ size="10"
+ tabindex=""
+ tal:attributes="tabindex tabindex/next;"
+ />
+ </div>
+
+ <div class="formControls">
+ <input class="standalone"
+ type="submit"
+ name="submit"
+ value="Change Password"
+ tabindex=""
+ i18n:attributes="value label_change_password;"
+ tal:attributes="tabindex tabindex/next;" />
+ </div>
+
+ </fieldset>
+
+ </form>
+
+</div>
+
+</body>
+</html>
+
/cvs/cluster/conga/luci/plone-custom/login_success,v --> standard output
revision 1.1
--- conga/luci/plone-custom/login_success
+++ - 2006-07-26 16:55:39.614976000 +0000
@@ -0,0 +1,74 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
+ lang="en"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+
+<head>
+ <metal:block fill-slot="top_slot"
+ tal:define="dummy python:request.set('disable_border',1)" />
+</head>
+
+<body>
+
+<tal:block tal:condition="exists: here/portal_skins | nothing"
+ tal:replace="nothing">
+ <tal:block tal:condition="here/portal_skins/updateSkinCookie | nothing"
+ tal:define="dummy here/setupCurrentSkin" />
+</tal:block>
+
+<div metal:fill-slot="main">
+ <div tal:condition="not:isAnon">
+ <div tal:define="came_from request/came_from|nothing;
+ initial_login request/initial_login|nothing;
+ js_enabled python:request.get('js_enabled','1')!='0';">
+
+ <h1 i18n:translate="heading_you_are_now_logged_in">You are now logged in</h1>
+
+ <p tal:condition="came_from">
+ <a href=""
+ tal:attributes="href came_from"
+ i18n:translate="label_login_continue">
+ Continue</a>
+ </p>
+
+ <p tal:condition="python:not came_from">
+ <a href=""
+ tal:attributes="href came_from"
+ i18n:translate="label_login_continue_to_home_page">
+ Continue to the
+ <span tal:content="portal/title" i18n:name="portal_title">
+ portal title
+ </span>
+ home page
+ </a>
+ </p>
+
+ <div tal:condition="not:js_enabled">
+ <p i18n:translate="description_javascript_advantage">
+ You can take fuller advantage of the features of this site
+ if you enable javascript in your browser.
+ </p>
+
+ <p i18n:translate="description_enable_cookies_for_login">
+ Note: If you do not remain logged in after leaving this
+ page, it is because you need to
+ <span i18n:name="enable_cookies">
+ <a href="enabling_cookies"
+ i18n:translate="label_enable_cookies">
+ enable cookies
+ </a>
+ </span>
+ in your browser.
+ </p>
+ </div>
+
+ </div>
+ </div>
+ <div tal:condition="isAnon">
+ <div metal:use-macro="here/login_failed/macros/login_failed" />
+ </div>
+</div>
+
+</body>
+</html>
+
/cvs/cluster/conga/luci/plone-custom/logo.jpg,v --> standard output
revision 1.1
Binary files /cvs/cluster/conga/luci/plone-custom/logo.jpg and - differ
co: output error: Broken pipe
co aborted
/cvs/cluster/conga/luci/plone-custom/main_template,v --> standard output
revision 1.1
--- conga/luci/plone-custom/main_template
+++ - 2006-07-26 16:55:39.822498000 +0000
@@ -0,0 +1,200 @@
+<metal:page define-macro="master"><metal:doctype define-slot="doctype"><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"></metal:doctype>
+<metal:block define-slot="top_slot" />
+<metal:block use-macro="here/global_defines/macros/defines" />
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"
+ lang="en"
+ tal:attributes="lang language;
+ xml:lang language">
+
+ <head metal:use-macro="here/header/macros/html_header">
+
+ <metal:fillbase fill-slot="base">
+ <metal:baseslot define-slot="base">
+ <base href="" tal:attributes="href here/renderBase" />
+ </metal:baseslot>
+ </metal:fillbase>
+
+ <metal:headslot fill-slot="head_slot"
+ tal:define="lang language;
+ charset site_properties/default_charset|string:utf-8">
+
+ <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
+ Get the global cache headers located in global_cache_settings.
+ </metal:cache>
+
+ <metal:headslot define-slot="head_slot" />
+ <tal:comment replace="nothing"> A slot where you can insert elements in the header from a template </tal:comment>
+ </metal:headslot>
+
+ <metal:cssslot fill-slot="css_slot">
+ <tal:comment replace="nothing"> A slot where you can insert CSS in the header from a template </tal:comment>
+ <metal:cssslot define-slot="css_slot" />
+ </metal:cssslot>
+
+ <metal:javascriptslot fill-slot="javascript_head_slot">
+ <tal:comment replace="nothing"> A slot where you can insert javascript in the header from a template </tal:comment>
+ <metal:javascriptslot define-slot="javascript_head_slot" />
+ </metal:javascriptslot>
+ </head>
+
+ <body tal:attributes="class here/getSectionFromURL;
+ dir python:test(isRTL, 'rtl', 'ltr')">
+ <div id="visual-portal-wrapper">
+
+ <div id="portal-top" i18n:domain="plone">
+
+ <div id="portal-header">
+ <a class="hiddenStructure"
+ accesskey="2"
+ tal:attributes="href string:${request/ACTUAL_URL}#documentContent"
+ i18n:translate="label_skiptocontent">Skip to content.</a>
+
+ <a class="hiddenStructure"
+ accesskey="6"
+ tal:attributes="href string:${request/ACTUAL_URL}#portlet-navigation-tree"
+ i18n:translate="label_skiptonavigation">Skip to navigation</a>
+
+ <div tal:condition="not:isAnon" metal:use-macro="here/global_siteactions/macros/site_actions">
+ Site-wide actions (Contact, Sitemap, Help, Style Switcher etc)
+ </div>
+
+ <div tal:condition="not:isAnon" metal:use-macro="here/global_searchbox/macros/quick_search">
+ The quicksearch box, normally placed at the top right
+ </div>
+
+ <a metal:use-macro="here/global_logo/macros/portal_logo">
+ The portal logo, linked to the portal root
+ </a>
+
+ <div tal:condition="not:isAnon" metal:use-macro="here/global_sections/macros/portal_tabs">
+ The global sections tabs. (Welcome, News etc)
+ </div>
+ </div>
+
+ <div metal:use-macro="here/global_personalbar/macros/personal_bar">
+ The personal bar. (log in, logout etc...)
+ </div>
+
+ <div tal:condition="not:isAnon" metal:use-macro="here/global_pathbar/macros/path_bar">
+ The breadcrumb navigation ("you are here")
+ </div>
+ </div>
+
+ <div class="visualClear"><!-- --></div>
+
+ <tal:comment replace="nothing">
+ The wrapper table. It contains the three columns. There's a table-less
+ alternative in the plone_tableless skin layer that you can use if you
+ prefer layouts that don't use tables.
+ </tal:comment>
+
+ <table id="portal-columns">
+ <tbody>
+ <tr>
+ <tal:comment replace="nothing"> Start of the left column </tal:comment>
+ <td id="portal-column-one"
+ metal:define-slot="column_one_slot"
+ tal:define="lccond1 sl;lccond2 isAnon" tal:condition="python:(lccond1 and not lccond2)">
+
+ <div class="visualPadding">
+ <metal:portlets define-slot="portlets_one_slot">
+ <metal:leftportlets use-macro="here/portlets_fetcher/macros/left_column">
+ This instruction gets the portlets (boxes) for the left column.
+ </metal:leftportlets>
+ </metal:portlets>
+
+ </div>
+ </td>
+ <tal:comment replace="nothing"> End of the left column </tal:comment>
+
+ <tal:comment replace="nothing"> Start of main content block </tal:comment>
+ <td id="portal-column-content"
+ tal:define="tabindex python:Iterator(pos=0)">
+
+ <metal:block define-slot="content">
+ <div id="content"
+ metal:define-macro="content"
+ tal:define="show_border python:here.showEditableBorder(template_id=template_id, actions=actions );"
+ tal:attributes="class python:test(show_border,'documentEditable','')">
+
+ <metal:ifborder tal:condition="show_border" >
+ <div metal:use-macro="here/global_contentviews/macros/content_views">
+ The content views (View, Edit, Properties, Workflow)
+ </div>
+
+ <div metal:use-macro="here/global_contentviews/macros/content_actions">
+ The content bar
+ </div>
+ </metal:ifborder>
+
+ <div class="documentContent" id="region-content">
+
+ <a name="documentContent"></a>
+
+ <div metal:use-macro="here/global_statusmessage/macros/portal_message">
+ Portal status message
+ </div>
+
+ <metal:header metal:define-slot="header" tal:content="nothing">
+ Visual Header
+ </metal:header>
+
+ <metal:bodytext metal:define-slot="main" tal:content="nothing">
+ Page body text
+ </metal:bodytext>
+
+ <metal:sub metal:define-slot="sub">
+ <metal:discussion use-macro="here/viewThreadsAtBottom/macros/discussionView" />
+ </metal:sub>
+
+ </div>
+
+ </div>
+
+ </metal:block>
+ </td>
+ <tal:comment replace="nothing"> End of main content block </tal:comment>
+
+ <tal:comment replace="nothing"> Start of right column </tal:comment>
+ <td id="portal-column-two"
+ metal:define-slot="column_two_slot"
+ tal:define="rccond1 sr;rccond2 isAnon" tal:condition="python:(rccond1 and not rccond2)">
+ <div class="visualPadding">
+ <metal:portlets define-slot="portlets_two_slot">
+ <metal:rightportlets use-macro="here/portlets_fetcher/macros/right_column">
+ This instruction gets the portlets (boxes) for the right column.
+ </metal:rightportlets>
+ </metal:portlets>
+
+ </div>
+ </td>
+ <tal:comment replace="nothing"> End of the right column </tal:comment>
+ </tr>
+ </tbody>
+ </table>
+ <tal:comment replace="nothing"> end column wrapper </tal:comment>
+
+ <div class="visualClear"><!-- --></div>
+
+
+ <hr class="netscape4" />
+
+ <metal:block i18n:domain="plone">
+
+ <metal:footer use-macro="here/footer/macros/portal_footer">
+ Footer
+ </metal:footer>
+
+ <metal:colophon use-macro="here/colophon/macros/colophon">
+ The colophon area - contains details about the production of
+ the site. Typically "powered by" buttons, standards, tools used.
+ </metal:colophon>
+ </metal:block>
+
+ </div>
+
+</body>
+</html>
+</metal:page>
/cvs/cluster/conga/luci/plone-custom/portlet_login,v --> standard output
revision 1.1
--- conga/luci/plone-custom/portlet_login
+++ - 2006-07-26 16:55:39.907478000 +0000
@@ -0,0 +1,115 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ i18n:domain="plone">
+<body tal:define="Iterator python:modules['Products.CMFPlone'].IndexIterator;
+ tabindex python:Iterator()">
+<div metal:define-macro="portlet"
+ tal:omit-tag=""
+ tal:define="pageloc python: request.URL.split('/')[-1];
+ okToShowHere python: not pageloc in ('login_form', 'join_form');
+ auth nocall:here/cookie_authentication|nothing"
+ tal:condition="python: isAnon and okToShowHere">
+
+<dl class="portlet"
+ id="portlet-login"
+ tal:define="ac_name auth/name_cookie|nothing;
+ ac_password auth/pw_cookie|nothing;
+ ac_persist auth/persist_cookie|nothing;
+ join python:[a['url'] for a in actions['user'] if a['id']=='join'];
+ canRegister python:test(join and hasattr(here,'portal_registration') and checkPermission('Add portal member', here), 1, 0);
+ canRequestPassword python:checkPermission('Mail forgotten password', here)"
+ tal:condition="python: auth">
+
+ <dt class="portletHeader">
+ <a href="#"
+ tal:attributes="href string:$portal_url/login_form"
+ i18n:translate="box_sign_in">Log in</a>
+ </dt>
+
+ <dd class="portletItem odd">
+ <form action="login_form"
+ name="loginform"
+ method="post"
+ tal:attributes="action string:${portal_url}/login_form">
+
+ <input type="hidden" name="form.submitted" value="1" />
+ <input type="hidden" name="came_from" value=""
+ tal:attributes="value here/getCurrentUrl" />
+ <input type="hidden" name="js_enabled" id="js_enabled" value="0" />
+ <input type="hidden" name="cookies_enabled" id="cookies_enabled" value="" />
+ <input type="hidden" name="login_name" id="login_name" value="" />
+ <input type="hidden" name="pwd_empty" id="pwd_empty" value="0" />
+
+ <div class="field">
+ <label for="__ac_name"
+ i18n:translate="label_login_name">Login Name</label>
+ <br />
+ <input type="text"
+ size="10"
+ alt="Login Name"
+ onclick="showCookieMessage('cookies_message')"
+ tal:attributes="name ac_name; id ac_name;
+ value python:request.get(ac_name, '');
+ tabindex tabindex/next"
+ i18n:attributes="alt label_login_name;"/>
+ </div>
+
+ <div class="field">
+ <label for="__ac_password"
+ i18n:translate="label_password">Password</label>
+ <br />
+ <input type="password"
+ size="10"
+ alt="Password"
+ onclick="showCookieMessage('cookies_message')"
+ tal:attributes="name ac_password; id ac_password;
+ tabindex tabindex/next;"
+ i18n:attributes="alt label_password;"/>
+ </div>
+
+ <div id="cookies_message" i18n:translate="enable_cookies_message" class="portalMessage" style="display:none">
+ Cookies are not enabled. You must <span i18n:name="enable_cookies">
+ <a href="enabling_cookies" i18n:translate="label_enable_cookies">enable cookies</a></span> before you can log in.
+ </div>
+
+ <div class="formControls">
+
+ <input class="context"
+ type="submit"
+ name="submit"
+ value="Log in"
+ alt="Log in"
+ tal:attributes="tabindex tabindex/next;
+ onclick string:javascript:return setLoginVars('$ac_name','login_name','$ac_password','pwd_empty','js_enabled','cookies_enabled');"
+ i18n:attributes="value label_log_in; alt label_log_in;"/>
+ </div>
+ </form>
+ </dd>
+
+ </dl>
+
+
+
+
+<dl class="portlet"
+ id="portlet-login"
+ tal:condition="python: not auth">
+
+ <dt class="portletHeader">
+ <a href="#" i18n:translate="box_sign_in">Log in</a>
+ </dt>
+
+ <dd class="portletItem"
+ tal:condition="python: not auth"
+ i18n:translate="login_portlet_disabled">
+ Cookie authentication is disabled.
+ Login portlet not available.
+ </dd>
+
+</dl>
+
+
+
+</div>
+</body>
+</html>
/cvs/cluster/conga/luci/plone-custom/registered,v --> standard output
revision 1.1
--- conga/luci/plone-custom/registered
+++ - 2006-07-26 16:55:39.988150000 +0000
@@ -0,0 +1,71 @@
+<html xmlns:tal="http://xml.zope.org/namespaces/tal"
+ xmlns:metal="http://xml.zope.org/namespaces/metal"
+ metal:use-macro="here/main_template/macros/master"
+ i18n:domain="plone">
+<body>
+
+<div metal:fill-slot="main"
+ tal:define="auth nocall:here/cookie_authentication|nothing">
+
+<div tal:condition="python: not auth" i18n:translate="registered_disabled">
+ Cookie authentication has been disabled.
+</div>
+
+<div tal:define="ve site_properties/validate_email"
+ tal:condition="python: auth">
+
+<h1 i18n:translate="heading_welcome">Welcome!</h1>
+
+<tal:block condition="python:not(ve)">
+ <p i18n:translate="description_you_can_log_on_now">Click the button to log in immediately.</p>
+
+ <div id="enable_cookies_message" i18n:translate="enable_cookies_message" class="portalMessage" style="display:none">
+ Cookies are not enabled. You must <span i18n:name="enable_cookies">
+ <a href="enabling_cookies" i18n:translate="label_enable_cookies">enable cookies</a></span> before you can log in.
+ </div>
+
+ <form action=""
+ method="post"
+ tal:define="username request/username;
+ password request/password;
+ ac_name auth/name_cookie;
+ ac_password auth/pw_cookie;
+ ac_persist auth/persist_cookie;"
+ tal:attributes="action python:'%s/login_form' % portal_url">
+
+ <input type="hidden" name="form.submitted" value="1" />
+ <input type="hidden" name="js_enabled" id="js_enabled" value="0" />
+ <input type="hidden" name="cookies_enabled" id="cookies_enabled" value="0" />
+ <input type="hidden" name="login_name" id="login_name" value="" />
+ <input type="hidden" name="pwd_empty" id="pwd_empty" value="0" />
+
+ <input type="hidden"
+ name="came_from"
+ value=""
+ tal:attributes="value request/came_from|nothing;" />
+ <input type="hidden"
+ name="ac_name"
+ value=""
+ tal:attributes="id ac_name;
+ name ac_name;
+ value username;" />
+ <input type="hidden"
+ name="ac_password"
+ value=""
+ tal:attributes="name ac_password;
+ id ac_password;
+ value password;" />
+ <input class="standalone"
+ type="submit"
+ value="Log in"
+ i18n:attributes="value label_log_in;"
+ tal:attributes="onclick string:javascript:return setLoginVars('$ac_name','login_name','$ac_password','pwd_empty','js_enabled','cookies_enabled');"
+ />
+ </form>
+</tal:block>
+
+</div>
+
+</div>
+</body>
+</html>
More information about the Cluster-devel
mailing list