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