[opencms-dev] Multiple values to a single Property?
dinshaw gobhai
gobhai at gmail.com
Tue Oct 10 21:15:21 CEST 2006
Hi John, So my problem was that i was using the SelectWidge and not the
SelectMulti one.
Thanks for your time.
On 10/10/06, dinshaw gobhai <gobhai at gmail.com> wrote:
>
> Hello there,
> Thanks but I think you did have it right.
> I am trying to set the value (add property) to the value of the multi
> widget.
> I do the same thing as you but it is passted below.
> MY problem is that a JAVA developer here before me made this custom class
> and I just changed the sql to return my categories.
> I believe that for the multi values i cannot use an 'extention' of the
> SelectWidget but rather should be usiing the ComboBox as you are. But not
> being a JAVA guy and not having a day or two to spend figuring it out i was
> trying to get it to workwith the selectWidget.
> I changed the output to multiple="true" but that did not do the trick.
>
> Here is what i am using: wuold you mind showing me the ComboBox code you
> are using?
>
>
> package com.bhvr.opencms.widgets;
>
> import com.bhvr.db.DBUtil;
>
> import org.opencms.file.CmsObject;
> import org.opencms.widgets.A_CmsSelectWidget;
> import org.opencms.widgets.CmsSelectWidget;
> import org.opencms.widgets.CmsSelectWidgetOption;
> import org.opencms.widgets.I_CmsWidget;
> import org.opencms.widgets.I_CmsWidgetDialog;
> import org.opencms.widgets.I_CmsWidgetParameter;
>
> import java.util.Iterator;
> import java.util.List;
>
> /**
> * Provides a widget for a standard HTML form select box.<p>
> *
> * Please see the documentation of <code>{@link
> org.opencms.widgets.CmsSelectWidgetOption}</code> for a description
> * about the configuration String syntax for the select options.<p>
> *
> * The select widget does use the following select options:<ul>
> * <li><code>{@link org.opencms.widgets.CmsSelectWidgetOption#getValue()}</code>
> for the <code>value</code> of the HTML select box
> * <li><code>{@link org.opencms.widgets.CmsSelectWidgetOption#isDefault()}</code>
> for pre-selecting a specific value
> * <li><code>{@link org.opencms.widgets.CmsSelectWidgetOption#getOption()}</code> for the <code>option</code> of the HTML select box
> * </ul>
> * <p>
> *
> * @author Andreas Zahner
> *
> * @version $Revision: 1.11 $
> *
> * @since 6.0.0
> */
> public class CmsCategorySelectWidget extends A_CmsSelectWidget {
>
> /**
> * Creates a new select widget.<p>
> */
> public CmsCategorySelectWidget() {
>
> // empty constructor is required for class registration
> super();
> }
>
> /**
> * Creates a select widget with the select options specified in the
> given configuration List.<p>
> *
> * The list elements must be of type <code>{@link
> CmsSelectWidgetOption}</code>.<p>
> *
> * @param configuration the configuration (possible options) for the
> select widget
> *
> * @see CmsSelectWidgetOption
> */
> public CmsCategorySelectWidget(List configuration) {
>
> super(configuration);
> }
>
> /**
> * Creates a select widget with the specified select options.<p>
> *
> * @param configuration the configuration (possible options) for the
> select box
> */
> public CmsCategorySelectWidget(String configuration) {
>
> super(configuration);
> }
>
> /**
> * @see org.opencms.widgets.I_CmsWidget#getDialogWidget(
> org.opencms.file.CmsObject , org.opencms.widgets.I_CmsWidgetDialog,
> org.opencms.widgets.I_CmsWidgetParameter)
> */
> public String getDialogWidget(CmsObject cms, I_CmsWidgetDialog
> widgetDialog, I_CmsWidgetParameter param) {
>
> String id = param.getId();
> StringBuffer result = new StringBuffer(16);
>
> result.append("<td class=\"xmlTd\" style=\"height: 25px;\"><select
> multiple=\"true\" class=\"xmlInput");
> if (param.hasError()) {
> result.append(" xmlInputError");
> }
> result.append("\" name=\"");
> result.append(id);
> result.append ("\" id=\"");
> result.append(id);
> result.append("\">");
>
> // get select box options from default value String
> // List options = parseSelectOptions(cms, widgetDialog, param);
>
> DBUtil dbUtil = new DBUtil();
>
> javax.sql.rowset.CachedRowSet rs = dbUtil.getCachedData("java:/comp/env/jdbc/lt",
> "SELECT CONCAT( REPEAT('-', COUNT( parent.name) - 1), node.name) AS name,"
> +" node.cat_id AS cat_id"
> +" FROM categories AS node,"
> +" categories AS parent"
> +" WHERE node.lft BETWEEN parent.lft AND parent.rgt"
> +" GROUP BY node.cat_id"
> +" ORDER BY node.lft");
>
> List<CmsSelectWidgetOption> options = new java.util.ArrayList
> <CmsSelectWidgetOption>();
>
> try {
> while (rs.next()) {
> options.add(new CmsSelectWidgetOption(rs.getString("name"),
> false, rs.getString("name")));
> }
> } catch (Exception e) {
> System.err.println(e.getMessage());
> }
>
>
>
> String selected = getSelectedValue(cms, param);
> Iterator i = options.iterator();
> while (i.hasNext()) {
> CmsSelectWidgetOption option =
> (CmsSelectWidgetOption)i.next();
> // create the option
> result.append("<option value=\"");
> result.append(option.getValue());
> result.append("\"");
> if ((selected != null) && selected.equals(option.getValue()))
> {
> result.append(" selected=\"selected\"");
> }
> result.append(">");
> result.append(option.getOption());
> result.append("</option>");
> }
>
> result.append("</select>");
> result.append("</td>");
>
> return result.toString();
> }
>
> /**
> * @see org.opencms.widgets.I_CmsWidget#newInstance()
> */
> public I_CmsWidget newInstance() {
>
> return new CmsCategorySelectWidget(getConfiguration());
> }
> }
>
>
> On 10/7/06, Jonathan Woods < jonathan.woods at scintillance.com> wrote:
> >
> > Dinshaw -
> >
> > I'm sorry; I misunderstood your question, anyway. As far I can tell,
> > you want the value of multiple elements to map on to a single property,
> > whereas in my case I was merely setting an element's 'value' (and thereby a
> > mapped property) using values derived from a multi-select widget.
> >
> > Are you restricted to using a PHP application layer? If you used Java
> > executing in the OpenCms context, you'd have far more flexibility - e.g.
> > Java could process the XML document instance whenever it wanted, maybe
> > setting a property to help in later querying for category-matching
> > resources. I take a different approach at www.colfes.com: I index XML
> > docs in Lucene, and query the Lucene index at page rendering time (with some
> > caching) to select resources matching multiple categories.
> >
> > By the way, is the code to your CmsCategorySelectWidget something you
> > can share? I currently flatten a hierarchical value structure and represent
> > it in a simple SelectorWidget - ugly!
> >
> > Jon
> >
> > ------------------------------
> > *From:* opencms-dev-bounces at opencms.org [mailto:
> > opencms-dev-bounces at opencms.org] *On Behalf Of *dinshaw gobhai
> > *Sent:* 06 October 2006 17:56
> > *To:* The OpenCms mailing list
> > *Subject:* Re: [opencms-dev] Multiple values to a single Property?
> >
> > Hi Jon,
> > Thanks very much. I tried your sugestion and still my values are
> > overwritten.
> > My relevent schema lines are:
> >
> > <xsd:element name="Category" type="OpenCmsString" />
> > <layout element="Category" widget="CmsCategorySelectWidget" />
> > <mapping element="Category" mapto="property:category" />
> >
> > If you have a second to see if there is anything dumb in here (like I
> > shouldn't be using String) that would be great.
> > The CmsCategorySelectWidget uses a MySQL nested set modle category table
> > to return a tree stucture.
> > Thanks again,
> > -Dinshaw
> >
> >
> > On 10/6/06, Jonathan Woods <jonathan.woods at scintillance.com> wrote:
> > >
> > > Dinshaw -
> > >
> > > I use a SelectorWidget to render a multiple-select list in a couple of
> > > my XSDs, and I used to map the (multiple) value of this using an ordinary
> > > <mapping> element. OpenCms populated the property with the values selected,
> > > separating them with a comma (or was it a semicolon? can't recall).
> > >
> > > Jon
> > >
> > > ------------------------------
> > > *From:* opencms-dev-bounces at opencms.org [mailto:opencms-dev-bounces at opencms.org]
> > > *On Behalf Of *dinshaw gobhai
> > > *Sent:* 05 October 2006 18:48
> > > *To:* opencms-dev at opencms.org
> > > *Subject:* [opencms-dev] Multiple values to a single Property?
> > >
> > > Hi there,
> > > I am fairly new to OpenCMS and have found references to that fact that
> > > i can map multiple values to a single property however I can not find a
> > > guide as to how.
> > > If anyone could point me to a reference that would be great.
> > >
> > > The problem is that I have a category select list for a content type
> > > my_article.xsd that needs to occur multiple times so that it can appear on
> > > different category pages simultaneously.
> > >
> > > The catch is that the system I am working on has built a php
> > > application layer to get and parse the OpenCMS content and they sql query
> > > needs the property value to target the articles that should be included.
> > >
> > > Currently only the first instance of the Category select list is
> > > mapped to the category property.
> > >
> > > <mapping element="Category" mapto="property:category" />
> > >
> > > so what i was looking for (i think) was something like
> > > <mapping element="Category" mapto="property:category" multiple="true"
> > > />
> > >
> > > But i have been unable to find it.
> > >
> > > Any help would be greatly appreciated.
> > > Thanks,
> > > -Dinshaw, NYC
> > >
> > >
> > >
> > > _______________________________________________
> > > This mail is sent to you from the opencms-dev mailing list
> > > To change your list options, or to unsubscribe from the list, please
> > > visit
> > > http://lists.opencms.org/mailman/listinfo/opencms-dev
> > >
> > >
> >
> >
> > _______________________________________________
> > This mail is sent to you from the opencms-dev mailing list
> > To change your list options, or to unsubscribe from the list, please
> > visit
> > http://lists.opencms.org/mailman/listinfo/opencms-dev
> >
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://webmail.opencms.org/pipermail/opencms-dev/attachments/20061010/f7e445c0/attachment.htm>
More information about the opencms-dev
mailing list