1 28 29 package com.opencms.workplace; 30 31 import org.opencms.db.CmsUserSettings; 32 import org.opencms.file.CmsGroup; 33 import org.opencms.file.CmsObject; 34 import org.opencms.file.CmsProject; 35 import org.opencms.file.CmsRequestContext; 36 import org.opencms.file.CmsUser; 37 import org.opencms.main.CmsException; 38 import org.opencms.main.CmsLog; 39 40 import com.opencms.core.I_CmsSession; 41 import com.opencms.legacy.CmsXmlTemplateLoader; 42 import com.opencms.template.A_CmsXmlContent; 43 import com.opencms.template.CmsXmlTemplateFile; 44 45 import java.util.Hashtable ; 46 import java.util.List ; 47 import java.util.Vector ; 48 49 61 62 public class CmsWpMain extends CmsWorkplaceDefault { 63 64 67 static final String C_SYNC_BUTTON = "SYNC"; 68 69 72 static final String C_SYNC_BUTTON_DISABLED = "SYNC_DISABLED"; 73 74 75 public CmsWpMain() { 76 super(); 77 78 m_SelectedPrjIndex = 0; 79 m_ProjectIds = null; 80 m_ProjectNames = null; 81 } 82 83 94 95 public byte[] getContent(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) throws CmsException { 96 if (CmsLog.getLog(this).isDebugEnabled() && C_DEBUG) { 97 CmsLog.getLog(this).debug("[CmsXmlTemplate] getting content of element " + ((elementName == null) ? "<root>" : elementName)); 98 CmsLog.getLog(this).debug("[CmsXmlTemplate] template file is: " + templateFile); 99 CmsLog.getLog(this).debug("[CmsXmlTemplate] selected template section is: " + ((templateSelector == null) ? "<default>" : templateSelector)); 100 } 101 102 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 103 CmsRequestContext reqCont = cms.getRequestContext(); 104 String newProject = (String ) parameters.get("project"); 106 String newView = (String ) parameters.get(CmsWorkplaceDefault.C_PARA_VIEW); 107 CmsXmlTemplateFile xmlTemplateDocument = getOwnTemplateFile(cms, templateFile, elementName, parameters, templateSelector); 108 109 116 if (newProject != null && !("".equals(newProject))) { 118 if (!(Integer.parseInt(newProject) == reqCont.currentProject().getId())) { 119 reqCont.setCurrentProject(cms.readProject(Integer.parseInt(newProject))); 120 } 121 } 122 123 if (newView != null && !("".equals(newView))) { 125 session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 126 session.putValue(CmsWorkplaceDefault.C_PARA_VIEW, newView); 127 } 128 129 if (templateFile.equalsIgnoreCase(CmsWorkplaceDefault.C_VFS_PATH_DEFAULT_INTERNAL + "head")) { 131 if ((cms.isAdmin() || cms.isManagerOfProject()) && (!reqCont.currentProject().isOnlineProject())) { 132 xmlTemplateDocument.setData("publish", xmlTemplateDocument.getProcessedDataValue("PUBLISH_ENABLED", this)); 133 } 134 else { 135 xmlTemplateDocument.setData("publish", xmlTemplateDocument.getProcessedDataValue("PUBLISH_DISABLED", this)); 136 } 137 } 138 139 xmlTemplateDocument.setData(C_SYNC_BUTTON, xmlTemplateDocument.getProcessedDataValue(C_SYNC_BUTTON_DISABLED, this)); 145 151 160 if (templateFile.equalsIgnoreCase(CmsWorkplaceDefault.C_VFS_PATH_DEFAULT_INTERNAL + "head")) { 163 String userLanguage = CmsXmlLanguageFile.getCurrentUserLanguage(cms); 164 xmlTemplateDocument.setData("LOCALE", "" + userLanguage); 165 166 try { 167 cms.readFolder(CmsWorkplaceDefault.C_VFS_PATH_HELP + userLanguage); 168 xmlTemplateDocument.setData("HELP", xmlTemplateDocument.getProcessedDataValue("HELP_ENABLED", this)); 170 } 171 catch (CmsException e) { 172 try { 174 xmlTemplateDocument.setData("HELP", xmlTemplateDocument.getProcessedDataValue("HELP_DISABLED", this)); 175 } catch (Exception ex) { 176 } 178 } 179 } 180 181 this.fetchProjects(cms, xmlTemplateDocument); 182 183 return startProcessing(cms, xmlTemplateDocument, elementName, parameters, templateSelector); 185 } 186 187 206 207 public Integer getGroups(CmsObject cms, CmsXmlLanguageFile lang, Vector names, Vector values, Hashtable parameters) throws CmsException { 208 209 CmsRequestContext reqCont = cms.getRequestContext(); 211 List allGroups = cms.getGroupsOfUser(reqCont.currentUser().getName()); 213 214 int numGroups = allGroups.size(); 216 for (int i = 0; i < numGroups; i++) { 218 CmsGroup loopGroup = (CmsGroup) allGroups.get(i); 219 String loopGroupName = loopGroup.getName(); 220 values.addElement(loopGroupName); 221 names.addElement(loopGroupName); 222 } 228 return new Integer (0); 229 } 230 231 250 251 public Integer getProjects(CmsObject cms, CmsXmlLanguageFile lang, Vector names, Vector values, Hashtable parameters) throws CmsException { 252 if (m_ProjectNames == null || m_ProjectIds == null) { 253 new Integer (0); 254 } 255 256 values.addAll(m_ProjectIds); 257 names.addAll(m_ProjectNames); 258 259 return new Integer (m_SelectedPrjIndex); 260 } 261 262 private void fetchProjects(CmsObject cms, CmsXmlTemplateFile xmlTemplateDocument) throws CmsException { 263 CmsRequestContext reqCont = cms.getRequestContext(); 265 Vector allProjects = new Vector (cms.getAllAccessibleProjects()); 266 int currentProjectId = reqCont.currentProject().getId(); 267 268 int numProjects = allProjects.size(); 270 int currentProjectNum = 0; 271 int currentLength = 0; 272 273 int maxPrjNameLen = 0; 274 m_ProjectIds = new Vector (); 275 m_ProjectNames = new Vector (); 276 277 for (int i = 0; i < numProjects; i++) { 278 CmsProject loopProject = (CmsProject) allProjects.elementAt(i); 279 String loopProjectName = loopProject.getName(); 280 String loopProjectId = loopProject.getId() + ""; 281 282 m_ProjectIds.addElement(loopProjectId); 283 m_ProjectNames.addElement(loopProjectName); 284 285 if (loopProject.getId() == currentProjectId) { 286 currentProjectNum = i; 288 } 289 290 currentLength = loopProjectName.length(); 291 if (currentLength>maxPrjNameLen) { 292 maxPrjNameLen = currentLength; 293 } 294 } 295 296 m_SelectedPrjIndex = currentProjectNum; 297 298 try { 299 if (maxPrjNameLen <= 20) { 300 xmlTemplateDocument.setData("PRJ_SELECT", xmlTemplateDocument.getProcessedDataValue("PRJ_SELECT_NORMAL", this)); 301 } else { 302 xmlTemplateDocument.setData("PRJ_SELECT", xmlTemplateDocument.getProcessedDataValue("PRJ_SELECT_LARGE", this)); 303 } 304 } catch (CmsException e) { 305 } 308 } 309 310 private int m_SelectedPrjIndex; 311 private Vector m_ProjectIds; 312 private Vector m_ProjectNames; 313 314 334 335 public Integer getRegViews(CmsObject cms, CmsXmlLanguageFile lang, Vector names, Vector values, Hashtable parameters) throws CmsException { 336 337 CmsRequestContext reqCont = cms.getRequestContext(); 339 I_CmsSession session = CmsXmlTemplateLoader.getSession(cms.getRequestContext(), true); 340 341 String currentView = null; 343 Hashtable startSettings = null; 344 345 startSettings = (Hashtable ) reqCont.currentUser().getAdditionalInfo(CmsUserSettings.ADDITIONAL_INFO_STARTSETTINGS); 347 if (startSettings != null) { 348 currentView = (String ) startSettings.get(com.opencms.core.I_CmsConstants.C_START_VIEW); 349 } 350 351 if (session != null) { 353 if (session.getValue(CmsWorkplaceDefault.C_PARA_VIEW) != null) { 354 currentView = (String ) session.getValue(CmsWorkplaceDefault.C_PARA_VIEW); 355 } 356 } 357 if (currentView == null) { 358 currentView = ""; 359 } 360 Vector viewNames = new Vector (); 361 Vector viewLinks = new Vector (); 362 int currentViewIndex = 0; 363 364 return new Integer (currentViewIndex); 388 } 389 390 402 403 public Object getUser(CmsObject cms, String tagcontent, A_CmsXmlContent doc, Object userObj) throws CmsException { 404 CmsRequestContext reqContext = cms.getRequestContext(); 405 CmsUser currentUser = reqContext.currentUser(); 406 return currentUser.getName(); 407 } 408 409 419 420 public boolean isCacheable(CmsObject cms, String templateFile, String elementName, Hashtable parameters, String templateSelector) { 421 return false; 422 } 423 } 424 | Popular Tags |