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,
item.getID().toString(),
searchWidget,
title,
title.replace("\"", "\\\""),
publishWidget,
Boolean.TRUE.toString(),
scriptAction));

View File

@ -320,7 +320,7 @@ public class ItemSearchFlatBrowsePane extends Form implements FormInitListener,
widget,
key.toString(),
searchWidget,
page.getTitle()));
page.getTitle().replace("\"", "\\\"")));
return link;
}

View File

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

View File

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