Vincent Massol a écrit :
Hi Ludovic,
I have some questions/remarks:
1) The 1090 JIRA issue seems planned for 1.1 B1 but you've still committed stuff in the 1.0 branch so we need a JIRA issue that'll be closed for 1.0 RC1 This was some code I had tested on my computer that is well separated from the XWiki core code, which hindered me from commiting the other code I had to commit for RC1. The Query Generator code was already in 1.0 so I thought it was better to commit it in RC1. However it can be an undocumented feature until it's finished in 1.1. But to be able to finish it we need to be able to test it and since it is a non intrusive feature it is good to have it hidden in 1.0 so that many can test it on real data.
2) You've added a new getClass API in api.XWiki: 2.1) There's no JIRA issue for this and that's important for end users 2.2) The method name is not good I think as it hides the Object.getClass() method and in any case is confusing. I would suggest getDocumentClass() 2.3) It seems to me this method should be on the Document class rather than on the XWiki class, no? The purpose of this function is to access directly to the XClass (new name) object bypassing all rights. This was need to be able to show the register page without being blocked by rights on the XWiki.XWikiUsers page. It should not be in the Document class (it already exists there (getxWikiClass) since it would be blocked by rights. I didn't thought of the getClass conflict.. We can call it getXClass. If you do it don't forget to modify registerinline.vm since there is a call there.
3) APIs are the most sensitive part of any application and need to be handled with care as it's almost impossible to undo them as they're set in stone and used by end users. As such I think we really need to discuss any API change on the list before we go ahead with changes on them. I'd like that we take this habit of doing so because otherwise: 3.1) API proliferates and goes out of control (as shown in XWiki/Document/Context) 3.2) All developers are not aware of the new API, why they are there, they may not agree on the names, locations, etc 3.3) More heads is better to really make sure the API is needed and thus open it up as it's an almost irreversible modification
Ok. Ludovic
WDYT?
Thanks -Vincent
On Apr 16, 2007, at 1:17 AM, Ludovic Dubost wrote:
Author: ludovic Date: 2007-04-16 01:17:41 +0200 (Mon, 16 Apr 2007) New Revision: 2824
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/XWiki.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/api/XWiki.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/DefaultQuery.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/HibernateQuery.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/IQuery.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/JcrQuery.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/SecHibernateQuery.java
xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java
xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/albatross/registerinline.vm
xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/dodo/register.vm
xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/finch/register.vm
xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/templates/registerinline.vm
Log: XWIKI-985 Allow register to work even if wiki is completely protected but register right is given to anonymous users. Update all register page for older skins. XWIKI-1090 Added displaySearchOrder API for Query Plugin
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/XWiki.java =================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/XWiki.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/XWiki.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -3697,23 +3697,30 @@ }
public boolean prepareDocuments(XWikiRequest request, XWikiContext context, - VelocityContext vcontext) throws XWikiException + VelocityContext vcontext) throws XWikiException { XWikiDocument doc; String docName = getDocumentName(request, context); - try { - doc = getDocument(docName, context); - } catch (XWikiException e) { - doc = context.getDoc(); - if (context.getAction().equals("delete")) { - if (doc == null) { - setPhonyDocument(docName, context, vcontext); - } - if (!checkAccess("admin", doc, context)) { + if (context.getAction().equals("register")) { + setPhonyDocument(docName, context, vcontext); + context.getWiki().prepareResources(context); + doc = context.getDoc(); + } else { + + try { + doc = getDocument(docName, context); + } catch (XWikiException e) { + doc = context.getDoc(); + if (context.getAction().equals("delete")) { + if (doc == null) { + setPhonyDocument(docName, context, vcontext); + } + if (!checkAccess("admin", doc, context)) { + throw e; + } + } else { throw e; } - } else { - throw e; } }
@@ -3723,19 +3730,21 @@ Object[] args = {doc.getFullName(), context.getUser()}; setPhonyDocument(docName, context, vcontext); throw new XWikiException(XWikiException.MODULE_XWIKI_ACCESS, - XWikiException.ERROR_XWIKI_ACCESS_DENIED, - "Access to document {0} has been denied to user {1}", - null, - args); + XWikiException.ERROR_XWIKI_ACCESS_DENIED, + "Access to document {0} has been denied to user {1}", + null, + args); } else if (checkActive(context) == 0) { Object[] args = {context.getUser()}; setPhonyDocument(docName, context, vcontext); throw new XWikiException(XWikiException.MODULE_XWIKI_USER, - XWikiException.ERROR_XWIKI_USER_INACTIVE, - "User {0} account is inactive", - null, - args); + XWikiException.ERROR_XWIKI_USER_INACTIVE, + "User {0} account is inactive", + null, + args); } + + context.put("doc", doc); vcontext.put("doc", doc.newDocument(context)); vcontext.put("cdoc", vcontext.get("doc"));
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/api/XWiki.java =================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/api/XWiki.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/api/XWiki.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -2351,6 +2351,37 @@ }
/** + * API to display a select box for the list of available field for a specific class This field + * data can then be used to generate the order element of an XWiki Query showing a table with the relevant data + * + * @param className XWiki Class Name to display the list of columns for + * @param query Query to pre-select the currently selected columns + * @return text of the select field + * @throws XWikiException exception is a failure occured + */ + public String displaySearchOrder(String className, XWikiQuery query) throws XWikiException + { + return xwiki.displaySearchOrder(className, "", query, getXWikiContext()); + } + + /** + * API to display a select box for the list of available field for a specific class, optionally + * adding a prefix This field data can then be used to generate the order element of an XWiki Query showing a table + * with the relevant data + * + * @param className XWiki Class Name to display the list of columns for + * @param prefix Prefix to add to the field name + * @param query Query to pre-select the currently selected columns + * @return text of the select field + * @throws XWikiException exception is a failure occured + */ + public String displaySearchOrder(String className, String prefix, XWikiQuery query) + throws XWikiException + { + return xwiki.displaySearchOrder(className, prefix, query, getXWikiContext()); + } + + /** * API to display a field in search mode for a specific class without preselected values This * field data can then be used to generate an XWiki Query showing a table with the relevant data * @@ -2535,4 +2566,17 @@ public String clearAccents(String text) { return Util.noaccents(text); } + + /** + * Get a Class + * + * @return class object + * @throws XWikiException + */ + public Class getClass(String name) throws XWikiException + { + return new Class(xwiki.getDocument(name, context).getxWikiClass(), context); + } + + }
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/objects/classes/BaseClass.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -49,6 +49,7 @@ import com.xpn.xwiki.objects.PropertyInterface; import com.xpn.xwiki.plugin.query.XWikiCriteria; import com.xpn.xwiki.plugin.query.XWikiQuery; +import com.xpn.xwiki.plugin.query.OrderClause; import com.xpn.xwiki.validation.XWikiValidationInterface; import com.xpn.xwiki.validation.XWikiValidationStatus;
@@ -686,6 +687,39 @@ return select.toString(); }
+ public String displaySearchOrder(String prefix, XWikiQuery query, XWikiContext context) { + select select = new select(prefix + "searchorder", 5); + select.setMultiple(true); + select.setName(prefix + "searchorder"); + select.setID(prefix + "searchorder"); + + List list = Arrays.asList(getPropertyNames()); + Map prettynamesmap = new HashMap(); + for (int i=0;i<list.size();i++) { + String propname = (String) list.get(i); + list.set(i, prefix + propname); + prettynamesmap.put(prefix + propname, ((PropertyClass)get(propname)).getPrettyName()); + } + + OrderClause order = null; + if ((query!=null)&&(query.getOrderProperties()!=null)&&(query.getOrderProperties().size()>0))
+ order = (OrderClause) query.getOrderProperties().get(0); + + // Add options from Set + for (Iterator it=list.iterator();it.hasNext();) { + String value = it.next().toString(); + String displayValue = (String) prettynamesmap.get(value); + option option = new option(displayValue, displayValue); + option.addElement(displayValue); + option.setValue(value); + if ((order!=null)&&(value.equals(order.getProperty()))) + option.setSelected(true); + select.addElement(option); + } + + return select.toString(); + } + public void setValidationScript(String validationScript) { this.validationScript = validationScript; }
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/DefaultQuery.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/DefaultQuery.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/DefaultQuery.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -42,7 +42,11 @@ return null; }
- protected int _fetchSize=-1; + public String getNativeQuery() { + return null; + } + + protected int _fetchSize=-1; protected int _firstResult=-1; protected boolean _isdistinct=false; public IQuery setMaxResults(int fs) { _fetchSize = fs; return this; }
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/HibernateQuery.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/HibernateQuery.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/HibernateQuery.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -88,28 +88,34 @@ } return true; } - public List list() throws XWikiException { - if (translator==null) - translator = new XWikiHibernateQueryTranslator( getQueryTree() ); - StringBuffer _result = new StringBuffer(); - if (_select.length()>0) - _result.append("select ").append(_select); - _result.append(" from ").append(_from); - - constructWhere(_result); - - if (_order.length()>0) - _result.append(" order by ").append(_order); - - String hql = _result.toString(); - - if (log.isDebugEnabled()) - log.debug("hql: "+hql); - + + public List list() throws XWikiException { + String hql = getNativeQuery(); return hqlexec(hql, _hqlparams, _fetchSize, _firstResult); } - - protected SepStringBuffer _select = new SepStringBuffer(","); + + public String getNativeQuery() { + if (translator==null) + translator = new XWikiHibernateQueryTranslator( getQueryTree() ); + StringBuffer _result = new StringBuffer(); + if (_select.length()>0) + _result.append("select ").append(_select); + _result.append(" from ").append(_from); + + constructWhere(_result); + + if (_order.length()>0) + _result.append(" order by ").append(_order); + + String hql = _result.toString(); + + if (log.isDebugEnabled()) + log.debug("hql: "+hql); + + return hql; + } + + protected SepStringBuffer _select = new SepStringBuffer(","); protected SepStringBuffer _from = new SepStringBuffer(","); protected SepStringBuffer _where = new SepStringBuffer(" and "); protected SepStringBuffer _userwhere = new SepStringBuffer(" and "); @@ -807,8 +813,8 @@ translator = null; return super.setDistinct(d); } - - Map _hqlparams = new HashMap(); + + Map _hqlparams = new HashMap(); protected void _addHqlParam(String pn, Object v) { _hqlparams.put(pn, v); }
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/IQuery.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/IQuery.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/IQuery.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -33,4 +33,5 @@ public IQuery setMaxResults(int fs); public IQuery setFirstResult(int fr); public IQuery setDistinct(boolean d); + public String getNativeQuery(); }
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/JcrQuery.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/JcrQuery.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/JcrQuery.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -28,12 +28,16 @@ return (XWikiJcrStore) ((XWikiJcrBaseStore)qf.getContext().getWiki().getNotCacheStore()); }
- public List list() throws XWikiException { + public String getNativeQuery() { + return "store"+query; + } + + public List list() throws XWikiException { final List result = new ArrayList(); try { getStore().executeRead(qf.getContext(), new JcrCallBack() { public Object doInJcr(XWikiJcrSession session) throws Exception { - Query q = session.getQueryManager().createQuery("store"+query, language); + Query q = session.getQueryManager().createQuery(getNativeQuery(), language); QueryResult qr = q.execute(); RowIterator ri = qr.getRows(); if (ri!=null) {
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/SecHibernateQuery.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/SecHibernateQuery.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/SecHibernateQuery.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -94,8 +94,28 @@ if (PasswordClass.class.equals(class1)) isAllow = false; } - - public List list() throws XWikiException { + + public String getNativeQuery() { + _allowdocs.clear(); + String docname = translator.getLastNameClass(qn_xwiki_document); + if (docname==null) { + QName lclass = translator.getLastQNClass(); + if (qn_xwiki_object.equals(lclass)) { + final String objname = translator.getLastNameClass(lclass); + docname = translator.newXWikiObj(qn_xwiki_document); + _where.appendWithSep(docname).append(".fullName=").append(objname).append(".name");
+ } else if (qn_xwiki_attachment.equals(lclass)) { + final String attname = translator.getLastNameClass(lclass); + docname = translator.newXWikiObj(qn_xwiki_document); + _where.appendWithSep(docname).append(".id=").append(attname).append(".docId");
+ } else + throw new TranslateException("Class not exist"); + } + _select = new SepStringBuffer(docname+".id,"+docname+".fullName", null); + return super.getNativeQuery(); + } + + public List list() throws XWikiException { if (translator==null) translator = new XWikiHibernateQueryTranslator(getQueryTree()); if (!isAllowed()) @@ -106,23 +126,6 @@
final SepStringBuffer _real_select = _select; try { - _allowdocs.clear(); - String docname = translator.getLastNameClass(qn_xwiki_document); - if (docname==null) { - QName lclass = translator.getLastQNClass(); - if (qn_xwiki_object.equals(lclass)) { - final String objname = translator.getLastNameClass(lclass); - docname = translator.newXWikiObj(qn_xwiki_document); - _where.appendWithSep(docname).append(".fullName=").append(objname).append(".name");
- } else if (qn_xwiki_attachment.equals(lclass)) { - final String attname = translator.getLastNameClass(lclass); - docname = translator.newXWikiObj(qn_xwiki_document); - _where.appendWithSep(docname).append(".id=").append(attname).append(".docId");
- } else - throw new TranslateException("Class not exist"); - } - _select = new SepStringBuffer(docname+".id,"+docname+".fullName", null); - security = false; int fr = _firstResult; _firstResult = -1; int fs = _fetchSize; _fetchSize = -1;
Modified: xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java
=================================================================== --- xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/core/src/main/java/com/xpn/xwiki/plugin/query/XWikiQuery.java 2007-04-15 23:17:41 UTC (rev 2824) @@ -31,6 +31,8 @@ super(); String[] columns = request.getParameterValues(className + "_" + "searchcolumns"); setDisplayProperties(columns); + String[] order = request.getParameterValues(className + "_" + "searchorder"); + setOrderProperties(order); BaseClass bclass = context.getWiki().getDocument(className, context).getxWikiClass(); Set properties = bclass.getPropertyList(); Iterator propid = properties.iterator(); @@ -41,6 +43,16 @@ } }
+ private void setOrderProperties(String[] order) { + orderProperties.clear(); + if (order!=null) { + for (int i=0;i<order.length;i++) { + OrderClause oclause = new OrderClause(order[i], OrderClause.ASC); + orderProperties.add(oclause); + } + } + } + public void reset() { displayProperties = new ArrayList(); addProperties = new ArrayList();
Modified: xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/albatross/registerinline.vm
=================================================================== --- xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/albatross/registerinline.vm 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/albatross/registerinline.vm 2007-04-15 23:17:41 UTC (rev 2824) @@ -1,4 +1,4 @@ -#if($xwiki.getDocument("XWiki.Registration").isNew()) +#if(!$xwiki.hasAccessLevel("view","XWiki.Registration")||$xwiki.getDocument("XWiki.Registration").isNew())
<h1>$msg.get("Registration")</h1> #if(!$reg||$reg<0 ) <p>$msg.get("registerwelcome")</p> @@ -22,8 +22,7 @@ <div> <input type="hidden" name="template" value="XWiki.XWikiUserTemplate" /> <input type="hidden" name="register" value="1"> - #set( $class = $xwiki.getDocument("XWiki.XWikiUsers").xWikiClass) - #set( $serverclass = $xwiki.getDocument("XWiki.XWikiServerClass").xWikiClass) + #set( $class = $xwiki.getClass("XWiki.XWikiUsers")) #set( $obj = $class.newObject() ) #set( $serverobj = $class.newObject() ) #set( $ok = $doc.use("XWiki.XWikiUsers"))
Modified: xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/dodo/register.vm
=================================================================== --- xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/dodo/register.vm 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/dodo/register.vm 2007-04-15 23:17:41 UTC (rev 2824) @@ -1,78 +1 @@ -#set ($register = $request.getParameter("register")) -#if ($register) -Registration of *$request.getParameter("register_first_name") $request.getParameter("register_last_name")* - -#set( $reg= $xwiki.createUser(false)) -#if ($reg>0) -The user [$request.getParameter("xwikiname")] has been registered. -#else -An error occured during the registration. -#end -#else -#set($reg=0) -#end - -#if ($reg<=0) -Welcome to the registration form. This will allow you to edit pages, once the admin gives you appropriate rights - -1.1 Register - -<form id="register" name="register" action="" method="post"> -#includeTopic("xwiki:XWiki.RegisterJS") -<p> -<input type="hidden" name="template" value="XWiki.XWikiUserTemplate" /> -<input type="hidden" name="register" value="1"> -#set( $class = $xwiki.getDocument("XWiki.XWikiUsers").xWikiClass) -#set( $serverclass = $xwiki.getDocument("XWiki.XWikiServerClass").xWikiClass) -#set( $obj = $class.newObject() ) -#set( $serverobj = $class.newObject() ) -</p> -<table class="block" cellspacing="5px"> - <tbody> - <tr> -#set($prop = $class.first_name) - <td>First name - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> -#set($prop = $class.last_name) - <td>Last name - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - </tr> -<tr> -#set($prop = $class.email) - <td>e-Mail Address - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - </tr> -<tr> -</tr> -<td></td> - <tr> -#set($prop = $class.password) - <td>Password - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - <td>Password (again) - </td> - <td>$doc.displayEdit($prop, "register2_", $obj) - </td> - </tr> -<tr><td></td></tr> - <tr> - <td>Wiki username</td> - <td> - <input name="xwikiname" type="text" size="20" onfocus=" prepareName(document.forms.register);" /> - </td> - </tr> - </tbody> - </table> -<center> -<input type="submit" value="Register me"> -</center> -</form> -#end \ No newline at end of file +#template("registerinline.vm") \ No newline at end of file
Modified: xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/finch/register.vm
=================================================================== --- xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/finch/register.vm 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/skins/finch/register.vm 2007-04-15 23:17:41 UTC (rev 2824) @@ -1,78 +1 @@ -#set ($register = $request.getParameter("register")) -#if ($register) -Registration of *$request.getParameter("register_first_name") $request.getParameter("register_last_name")* - -#set( $reg= $xwiki.createUser(false)) -#if ($reg>0) -The user [$request.getParameter("xwikiname")] has been registered. -#else -An error occured during the registration. -#end -#else -#set($reg=0) -#end - -#if ($reg<=0) -Welcome to the registration form. This will allow you to edit pages, once the admin gives you appropriate rights - -1.1 Register - -<form id="register" name="register" action="" method="post"> -#includeTopic("xwiki:XWiki.RegisterJS") -<p> -<input type="hidden" name="template" value="XWiki.XWikiUserTemplate" /> -<input type="hidden" name="register" value="1"> -#set( $class = $xwiki.getDocument("XWiki.XWikiUsers").xWikiClass) -#set( $serverclass = $xwiki.getDocument("XWiki.XWikiServerClass").xWikiClass) -#set( $obj = $class.newObject() ) -#set( $serverobj = $class.newObject() ) -</p> -<table class="block" cellspacing="5px"> - <tbody> - <tr> -#set($prop = $class.first_name) - <td>First name - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> -#set($prop = $class.last_name) - <td>Last name - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - </tr> -<tr> -#set($prop = $class.email) - <td>e-Mail Address - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - </tr> -<tr> -</tr> -<td></td> - <tr> -#set($prop = $class.password) - <td>Password - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - <td>Password (again) - </td> - <td>$doc.displayEdit($prop, "register2_", $obj) - </td> - </tr> -<tr><td></td></tr> - <tr> - <td>Wiki username</td> - <td> - <input name="xwikiname" type="text" size="20" onfocus=" prepareName(document.forms.register);" /> - </td> - </tr> - </tbody> - </table> -<center> -<input type="submit" value="Register me"> -</center> -</form> -#end \ No newline at end of file +#template("registerinline.vm") \ No newline at end of file
Modified: xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/templates/registerinline.vm
=================================================================== --- xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/templates/registerinline.vm 2007-04-15 23:14:37 UTC (rev 2823) +++ xwiki/branches/XWIKI_1_0/web/standard/src/main/webapp/templates/registerinline.vm 2007-04-15 23:17:41 UTC (rev 2824) @@ -1,83 +1,62 @@ -<h1>$msg.get("Registration")</h1> -#if(!$reg||$reg<0 ) -$msg.get("registerwelcome") -<br /><br /> -#end -#if($reg<=0) -<span class="registrationerror" style="color: red"> -#if($reg==-2) -$msg.get("passwordmismatch") -#elseif($reg==-3) -$msg.get("useralreadyexists") +#if(!$xwiki.hasAccessLevel("view","XWiki.Registration")||$xwiki.getDocument("XWiki.Registration").isNew())
+ <h1>$msg.get("Registration")</h1> + #if(!$reg||$reg<0 ) + <p>$msg.get("registerwelcome")</p> + #end + #if($reg && $reg<=0) + #if($reg==-2) + #error("$msg.get('passwordmismatch').") + #elseif($reg==-3) + #error("$msg.get('useralreadyexists').") + #elseif($reg==-4) + #error("$msg.get('invalidusername').") + #else + #error("$msg.get('registerfailed') ($msg.get('registerfailedcode') $reg).") + #end + #elseif($reg) + #set($xwname = "XWiki.${request.xwikiname}") + #info("$xwiki.getUserName($xwname) ($request.xwikiname): $msg.get('registersuccessful').") + #end + #if(!$reg||$reg<0 ) + <form id="register" name="register" action="" action="" method="post"> + <div> + <input type="hidden" name="template" value="XWiki.XWikiUserTemplate" /> + <input type="hidden" name="register" value="1"> + #set( $class = $xwiki.getClass("XWiki.XWikiUsers")) + #set( $obj = $class.newObject() ) + #set( $serverobj = $class.newObject() ) + #set( $ok = $doc.use("XWiki.XWikiUsers")) + #if($request.register_first_name) + $doc.set("first_name", $request.register_first_name) + #end + #if($request.register_last_name) + $doc.set("last_name", $request.register_last_name) + #end + <dl> + #set($prop = $class.first_name) + <dt>$msg.get("firstname"):</dt> + <dd>$doc.displayEdit($prop, "register_", $obj)</dd> + + #set($prop = $class.last_name) + <dt>$msg.get("lastname"):</dt> + <dd>$doc.displayEdit($prop, "register_", $obj)</dd> + <dt>$msg.get("loginid"):</dt> + <dd><input name="xwikiname" type="text" size="20" onfocus=" prepareName(document.forms.register);" /></dd> + + #set($prop = $class.password) + <dt>$msg.get("password"):</dt> + <dd>$doc.displayEdit($prop, "register_", $obj)</dd> + <dt>$msg.get("passwordrepeat"):</dt> + <dd>$doc.displayEdit($prop, "register2_", $obj)</dd> + + #set($prop = $class.email) + <dt>$msg.get("email"):</dt> + <dd>$doc.displayEdit($prop, "register_", $obj)</dd> + </dl> + <span class="buttonwrapper"><input type="submit" value="$msg.get("iregister")"></span> + </div> + </form> + #end #else -$msg.get("registerfailed") ($msg.get("registerfailedcode) $reg) -#end -<br /><br /> -</span> -#elseif($reg) -$msg.get("registersuccessful") -#end -#if(!$reg||$reg<0 ) -<form id="register" name="register" action="" action="" method="post"> -<p> -<input type="hidden" name="template" value="XWiki.XWikiUserTemplate" /> -<input type="hidden" name="register" value="1"> -#set( $class = $xwiki.getDocument("XWiki.XWikiUsers").xWikiClass) -#set( $serverclass = $xwiki.getDocument("XWiki.XWikiServerClass").xWikiClass) -#set( $obj = $class.newObject() ) -#set( $serverobj = $class.newObject() ) -#set( $ok = $doc.use("XWiki.XWikiUsers")) -#if($request.register_first_name) -$doc.set("first_name", $request.register_first_name) -#end -#if($request.register_last_name) -$doc.set("last_name", $request.register_last_name) -#end -</p> -<table class="block" cellspacing="5px"> - <tbody> - <tr> -#set($prop = $class.first_name) - <td>$msg.get("firstname") - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> -#set($prop = $class.last_name) - <td>$msg.get("lastname") - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - </tr> -<tr> -#set($prop = $class.email) - <td>$msg.get("email") - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - </tr> -<tr> -</tr> -<td></td> - <tr> -#set($prop = $class.password) - <td>$msg.get("password") - </td> - <td>$doc.displayEdit($prop, "register_", $obj) - </td> - <td>$msg.get("passwordrepeat") - </td> - <td>$doc.displayEdit($prop, "register2_", $obj) - </td> - </tr> -<tr><td></td></tr> - <tr> - <td>$msg.get("loginid")</td> - <td> - <input name="xwikiname" type="text" size="20" onfocus=" prepareName(document.forms.register);" /> - </td> - </tr> - </tbody> - </table> -<input type="submit" value="$msg.get("iregister")"> -</form> + $xwiki.getDocument("XWiki.Registration").getTranslatedDocument().getRenderedContent()
#end \ No newline at end of file
-- You receive this message as a subscriber of the [email protected] mailing list. To unsubscribe: mailto:[email protected] For general help: mailto:[email protected]?subject=help ObjectWeb mailing lists service home page: http://www.objectweb.org/wws
-- Ludovic Dubost Blog: http://www.ludovic.org/blog/ XWiki: http://www.xwiki.com Skype: ldubost GTalk: ldubost AIM: nvludo Yahoo: ludovic