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-94f89814c4df
master
jensp 2013-04-02 05:29:13 +00:00
parent 5b4584a020
commit ca7cc4db35
4 changed files with 39 additions and 39 deletions

View File

@ -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));

View File

@ -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;
} }

View File

@ -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);
} }
} }

View File

@ -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"