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 + -
显示快捷键?