001: package org.jasig.portal.layout.dlm;
002:
003: import org.jasig.portal.UserProfile;
004: import org.jasig.portal.security.IPerson;
005: import org.w3c.dom.Document;
006:
007: /**
008: * Implementations define how localized versions of labels for layout folders
009: * are handled. This allows different policies to be used depending on the
010: * specific structure being used. At some point if multiple profiles are
011: * supported this would have to be augmented to pass that information as well
012: * or provide a mechanism to obtain a structure specific implementation of this
013: * interface.
014: *
015: * @author Mark Boyd
016: *
017: */
018: public interface IFolderLabelPolicy {
019: /**
020: * Scans the passed in layout and purges all labels that appear in the
021: * configuration system for folders in this layout. This will typically be
022: * called as part of removing a user or resetting their layout.
023: *
024: * @param userId
025: * @param isFragmentOwner
026: * @param layout
027: */
028: public void purgeFolderLabels(int userId, boolean isFragmentOwner);
029:
030: /**
031: * Scans the passed in layout and coordinates the labels that
032: * appear in the configuration system according to the needs of the specific
033: * structure and theme being used. For example, for tab/column structure
034: * only visible, regular folders of the root folder map to tabs and need
035: * have localized names. No other folder name appears in the UI. This
036: * method is called when a user's or fragment layout is loaded.
037: *
038: * @param userId
039: * @param layout
040: */
041: public void coordinateFolderLabels(int userId,
042: boolean isFramentOwner, Document layout);
043:
044: /**
045: * Handles removal of locale specific labels for a node during a delete
046: * operation.
047: *
048: * @param nodeLayoutId the ILF nodeId
049: * @param nodePlfId the ILF dlm:plfId attribute of the node if applicable
050: * @param userId the user's uPortal integer id
051: * @param isFragmentOwner indicates if they are a fragment owner or not
052: */
053: public void deleteNodeLabel(String nodeLayoutId, String nodePlfId,
054: boolean applyToAll, int userId, boolean isFragmentOwner);
055:
056: /**
057: * Handles adding locale specific labels for a newly added node. This
058: * should not be called for an existing node. Use updateNodeLabel() for an
059: * existing node.
060: *
061: * @param nodeId the ILF nodeId
062: * @param parentId the node id of the parent
063: * @param layout the DOM layout of the user
064: * @param userId the user's uPortal integer id
065: * @param isFragmentOwner indicates if they are a fragment owner or not
066: * @param value the value for the label
067: */
068: public void addNodeLabel(String nodeId, String parentId,
069: Document layout, int userId, boolean isFragmentOwner,
070: String value);
071:
072: /**
073: * Handles updating locale specific labels for a node during a node update.
074: * Should only be called if the node is owned by the user or if it is owned
075: * by a fragment and the editAllowed attribute is nonexitent or has a value
076: * of true. In either case the plfId, the id used to persist that node in
077: * the DB is used. For user owned nodes this is the same as the ilf id.
078: *
079: * @param plfId the id of the node in the PLF
080: * @param userId the user's uPortal integer id
081: * @param isFragmentOwner indicates if they are a fragment owner or not
082: * @param value the value for the label
083: */
084: public void updateNodeLabel(String plfId, int userId,
085: boolean isFragmentOwner, String value);
086:
087: /**
088: * Handles retrieval of locale specific labels for a node including handling
089: * overrides of fragment node labels if applicable.
090: *
091: * @param nodeLayoutId the ILF nodeId
092: * @param nodePlfId the ILF dlm:plfId attribute of the node if applicable
093: * @param editAllowed the ILF dlm:editAllowed attribute of the node if applicable
094: * @param userId the user's uPortal integer id
095: * @param isFragmentOwner indicates if they are a fragment owner or not
096: * @param value the default value to use if one is not found
097: */
098: public String getNodeLabel(String nodeLayoutId, String nodePlfId,
099: boolean editAllowed, int userId, boolean isFragmentOwner,
100: String value);
101: }
|