1 31 32 package org.opencms.workplace.commons; 33 34 import org.opencms.file.CmsObject; 35 import org.opencms.file.CmsResource; 36 import org.opencms.file.CmsResourceFilter; 37 import org.opencms.file.types.CmsResourceTypePlain; 38 import org.opencms.jsp.CmsJspActionElement; 39 import org.opencms.loader.CmsLoaderException; 40 import org.opencms.main.CmsException; 41 import org.opencms.main.CmsLog; 42 import org.opencms.main.OpenCms; 43 import org.opencms.security.CmsPermissionSet; 44 import org.opencms.workplace.CmsDialog; 45 import org.opencms.workplace.CmsWorkplaceSettings; 46 import org.opencms.workplace.explorer.CmsExplorerTypeSettings; 47 48 import java.util.List ; 49 50 import javax.servlet.http.HttpServletRequest ; 51 import javax.servlet.http.HttpServletResponse ; 52 import javax.servlet.jsp.JspException ; 53 import javax.servlet.jsp.PageContext ; 54 55 import org.apache.commons.logging.Log; 56 57 72 public class CmsChtype extends CmsDialog { 73 74 75 public static final String DIALOG_TYPE = "chtype"; 76 77 78 public static final String PARAM_NEWRESOURCETYPE = "newresourcetype"; 79 80 81 private static final Log LOG = CmsLog.getLog(CmsChtype.class); 82 83 private String m_paramNewResourceType; 84 85 90 public CmsChtype(CmsJspActionElement jsp) { 91 92 super(jsp); 93 } 94 95 102 public CmsChtype(PageContext context, HttpServletRequest req, HttpServletResponse res) { 103 104 this(new CmsJspActionElement(context, req, res)); 105 } 106 107 117 public static String buildTypeList(CmsDialog dialog, boolean useTypeId) { 118 119 StringBuffer result = new StringBuffer (512); 120 try { 121 CmsObject cms = dialog.getCms(); 123 CmsResource res = cms.readResource(dialog.getParamResource(), CmsResourceFilter.ALL); 125 int currentResTypeId = res.getTypeId(); 126 List resTypes = OpenCms.getWorkplaceManager().getExplorerTypeSettings(); 128 boolean isFolder = res.isFolder(); 129 for (int i = 0; i < resTypes.size(); i++) { 131 boolean changeable = false; 132 CmsExplorerTypeSettings settings = (CmsExplorerTypeSettings)resTypes.get(i); 134 135 boolean isResourceType; 137 try { 138 OpenCms.getResourceManager().getResourceType(settings.getName()); 139 isResourceType = true; 140 } catch (CmsLoaderException e) { 141 isResourceType = false; 142 } 143 144 if (isResourceType) { 145 if (settings.getName().equals("XMLTemplate")) { 146 continue; 148 } 149 150 int resTypeId = OpenCms.getResourceManager().getResourceType(settings.getName()).getTypeId(); 151 153 if (isFolder && OpenCms.getResourceManager().getResourceType(resTypeId).isFolder()) { 155 changeable = true; 156 } else if (!isFolder && !OpenCms.getResourceManager().getResourceType(resTypeId).isFolder()) { 157 changeable = true; 159 } 160 161 if (changeable) { 162 CmsPermissionSet permissions = settings.getAccess().getPermissions(cms); 164 if (!permissions.requiresWritePermission() || !permissions.requiresControlPermission()) { 165 continue; 167 } 168 169 result.append("<tr><td>"); 171 result.append("<input type=\"radio\" name=\""); 172 result.append(PARAM_NEWRESOURCETYPE); 173 result.append("\" value=\""); 174 if (useTypeId) { 175 result.append(resTypeId); 177 } else { 178 result.append(settings.getName()); 180 } 181 result.append("\""); 182 if (resTypeId == currentResTypeId) { 183 result.append(" checked=\"checked\""); 184 } 185 result.append("></td>"); 186 result.append("\t<td><img SRC=\""); 187 result.append(getSkinUri()); 188 result.append("filetypes/"); 189 result.append(settings.getIcon()); 190 result.append("\" border=\"0\" title=\""); 191 result.append(dialog.key(settings.getKey())); 192 result.append("\"></td>\n"); 193 result.append("<td>"); 194 result.append(dialog.key(settings.getKey())); 195 result.append("</td></tr>\n"); 196 } 197 } 198 } 199 } catch (CmsException e) { 200 LOG.error(Messages.get().getBundle().key(Messages.ERR_BUILDING_RESTYPE_LIST_1, dialog.getParamResource())); 202 } 203 return result.toString(); 204 } 205 206 211 public void actionChtype() throws JspException { 212 213 try { 214 int newType = CmsResourceTypePlain.getStaticTypeId(); 215 try { 216 newType = Integer.parseInt(getParamNewResourceType()); 218 } catch (NumberFormatException nf) { 219 throw new CmsException(Messages.get().container(Messages.ERR_GET_RESTYPE_1, getParamNewResourceType())); 220 } 221 checkLock(getParamResource()); 223 getCms().chtype(getParamResource(), newType); 225 actionCloseDialog(); 227 } catch (Throwable e) { 228 includeErrorpage(this, e); 230 } 231 } 232 233 238 public String buildTypeList() { 239 240 return buildTypeList(this, true); 241 } 242 243 248 public String getParamNewResourceType() { 249 250 return m_paramNewResourceType; 251 } 252 253 258 public void setParamNewResourceType(String newResourceType) { 259 260 m_paramNewResourceType = newResourceType; 261 } 262 263 266 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 267 268 fillParamValues(request); 270 271 if (!checkResourcePermissions(CmsPermissionSet.ACCESS_WRITE, false)) { 273 setParamAction(DIALOG_CANCEL); 275 } 276 277 setParamDialogtype(DIALOG_TYPE); 279 if (DIALOG_OK.equals(getParamAction())) { 281 setAction(ACTION_OK); 283 } else if (DIALOG_CANCEL.equals(getParamAction())) { 284 setAction(ACTION_CANCEL); 286 } else { 287 setAction(ACTION_DEFAULT); 289 setParamTitle(key(Messages.GUI_CHTYPE_1, new Object [] {CmsResource.getName(getParamResource())})); 291 } 292 } 293 } | Popular Tags |