The ItemSearchWidget failed to work (selecting an item did not work) if the title of the item contains quotes (Ticket #1605).
git-svn-id: https://svn.libreccm.org/ccm/trunk@2108 8810af33-2d31-482b-a856-94f89814c4dfmaster
parent
5b4584a020
commit
ca7cc4db35
|
|
@ -228,7 +228,7 @@ class ItemSearchCreateItemPane extends CMSContainer
|
|||
widget,
|
||||
item.getID().toString(),
|
||||
searchWidget,
|
||||
title,
|
||||
title.replace("\"", "\\\""),
|
||||
publishWidget,
|
||||
Boolean.TRUE.toString(),
|
||||
scriptAction));
|
||||
|
|
|
|||
|
|
@ -320,7 +320,7 @@ public class ItemSearchFlatBrowsePane extends Form implements FormInitListener,
|
|||
widget,
|
||||
key.toString(),
|
||||
searchWidget,
|
||||
page.getTitle()));
|
||||
page.getTitle().replace("\"", "\\\"")));
|
||||
|
||||
return link;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -119,12 +119,12 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
p.addComponentStateParam(this, m_currentFolder.getStateParameter());
|
||||
|
||||
p.addActionListener(new ActionListener() {
|
||||
|
||||
public void actionPerformed(ActionEvent event) {
|
||||
// MP: This action listener should only be called when the
|
||||
// folder browser is visible.
|
||||
showHideFolderActions(event.getPageState());
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
@ -146,7 +146,6 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
extends AbstractTableModelBuilder implements PaginationModelBuilder {
|
||||
|
||||
private RequestLocal m_size = new RequestLocal() {
|
||||
|
||||
@Override
|
||||
protected Object initialValue(PageState state) {
|
||||
Folder.ItemCollection itemColl = getItemCollection(state);
|
||||
|
|
@ -156,9 +155,9 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
}
|
||||
return new Integer((int) itemColl.size());
|
||||
}
|
||||
|
||||
};
|
||||
private RequestLocal m_itemColl = new RequestLocal() {
|
||||
|
||||
@Override
|
||||
protected Object initialValue(PageState state) {
|
||||
Folder.ItemCollection itemColl = getItemCollection(state);
|
||||
|
|
@ -169,6 +168,7 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
|
||||
return itemColl;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
public TableModel makeModel(Table t, PageState s) {
|
||||
|
|
@ -228,24 +228,24 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
*/
|
||||
createSiblingFilter(or, ff, singleTypeID);
|
||||
/*try {
|
||||
ContentType ct = new ContentType(singleTypeID);
|
||||
ContentType ct = new ContentType(singleTypeID);
|
||||
|
||||
StringTokenizer strTok = new StringTokenizer(ct.
|
||||
getDescendants(), "/");
|
||||
while (strTok.hasMoreElements()) {
|
||||
or.addFilter(ff.equals(ContentItem.CONTENT_TYPE + "."
|
||||
+ ContentType.ID,
|
||||
(String) strTok.nextElement()));
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// WTF? The selected content type does not exist in the table???
|
||||
s_log.error(String.format(
|
||||
"Something is very wrong here, the ContentType '%s' "
|
||||
+ "seems not to exist. Ignoring for now, but please "
|
||||
+ "make your checks.",
|
||||
singleTypeID.toString()),
|
||||
ex);
|
||||
}*/
|
||||
StringTokenizer strTok = new StringTokenizer(ct.
|
||||
getDescendants(), "/");
|
||||
while (strTok.hasMoreElements()) {
|
||||
or.addFilter(ff.equals(ContentItem.CONTENT_TYPE + "."
|
||||
+ ContentType.ID,
|
||||
(String) strTok.nextElement()));
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
// WTF? The selected content type does not exist in the table???
|
||||
s_log.error(String.format(
|
||||
"Something is very wrong here, the ContentType '%s' "
|
||||
+ "seems not to exist. Ignoring for now, but please "
|
||||
+ "make your checks.",
|
||||
singleTypeID.toString()),
|
||||
ex);
|
||||
}*/
|
||||
|
||||
itemColl.addFilter(or);
|
||||
|
||||
|
|
@ -309,6 +309,7 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
&& (size
|
||||
> ContentSection.getConfig().getFolderBrowseListSize());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -354,12 +355,9 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
ItemSearchPopup.URL_PARAM)));
|
||||
|
||||
String fillString = useURL
|
||||
? ItemSearchPopup.getItemURL(state.
|
||||
getRequest(),
|
||||
coll.
|
||||
getDomainObject().getOID())
|
||||
: id
|
||||
+ " (" + name + ")";
|
||||
? ItemSearchPopup.getItemURL(
|
||||
state.getRequest(),
|
||||
coll.getDomainObject().getOID()) : id + " (" + name + ")";
|
||||
String title = ((ContentPage) coll.getDomainObject()).getTitle();
|
||||
|
||||
Label js = new Label(generateJSLabel(id, widget, searchWidget, fillString, title),
|
||||
|
|
@ -382,10 +380,11 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
private String generateJSLabel(BigDecimal id, String widget, String searchWidget, String fill, String title) {
|
||||
StringBuilder buffer = new StringBuilder();
|
||||
buffer.append(" <script language=javascript> ");
|
||||
buffer.append( " <!-- \n");
|
||||
buffer.append(" function fillItem").append(id).append("() { \n");
|
||||
buffer.append(" window.opener.document.").append(widget).append(".value=\"").append(fill).append("\";\n");
|
||||
buffer.append(" window.opener.document.").append(searchWidget).append(".value=\"").append(title).append("\";\n");
|
||||
buffer.append(" <!-- \n");
|
||||
buffer.append(" function fillItem").append(id).append("() { \n");
|
||||
buffer.append(" window.opener.document.").append(widget).append(".value=\"").append(fill).append("\";\n");
|
||||
buffer.append(" window.opener.document.").append(searchWidget).append(".value=\"").append(title.
|
||||
replace("\"", "\\\"")).append("\";\n");
|
||||
// set protocol to 'other' in FCKEditor, else relative url prepended by http://
|
||||
if (Bebop.getConfig().getDHTMLEditor().equals(
|
||||
BebopConstants.BEBOP_FCKEDITOR)) {
|
||||
|
|
@ -404,6 +403,7 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
|
||||
return buffer.toString();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -448,6 +448,7 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
return (m_itemColl.isFolder()) ? m_itemColl.getID().negate()
|
||||
: m_itemColl.getID();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private class FolderChanger extends TableActionAdapter {
|
||||
|
|
@ -467,6 +468,7 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
m_paginator.reset(s);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -478,4 +480,5 @@ public class ItemSearchFolderBrowser extends Table {
|
|||
private static GlobalizedMessage globalize(String key) {
|
||||
return FolderManipulator.globalize(key);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -112,17 +112,14 @@ public class ItemSearchPopup extends ItemSearch {
|
|||
|
||||
element.addAttribute("class", "jsButton");
|
||||
|
||||
String widget = (String) state.getValue(
|
||||
new StringParameter(WIDGET_PARAM));
|
||||
String widget = (String) state.getValue(new StringParameter(WIDGET_PARAM));
|
||||
String searchWidget = (String) state.getValue(new StringParameter("searchWidget"));
|
||||
|
||||
boolean useURL = "true".equals(
|
||||
state.getValue(new StringParameter(URL_PARAM)));
|
||||
boolean useURL = "true".equals(state.getValue(new StringParameter(URL_PARAM)));
|
||||
|
||||
String fillString = useURL
|
||||
? getItemURL(state.getRequest(), doc.getOID())
|
||||
: doc.getOID().get("id").toString()
|
||||
+ " (" + doc.getTitle() + ")";
|
||||
: doc.getOID().get("id").toString();
|
||||
String title = doc.getTitle();
|
||||
|
||||
Element jsLabel = Search.newElement("jsAction");
|
||||
|
|
@ -140,7 +137,7 @@ public class ItemSearchPopup extends ItemSearch {
|
|||
+ " <!-- \n"
|
||||
+ " function fillItem" + id + "() { \n"
|
||||
+ " window.opener.document." + widget + ".value=\"" + fill + "\";\n"
|
||||
+ " window.opener.document." + searchWidget + ".value=\"" + title + "\";\n"
|
||||
+ " window.opener.document." + searchWidget + ".value=\"" + title.replace("\"", "\\\"") + "\";\n"
|
||||
+ " self.close(); \n"
|
||||
+ " return false; \n"
|
||||
+ " } \n"
|
||||
|
|
|
|||
Loading…
Reference in New Issue