You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by vd...@apache.org on 2016/11/30 07:17:10 UTC
svn commit: r1771997 - in
/openmeetings/application/branches/3.2.x/openmeetings-web/src/main:
java/org/apache/openmeetings/web/pages/install/ webapp/css/
Author: vdegtyarev
Date: Wed Nov 30 07:17:10 2016
New Revision: 1771997
URL: http://svn.apache.org/viewvc?rev=1771997&view=rev
Log:
OPENMEETINGS-1513 is fixed. Installer Converters page is improved to check that installed converter tools or not.
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard%24ParamsStep3.html?rev=1771997&r1=1771996&r2=1771997&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard$ParamsStep3.html Wed Nov 30 07:17:10 2016
@@ -23,66 +23,45 @@
<fieldset class="ui-widget-content" id="userConf1">
<legend class="ui-widget-header"><wicket:message key="install.wizard.params.step3.converters"/></legend>
<ul class="paramList">
- <li><label wicket:for="swfZoom"><wicket:message key="install.wizard.params.step3.swfZoom"/></label>
+ <li><label wicket:for="swfZoom"><wicket:message key="install.wizard.params.step3.swfZoom"/>
+ <span class="info-title" wicket:message="title:install.wizard.params.step3.swfZoom.text"/>
+ </label>
<input wicket:id="swfZoom" wicket:message="title:install.wizard.params.step3.swfZoom.title"
type="text" />
- <p>
- <i>
- <wicket:message key="install.wizard.params.step3.swfZoom.text"/>
- <wicket:message key="install.wizard.params.step3.seeAlso"/> <a
- href="http://openmeetings.apache.org/installation.html"
- target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
- </i>
- </p>
</li>
- <li><label wicket:for="swfJpegQuality"><wicket:message key="install.wizard.params.step3.swfJpegQuality"/></label>
+ <li><label wicket:for="swfJpegQuality"><wicket:message key="install.wizard.params.step3.swfJpegQuality"/>
+ <span class="info-title" wicket:message="title:install.wizard.params.step3.swfJpegQuality.text"/>
+ </label>
<input wicket:id="swfJpegQuality"
wicket:message="title:install.wizard.params.step3.swfJpegQuality.title"
type="text" />
- <p>
- <i>
- <wicket:message key="install.wizard.params.step3.swfJpegQuality.text"/>
- <wicket:message key="install.wizard.params.step3.seeAlso"/> <a
- href="http://openmeetings.apache.org/installation.html"
- target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
- </i>
- </p>
</li>
- <li><label wicket:for="swfPath"><wicket:message key="install.wizard.params.step3.swfPath"/></label>
+ <li>
+ <label wicket:for="swfPath"><wicket:message key="install.wizard.params.step3.swfPath"/>
+ <span class="info-title" wicket:message="title:install.wizard.params.step3.swfPath.text"/>
+ </label>
<input wicket:id="swfPath"
- wicket:message="title:install.wizard.params.step3.swfPath.title"
type="text" />
- <p>
- <i>
- <wicket:message key="install.wizard.params.step3.swfPath.text"/>
- <wicket:message key="install.wizard.params.step3.seeAlso"/> <a
- href="http://openmeetings.apache.org/installation.html"
- target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
- </i>
- </p>
+ <button class="formelement" wicket:id="validateSwf"><wicket:message key="install.wizard.db.step.check"/></button>
</li>
<li><label wicket:for="imageMagicPath"><wicket:message key="install.wizard.params.step3.imageMagicPath"/></label>
<input wicket:id="imageMagicPath"
wicket:message="title:install.wizard.params.step3.imageMagicPath.title"
type="text" />
+ <button class="formelement" wicket:id="validateImageMagic"><wicket:message key="install.wizard.db.step.check"/></button>
<p>
<i>
<wicket:message key="install.wizard.params.step3.imageMagicPath.text"/>
- <wicket:message key="install.wizard.params.step3.seeAlso"/> <a
- href="http://openmeetings.apache.org/installation.html"
- target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
</i>
</p>
</li>
<li><label wicket:for="ffmpegPath"><wicket:message key="install.wizard.params.step3.ffmpegPath"/></label>
<input wicket:id="ffmpegPath"
wicket:message="title:install.wizard.params.step3.ffmpegPath.title" type="text" />
+ <button class="formelement" wicket:id="validateFfmpeg"><wicket:message key="install.wizard.db.step.check"/></button>
<p>
<i>
<wicket:message key="install.wizard.params.step3.ffmpegPath.text"/>
- <wicket:message key="install.wizard.params.step3.seeAlso"/> <a
- href="http://openmeetings.apache.org/installation.html"
- target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
</i>
</p>
</li>
@@ -90,22 +69,24 @@
<input wicket:id="soxPath"
wicket:message="title:install.wizard.params.step3.soxPath.title"
type="text" />
+ <button class="formelement" wicket:id="validateSox"><wicket:message key="install.wizard.db.step.check"/></button>
<p>
<i>
<wicket:message key="install.wizard.params.step3.soxPath.text"/>
- <wicket:message key="install.wizard.params.step3.seeAlso"/> <a
- href="http://openmeetings.apache.org/installation.html"
- target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
</i>
</p>
</li>
- <li><label wicket:for="officePath"><wicket:message key="install.wizard.params.step3.officePath"/></label>
+ <li><label wicket:for="officePath"><wicket:message key="install.wizard.params.step3.officePath"/>
+ <span class="info-title" wicket:message="title:install.wizard.params.step3.officePath.text"/>
+ </label>
<input wicket:id="officePath"
wicket:message="title:install.wizard.params.step3.officePath.title"
type="text" />
+ <button class="formelement" wicket:id="validateOffice"><wicket:message key="install.wizard.db.step.check"/></button>
+ </li>
+ <li>
<p>
<i>
- <wicket:message key="install.wizard.params.step3.officePath.text"/>
<wicket:message key="install.wizard.params.step3.seeAlso"/> <a
href="http://openmeetings.apache.org/installation.html"
target="_blank"><wicket:message key="install.wizard.params.step3.installation"/></a>
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java?rev=1771997&r1=1771996&r2=1771997&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/install/InstallWizard.java Wed Nov 30 07:17:10 2016
@@ -40,11 +40,14 @@ import java.util.Locale;
import java.util.Map;
import org.apache.openmeetings.cli.ConnectionPropertiesPatcher;
+import org.apache.openmeetings.core.converter.GenerateSWF;
import org.apache.openmeetings.db.dao.label.LabelDao;
import org.apache.openmeetings.installation.ImportInitvalues;
import org.apache.openmeetings.installation.InstallationConfig;
import org.apache.openmeetings.util.ConnectionProperties;
import org.apache.openmeetings.util.ConnectionProperties.DbType;
+import org.apache.openmeetings.util.process.ConverterProcessResult;
+import org.apache.openmeetings.util.process.ProcessHelper;
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.web.app.Application;
import org.apache.openmeetings.web.app.WebSession;
@@ -70,7 +73,11 @@ import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.StringResourceModel;
+import org.apache.wicket.util.string.Strings;
import org.apache.wicket.util.time.Duration;
+import org.artofsolving.jodconverter.office.DefaultOfficeManagerConfiguration;
+import org.artofsolving.jodconverter.office.OfficeException;
+import org.artofsolving.jodconverter.office.OfficeManager;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
import org.springframework.orm.jpa.LocalEntityManagerFactoryBean;
@@ -78,6 +85,7 @@ import org.springframework.web.context.s
import com.googlecode.wicket.jquery.core.JQueryBehavior;
import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
import com.googlecode.wicket.jquery.ui.widget.progressbar.ProgressBar;
import com.googlecode.wicket.jquery.ui.widget.wizard.AbstractWizard;
@@ -147,6 +155,14 @@ public class InstallWizard extends Abstr
protected boolean closeOnFinish() {
return false;
}
+
+ private static String getPath(String path, String app) {
+ if (!"".equals(path) && !path.endsWith(File.separator)) {
+ path += File.separator;
+ }
+ path += app;
+ return path;
+ }
private abstract class BaseStep extends DynamicWizardStep {
private static final long serialVersionUID = 1L;
@@ -474,19 +490,108 @@ public class InstallWizard extends Abstr
private final class ParamsStep3 extends BaseStep {
private static final long serialVersionUID = 1L;
-
+ private final TextField<String> ffmpegPath;
+ private final TextField<String> imageMagicPath;
+ private final TextField<String> soxPath;
+ private final TextField<String> swfPath;
+ private final TextField<String> officePath;
+ private final String regex = "\\r\\n|\\r|\\n";
+ private boolean isAllChecked = false;
public ParamsStep3() {
super(paramsStep2);
add(new TextField<Integer>("swfZoom").setRequired(true).add(range(50, 600)));
add(new TextField<Integer>("swfJpegQuality").setRequired(true).add(range(1, 100)));
- add(new TextField<String>("swfPath"));
- add(new TextField<String>("imageMagicPath"));
- add(new TextField<String>("ffmpegPath"));
- add(new TextField<String>("soxPath"));
- add(new TextField<String>("officePath"));
+ add(swfPath = new TextField<String>("swfPath"));
+ add(new AjaxButton("validateSwf") {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ checkToolPath(swfPath, new String[] {InstallWizard.getPath(swfPath.getValue(), "pdf2swf" + GenerateSWF.execExt), "--version"});
+ target.add(getFeedbackPanel());
+ }
+ });
+ add(imageMagicPath = new TextField<String>("imageMagicPath"));
+ add(new AjaxButton("validateImageMagic") {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + GenerateSWF.execExt), "-version"});
+ target.add(getFeedbackPanel());
+ }
+ });
+ add(ffmpegPath = new TextField<String>("ffmpegPath"));
+ add(new AjaxButton("validateFfmpeg") {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + GenerateSWF.execExt), "-version"});
+ target.add(getFeedbackPanel());
+ }
+ });
+ add(soxPath = new TextField<String>("soxPath"));
+ add(new AjaxButton("validateSox") {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + GenerateSWF.execExt), "--version"});
+ target.add(getFeedbackPanel());
+ }
+ });
+ add(officePath = new TextField<String>("officePath"));
+ add(new AjaxButton("validateOffice") {
+ private static final long serialVersionUID = 1L;
+ @Override
+ protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
+ checkOfficePath();
+ target.add(getFeedbackPanel());
+ }
+ });
+ }
+
+ private boolean checkToolPath(TextField<String> path, String[] args) {
+ ConverterProcessResult result = ProcessHelper.executeScript(path.getInputName() + " path:: '" + path.getValue() + "'", args);
+ if (!result.isOk()) {
+ path.error(result.getError().replaceAll(regex, ""));
+ }
+ return result.isOk();
+ }
+
+ private boolean checkOfficePath() {
+ String err = "";
+ try {
+ DefaultOfficeManagerConfiguration configuration = new DefaultOfficeManagerConfiguration();
+ if (!Strings.isEmpty(officePath.getValue())) {
+ configuration.setOfficeHome(officePath.getValue());
+ }
+ OfficeManager officeManager = configuration.buildOfficeManager();
+ try {
+ officeManager.start();
+ } catch (OfficeException ex) {
+ err = ex.getMessage().replaceAll(regex, "");
+ } finally {
+ officeManager.stop();
+ }
+ } catch (Exception ex) {
+ err = ex.getMessage().replaceAll(regex, "");
+ }
+ if (!err.isEmpty()) {
+ officePath.error(err);
+ }
+ return err.isEmpty();
}
+ private boolean checkAllPath() {
+ boolean result = checkToolPath(swfPath, new String[] {InstallWizard.getPath(swfPath.getValue(), "pdf2swf" + GenerateSWF.execExt), "--version"});
+ result = checkToolPath(imageMagicPath, new String[] {InstallWizard.getPath(imageMagicPath.getValue(), "convert" + GenerateSWF.execExt), "-version"}) && result;
+ result = checkToolPath(ffmpegPath, new String[] {InstallWizard.getPath(ffmpegPath.getValue(), "ffmpeg" + GenerateSWF.execExt), "-version"}) && result;
+ result = checkToolPath(soxPath, new String[] {InstallWizard.getPath(soxPath.getValue(), "sox" + GenerateSWF.execExt), "--version"}) && result;
+ result = checkOfficePath() && result;
+ isAllChecked = true;
+ return result;
+ }
+
+
@Override
public boolean isLastStep() {
return false;
@@ -494,12 +599,17 @@ public class InstallWizard extends Abstr
@Override
public IDynamicWizardStep next() {
+ if (!isAllChecked) {
+ if (!checkAllPath()) {
+ return this;
+ }
+ }
return paramsStep4;
}
@Override
public boolean isLastAvailable() {
- return true;
+ return isAllChecked;
}
@Override
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css?rev=1771997&r1=1771996&r2=1771997&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/webapp/css/theme.css Wed Nov 30 07:17:10 2016
@@ -527,6 +527,14 @@ select.messages.selector {
font-style: italic;
white-space: normal;
}
+.info-title {
+ background-image: url(images/information.png);
+ background-repeat: no-repeat;
+ width: 16px;
+ height: 16px;
+ display: inline-block;
+ margin-left: 10px;
+}
.invisible-form-component {
position: absolute;
top: -9999px;