1 31 32 package org.opencms.workplace.editors; 33 34 import org.opencms.file.CmsPropertyDefinition; 35 import org.opencms.i18n.CmsMessages; 36 import org.opencms.jsp.CmsJspActionElement; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsLog; 39 import org.opencms.util.CmsStringUtil; 40 import org.opencms.workplace.commons.CmsPropertyCustom; 41 import org.opencms.workplace.explorer.CmsNewResourceXmlPage; 42 43 import java.util.ArrayList ; 44 import java.util.Iterator ; 45 import java.util.List ; 46 import java.util.TreeMap ; 47 48 import javax.servlet.http.HttpServletRequest ; 49 import javax.servlet.http.HttpServletResponse ; 50 import javax.servlet.jsp.PageContext ; 51 52 import org.apache.commons.logging.Log; 53 54 72 public class CmsDialogProperty extends CmsPropertyCustom { 73 74 75 private static final Log LOG = CmsLog.getLog(CmsDialogProperty.class); 76 77 78 private boolean m_templateChanged; 79 80 85 public CmsDialogProperty(CmsJspActionElement jsp) { 86 87 super(jsp); 88 } 89 90 97 public CmsDialogProperty(PageContext context, HttpServletRequest req, HttpServletResponse res) { 98 99 this(new CmsJspActionElement(context, req, res)); 100 } 101 102 107 public String buildEditForm() { 108 109 CmsMessages messages = Messages.get().getBundle(getLocale()); 110 StringBuffer retValue = new StringBuffer (2048); 111 112 boolean editable = isEditable(); 114 String disabled = ""; 116 if (!editable) { 117 disabled = " disabled=\"disabled\""; 118 } 119 120 retValue.append("<table border=\"0\">\n"); 121 retValue.append("<tr>\n"); 122 retValue.append("\t<td class=\"textbold\">" + messages.key(Messages.GUI_INPUT_PROPERTY_0) + "</td>\n"); 123 retValue.append("\t<td class=\"textbold\">" + messages.key(Messages.GUI_LABEL_VALUE_0) + "</td>\n"); 124 retValue.append("\t<td class=\"textbold\" style=\"white-space: nowrap;\">" 125 + messages.key(Messages.GUI_INPUT_USEDPROPERTY_0) 126 + "</td>\n"); 127 retValue.append("</tr>\n"); 128 retValue.append("<tr><td><span style=\"height: 6px;\"></span></td></tr>\n"); 129 130 retValue.append(buildTableRowStart(messages.key(Messages.GUI_INPUT_TEMPLATE_0))); 132 retValue.append(buildSelectTemplates("name=\"" 133 + CmsPropertyDefinition.PROPERTY_TEMPLATE 134 + "\" class=\"maxwidth noborder\"" 135 + disabled)); 136 retValue.append("</td>\n"); 137 retValue.append("\t<td class=\"textcenter\">"); 138 retValue.append(" "); 139 retValue.append(buildTableRowEnd()); 140 141 retValue.append(buildTextInput(editable)); 143 144 if (showNavigation()) { 146 retValue.append(buildNavigationProperties(editable)); 147 } 148 149 retValue.append("</table>"); 150 151 return retValue.toString(); 152 } 153 154 160 public String buildSelectTemplates(String attributes) { 161 162 List options = new ArrayList (); 163 List values = new ArrayList (); 164 int selectedValue = -1; 165 String currentTemplate = null; 166 TreeMap templates = null; 167 try { 168 currentTemplate = getCms().readPropertyObject( 170 getParamResource(), 171 CmsPropertyDefinition.PROPERTY_TEMPLATE, 172 true).getValue(); 173 templates = CmsNewResourceXmlPage.getTemplates(getCms(), getParamResource()); 175 } catch (CmsException e) { 176 if (LOG.isInfoEnabled()) { 178 LOG.info(Messages.get().getBundle().key(Messages.LOG_READ_TEMPLATE_FAILED_0), e); 179 } 180 } 181 if (currentTemplate == null) { 182 currentTemplate = ""; 183 } 184 if (templates == null) { 185 addCurrentTemplate(currentTemplate, options, values); 187 } else { 188 boolean found = false; 189 Iterator i = templates.keySet().iterator(); 191 int counter = 0; 192 while (i.hasNext()) { 193 String key = (String )i.next(); 194 String path = (String )templates.get(key); 195 if (currentTemplate.equals(path)) { 196 selectedValue = counter; 198 found = true; 199 } 200 options.add(key); 201 values.add(path); 202 counter++; 203 } 204 if (!found) { 205 addCurrentTemplate(currentTemplate, options, values); 207 selectedValue = 0; 208 } 209 } 210 211 String hiddenField = "<input type=\"hidden\" name=\"" 212 + PREFIX_HIDDEN 213 + CmsPropertyDefinition.PROPERTY_TEMPLATE 214 + "\" value=\"" 215 + currentTemplate 216 + "\">"; 217 return buildSelect(attributes, options, values, selectedValue, false) + hiddenField; 218 } 219 220 225 public boolean hasTemplateChanged() { 226 227 return m_templateChanged; 228 } 229 230 237 protected boolean performEditOperation(HttpServletRequest request) throws CmsException { 238 239 boolean useTempfileProject = Boolean.valueOf(getParamUsetempfileproject()).booleanValue(); 240 try { 241 if (useTempfileProject) { 242 switchToTempProject(); 243 } 244 Iterator i = getExplorerTypeSettings().getProperties().iterator(); 246 while (i.hasNext()) { 248 String curProperty = (String )i.next(); 249 String paramValue = request.getParameter(PREFIX_VALUE + curProperty); 250 String oldValue = request.getParameter(PREFIX_HIDDEN + curProperty); 251 writeProperty(curProperty, paramValue, oldValue); 252 } 253 254 String paramValue = null; 256 String oldValue = null; 257 258 if (showNavigation()) { 260 paramValue = request.getParameter("enablenav"); 262 if (Boolean.valueOf(paramValue).booleanValue()) { 263 paramValue = request.getParameter("navpos"); 265 if (!"-1".equals(paramValue)) { 266 oldValue = request.getParameter(PREFIX_HIDDEN + CmsPropertyDefinition.PROPERTY_NAVPOS); 268 writeProperty(CmsPropertyDefinition.PROPERTY_NAVPOS, paramValue, oldValue); 269 } 270 paramValue = request.getParameter(PREFIX_VALUE + CmsPropertyDefinition.PROPERTY_NAVTEXT); 271 oldValue = request.getParameter(PREFIX_HIDDEN + CmsPropertyDefinition.PROPERTY_NAVTEXT); 272 writeProperty(CmsPropertyDefinition.PROPERTY_NAVTEXT, paramValue, oldValue); 273 } else { 274 writeProperty(CmsPropertyDefinition.PROPERTY_NAVPOS, null, null); 276 writeProperty(CmsPropertyDefinition.PROPERTY_NAVTEXT, null, null); 277 } 278 } 279 280 paramValue = request.getParameter(CmsPropertyDefinition.PROPERTY_TEMPLATE); 282 oldValue = request.getParameter(PREFIX_HIDDEN + CmsPropertyDefinition.PROPERTY_TEMPLATE); 283 writeProperty(CmsPropertyDefinition.PROPERTY_TEMPLATE, paramValue, oldValue); 284 if (paramValue != null && !paramValue.equals(oldValue)) { 285 m_templateChanged = true; 287 } 288 289 } finally { 290 if (useTempfileProject) { 291 switchToCurrentProject(); 292 } 293 } 294 return true; 295 } 296 297 304 private void addCurrentTemplate(String currentTemplate, List options, List values) { 305 306 CmsMessages messages = Messages.get().getBundle(getLocale()); 307 308 if (CmsStringUtil.isEmpty(currentTemplate)) { 310 options.add(0, "--- " + messages.key(Messages.GUI_PLEASE_SELECT_0) + " ---"); 312 values.add(0, ""); 313 } else { 314 String name = null; 316 try { 317 name = getCms().readPropertyObject(currentTemplate, CmsPropertyDefinition.PROPERTY_TITLE, false).getValue(); 319 } catch (CmsException e) { 320 if (LOG.isInfoEnabled()) { 322 LOG.info(messages.key(Messages.LOG_READ_TITLE_PROP_FAILED_1, currentTemplate), e); 323 } 324 } 325 if (name == null) { 326 name = currentTemplate; 327 } 328 options.add(0, "* " + name); 329 values.add(0, currentTemplate); 330 } 331 } 332 } | Popular Tags |