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
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?
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
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 xwiki-
 commits(a)objectweb.org mailing list.
 To unsubscribe: mailto:xwiki-commits-unsubscribe@objectweb.org
 For general help: mailto:sympa@objectweb.org?subject=help
 ObjectWeb mailing lists service home page: 
http://www.objectweb.org/
 wws