1 31 32 package org.opencms.setup.xml; 33 34 import org.opencms.i18n.CmsEncoder; 35 import org.opencms.setup.CmsSetupBean; 36 import org.opencms.util.CmsStringUtil; 37 38 import java.util.ArrayList ; 39 import java.util.Collections ; 40 import java.util.HashMap ; 41 import java.util.Iterator ; 42 import java.util.List ; 43 import java.util.Map ; 44 45 54 public class CmsSetupXmlManager { 55 56 57 private List m_plugins; 58 59 60 private List m_selectedPlugins; 61 62 63 private Map m_sortedPlugins; 64 65 68 public CmsSetupXmlManager() { 69 70 m_selectedPlugins = new ArrayList (); 71 m_plugins = new ArrayList (); 72 74 m_plugins.add(new CmsXmlRemovePageSearchIndexSource1()); 76 m_plugins.add(new CmsXmlRemoveSysSearchIndex()); 77 m_plugins.add(new CmsXmlAddDEHelpSearchIndex()); 78 79 m_plugins.add(new CmsXmlAddBackupResourceHandler()); 81 m_plugins.add(new CmsXmlAddContentNotification()); 82 83 m_plugins.add(new CmsXmlReplaceHtmlAreaWidgets()); 85 m_plugins.add(new CmsXmlAddImageLoader()); 86 m_plugins.add(new CmsXmlAddImgGalleryParam()); 87 m_plugins.add(new CmsXmlAddXmlContentWidgets()); 88 89 m_plugins.add(new CmsXmlAddAvailabilityContextMenu()); 91 m_plugins.add(new CmsXmlAddMultiContextMenu()); 92 m_plugins.add(new CmsXmlUpdateHistoryContextMenu()); 93 m_plugins.add(new CmsXmlAddImgGalleryContextMenues()); 94 m_plugins.add(new CmsXmlAddPublishButtonAppearance()); 95 m_plugins.add(new CmsXmlUpdateDefaultPermissions()); 96 m_plugins.add(new CmsXmlAddAutoSetFeatures()); 97 m_plugins.add(new CmsXmlUpdateLocalizationKeys()); 98 99 setup(); 100 } 101 102 109 public void execute(CmsSetupBean setupBean) throws Exception { 110 111 Iterator it = m_selectedPlugins.iterator(); 112 while (it.hasNext()) { 113 String id = (String )it.next(); 114 int d = id.lastIndexOf(".xml") + ".xml".length(); 115 String fileName = id.substring(0, d); 116 int pos = Integer.parseInt(id.substring(d)); 117 List plugins = (List )m_sortedPlugins.get(fileName); 118 I_CmsSetupXmlUpdate plugin = (I_CmsSetupXmlUpdate)plugins.get(pos); 119 plugin.execute(setupBean); 120 } 121 setupBean.getXmlHelper().writeAll(); 122 } 123 124 129 public Map getPlugins() { 130 131 return Collections.unmodifiableMap(m_sortedPlugins); 132 } 133 134 143 public String htmlAvailablePlugins(CmsSetupBean setupBean) throws Exception { 144 145 StringBuffer html = new StringBuffer (1024); 146 Iterator itFiles = m_sortedPlugins.keySet().iterator(); 147 while (itFiles.hasNext()) { 148 String fileName = (String )itFiles.next(); 149 Iterator itPlugins = ((List )m_sortedPlugins.get(fileName)).iterator(); 150 StringBuffer code = new StringBuffer (256); 151 for (int i = 0; itPlugins.hasNext(); i++) { 152 I_CmsSetupXmlUpdate plugin = (I_CmsSetupXmlUpdate)itPlugins.next(); 153 if (plugin.validate(setupBean)) { 154 code.append(htmlPlugin(setupBean, plugin, i)); 155 } 156 } 157 if (code.length() > 0) { 158 html.append("<tr><th colspan='2' align='left'>"); 159 html.append(fileName); 160 html.append("</th></tr>\n"); 161 html.append(code.toString()); 162 } 163 } 164 return html.toString(); 165 } 166 167 172 public void setSelectedPlugins(String value) { 173 174 m_selectedPlugins = CmsStringUtil.splitAsList(value, "|", true); 175 } 176 177 188 private String htmlPlugin(CmsSetupBean setupBean, I_CmsSetupXmlUpdate plugin, int pos) throws Exception { 189 190 StringBuffer html = new StringBuffer (256); 191 String id = plugin.getXmlFilename() + pos; 192 html.append("\t<tr>\n"); 193 html.append("\t\t<td style='vertical-align: top;' nowrap>\n"); 194 html.append("\t\t\t<input type='checkbox' name='availablePlugins' value='"); 195 html.append(id); 196 html.append("' checked='checked'>\n"); 197 html.append("\t\t</td>\n"); 198 html.append("\t\t<td style='vertical-align: top; width: 100%; padding-top: 4px;'>\n\t\t\t"); 199 html.append("<a HREF=\"javascript:switchview('").append(id).append("');\">"); 200 html.append(plugin.getName()).append("</a><br>\n"); 201 html.append("\t<div id='").append(id).append("' style='display: none;'>\n"); 202 String codeToChange = plugin.getCodeToChange(setupBean); 203 if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(codeToChange)) { 204 html.append("<pre class='code'>"); 205 html.append(CmsEncoder.escapeXml(codeToChange)); 206 html.append("</pre>\n"); 207 } 208 html.append("\t</div>\n"); 209 html.append("\n\t\t</td>\n"); 210 html.append("\t</tr>\n"); 211 return html.toString(); 212 } 213 214 217 private void setup() { 218 219 m_sortedPlugins = new HashMap (); 220 Iterator it = m_plugins.iterator(); 221 while (it.hasNext()) { 222 I_CmsSetupXmlUpdate plugin = (I_CmsSetupXmlUpdate)it.next(); 223 List list = (List )m_sortedPlugins.get(plugin.getXmlFilename()); 224 if (list == null) { 225 list = new ArrayList (); 226 m_sortedPlugins.put(plugin.getXmlFilename(), list); 227 } 228 list.add(plugin); 229 } 230 } 231 } | Popular Tags |