You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2019/06/11 00:59:01 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2077] group CSS
is being applied to the room
This is an automated email from the ASF dual-hosted git repository.
solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push:
new ea95728 [OPENMEETINGS-2077] group CSS is being applied to the room
ea95728 is described below
commit ea9572899e1bfb29f162e33dd0711a3d93765643
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Jun 11 07:57:44 2019 +0700
[OPENMEETINGS-2077] group CSS is being applied to the room
---
.../org/apache/openmeetings/util/OmFileHelper.java | 6 ++
.../apache/openmeetings/web/app/Application.java | 2 +
.../web/room/GroupCustomCssResourceReference.java | 80 ++++++++++++++++++++++
.../apache/openmeetings/web/room/RoomPanel.html | 1 +
.../apache/openmeetings/web/room/RoomPanel.java | 12 ++++
.../web/room/RoomResourceReference.java | 4 +-
6 files changed, 103 insertions(+), 2 deletions(-)
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
index 34d9b69..efbf14a 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileHelper.java
@@ -68,6 +68,7 @@ public class OmFileHelper {
public static final String DB_PERSISTENCE_NAME = "classes/META-INF/%s_persistence.xml";
public static final String PROFILES_PREFIX = "profile_";
public static final String GROUP_LOGO_PREFIX = "logo";
+ public static final String GROUP_CSS_PREFIX = "customcss";
public static final String LANG_FILE_NAME = "languages.xml";
public static final String LIBRARY_FILE_NAME = "library.xml";
public static final String PROFILE_IMG_NAME = "profile.png";
@@ -154,6 +155,11 @@ public class OmFileHelper {
return logo;
}
+ public static File getGroupCss(Long groupId) {
+ File css = new File(getGroupLogoDir(), String.format("%s%s.css", GROUP_CSS_PREFIX, groupId));
+ return groupId == null || !css.exists() ? null : css;
+ }
+
public static File getDefaultProfilePicture() {
return new File(getImagesDir(), PROFILE_IMG_NAME);
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
index 92ae4f6..565f48a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
@@ -79,6 +79,7 @@ import org.apache.openmeetings.web.pages.PrivacyPage;
import org.apache.openmeetings.web.pages.ResetPage;
import org.apache.openmeetings.web.pages.auth.SignInPage;
import org.apache.openmeetings.web.pages.install.InstallWizardPage;
+import org.apache.openmeetings.web.room.GroupCustomCssResourceReference;
import org.apache.openmeetings.web.room.RoomPreviewResourceReference;
import org.apache.openmeetings.web.room.RoomResourceReference;
import org.apache.openmeetings.web.room.wb.WbWebSocketHelper;
@@ -288,6 +289,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica
mountResource("/room/preview/${id}", new RoomPreviewResourceReference());
mountResource("/profile/${id}", new ProfileImageResourceReference());
mountResource("/group/${id}", new GroupLogoResourceReference());
+ mountResource("/group/customcss/${id}", new GroupCustomCssResourceReference());
log.debug("Application::init");
try {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java
new file mode 100644
index 0000000..37dd6af
--- /dev/null
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/GroupCustomCssResourceReference.java
@@ -0,0 +1,80 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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 org.apache.openmeetings.web.room;
+
+import static org.apache.openmeetings.util.OmFileHelper.getGroupCss;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
+import org.apache.wicket.resource.FileSystemResourceReference;
+import org.apache.wicket.util.string.StringValue;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class GroupCustomCssResourceReference extends FileSystemResourceReference {
+ private static final long serialVersionUID = 1L;
+ private static final String DEFAULT_NAME = "group-custom-css";
+ private static final Logger log = LoggerFactory.getLogger(GroupCustomCssResourceReference.class);
+
+ public GroupCustomCssResourceReference() {
+ super(DEFAULT_NAME);
+ }
+
+ public GroupCustomCssResourceReference(String name) {
+ super(name);
+ }
+
+ @Override
+ public IResource getResource() {
+ return new FileSystemResource() {
+ private static final long serialVersionUID = 1L;
+ private File file;
+
+ @Override
+ protected String getMimeType() throws IOException {
+ return "text/css";
+ }
+
+ @Override
+ protected ResourceResponse newResourceResponse(Attributes attr) {
+ PageParameters params = attr.getParameters();
+ StringValue idStr = params.get("id");
+ Long id = null;
+ try {
+ id = idStr.toOptionalLong();
+ } catch (NumberFormatException e) {
+ //no-op expected
+ }
+ file = getGroupCss(id);
+ if (file != null) {
+ ResourceResponse rr = createResourceResponse(attr, file.toPath());
+ rr.setFileName(file.getName());
+ return rr;
+ } else {
+ log.debug("Custom CSS was not found was found");
+ return null;
+ }
+ }
+ };
+ }
+}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
index fd199e0..b0ce636 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.html
@@ -131,5 +131,6 @@
<wicket:message key="video.permission.text"/>
</div>
</div>
+ <link rel="stylesheet" type="text/css" wicket:id="groupstyle"/>
</wicket:panel>
</html>
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 4796669..3948ca5 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -84,8 +84,11 @@ import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
import org.apache.wicket.markup.head.PriorityHeaderItem;
import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.repeater.RepeatingView;
import org.apache.wicket.protocol.ws.api.BaseWebSocketBehavior;
import org.apache.wicket.protocol.ws.api.event.WebSocketPushPayload;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.request.resource.ResourceStreamResource;
import org.apache.wicket.spring.injection.annot.SpringBean;
@@ -395,10 +398,19 @@ public class RoomPanel extends BasePanel {
} else {
add(new WebMarkupContainer("wait-for-recording").setVisible(false));
}
+ RepeatingView groupstyles = new RepeatingView("groupstyle");
+ add(groupstyles.setVisible(room.isVisible() && !r.getGroups().isEmpty()));
if (room.isVisible()) {
add(new NicknameDialog("nickname", this));
add(download);
add(new BaseWebSocketBehavior("media"));
+ for (RoomGroup rg : r.getGroups()) {
+ WebMarkupContainer groupstyle = new WebMarkupContainer(groupstyles.newChildId());
+ groupstyle.add(AttributeModifier.append("href"
+ , (String)RequestCycle.get().urlFor(new GroupCustomCssResourceReference(), new PageParameters().add("id", rg.getGroup().getId()))
+ ));
+ groupstyles.add(groupstyle);
+ }
} else {
add(new WebMarkupContainer("nickname").setVisible(false));
}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
index 2ff5d90..2d73204 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
@@ -94,11 +94,11 @@ public class RoomResourceReference extends FileItemResourceReference<FileItem> {
@Override
protected FileItem getFileItem(Attributes attr) {
PageParameters params = attr.getParameters();
- StringValue _id = params.get("id");
+ StringValue idStr = params.get("id");
String uid = params.get("uid").toString();
Long id = null;
try {
- id = _id.toOptionalLong();
+ id = idStr.toOptionalLong();
} catch (NumberFormatException e) {
//no-op expected
}