1 31 32 package org.opencms.workplace.tools.modules; 33 34 import org.opencms.configuration.CmsConfigurationException; 35 import org.opencms.jsp.CmsJspActionElement; 36 import org.opencms.main.CmsRuntimeException; 37 import org.opencms.main.OpenCms; 38 import org.opencms.module.CmsModule; 39 import org.opencms.module.CmsModuleDependency; 40 import org.opencms.module.CmsModuleImportExportHandler; 41 import org.opencms.module.CmsModuleManager; 42 import org.opencms.widgets.CmsDisplayWidget; 43 import org.opencms.widgets.CmsSelectWidget; 44 import org.opencms.widgets.CmsSelectWidgetOption; 45 import org.opencms.workplace.CmsWidgetDialog; 46 import org.opencms.workplace.CmsWidgetDialogParameter; 47 import org.opencms.workplace.CmsWorkplaceSettings; 48 import org.opencms.workplace.tools.CmsToolDialog; 49 import org.opencms.workplace.tools.CmsToolManager; 50 51 import java.io.File ; 52 import java.io.IOException ; 53 import java.util.ArrayList ; 54 import java.util.HashMap ; 55 import java.util.List ; 56 import java.util.Map ; 57 58 import javax.servlet.ServletException ; 59 import javax.servlet.http.HttpServletRequest ; 60 import javax.servlet.http.HttpServletResponse ; 61 import javax.servlet.jsp.PageContext ; 62 63 72 public class CmsModulesUploadFromServer extends CmsWidgetDialog { 73 74 75 public static final String DIALOG_TYPE = "ModulesUploadServer"; 76 77 78 public static final String [] PAGES = {"page1"}; 79 80 81 public static final String PARAM_MODULENAME = "modulename"; 82 83 84 protected static final String IMPORT_ACTION_REPORT = "/system/workplace/admin/modules/reports/import.jsp"; 85 86 87 protected static final String REPLACE_ACTION_REPORT = "/system/workplace/admin/modules/reports/replace.jsp"; 88 89 90 private String m_moduleupload; 91 92 97 public CmsModulesUploadFromServer(CmsJspActionElement jsp) { 98 99 super(jsp); 100 } 101 102 109 public CmsModulesUploadFromServer(PageContext context, HttpServletRequest req, HttpServletResponse res) { 110 111 this(new CmsJspActionElement(context, req, res)); 112 } 113 114 117 public void actionCommit() throws IOException , ServletException { 118 119 List errors = new ArrayList (); 120 CmsModule module = null; 121 try { 122 String importpath = OpenCms.getSystemInfo().getPackagesRfsPath(); 123 importpath = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf( 124 importpath + "modules/" + m_moduleupload); 125 module = CmsModuleImportExportHandler.readModuleFromImport(importpath); 126 127 List dependencies = OpenCms.getModuleManager().checkDependencies( 129 module, 130 CmsModuleManager.DEPENDENCY_MODE_IMPORT); 131 if (!dependencies.isEmpty()) { 132 StringBuffer dep = new StringBuffer (32); 133 for (int i = 0; i < dependencies.size(); i++) { 134 CmsModuleDependency dependency = (CmsModuleDependency)dependencies.get(i); 135 dep.append("\n - "); 136 dep.append(dependency.getName()); 137 dep.append(" (Version: "); 138 dep.append(dependency.getVersion()); 139 dep.append(")"); 140 } 141 errors.add(new CmsRuntimeException(Messages.get().container( 142 Messages.ERR_ACTION_MODULE_DEPENDENCY_2, 143 m_moduleupload, 144 new String (dep)))); 145 } 146 147 } catch (CmsConfigurationException e) { 148 errors.add(new CmsRuntimeException(Messages.get().container( 149 Messages.ERR_ACTION_MODULE_UPLOAD_1, 150 m_moduleupload), e)); 151 } 152 153 if (errors.isEmpty()) { 154 155 Map objects = (Map )getSettings().getListObject(); 157 if (objects != null) { 158 objects.remove(CmsModulesList.class.getName()); 159 } 160 161 Map param = new HashMap (); 163 param.put(CmsModulesList.PARAM_MODULE, m_moduleupload); 164 param.put(PARAM_STYLE, CmsToolDialog.STYLE_NEW); 165 param.put(PARAM_CLOSELINK, CmsToolManager.linkForToolPath(getJsp(), "/modules")); 166 if (OpenCms.getModuleManager().hasModule(module.getName())) { 167 param.put(PARAM_MODULENAME, module.getName()); 168 getToolManager().jspForwardPage(this, REPLACE_ACTION_REPORT, param); 169 } else { 170 getToolManager().jspForwardPage(this, IMPORT_ACTION_REPORT, param); 171 } 172 } 173 174 setCommitErrors(errors); 176 } 177 178 183 public String getModuleupload() { 184 185 return m_moduleupload; 186 } 187 188 192 public void setModuleupload(String module) { 193 194 m_moduleupload = module; 195 } 196 197 203 protected String createDialogHtml(String dialog) { 204 205 StringBuffer result = new StringBuffer (1024); 206 207 result.append(createWidgetTableStart()); 209 210 result.append(createWidgetErrorHeader()); 212 213 if (dialog.equals(PAGES[0])) { 214 result.append(dialogBlockStart(key("label.uploadfromserver"))); 215 result.append(createWidgetTableStart()); 216 result.append(createDialogRowsHtml(0, 0)); 217 result.append(createWidgetTableEnd()); 218 result.append(dialogBlockEnd()); 219 } 220 221 result.append(createWidgetTableEnd()); 223 224 return result.toString(); 225 } 226 227 230 protected void defineWidgets() { 231 232 List selectOptions = getModulesFromServer(); 233 234 if (selectOptions.isEmpty()) { 235 addWidget(new CmsWidgetDialogParameter(this, "moduleupload", PAGES[0], new CmsDisplayWidget(key(Messages.GUI_MODULES_IMPORT_NOT_AVAILABLE_0)))); 237 } else { 238 addWidget(new CmsWidgetDialogParameter(this, "moduleupload", PAGES[0], new CmsSelectWidget(selectOptions))); 240 } 241 } 242 243 246 protected String [] getPageArray() { 247 248 return PAGES; 249 } 250 251 254 protected void initMessages() { 255 256 addMessages(Messages.get().getBundleName()); 258 super.initMessages(); 260 } 261 262 265 protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) { 266 267 setParamDialogtype(DIALOG_TYPE); 269 270 super.initWorkplaceRequestValues(settings, request); 271 272 setDialogObject(m_moduleupload); 274 } 275 276 281 private List getModulesFromServer() { 282 283 List result = new ArrayList (); 284 285 String exportpath = OpenCms.getSystemInfo().getPackagesRfsPath(); 287 exportpath = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(exportpath + "modules"); 288 File folder = new File (exportpath); 289 290 String [] list = folder.list(); 292 for (int i = 0; i < list.length; i++) { 293 try { 294 File diskFile = new File (exportpath, list[i]); 295 if (diskFile.isFile() && diskFile.getName().endsWith(".zip")) { 297 result.add(new CmsSelectWidgetOption(diskFile.getName())); 298 } else if (diskFile.isDirectory() && ((new File (diskFile + File.separator + "manifest.xml")).exists())) { 299 result.add(new CmsSelectWidgetOption(diskFile.getName())); 301 } 302 } catch (Throwable t) { 303 } 305 } 306 307 return result; 308 } 309 310 } | Popular Tags |