diff --git a/.travis.yml b/.travis.yml
index eebde54af4..09485abc45 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -28,9 +28,10 @@ services:
- postgresql
addons:
postgresql: "9.6"
- chrome: beta
apt:
packages:
+ - chromium-browser
+ - chromium-chromedriver
- ffmpeg
- libimage-exiftool-perl
- openjdk-8-jdk
@@ -51,10 +52,6 @@ before_install:
- sudo ln -s /usr/bin/ffplay /usr/bin/avplay
- sudo ln -s /usr/bin/ffprobe /usr/bin/avprobe
install:
- - curl -OL https://chromedriver.storage.googleapis.com/80.0.3987.16/chromedriver_linux64.zip
- - unzip chromedriver_linux64.zip
- - sudo apt-get purge google-chrome-stable # have to delete the stable version to force chromedriver to use the beta
- - echo `google-chrome --version`
# retrieve full git history for automatic versioning
- git fetch --unshallow
before_script:
@@ -65,6 +62,9 @@ before_script:
- which java javac
- java -version
- javac -version
+ # Diagnostics: Display browser versions
+ - google-chrome --version
+ - chromium-browser --version
stages:
- name: build and check
diff --git a/Source/Plugins/Core/com.equella.core/plugin-jpf.xml b/Source/Plugins/Core/com.equella.core/plugin-jpf.xml
index e01255265b..ac9654d141 100644
--- a/Source/Plugins/Core/com.equella.core/plugin-jpf.xml
+++ b/Source/Plugins/Core/com.equella.core/plugin-jpf.xml
@@ -4786,6 +4786,11 @@
+
+
+
+
+
diff --git a/Source/Plugins/Core/com.equella.core/scalasrc/com/tle/web/api/LegacyContentApi.scala b/Source/Plugins/Core/com.equella.core/scalasrc/com/tle/web/api/LegacyContentApi.scala
index 3b5dec5dca..93d20b1b70 100644
--- a/Source/Plugins/Core/com.equella.core/scalasrc/com/tle/web/api/LegacyContentApi.scala
+++ b/Source/Plugins/Core/com.equella.core/scalasrc/com/tle/web/api/LegacyContentApi.scala
@@ -63,8 +63,9 @@ import io.lemonlabs.uri.{Path => _, _}
import io.swagger.annotations.Api
import javax.servlet.http.{HttpServletRequest, HttpServletResponse}
import javax.ws.rs._
-import javax.ws.rs.core.Response.ResponseBuilder
+import javax.ws.rs.core.Response.{ResponseBuilder, Status}
import javax.ws.rs.core.{CacheControl, Context, Response, UriInfo}
+import org.slf4j.LoggerFactory
import scala.collection.JavaConverters._
import scala.collection.mutable
@@ -247,6 +248,7 @@ object LegacyContentController extends AbstractSectionsController with SectionFi
@Api("Legacy content")
@Path("content")
class LegacyContentApi {
+ val LOGGER = LoggerFactory.getLogger(classOf[LegacyContentApi])
def parsePath(path: String): (String, MutableSectionInfo => MutableSectionInfo) = {
@@ -623,7 +625,7 @@ class LegacyContentApi {
.map(bbr => SectionUtils.renderToString(context, bbr.getRenderable))
}
- def ajaxResponse(info: MutableSectionInfo, arc: AjaxRenderContext) = {
+ def ajaxResponse(info: MutableSectionInfo, arc: AjaxRenderContext): Response.ResponseBuilder = {
var resp: ResponseBuilder = null
val context = LegacyContentController.prepareJSContext(info)
@@ -656,6 +658,10 @@ class LegacyContentApi {
case tr: TemplateResult => tr.getNamedResult(context, "body")
case sr: SectionRenderable => sr
case pr: PreRenderable => new PreRenderOnly(pr)
+ //Due to many unknowns of what could cause renderedBody being null, return a 500 error at the moment.
+ case _ =>
+ LOGGER.debug("Unknown error at renderedBody - ajaxResponse");
+ return Response.status(Status.NOT_IMPLEMENTED);
}
renderAjaxBody(renderedBody)
val responseCallback = arc.getJSONResponseCallback
diff --git a/Source/Plugins/Core/com.equella.core/src/com/tle/core/favourites/service/FavouriteSearchServiceImpl.java b/Source/Plugins/Core/com.equella.core/src/com/tle/core/favourites/service/FavouriteSearchServiceImpl.java
index 7e01e80bab..33f7b0c617 100644
--- a/Source/Plugins/Core/com.equella.core/src/com/tle/core/favourites/service/FavouriteSearchServiceImpl.java
+++ b/Source/Plugins/Core/com.equella.core/src/com/tle/core/favourites/service/FavouriteSearchServiceImpl.java
@@ -18,6 +18,7 @@
package com.tle.core.favourites.service;
+import com.dytech.edge.web.WebConstants;
import com.tle.beans.Institution;
import com.tle.common.Check;
import com.tle.common.institution.CurrentInstitution;
@@ -37,6 +38,7 @@
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
+import org.apache.commons.lang.StringUtils;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.transaction.annotation.Transactional;
@@ -68,7 +70,23 @@ public void deleteById(long id) {
public void executeSearch(SectionInfo info, long id) {
FavouriteSearch search = dao.getById(id);
if (search != null) {
- SectionInfo forward = info.createForwardForUri(search.getUrl());
+ String url = search.getUrl();
+ // When user favourites a normal search, cloud search or hierarchy search,
+ // the value of 'url' starts with '/access' if the fav search is added in old oEQ versions,
+ // which results in "no tree for xxx" error. Hence, remove "/access" if it exists.
+ if (url != null
+ && url.startsWith(WebConstants.ACCESS_PATH)
+ && StringUtils.indexOfAny(
+ url,
+ new String[] {
+ WebConstants.SEARCHING_PAGE,
+ WebConstants.HIERARCHY_PAGE,
+ WebConstants.CLOUDSEARCH_PAGE
+ })
+ > -1) {
+ url = "/" + url.replaceFirst(WebConstants.ACCESS_PATH, "");
+ }
+ SectionInfo forward = info.createForwardForUri(url);
info.forwardAsBookmark(forward);
}
}
diff --git a/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/guice/TomcatModule.java b/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/guice/TomcatModule.java
index 80a9685c6a..3be19e90a7 100644
--- a/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/guice/TomcatModule.java
+++ b/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/guice/TomcatModule.java
@@ -28,6 +28,11 @@ protected void configure() {
bindInt("http.port", -1);
bindInt("https.port", -1);
bindInt("ajp.port", -1);
+ bindProp("ajp.address", "127.0.0.1");
+ // Makes sense for this to be in mandatory-config, but we have to provide a default, non-null
+ // value
+ bindProp("ajp.secret", "ignore");
+ bindBoolean("ajp.secret.required", true);
bindInt("tomcat.max.threads", -2);
install(new TomcatOptionalModule());
}
diff --git a/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/service/impl/TomcatServiceImpl.java b/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/service/impl/TomcatServiceImpl.java
index c352d1ad0b..a623d3c76d 100644
--- a/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/service/impl/TomcatServiceImpl.java
+++ b/Source/Plugins/Core/com.equella.core/src/com/tle/tomcat/service/impl/TomcatServiceImpl.java
@@ -83,6 +83,18 @@ public class TomcatServiceImpl implements TomcatService, StartupBean, TomcatRest
@Named("ajp.port")
private int ajpPort;
+ @Inject
+ @Named("ajp.address")
+ private String ajpAddress;
+
+ @Inject
+ @Named("ajp.secret")
+ private String ajpSecret;
+
+ @Inject
+ @Named("ajp.secret.required")
+ private boolean ajpSecretRequired;
+
@Inject
@Named("tomcat.max.threads")
private int maxThreads;
@@ -182,8 +194,13 @@ public void startup() {
if (ajpPort != -1) {
Connector connector = new Connector(useBio ? BIO_AJP : "AJP/1.3");
connector.setPort(ajpPort);
+ if (!ajpSecret.equals("ignore")) {
+ connector.setAttribute("secret", ajpSecret);
+ }
+ connector.setAttribute("secretRequired", ajpSecretRequired);
connector.setAttribute("tomcatAuthentication", false);
connector.setAttribute("packetSize", "65536");
+ connector.setAttribute("address", ajpAddress);
setConnector(connector);
}
diff --git a/Source/Plugins/Core/com.equella.core/src/com/tle/web/core/filter/SameSiteFilter.java b/Source/Plugins/Core/com.equella.core/src/com/tle/web/core/filter/SameSiteFilter.java
new file mode 100644
index 0000000000..9aad622649
--- /dev/null
+++ b/Source/Plugins/Core/com.equella.core/src/com/tle/web/core/filter/SameSiteFilter.java
@@ -0,0 +1,53 @@
+/*
+ * Licensed to The Apereo Foundation under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional
+ * information regarding copyright ownership.
+ *
+ * The Apereo Foundation licenses this file to you under the Apache License,
+ * Version 2.0, (the "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.tle.web.core.filter;
+
+import com.tle.core.guice.Bind;
+import com.tle.web.dispatcher.AbstractWebFilter;
+import com.tle.web.dispatcher.FilterResult;
+import java.io.IOException;
+import java.util.Collection;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.ws.rs.core.HttpHeaders;
+
+@Bind
+public class SameSiteFilter extends AbstractWebFilter {
+
+ @Override
+ public FilterResult filterRequest(HttpServletRequest request, HttpServletResponse response)
+ throws IOException, ServletException {
+ if (request.isSecure()) {
+ Collection headers = response.getHeaders(HttpHeaders.SET_COOKIE);
+ boolean firstHeader = true;
+ for (String header : headers) {
+ if (firstHeader) {
+ response.setHeader(
+ HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=None"));
+ firstHeader = false;
+ continue;
+ }
+ response.addHeader(
+ HttpHeaders.SET_COOKIE, String.format("%s; %s", header, "SameSite=None"));
+ }
+ }
+ return FilterResult.FILTER_CONTINUE;
+ }
+}
diff --git a/Source/Server/equellaserver/build.sbt b/Source/Server/equellaserver/build.sbt
index 7cedd4f738..f6a0038c97 100644
--- a/Source/Server/equellaserver/build.sbt
+++ b/Source/Server/equellaserver/build.sbt
@@ -17,7 +17,7 @@ unmanagedClasspath in Runtime += (baseDirectory in LocalProject("learningedge_co
val jacksonVersion = "2.9.9"
val axis2Version = "1.6.2"
-val TomcatVersion = "8.5.47"
+val TomcatVersion = "8.5.51"
val SwaggerVersion = "1.5.24"
val RestEasyVersion = "3.5.0.Final"
val simpledbaVersion = "0.1.9"
diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/ItemUnlock.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/ItemUnlock.java
index 269baea1aa..a69c1118a5 100644
--- a/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/ItemUnlock.java
+++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/ItemUnlock.java
@@ -9,16 +9,15 @@
import com.tle.webtests.pageobject.wizard.ContributePage;
import com.tle.webtests.pageobject.wizard.WizardPageTab;
import com.tle.webtests.pageobject.wizard.controls.UniversalControl;
-import com.tle.webtests.pageobject.wizard.controls.universal.YouTubeUniversalControlType;
+import com.tle.webtests.pageobject.wizard.controls.universal.UrlUniversalControlType;
import com.tle.webtests.test.AbstractCleanupTest;
import org.testng.annotations.Test;
@TestInstitution("fiveo")
public class ItemUnlock extends AbstractCleanupTest {
- private static final String RENAMED_NAME = "A Video";
- private static final String ORIGINAL_NAME =
- "What is a function? | Functions and their graphs | Algebra II | Khan Academy";
- private static final String DISPLAY_NAME = "Original Displayname";
+ private static final String RENAMED_NAME = "Google Renamed";
+ private static final String DISPLAY_NAME = "Google";
+ private final String LINK_ATTACHMENT_URL = "https://www.google.com";
@Test
public void unlockAndResumeItem() {
@@ -30,10 +29,10 @@ public void unlockAndResumeItem() {
new ContributePage(context).load().openWizard("Youtube Channel Testing Collection");
wizard.editbox(1, itemName);
UniversalControl control = wizard.universalControl(2);
- YouTubeUniversalControlType youtube =
- control.addDefaultResource(new YouTubeUniversalControlType(control));
- youtube.search("Functions and their graphs", "The Khan Academy").selectVideo(1, ORIGINAL_NAME);
- control.editResource(youtube.editPage(), ORIGINAL_NAME).setDisplayName(DISPLAY_NAME).save();
+
+ UrlUniversalControlType urlControl =
+ control.addDefaultResource(new UrlUniversalControlType(control));
+ urlControl.addUrl(LINK_ATTACHMENT_URL, DISPLAY_NAME);
SummaryPage item = wizard.save().publish();
assertTrue(item.attachments().attachmentExists(DISPLAY_NAME));
@@ -49,7 +48,7 @@ public void unlockAndResumeItem() {
control = wizard.universalControl(2);
control
- .editResource(new YouTubeUniversalControlType(control), DISPLAY_NAME)
+ .editResource(new UrlUniversalControlType(control), DISPLAY_NAME)
.setDisplayName(RENAMED_NAME)
.save();
diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/controls/MaxAttachmentsTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/controls/MaxAttachmentsTest.java
index 2fc05df984..e8e57a6325 100644
--- a/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/controls/MaxAttachmentsTest.java
+++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/contribute/controls/MaxAttachmentsTest.java
@@ -4,7 +4,7 @@
import com.tle.webtests.pageobject.wizard.ContributePage;
import com.tle.webtests.pageobject.wizard.WizardPageTab;
import com.tle.webtests.pageobject.wizard.controls.UniversalControl;
-import com.tle.webtests.pageobject.wizard.controls.universal.YouTubeUniversalControlType;
+import com.tle.webtests.pageobject.wizard.controls.universal.UrlUniversalControlType;
import com.tle.webtests.test.AbstractCleanupAutoTest;
import com.tle.webtests.test.files.Attachments;
import java.net.URL;
@@ -15,8 +15,8 @@
public class MaxAttachmentsTest extends AbstractCleanupAutoTest {
private static final String COLLECTION = "Max attachments restriction";
private final URL[] ATTACHMENTS = {Attachments.get("page.html"), Attachments.get("pageB.html")};
- private final String ORIGINAL_TITLE = "Peter Andre - Mysterious Girl (Official Music Video)";
- private final String YOUTUBE_TITLE = "good song";
+ private final String LINK_ATTACHMENT_URL = "https://www.google.com";
+ private final String LINK_ATTACHMENT_NAME = "Google";
@Test
public void maxFiles() {
@@ -25,19 +25,15 @@ public void maxFiles() {
wizard.editbox(1, fullName);
UniversalControl control = wizard.universalControl(2);
- YouTubeUniversalControlType youTubeControl =
- control.addResource(new YouTubeUniversalControlType(control));
- youTubeControl.search("mysterious girl peter andre", null).selectVideo(1, ORIGINAL_TITLE);
- control
- .editResource(youTubeControl.editPage(), ORIGINAL_TITLE)
- .setDisplayName(YOUTUBE_TITLE)
- .save();
+ UrlUniversalControlType urlControl = control.addResource(new UrlUniversalControlType(control));
+ urlControl.addUrl(LINK_ATTACHMENT_URL, LINK_ATTACHMENT_NAME);
+
wizard.addFiles(2, false, ATTACHMENTS);
wizard.save().finishInvalid(wizard);
Assert.assertEquals(
wizard.getErrorMessage(2),
"This control is restricted to a maximum of 2 attachments. Please remove 1 attachment(s).");
- control.deleteResource(YOUTUBE_TITLE);
+ control.deleteResource(LINK_ATTACHMENT_NAME);
wizard.save().publish();
}
}
diff --git a/autotest/OldTests/src/test/java/com/tle/webtests/test/viewing/ViewerTest.java b/autotest/OldTests/src/test/java/com/tle/webtests/test/viewing/ViewerTest.java
index f913adcacc..972f9fc7fb 100644
--- a/autotest/OldTests/src/test/java/com/tle/webtests/test/viewing/ViewerTest.java
+++ b/autotest/OldTests/src/test/java/com/tle/webtests/test/viewing/ViewerTest.java
@@ -84,7 +84,7 @@ public void testHtml5Player() {
public void testLTIViewer() {
SummaryPage summary = SearchPage.searchAndView(context, "lti viewer item");
LTIViewerPage lti =
- summary.attachments().viewAttachment("youtube tool", new LTIViewerPage(context));
+ summary.attachments().viewAttachment("Vimeo tool", new LTIViewerPage(context));
lti.searchYoutube("ghosts");
lti.embedYTResult(4);
}
diff --git a/autotest/Tests/src/test/scala/equellatests/tests/LoginNoticeMenuPropertiesSerial.scala b/autotest/Tests/src/test/scala/equellatests/tests/LoginNoticeMenuPropertiesSerial.scala
index 0d472e23a6..f353c6fcca 100644
--- a/autotest/Tests/src/test/scala/equellatests/tests/LoginNoticeMenuPropertiesSerial.scala
+++ b/autotest/Tests/src/test/scala/equellatests/tests/LoginNoticeMenuPropertiesSerial.scala
@@ -85,7 +85,7 @@ object LoginNoticeMenuPropertiesSerial extends ShotProperties("Login Notice Menu
withLogon(autoTestLogon) { context =>
val page = LoginNoticePage(context).load()
val equellaGithubAvatarURL =
- "https://raw.githubusercontent.com/equella/Equella/f22b0083767aab13f701777a3a2d85974b010780/autotest/Tests/tests/fiveo/institution/items/42/216490/cat1.jpg"
+ "https://raw.githubusercontent.com/openequella/openEQUELLA/develop/autotest/Tests/tests/fiveo/institution/items/42/216490/cat1.jpg"
page.setPreLoginNoticeWithImageURL(equellaGithubAvatarURL)
val page2 = LoginPage(context).load()
diff --git a/autotest/Tests/tests/asc/institution/itemdefinition/2/2406791c-0f71-4059-8e3e-2a3c529e23e1.xml b/autotest/Tests/tests/asc/institution/itemdefinition/2/2406791c-0f71-4059-8e3e-2a3c529e23e1.xml
index 30dae6538e..425ac5e18b 100644
--- a/autotest/Tests/tests/asc/institution/itemdefinition/2/2406791c-0f71-4059-8e3e-2a3c529e23e1.xml
+++ b/autotest/Tests/tests/asc/institution/itemdefinition/2/2406791c-0f71-4059-8e3e-2a3c529e23e1.xml
@@ -179,7 +179,7 @@
StoreJs
if (request.get('doit') == 'Create binary file')
{
- var connection = utils.getConnection("https://github.com/equella/Equella/blob/cfd7f9027de68635d73b60958079196bab165ead/Installer/resources/images/logo.gif?raw=true");
+ var connection = utils.getConnection("https://raw.githubusercontent.com/openequella/openEQUELLA/develop/Installer/resources/images/logo.gif?raw=true");
var response = connection.getResponse(true);
staging.writeBinaryFile("equellaLogo.gif ",response.getAsBinaryData());
}
@@ -350,4 +350,4 @@ if(request.get("doit") == 'Get File Details')
false
-
\ No newline at end of file
+
diff --git a/autotest/Tests/tests/asc/institution/itemdefinition/29/4f1739d7-dadf-4d97-8259-e224b9459f18.xml b/autotest/Tests/tests/asc/institution/itemdefinition/29/4f1739d7-dadf-4d97-8259-e224b9459f18.xml
index d23a18ef1b..773519aa56 100644
--- a/autotest/Tests/tests/asc/institution/itemdefinition/29/4f1739d7-dadf-4d97-8259-e224b9459f18.xml
+++ b/autotest/Tests/tests/asc/institution/itemdefinition/29/4f1739d7-dadf-4d97-8259-e224b9459f18.xml
@@ -143,7 +143,7 @@ if(request.get('doit') == 'Edit text file')
if (request.get('doit') == 'Create binary attachment')
{
- var response = utils.getConnection("https://github.com/equella/Equella/blob/cfd7f9027de68635d73b60958079196bab165ead/Installer/resources/images/logo.gif?raw=true").getResponse(true);
+ var response = utils.getConnection("https://raw.githubusercontent.com/openequella/openEQUELLA/develop/Installer/resources/images/logo.gif?raw=true").getResponse(true);
attachments.createBinaryFileAttachment("equellaLogo.gif ","EQUELLA Logo",response.getAsBinaryData());
attachments.addExistingFileAsAttachment("equellaLogo.gif ","EQUELLA Logo");
@@ -362,4 +362,4 @@ Contents:
false
-
\ No newline at end of file
+
diff --git a/autotest/Tests/tests/cal/institution/items/90/63706-extra/activations.xml b/autotest/Tests/tests/cal/institution/items/90/63706-extra/activations.xml
index 8932d8ee7f..b770727369 100644
--- a/autotest/Tests/tests/cal/institution/items/90/63706-extra/activations.xml
+++ b/autotest/Tests/tests/cal/institution/items/90/63706-extra/activations.xml
@@ -8,9 +8,9 @@
0
2009-04-16 15:49:02.687
- 2020-04-01 11:00:00.0
+ 2100-12-31 11:00:00.0
Harvard
, 'Part Two' in
-
\ No newline at end of file
+
diff --git a/autotest/Tests/tests/contribute/institution/items/2/217346.xml b/autotest/Tests/tests/contribute/institution/items/108/682604.xml
similarity index 81%
rename from autotest/Tests/tests/contribute/institution/items/2/217346.xml
rename to autotest/Tests/tests/contribute/institution/items/108/682604.xml
index 430705359b..d8ea5bad19 100644
--- a/autotest/Tests/tests/contribute/institution/items/2/217346.xml
+++ b/autotest/Tests/tests/contribute/institution/items/108/682604.xml
@@ -1,32 +1,28 @@
- 217346
+ 682604
2c5be16d-90ec-46ba-b137-724d595f838b
1
adfcaf58-241b-4eca-9740-6a26d1c3dd58
- 2015-05-18 10:49:14.041
+ 2020-03-17 16:13:10.392
2013-12-17 13:59:20.29
- 2015-05-18 10:49:14.041
+ 2020-03-17 16:13:10.392
-1.0
false
LIVE
- 217365
+ 682610
9b246ac5-1916-4ec7-8209-04e7e252479b
- youtube tool
+ Vimeo tool
lti
- https://www.edu-apps.org/tools/youtube/icon.png
+ https://www.edu-apps.org/assets/lti_public_resources/vimeo_icon.png
SHARED_SECRET
secret
-
- ICON_URL
- https://www.edu-apps.org/assets/lti_public_resources/youtube_icon.png
-
SHARE_EMAIL
true
@@ -35,17 +31,13 @@
CONSUMER_KEY
key
-
- CUSTOM_PARAMS
-
-
SHARE_NAME
true
LAUNCH_URL
- https://www.edu-apps.org/lti_public_resources/?tool_id=youtube
+ https://www.edu-apps.org/lti_public_resources/?tool_id=vimeo
EXTERNAL_TOOL_PROVIDER_UUID
@@ -60,7 +52,7 @@
- 217353
+ 682607
2013-12-17 13:59:20.28
2013-12-17 14:44:26.98
2013-12-17 13:59:20.28
@@ -72,7 +64,7 @@
- 217369
+ 682611
adfcaf58-241b-4eca-9740-6a26d1c3dd58
2013-12-17 13:59:20.28
false
@@ -80,7 +72,7 @@
DRAFT
- 217371
+ 682612
adfcaf58-241b-4eca-9740-6a26d1c3dd58
2013-12-17 13:59:20.28
false
@@ -88,7 +80,7 @@
DRAFT
- 217373
+ 682613
adfcaf58-241b-4eca-9740-6a26d1c3dd58
2013-12-17 13:59:20.28
false
@@ -96,7 +88,7 @@
LIVE
- 217374
+ 682614
adfcaf58-241b-4eca-9740-6a26d1c3dd58
2014-01-08 11:15:19.267
false
@@ -104,13 +96,21 @@
LIVE
- 217494
+ 682615
adfcaf58-241b-4eca-9740-6a26d1c3dd58
2015-05-18 10:49:14.041
false
edit
LIVE
+
+ 682721
+ TLE_ADMINISTRATOR
+ 2020-03-17 16:13:10.392
+ false
+ edit
+ LIVE
+
@@ -118,13 +118,13 @@
- 217355
+ 682608
- en_US
+ en_GB
- 217496
- en_US
+ 682722
+ en_GB
2
lti viewer item
@@ -132,10 +132,6 @@
-
- 217495
-
-
0
false
@@ -143,4 +139,4 @@
false
default
-
\ No newline at end of file
+
diff --git a/autotest/Tests/tests/contribute/institution/items/2/217346/_ITEM/item.xml b/autotest/Tests/tests/contribute/institution/items/108/682604/_ITEM/item.xml
similarity index 100%
rename from autotest/Tests/tests/contribute/institution/items/2/217346/_ITEM/item.xml
rename to autotest/Tests/tests/contribute/institution/items/108/682604/_ITEM/item.xml
diff --git a/autotest/Tests/tests/fiveo/institution/itemdefinition/0/f63c0eff-e9b9-4d60-a690-baa8638f051c.xml b/autotest/Tests/tests/fiveo/institution/itemdefinition/0/f63c0eff-e9b9-4d60-a690-baa8638f051c.xml
index 87eddd7531..4c8b1b68ea 100644
--- a/autotest/Tests/tests/fiveo/institution/itemdefinition/0/f63c0eff-e9b9-4d60-a690-baa8638f051c.xml
+++ b/autotest/Tests/tests/fiveo/institution/itemdefinition/0/f63c0eff-e9b9-4d60-a690-baa8638f051c.xml
@@ -1,16 +1,16 @@
- 215972
+ 679872
f63c0eff-e9b9-4d60-a690-baa8638f051c
adfcaf58-241b-4eca-9740-6a26d1c3dd58
- 2011-08-23 13:14:26.556
+ 2020-03-17 15:38:48.317
2011-08-23 13:14:26.556
- 215973
+ 679873
en
- 215974
+ 679874
en
1
This collection is for testing the youtube channel.
@@ -20,12 +20,12 @@
- 215975
+ 679875
en
- 215976
+ 679876
en
1
Youtube Channel Testing Collection
@@ -41,8 +41,9 @@
Wizard
-2147483648
- 215977
+ 679877
+
@@ -126,6 +127,14 @@
universal
+
+ EnableMaxFiles
+ false
+
+
+ AllowPreviews
+ false
+
AllowChannel
true
@@ -154,13 +163,21 @@
AttachmentTypes
- youTubeHandler
+ urlHandler
+
+ MaxFiles
+ 0
+
OptionAllowChannel
true
+
+ LINK_DUPLICATION_CHECK
+ false
+
OptionRestrictChannel
false
@@ -175,6 +192,12 @@
false
false
+
+ STRUCTURED
+ false
+ false
+ false
+
diff --git a/autotest/Tests/tests/fiveo/institution/itemdefinition/95/99c20331-4a92-4b87-b6b3-1366a5148370.xml b/autotest/Tests/tests/fiveo/institution/itemdefinition/95/99c20331-4a92-4b87-b6b3-1366a5148370.xml
index 856e362bb7..e827aafe8e 100644
--- a/autotest/Tests/tests/fiveo/institution/itemdefinition/95/99c20331-4a92-4b87-b6b3-1366a5148370.xml
+++ b/autotest/Tests/tests/fiveo/institution/itemdefinition/95/99c20331-4a92-4b87-b6b3-1366a5148370.xml
@@ -1,16 +1,16 @@
- 215996
+ 678574
99c20331-4a92-4b87-b6b3-1366a5148370
TLE_ADMINISTRATOR
- 2015-03-20 10:08:41.852
+ 2020-03-17 15:17:51.464
2015-03-20 10:08:41.852
- 215997
+ 678575
en
- 215998
+ 678576
en
1
Max attachments restriction
@@ -26,7 +26,7 @@
Basic
-2147483648
- 215999
+ 678577
@@ -116,14 +116,26 @@
EnableMaxFiles
true
+
+ FILE_SCORM_PACKAGE
+ false
+
FILE_NOUNZIP
false
+
+ FILE_MAXFILESIZE
+ 0
+
YoutubeChannels
+
+ FILE_RESTRICTSIZE
+ false
+
FILE_QTI_PACKAGE
false
@@ -132,13 +144,21 @@
AttachmentTypes
fileHandler
- youTubeHandler
+ urlHandler
+
+ LINK_DUPLICATION_CHECK
+ false
+
OptionRestrictChannel
false
+
+ FILE_DUPLICATION_CHECK
+ false
+
AllowPreviews
false
diff --git a/autotest/travis.conf b/autotest/travis.conf
index 948020c5d3..7a9a8614e8 100644
--- a/autotest/travis.conf
+++ b/autotest/travis.conf
@@ -2,7 +2,8 @@ server.url = "http://localhost:8080/"
server.password = autotestpassword
webdriver.chrome {
- driver = ${TRAVIS_BUILD_DIR}"/chromedriver"
+ driver = "/usr/lib/chromium-browser/chromedriver"
+ bin = "/usr/bin/chromium-browser"
headless = true
}
diff --git a/build.sbt b/build.sbt
index 8b5fca989d..103bd9452f 100644
--- a/build.sbt
+++ b/build.sbt
@@ -116,7 +116,7 @@ name := "Equella"
equellaMajor in ThisBuild := 2019
equellaMinor in ThisBuild := 2
-equellaPatch in ThisBuild := 1
+equellaPatch in ThisBuild := 2
equellaStream in ThisBuild := "Stable"
equellaBuild in ThisBuild := buildConfig.value.getString("build.buildname")