customizesetaction.java
来自「jetspeed源代码」· Java 代码 · 共 1,280 行 · 第 1/4 页
JAVA
1,280 行
* using the HTML parameter "securityRef". If the parmeter is
* missing or 'blank', then the SecuriyReference is set to null.
*
*/
public void doSecurity(RunData rundata, Context context)
{
// we should first retrieve the portlet to customize and its parameters
// definition
PortletSet set = (PortletSet) ((JetspeedRunData) rundata).getCustomized();
try
{
String securityRefName = rundata.getParameters().getString("securityRef");
SecurityReference securityRef = null;
Profile profile = ((JetspeedRunData) rundata).getCustomizedProfile();
Portlets portlets = profile.getDocument().getPortletsById(set.getID());
if ((securityRefName != null) && (securityRefName.trim().length() > 0))
{
securityRef = new BaseSecurityReference();
securityRef.setParent(securityRefName);
}
set.getPortletConfig().setSecurityRef(securityRef);
portlets.setSecurityRef(securityRef);
}
catch (Exception e)
{
logger.error("Exception", e);
}
}
// Create a list of all available portlets
public static List buildPortletList(RunData data, PortletSet set, String mediaType, List allPortlets)
{
List list = new ArrayList();
Iterator i = Registry.get(Registry.PORTLET).listEntryNames();
while (i.hasNext())
{
PortletEntry entry = (PortletEntry) Registry.getEntry(Registry.PORTLET,
(String) i.next());
Iterator medias;
//Make a master portlet list, we will eventually us this to build a category list
allPortlets.add(entry);
// MODIFIED: Selection now takes care of the specified mediatype!
if (JetspeedSecurity.checkPermission((JetspeedUser) data.getUser(),
new PortalResource(entry),
JetspeedSecurity.PERMISSION_VIEW)
&& ((!entry.isHidden())
&& (!entry.getType().equals(PortletEntry.TYPE_ABSTRACT))
&& entry.hasMediaType(mediaType)))
{
list.add(entry);
}
}
String[] filterFields = (String[]) PortletSessionState.getAttribute(data, FILTER_FIELDS);
String[] filterValues = (String[]) PortletSessionState.getAttribute(data, FILTER_VALUES);
list = PortletFilter.filterPortlets(list, filterFields, filterValues);
Collections.sort(list,
new Comparator() {
public int compare(Object o1, Object o2)
{
String t1 = (((PortletEntry) o1).getTitle() != null)
? ((PortletEntry) o1).getTitle().toLowerCase()
: ((PortletEntry) o1).getName().toLowerCase();
String t2 = (((PortletEntry) o2).getTitle() != null)
? ((PortletEntry) o2).getTitle().toLowerCase()
: ((PortletEntry) o2).getName().toLowerCase();
return t1.compareTo(t2);
}
});
//this is used only by maintainUserSelection - which does not need the
//portlet list to be regenrated
PortletSessionState.setAttribute(data, PORTLET_LIST, list);
return list;
}
public static Map getUserSelections(RunData data)
{
Map userSelections = (Map) PortletSessionState.getAttribute(data, USER_SELECTIONS, null);
if (userSelections == null)
{
userSelections = new HashMap();
PortletSessionState.setAttribute(data, USER_SELECTIONS, userSelections);
}
return userSelections;
}
public static List buildInfoList(RunData data, String regName, String mediaType)
{
List list = new ArrayList();
String mime = ((JetspeedRunData) data).getCapability()
.getPreferredType()
.toString();
Iterator m = Registry.get(Registry.MEDIA_TYPE).listEntryNames();
// String mediaName = "html";
//
// while(m.hasNext())
// {
// MediaTypeEntry me = (MediaTypeEntry)
// Registry.getEntry(Registry.MEDIA_TYPE,(String)m.next());
//
// if (me!=null)
// {
// if (mime.equals(me.getMimeType()))
// {
// mediaName = me.getName();
// break;
// }
// }
// }
Iterator i = Registry.get(regName).listEntryNames();
while (i.hasNext())
{
PortletInfoEntry entry = (PortletInfoEntry) Registry.getEntry(regName,
(String) i.next());
// MODIFIED: Selection now takes care of the specified mediatype!
if (JetspeedSecurity.checkPermission((JetspeedUser) data.getUser(),
new PortalResource(entry),
JetspeedSecurity.PERMISSION_CUSTOMIZE)
&& ((!entry.isHidden())
&& entry.hasMediaType(mediaType)))
{
list.add(entry);
}
}
Collections.sort(list,
new Comparator() {
public int compare(Object o1, Object o2)
{
String t1 = (((RegistryEntry) o1).getTitle() != null)
? ((RegistryEntry) o1).getTitle()
: ((RegistryEntry) o1).getName();
String t2 = (((RegistryEntry) o2).getTitle() != null)
? ((RegistryEntry) o2).getTitle()
: ((RegistryEntry) o2).getName();
return t1.compareTo(t2);
}
});
return list;
}
public static List buildList(RunData data, String regName)
{
List list = new ArrayList();
Iterator i = Registry.get(regName).listEntryNames();
while (i.hasNext())
{
RegistryEntry entry = Registry.getEntry(regName, (String) i.next());
if (JetspeedSecurity.checkPermission((JetspeedUser) data.getUser(),
new PortalResource(entry),
JetspeedSecurity.PERMISSION_CUSTOMIZE)
&& (!entry.isHidden()))
{
list.add(entry);
}
}
Collections.sort(list,
new Comparator() {
public int compare(Object o1, Object o2)
{
String t1 = (((RegistryEntry) o1).getTitle() != null)
? ((RegistryEntry) o1).getTitle()
: ((RegistryEntry) o1).getName();
String t2 = (((RegistryEntry) o2).getTitle() != null)
? ((RegistryEntry) o2).getTitle()
: ((RegistryEntry) o2).getName();
return t1.compareTo(t2);
}
});
return list;
}
/**
* Builds a list of all portlet categories
* @param RunData current requests RunData object
* @param List portlets All available portlets
*/
public static List buildCategoryList(RunData data, String mediaType, List portlets)
{
boolean hideEmpties = JetspeedResources.getBoolean(HIDE_EMPTY_CATEGORIES, true);
TreeMap catMap = new TreeMap();
Iterator pItr = portlets.iterator();
while (pItr.hasNext())
{
PortletEntry entry = (PortletEntry) pItr.next();
if (hideEmpties)
{
if (JetspeedSecurity.checkPermission((JetspeedUser) data.getUser(),
new PortalResource(entry),
JetspeedSecurity.PERMISSION_VIEW)
&& ((!entry.isHidden())
&& (!entry.getType().equals(PortletEntry.TYPE_ABSTRACT))
&& entry.hasMediaType(mediaType)))
{
Iterator cItr = entry.listCategories();
while (cItr.hasNext())
{
BaseCategory cat = (BaseCategory) cItr.next();
catMap.put(cat.getName(), cat);
}
}
}
else
{
Iterator cItr = entry.listCategories();
while (cItr.hasNext())
{
BaseCategory cat = (BaseCategory) cItr.next();
catMap.put(cat.getName(), cat);
}
}
}
//BaseCategory allCat = new BaseCategory();
// allCat.setName("All Portlets");
// catMap.put(allCat.getName(), allCat);
return new ArrayList(catMap.values());
}
/**
* Adds a filter over the available portlets list based on category
*/
public void doFiltercategory(RunData rundata, Context context) throws Exception
{
String filterCat = rundata.getParameters().getString("filter_category", "All Portlets");
PortletSessionState.setAttribute(rundata, "filter_category", filterCat);
maintainUserSelections(rundata);
String mtype = rundata.getParameters().getString("mtype", null);
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = null;
if (mtype == null)
{
duri = link.setTemplate("Customize").addQueryData("start", "0");
}
else
{
duri = link.setTemplate("Customize").addQueryData("start", "0").addQueryData("mtype", mtype);
}
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
return;
}
/**
* Adds a filter over the available portlets list based on category
*/
public void doFilter(RunData rundata, Context context) throws Exception
{
String[] filterFields = rundata.getParameters().getStrings("filter_field");
String[] filterValues = new String[filterFields.length];
for(int i=0; i<filterFields.length; i++)
{
String filterField = filterFields[i];
if(filterField != null)
{
String filterValue = rundata.getParameters().getString(filterField + ":filter_value");
filterValues[i] = filterValue;
}
}
PortletSessionState.setAttribute(rundata, FILTER_FIELDS, filterFields);
PortletSessionState.setAttribute(rundata, FILTER_VALUES, filterValues);
maintainUserSelections(rundata);
String mtype = rundata.getParameters().getString("mtype", null);
JetspeedLink link = JetspeedLinkFactory.getInstance(rundata);
DynamicURI duri = null;
if (mtype == null)
{
duri = link.setTemplate("Customize").addQueryData("start", "0");
}
else
{
duri = link.setTemplate("Customize").addQueryData("start", "0").addQueryData("mtype", mtype);
}
JetspeedLinkFactory.putInstance(link);
rundata.setRedirectURI(duri.toString());
return;
}
private void addFiltersToContext(RunData data, Context context)
{
String[] filterFields = (String[]) PortletSessionState.getAttribute(data, FILTER_FIELDS);
String[] filterValues = (String[]) PortletSessionState.getAttribute(data, FILTER_VALUES);
if(filterFields != null && filterValues != null && filterFields.length == filterValues.length)
{
for(int i=0; i<filterFields.length; i++)
{
String field = filterFields[i];
String value = filterValues[i];
context.put(field + "_filter_value", value);
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?