diff --git a/ccm-cms/src/com/arsdigita/cms/ContentItem.java b/ccm-cms/src/com/arsdigita/cms/ContentItem.java index 8caf879b4..80f8c7423 100755 --- a/ccm-cms/src/com/arsdigita/cms/ContentItem.java +++ b/ccm-cms/src/com/arsdigita/cms/ContentItem.java @@ -1061,9 +1061,9 @@ public class ContentItem extends VersionedACSObject implements CustomCopy { } /** - * Returns true if this item has a publicly viewable version. This item is - * not necessarily the live version nor is this method to be confused with - * isPublished. + * Returns true if this language version of this item has a publicly viewable + * version. This item is not necessarily the live version nor is this + * method to be confused with isPublished. * * @return < code>true if this content item has a live * version, or if it is the live version @@ -1072,6 +1072,19 @@ public class ContentItem extends VersionedACSObject implements CustomCopy { return getLiveVersion() != null; } + // Added by: Quasimodo + /** + * Returns true if this item has a publicly viewable version in any language. + * This item is not necessarily the live version nor is this method + * to be confused with isPublished. + * + * @return < code>true if this content bundle item has a live + * version + */ + public boolean hasLiveInstance() { + return getBundle().getLiveVersion() != null; + } + /** * Makes an item live or not live. * diff --git a/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java b/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java index 12e82d319..1b9847713 100755 --- a/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java +++ b/ccm-cms/src/com/arsdigita/cms/ui/folder/FolderBrowser.java @@ -70,6 +70,7 @@ import javax.servlet.ServletException; * item selection model is updated. * * @author David Lutterkort + * @author Sören Bernstein * @version $Id: FolderBrowser.java 2017 2009-10-04 09:03:45Z pboy $ */ public class FolderBrowser extends Table { @@ -506,7 +507,7 @@ public class FolderBrowser extends Table { /** * Added by: Sören Bernstein - * + * * Produce links to view an item in a specific language and show all * existing language version and the live status in the folder browser. */ @@ -577,12 +578,12 @@ public class FolderBrowser extends Table { } else { ItemResolver resolver = section.getItemResolver(); container.add( - new Link(langLabel, - resolver.generateItemURL(state, - ci.getID(), - name, - section, - coll.getVersion()))); + new Link(langLabel, + resolver.generateItemURL(state, + ci.getID(), + name, + section, + coll.getVersion()))); } if (languages.hasNext()) { container.add(new Label(" ", false)); @@ -785,35 +786,37 @@ public class FolderBrowser extends Table { s_log.debug("Checking to see if " + this + " is deletable"); } - if (m_itemColl.isLive()) { - if (s_log.isDebugEnabled()) { - s_log.debug("The item is live; it cannot be deleted"); - } - - return false; - } - if (m_itemColl.isFolder()) { + if (!m_itemColl.hasChildren()) { if (s_log.isDebugEnabled()) { - s_log.debug("The item is an empty folder; it may be " - + "deleted"); + s_log.debug("The item is an empty folder; it may be deleted"); } return true; + } else { + if (s_log.isDebugEnabled()) { - s_log.debug("The folder is not empty; it cannot be " - + "deleted"); + s_log.debug("The folder is not empty; it cannot be deleted"); + } + return false; + + } + } else { + + if (m_itemColl.getContentItem().hasLiveInstance()) { + + if (s_log.isDebugEnabled()) { + s_log.debug("This item has a live instance; it cannot be deleted"); } return false; } - } else { - if (s_log.isDebugEnabled()) { - s_log.debug("The item is not a folder; it may be deleted"); - } - - return true; } + + if (s_log.isDebugEnabled()) { + s_log.debug("The item is not a folder and doesn't have a live instance; it may be deleted"); + } + return true; } public Object getKeyAt(int columnIndex) {