diff --git a/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl b/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl
index 6f5a0660d..d43ed60f3 100755
--- a/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl
+++ b/ccm-cms-assets-relatedlink/pdl/com/arsdigita/contentassets/RelatedLink.pdl
@@ -48,7 +48,8 @@ data operation swapRelatedLinkWithNextInGroup {
and 2 = (select count(*) from cms_links l, cms_related_links r
where l.link_id=r.related_link_id
and (link_order = :linkOrder or link_order = :nextLinkOrder)
- and owner_id = :ownerID)
+ and owner_id = :ownerID
+ and r.link_list_name = :linkListName)
}
}
diff --git a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java
index 2c5cad99d..b6f465e96 100755
--- a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java
+++ b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/RelatedLink.java
@@ -215,18 +215,22 @@ public class RelatedLink extends Link {
* Swaps this RelatedLink with the next one,
* according to the linkOrder
*/
+ @Override
public void swapWithNext() {
swapWithNext("com.arsdigita.cms.contentassets.allRelatedLinkOrderForItem",
- "com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup");
+ "com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup",
+ this.getLinkListName());
}
/**
* Swaps this RelatedLink with the previous one,
* according to the linkOrder
*/
+ @Override
public void swapWithPrevious() {
swapWithPrevious("com.arsdigita.cms.contentassets.allRelatedLinkOrderForItem",
- "com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup");
+ "com.arsdigita.cms.contentassets.swapRelatedLinkWithNextInGroup",
+ this.getLinkListName());
}
/**
@@ -239,6 +243,7 @@ public class RelatedLink extends Link {
* @param queryName name of the DataQuery to use
* @return the DataQuery
*/
+ @Override
protected DataQuery getSwapQuery(String queryName) {
DataQuery query = super.getSwapQuery(queryName);
query.setParameter("ownerID", getLinkOwner().getID());
@@ -255,6 +260,7 @@ public class RelatedLink extends Link {
*
* @return the DataOperation used to swap the sort keys.
*/
+ @Override
protected DataOperation getSwapOperation(String operationName) {
DataOperation operation = super.getSwapOperation(operationName);
operation.setParameter("ownerID", getLinkOwner().getID());
@@ -270,6 +276,7 @@ public class RelatedLink extends Link {
* null. This implementation sorts all RelatedLinks owned by this
* RelatedLink's "linkOwner" by title.
*/
+ @Override
protected void alphabetize() {
Session session = SessionManager.getSession();
DataCollection links = session.retrieve(BASE_DATA_OBJECT_TYPE);
@@ -314,6 +321,7 @@ public class RelatedLink extends Link {
}
+ @Override
public void beforeSave() {
super.beforeSave();
if (getOrder() == null) {
diff --git a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertiesStep.java b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertiesStep.java
index 2546ec287..5ddb05da4 100755
--- a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertiesStep.java
+++ b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertiesStep.java
@@ -29,7 +29,7 @@ import com.arsdigita.cms.contenttypes.ui.LinkTable;
*/
public class RelatedLinkPropertiesStep extends LinkPropertiesStep {
- protected String m_linkListName = "";
+ protected static String s_linkListName = "genericLink";
protected ContentType m_contentType = null;
/**
@@ -68,9 +68,9 @@ public class RelatedLinkPropertiesStep extends LinkPropertiesStep {
LinkTable table;
if (ContentSection.getConfig().isHideAdditionalResourceFields()) {
table = new LinkTable(getItemSelectionModel(), getLinkSelectionModel());
- table.setModelBuilder(new RelatedLinkTableModelBuilder(getItemSelectionModel(), m_linkListName));
+ table.setModelBuilder(new RelatedLinkTableModelBuilder(getItemSelectionModel(), s_linkListName));
} else {
- table = new RelatedLinkTable(getItemSelectionModel(), getLinkSelectionModel(), m_linkListName);
+ table = new RelatedLinkTable(getItemSelectionModel(), getLinkSelectionModel(), s_linkListName);
}
container.add(table);
@@ -86,7 +86,7 @@ public class RelatedLinkPropertiesStep extends LinkPropertiesStep {
protected FormSection getEditSheet() {
return new RelatedLinkPropertyForm(getItemSelectionModel(),
getLinkSelectionModel(),
- m_linkListName,
+ s_linkListName,
m_contentType);
}
}
diff --git a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertyForm.java b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertyForm.java
index 53672c017..603f854c7 100755
--- a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertyForm.java
+++ b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkPropertyForm.java
@@ -50,7 +50,7 @@ import com.arsdigita.util.Assert;
public class RelatedLinkPropertyForm extends LinkPropertyForm {
private static boolean isHideAdditionalResourceFields = ContentSection.getConfig().isHideAdditionalResourceFields();
- private String m_linkListName = "";
+ private String m_linkListName;
/**
* Creates a new form to edit the RelatedLink object specified
@@ -186,7 +186,7 @@ public class RelatedLinkPropertyForm extends LinkPropertyForm {
MimeType mType = MimeType.loadMimeType(typeName);
rl.setResourceType(mType);
}
- rl.setLinkListName(data.getString(RelatedLink.LINK_LIST_NAME));
+ rl.setLinkListName((String) data.get(RelatedLink.LINK_LIST_NAME));
super.setLinkProperties(link, fse);
}
}
diff --git a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkTableModelBuilder.java b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkTableModelBuilder.java
index 23debfce4..51a759404 100755
--- a/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkTableModelBuilder.java
+++ b/ccm-cms-assets-relatedlink/src/com/arsdigita/cms/contentassets/ui/RelatedLinkTableModelBuilder.java
@@ -36,7 +36,7 @@ public class RelatedLinkTableModelBuilder extends LinkTableModelBuilder {
Logger.getLogger(RelatedLinkTableModelBuilder.class);
private ItemSelectionModel m_itemModel;
- private String m_linkListName = "";
+ private String m_linkListName;
/**
* Constructor. Creates a LinkTableModelBuilder given an
@@ -58,6 +58,7 @@ public class RelatedLinkTableModelBuilder extends LinkTableModelBuilder {
* @param s The PageState for the current request
* @return The DataCollection of RelatedLinks
*/
+ @Override
public DataCollection getLinks(PageState s) {
Assert.isTrue(m_itemModel.isSelected(s), "item selected");
ContentItem item = m_itemModel.getSelectedItem(s);
diff --git a/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java b/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java
index d7282bc05..869cf0e02 100755
--- a/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java
+++ b/ccm-cms/src/com/arsdigita/cms/contenttypes/Link.java
@@ -74,7 +74,7 @@ public class Link extends ACSObject {
public static final String ORDER = "linkOrder";
/** Data object type for this domain object */
public static final String BASE_DATA_OBJECT_TYPE =
- "com.arsdigita.cms.contenttypes.Link";
+ "com.arsdigita.cms.contenttypes.Link";
/**
* Default constructor. This creates a new Link.
@@ -166,7 +166,7 @@ public class Link extends ACSObject {
*/
public void setTargetType(String type) {
Assert.isTrue(type != null && (type.equals(EXTERNAL_LINK) || type.equals(
- INTERNAL_LINK)));
+ INTERNAL_LINK)));
set(TARGET_TYPE, type);
}
@@ -196,7 +196,7 @@ public class Link extends ACSObject {
public ContentItem getTargetItem() {
DataObject object = (DataObject) get(TARGET_ITEM);
ACSObject acsObject =
- (ACSObject) DomainObjectFactory.newInstance(object);
+ (ACSObject) DomainObjectFactory.newInstance(object);
// Quasimodo: BEGIN
// This is part of the patch to make RelatedLink (and Link) multilanguage compatible
@@ -207,8 +207,7 @@ public class Link extends ACSObject {
// If acsObject is instance of ContentBundle
if (acsObject instanceof ContentBundle) {
// get the negotiated language version of this ContentBundle
- ci = ((ContentBundle) acsObject).negotiate(DispatcherHelper.
- getRequest().getLocales());
+ ci = ((ContentBundle) acsObject).negotiate(DispatcherHelper.getRequest().getLocales());
} else {
// else there are no language versions so just use the acsObject
ci = (ContentItem) acsObject;
@@ -307,7 +306,7 @@ public class Link extends ACSObject {
if (item == null) {
s_log.error(getOID()
- + " is internal link, but has null target item");
+ + " is internal link, but has null target item");
return "";
}
@@ -334,7 +333,7 @@ public class Link extends ACSObject {
String.format(
"Internal link with parameters found. Generated URL is: %s",
URL.there(state.getRequest(), url,
- parameters).
+ parameters).
toString()));
return URL.there(state.getRequest(), url, parameters).
toString();
@@ -357,8 +356,8 @@ public class Link extends ACSObject {
Session session = SessionManager.getSession();
DataCollection links = session.retrieve(BASE_DATA_OBJECT_TYPE);
Filter filter =
- links.addInSubqueryFilter("id",
- "com.arsdigita.cms.contenttypes.getReferringLinks");
+ links.addInSubqueryFilter("id",
+ "com.arsdigita.cms.contenttypes.getReferringLinks");
filter.set("itemID", item.getID());
return links;
@@ -398,7 +397,11 @@ public class Link extends ACSObject {
* @param operationName name of the DataOperation to use
*/
public void swapWithNext(String queryName, String operationName) {
- swapKeys(true, queryName, operationName);
+ swapKeys(true, queryName, operationName, "");
+ }
+
+ public void swapWithNext(String queryName, String operationName, String linkListName) {
+ swapKeys(true, queryName, operationName, linkListName);
}
/**
@@ -411,8 +414,11 @@ public class Link extends ACSObject {
* @param operationName name of the DataOperation to use
*/
public void swapWithPrevious(String queryName, String operationName) {
- swapKeys(false, queryName, operationName);
+ swapKeys(false, queryName, operationName, "");
+ }
+ public void swapWithPrevious(String queryName, String operationName, String linkListName) {
+ swapKeys(false, queryName, operationName, linkListName);
}
/**
@@ -451,7 +457,12 @@ public class Link extends ACSObject {
* @param queryName This is used to find the key with which to swap
*/
protected void swapKeys(boolean swapNext, String queryName,
- String operationName) {
+ String operationName) {
+ this.swapKeys(swapNext, queryName, operationName, "");
+ }
+
+ protected void swapKeys(boolean swapNext, String queryName,
+ String operationName, String linkListName) {
String methodName = null;
if (swapNext) {
@@ -461,7 +472,7 @@ public class Link extends ACSObject {
}
Assert.isTrue(!isNew(), methodName + " cannot be called on an "
- + "object that is new");
+ + "object that is new");
Integer currentKey = (Integer) get(ORDER);
// if the current item is not already ordered, alphabetize
@@ -472,12 +483,13 @@ public class Link extends ACSObject {
return;
}
Assert.isTrue(currentKey != null, methodName + " cannot be "
- + "called on an object that is not currently in the "
- + "list");
+ + "called on an object that is not currently in the "
+ + "list");
int key = currentKey.intValue();
DataQuery query = getSwapQuery(queryName);
+ query.setParameter("linkListName", (String) linkListName);
int otherKey = key;
@@ -485,13 +497,13 @@ public class Link extends ACSObject {
otherKey = key + 1;
query.addOrder("linkOrder ASC");
query.addFilter(query.getFilterFactory().greaterThan("linkOrder",
- currentKey,
- true));
+ currentKey,
+ true));
} else {
otherKey = key - 1;
query.addOrder("linkOrder DESC");
query.addFilter(query.getFilterFactory().lessThan("linkOrder",
- currentKey, true));
+ currentKey, true));
}
if (query.next()) {
@@ -502,6 +514,7 @@ public class Link extends ACSObject {
DataOperation operation = getSwapOperation(operationName);
operation.setParameter("linkOrder", new Integer(key));
operation.setParameter("nextLinkOrder", new Integer(otherKey));
+ operation.setParameter("linkListName", linkListName);
operation.execute();
}