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 2017/05/18 05:36:15 UTC
[08/26] openmeetings git commit: Normalize all the line endings
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
index aa234b5..7484e44 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomForm.java
@@ -1,412 +1,412 @@
-/*
- * 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.admin.rooms;
-
-import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getSid;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.dao.server.ISessionManager;
-import org.apache.openmeetings.db.dao.user.GroupDao;
-import org.apache.openmeetings.db.dao.user.IUserService;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.room.Client;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.db.entity.room.Room.RoomElement;
-import org.apache.openmeetings.db.entity.room.RoomGroup;
-import org.apache.openmeetings.db.entity.room.RoomModerator;
-import org.apache.openmeetings.db.entity.user.Address;
-import org.apache.openmeetings.db.entity.user.Group;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
-import org.apache.openmeetings.web.util.RoomTypeDropDown;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.markup.html.list.ListItem;
-import org.apache.wicket.markup.html.list.ListView;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.model.PropertyModel;
-import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.time.Duration;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
-import org.wicketstuff.select2.Select2Choice;
-import org.wicketstuff.select2.Select2MultiChoice;
-
-public class RoomForm extends AdminBaseForm<Room> {
- private static final long serialVersionUID = 1L;
- private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
- 100L, 150L, 200L, 500L, 1000L);
- private final WebMarkupContainer roomList;
- private final TextField<String> pin = new TextField<>("pin");
- private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
- private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
- private final ListView<Client> clients = new ListView<Client>("clients", new ArrayList<>()) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final ListItem<Client> item) {
- Client client = item.getModelObject();
- item.add(new Label("clientId", "" + client.getId()))
- .add(new Label("clientLogin", "" + client.getUsername()))
- .add(new ConfirmableAjaxBorder("clientDelete", getString("80"), getString("833")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- Client c = item.getModelObject();
- getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
- , c.getServer() == null ? 0 : c.getServer().getId());
-
- updateClients(target);
- }
- });
- }
- };
- private IModel<User> moderator2add = Model.of((User)null);
-
- public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
- super(id, new CompoundPropertyModel<>(room));
- this.roomList = roomList;
- setOutputMarkupId(true);
- }
-
- @Override
- protected void onInitialize() {
- super.onInitialize();
- RequiredTextField<String> name = new RequiredTextField<>("name");
- name.setLabel(new Model<>(Application.getString(193)));
- add(name);
-
- add(new DropDownChoice<>("numberOfPartizipants", //
- DROPDOWN_NUMBER_OF_PARTICIPANTS, //
- new ChoiceRenderer<Long>() {
- private static final long serialVersionUID = 1L;
- @Override
- public Object getDisplayValue(Long id) {
- return id;
- }
- @Override
- public String getIdValue(Long id, int index) {
- return "" + id;
- }
- }));
-
- add(new RoomTypeDropDown("type").setRequired(true).setLabel(Model.of(Application.getString(194))));
-
- add(new TextArea<String>("comment"));
-
- boolean isGroupAdmin = hasGroupAdminLevel(getRights());
- add(new CheckBox("appointment").setEnabled(false));
- add(new CheckBox("ispublic").setEnabled(!isGroupAdmin));
-
- List<Group> orgList = isGroupAdmin
- ? getBean(GroupDao.class).get(null, getUserId(), 0, Integer.MAX_VALUE, null)
- : getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
- final List<RoomGroup> orgRooms = new ArrayList<>(orgList.size());
- for (Group org : orgList) {
- orgRooms.add(new RoomGroup(org, getModelObject()));
- }
- add(new Select2MultiChoice<>("roomGroups", null, new ChoiceProvider<RoomGroup>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(RoomGroup choice) {
- String name = choice.getGroup().getName();
- return name == null ? "" : name;
- }
-
- @Override
- public String getIdValue(RoomGroup choice) {
- Long id = choice.getGroup().getId();
- return id == null ? null : "" + id;
- }
-
- @Override
- public void query(String term, int page, Response<RoomGroup> response) {
- for (RoomGroup or : orgRooms) {
- if (Strings.isEmpty(term) || or.getGroup().getName().contains(term)) {
- response.add(or);
- }
- }
- }
-
- @Override
- public Collection<RoomGroup> toChoices(Collection<String> _ids) {
- List<Long> ids = new ArrayList<>();
- for (String id : _ids) {
- ids.add(Long.valueOf(id));
- }
- List<RoomGroup> list = new ArrayList<>();
- for (Group o : getBean(GroupDao.class).get(ids)) {
- list.add(new RoomGroup(o, RoomForm.this.getModelObject()));
- }
- return list;
- }
- }).setLabel(Model.of(getString("828"))).setRequired(isGroupAdmin));
-
- add(new CheckBox("isDemoRoom"));
- TextField<Integer> demoTime = new TextField<>("demoTime");
- demoTime.setLabel(new Model<>(Application.getString(637)));
- add(demoTime);
- add(new CheckBox("allowUserQuestions"));
- add(new CheckBox("audioOnly"));
- add(new CheckBox("closed"));
- add(new TextField<String>("redirectURL"));
- add(new CheckBox("waitForRecording"));
- add(new CheckBox("allowRecording"));
- add(new CheckBox("chatModerated"));
-
- add(new Select2MultiChoice<>("hiddenElements", null, new ChoiceProvider<RoomElement>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(RoomElement choice) {
- return choice.name();
- }
-
- @Override
- public String getIdValue(RoomElement choice) {
- return choice.name();
- }
-
- @Override
- public void query(String term, int page, Response<RoomElement> response) {
- for (RoomElement r : RoomElement.values()) {
- if (Strings.isEmpty(term) || r.name().contains(term)) {
- response.add(r);
- }
- }
- }
-
- @Override
- public Collection<RoomElement> toChoices(Collection<String> ids) {
- Collection<RoomElement> rights = new ArrayList<>(ids.size());
- for (String id : ids) {
- rights.add(RoomElement.valueOf(id));
- }
- return rights;
- }
- }));
- add(new CheckBox("chatOpened"));
- add(new CheckBox("filesOpened"));
- add(new CheckBox("autoVideoSelect"));
-
- // Users in this Room
- add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
-
- // Moderators
- final Select2Choice<User> moderatorChoice = new Select2Choice<>("moderator2add", moderator2add, new AdminUserChoiceProvider() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public void query(String term, int page, Response<User> response) {
- response.addAll(getBean(UserDao.class).get(term, false, page * PAGE_SIZE, PAGE_SIZE));
- response.setHasMore(PAGE_SIZE == response.getResults().size());
- }
-
- @Override
- public String getDisplayValue(User choice) {
- Address a = choice.getAddress();
- return String.format("\"%s %s\" <%s>", choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
- }
- });
- add(moderatorChoice.add(new AjaxFormComponentUpdatingBehavior("change") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- Room r = RoomForm.this.getModelObject();
- User u = moderator2add.getObject();
- boolean found = false;
- if (u != null) {
- if (r.getModerators() == null) {
- r.setModerators(new ArrayList<RoomModerator>());
- }
- for (RoomModerator rm : r.getModerators()) {
- if (rm.getUser().getId().equals(u.getId())) {
- found = true;
- break;
- }
- }
- if (!found) {
- RoomModerator rm = new RoomModerator();
- rm.setRoomId(r.getId());
- rm.setUser(u);
- r.getModerators().add(0, rm);
- moderator2add.setObject(null);
- target.add(moderatorContainer, moderatorChoice);
- }
- }
- }
- }).setOutputMarkupId(true));
- add(moderatorContainer.add(new ListView<RoomModerator>("moderators") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final ListItem<RoomModerator> item) {
- RoomModerator moderator = item.getModelObject();
- Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
- if (moderator.getId() == null) {
- name.add(AttributeModifier.append("class", "newItem"));
- }
- item.add(new CheckBox("superModerator", new PropertyModel<Boolean>(moderator, "superModerator")))
- .add(new Label("userId", "" + moderator.getUser().getId()))
- .add(name)
- .add(new Label("email", moderator.getUser().getAddress().getEmail()))
- .add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onSubmit(AjaxRequestTarget target) {
- RoomForm.this.getModelObject().getModerators().remove(item.getIndex());
- target.add(moderatorContainer);
- }
- });
- }
- }).setOutputMarkupId(true));
-
- add(new CheckBox("moderated"));
-
- add(new TextField<String>("confno").setEnabled(false));
- add(pin);
- pin.setEnabled(getModelObject().isSipEnabled());
- add(new TextField<String>("ownerId").setEnabled(false));
- add(new AjaxCheckBox("sipEnabled") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- updateView(target);
- }
- }.setOutputMarkupId(true));
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- void updateClients(AjaxRequestTarget target) {
- long roomId = (getModelObject().getId() != null ? getModelObject().getId() : 0);
- final List<Client> clientsInRoom = getBean(ISessionManager.class).getClientListByRoom(roomId);
- clients.setDefaultModelObject(clientsInRoom);
- target.add(clientsContainer);
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- Room r = getModelObject();
- boolean newRoom = r.getId() == null;
- r = getBean(RoomDao.class).update(r, getUserId());
- if (newRoom) {
- for (RoomModerator rm : r.getModerators()) {
- rm.setRoomId(r.getId());
- }
- // FIXME double update
- getBean(RoomDao.class).update(getModelObject(), getUserId());
- }
- hideNewRecord();
- updateView(target);
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- setModelObject(new Room());
- updateView(target);
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- Room r = getModelObject();
- if (r.getId() != null) {
- r = getBean(RoomDao.class).get(r.getId());
- } else {
- r = new Room();
- }
- setModelObject(r);
- updateView(target);
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- getBean(RoomDao.class).delete(getModelObject(), getUserId());
- target.add(roomList);
- setModelObject(new Room());
- updateView(target);
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- public void updateView(AjaxRequestTarget target) {
- target.add(this);
- target.add(roomList);
- target.add(pin.setEnabled(getModelObject().isSipEnabled()));
- updateClients(target);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onDetach() {
- moderator2add.detach();
- super.onDetach();
- }
-}
+/*
+ * 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.admin.rooms;
+
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getSid;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.dao.server.ISessionManager;
+import org.apache.openmeetings.db.dao.user.GroupDao;
+import org.apache.openmeetings.db.dao.user.IUserService;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.room.Client;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.db.entity.room.RoomGroup;
+import org.apache.openmeetings.db.entity.room.RoomModerator;
+import org.apache.openmeetings.db.entity.user.Address;
+import org.apache.openmeetings.db.entity.user.Group;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.admin.AdminUserChoiceProvider;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
+import org.apache.openmeetings.web.util.RoomTypeDropDown;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.markup.html.form.AjaxCheckBox;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.markup.html.list.ListItem;
+import org.apache.wicket.markup.html.list.ListView;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2Choice;
+import org.wicketstuff.select2.Select2MultiChoice;
+
+public class RoomForm extends AdminBaseForm<Room> {
+ private static final long serialVersionUID = 1L;
+ private final static List<Long> DROPDOWN_NUMBER_OF_PARTICIPANTS = Arrays.asList(2L, 4L, 6L, 8L, 10L, 12L, 14L, 16L, 20L, 25L, 32L, 50L,
+ 100L, 150L, 200L, 500L, 1000L);
+ private final WebMarkupContainer roomList;
+ private final TextField<String> pin = new TextField<>("pin");
+ private final WebMarkupContainer moderatorContainer = new WebMarkupContainer("moderatorContainer");
+ private final WebMarkupContainer clientsContainer = new WebMarkupContainer("clientsContainer");
+ private final ListView<Client> clients = new ListView<Client>("clients", new ArrayList<>()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final ListItem<Client> item) {
+ Client client = item.getModelObject();
+ item.add(new Label("clientId", "" + client.getId()))
+ .add(new Label("clientLogin", "" + client.getUsername()))
+ .add(new ConfirmableAjaxBorder("clientDelete", getString("80"), getString("833")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ Client c = item.getModelObject();
+ getBean(IUserService.class).kickUserByStreamId(getSid(), c.getStreamid()
+ , c.getServer() == null ? 0 : c.getServer().getId());
+
+ updateClients(target);
+ }
+ });
+ }
+ };
+ private IModel<User> moderator2add = Model.of((User)null);
+
+ public RoomForm(String id, WebMarkupContainer roomList, final Room room) {
+ super(id, new CompoundPropertyModel<>(room));
+ this.roomList = roomList;
+ setOutputMarkupId(true);
+ }
+
+ @Override
+ protected void onInitialize() {
+ super.onInitialize();
+ RequiredTextField<String> name = new RequiredTextField<>("name");
+ name.setLabel(new Model<>(Application.getString(193)));
+ add(name);
+
+ add(new DropDownChoice<>("numberOfPartizipants", //
+ DROPDOWN_NUMBER_OF_PARTICIPANTS, //
+ new ChoiceRenderer<Long>() {
+ private static final long serialVersionUID = 1L;
+ @Override
+ public Object getDisplayValue(Long id) {
+ return id;
+ }
+ @Override
+ public String getIdValue(Long id, int index) {
+ return "" + id;
+ }
+ }));
+
+ add(new RoomTypeDropDown("type").setRequired(true).setLabel(Model.of(Application.getString(194))));
+
+ add(new TextArea<String>("comment"));
+
+ boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+ add(new CheckBox("appointment").setEnabled(false));
+ add(new CheckBox("ispublic").setEnabled(!isGroupAdmin));
+
+ List<Group> orgList = isGroupAdmin
+ ? getBean(GroupDao.class).get(null, getUserId(), 0, Integer.MAX_VALUE, null)
+ : getBean(GroupDao.class).get(0, Integer.MAX_VALUE);
+ final List<RoomGroup> orgRooms = new ArrayList<>(orgList.size());
+ for (Group org : orgList) {
+ orgRooms.add(new RoomGroup(org, getModelObject()));
+ }
+ add(new Select2MultiChoice<>("roomGroups", null, new ChoiceProvider<RoomGroup>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(RoomGroup choice) {
+ String name = choice.getGroup().getName();
+ return name == null ? "" : name;
+ }
+
+ @Override
+ public String getIdValue(RoomGroup choice) {
+ Long id = choice.getGroup().getId();
+ return id == null ? null : "" + id;
+ }
+
+ @Override
+ public void query(String term, int page, Response<RoomGroup> response) {
+ for (RoomGroup or : orgRooms) {
+ if (Strings.isEmpty(term) || or.getGroup().getName().contains(term)) {
+ response.add(or);
+ }
+ }
+ }
+
+ @Override
+ public Collection<RoomGroup> toChoices(Collection<String> _ids) {
+ List<Long> ids = new ArrayList<>();
+ for (String id : _ids) {
+ ids.add(Long.valueOf(id));
+ }
+ List<RoomGroup> list = new ArrayList<>();
+ for (Group o : getBean(GroupDao.class).get(ids)) {
+ list.add(new RoomGroup(o, RoomForm.this.getModelObject()));
+ }
+ return list;
+ }
+ }).setLabel(Model.of(getString("828"))).setRequired(isGroupAdmin));
+
+ add(new CheckBox("isDemoRoom"));
+ TextField<Integer> demoTime = new TextField<>("demoTime");
+ demoTime.setLabel(new Model<>(Application.getString(637)));
+ add(demoTime);
+ add(new CheckBox("allowUserQuestions"));
+ add(new CheckBox("audioOnly"));
+ add(new CheckBox("closed"));
+ add(new TextField<String>("redirectURL"));
+ add(new CheckBox("waitForRecording"));
+ add(new CheckBox("allowRecording"));
+ add(new CheckBox("chatModerated"));
+
+ add(new Select2MultiChoice<>("hiddenElements", null, new ChoiceProvider<RoomElement>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(RoomElement choice) {
+ return choice.name();
+ }
+
+ @Override
+ public String getIdValue(RoomElement choice) {
+ return choice.name();
+ }
+
+ @Override
+ public void query(String term, int page, Response<RoomElement> response) {
+ for (RoomElement r : RoomElement.values()) {
+ if (Strings.isEmpty(term) || r.name().contains(term)) {
+ response.add(r);
+ }
+ }
+ }
+
+ @Override
+ public Collection<RoomElement> toChoices(Collection<String> ids) {
+ Collection<RoomElement> rights = new ArrayList<>(ids.size());
+ for (String id : ids) {
+ rights.add(RoomElement.valueOf(id));
+ }
+ return rights;
+ }
+ }));
+ add(new CheckBox("chatOpened"));
+ add(new CheckBox("filesOpened"));
+ add(new CheckBox("autoVideoSelect"));
+
+ // Users in this Room
+ add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
+
+ // Moderators
+ final Select2Choice<User> moderatorChoice = new Select2Choice<>("moderator2add", moderator2add, new AdminUserChoiceProvider() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void query(String term, int page, Response<User> response) {
+ response.addAll(getBean(UserDao.class).get(term, false, page * PAGE_SIZE, PAGE_SIZE));
+ response.setHasMore(PAGE_SIZE == response.getResults().size());
+ }
+
+ @Override
+ public String getDisplayValue(User choice) {
+ Address a = choice.getAddress();
+ return String.format("\"%s %s\" <%s>", choice.getFirstname(), choice.getLastname(), a == null ? "" : a.getEmail());
+ }
+ });
+ add(moderatorChoice.add(new AjaxFormComponentUpdatingBehavior("change") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ Room r = RoomForm.this.getModelObject();
+ User u = moderator2add.getObject();
+ boolean found = false;
+ if (u != null) {
+ if (r.getModerators() == null) {
+ r.setModerators(new ArrayList<RoomModerator>());
+ }
+ for (RoomModerator rm : r.getModerators()) {
+ if (rm.getUser().getId().equals(u.getId())) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ RoomModerator rm = new RoomModerator();
+ rm.setRoomId(r.getId());
+ rm.setUser(u);
+ r.getModerators().add(0, rm);
+ moderator2add.setObject(null);
+ target.add(moderatorContainer, moderatorChoice);
+ }
+ }
+ }
+ }).setOutputMarkupId(true));
+ add(moderatorContainer.add(new ListView<RoomModerator>("moderators") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final ListItem<RoomModerator> item) {
+ RoomModerator moderator = item.getModelObject();
+ Label name = new Label("uName", moderator.getUser().getFirstname() + " " + moderator.getUser().getLastname());
+ if (moderator.getId() == null) {
+ name.add(AttributeModifier.append("class", "newItem"));
+ }
+ item.add(new CheckBox("superModerator", new PropertyModel<Boolean>(moderator, "superModerator")))
+ .add(new Label("userId", "" + moderator.getUser().getId()))
+ .add(name)
+ .add(new Label("email", moderator.getUser().getAddress().getEmail()))
+ .add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
+ RoomForm.this.getModelObject().getModerators().remove(item.getIndex());
+ target.add(moderatorContainer);
+ }
+ });
+ }
+ }).setOutputMarkupId(true));
+
+ add(new CheckBox("moderated"));
+
+ add(new TextField<String>("confno").setEnabled(false));
+ add(pin);
+ pin.setEnabled(getModelObject().isSipEnabled());
+ add(new TextField<String>("ownerId").setEnabled(false));
+ add(new AjaxCheckBox("sipEnabled") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ updateView(target);
+ }
+ }.setOutputMarkupId(true));
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ void updateClients(AjaxRequestTarget target) {
+ long roomId = (getModelObject().getId() != null ? getModelObject().getId() : 0);
+ final List<Client> clientsInRoom = getBean(ISessionManager.class).getClientListByRoom(roomId);
+ clients.setDefaultModelObject(clientsInRoom);
+ target.add(clientsContainer);
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ Room r = getModelObject();
+ boolean newRoom = r.getId() == null;
+ r = getBean(RoomDao.class).update(r, getUserId());
+ if (newRoom) {
+ for (RoomModerator rm : r.getModerators()) {
+ rm.setRoomId(r.getId());
+ }
+ // FIXME double update
+ getBean(RoomDao.class).update(getModelObject(), getUserId());
+ }
+ hideNewRecord();
+ updateView(target);
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ setModelObject(new Room());
+ updateView(target);
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ Room r = getModelObject();
+ if (r.getId() != null) {
+ r = getBean(RoomDao.class).get(r.getId());
+ } else {
+ r = new Room();
+ }
+ setModelObject(r);
+ updateView(target);
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ getBean(RoomDao.class).delete(getModelObject(), getUserId());
+ target.add(roomList);
+ setModelObject(new Room());
+ updateView(target);
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ public void updateView(AjaxRequestTarget target) {
+ target.add(this);
+ target.add(roomList);
+ target.add(pin.setEnabled(getModelObject().isSipEnabled()));
+ updateClients(target);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onDetach() {
+ moderator2add.detach();
+ super.onDetach();
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
index 0fa1f60..761b34e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/rooms/RoomsPanel.java
@@ -1,91 +1,91 @@
-/*
- * 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.admin.rooms;
-
-import static org.apache.openmeetings.web.app.Application.getBean;
-
-import org.apache.openmeetings.db.dao.room.RoomDao;
-import org.apache.openmeetings.db.entity.room.Room;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-@AuthorizeInstantiation({"Admin", "GroupAdmin"})
-public class RoomsPanel extends AdminPanel {
- private static final long serialVersionUID = -1L;
- final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
- private RoomForm form;
-
- public RoomsPanel(String id) {
- super(id);
- SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableGroupAdminDataProvider<>(RoomDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final Item<Room> item) {
- Room room = item.getModelObject();
- final Long roomId = room.getId();
- item.add(new Label("id"));
- item.add(new Label("name"));
- item.add(new Label("ispublic"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.hideNewRecord();
- form.setModelObject(getBean(RoomDao.class).get(roomId));
- form.updateView(target);
- target.add(form, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.replace("class", getRowClass(room.getId(), form.getModelObject().getId())));
- }
- };
-
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = -1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<Room> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByName", "name", container))
- .addLink(new OmOrderByBorder<>("orderByPublic", "ispublic", container));
- add(container.getLinks());
- add(navigator);
-
- add(form = new RoomForm("form", listContainer, new Room()));
- }
-}
+/*
+ * 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.admin.rooms;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+
+import org.apache.openmeetings.db.dao.room.RoomDao;
+import org.apache.openmeetings.db.entity.room.Room;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableGroupAdminDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.authroles.authorization.strategies.role.annotations.AuthorizeInstantiation;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+@AuthorizeInstantiation({"Admin", "GroupAdmin"})
+public class RoomsPanel extends AdminPanel {
+ private static final long serialVersionUID = -1L;
+ final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+ private RoomForm form;
+
+ public RoomsPanel(String id) {
+ super(id);
+ SearchableDataView<Room> dataView = new SearchableDataView<Room>("roomList", new SearchableGroupAdminDataProvider<>(RoomDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final Item<Room> item) {
+ Room room = item.getModelObject();
+ final Long roomId = room.getId();
+ item.add(new Label("id"));
+ item.add(new Label("name"));
+ item.add(new Label("ispublic"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.hideNewRecord();
+ form.setModelObject(getBean(RoomDao.class).get(roomId));
+ form.updateView(target);
+ target.add(form, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.replace("class", getRowClass(room.getId(), form.getModelObject().getId())));
+ }
+ };
+
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = -1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<Room> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByName", "name", container))
+ .addLink(new OmOrderByBorder<>("orderByPublic", "ispublic", container));
+ add(container.getLinks());
+ add(navigator);
+
+ add(form = new RoomForm("form", listContainer, new Room()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
index e93a4a2..c40315e 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
@@ -1,140 +1,140 @@
-/*
- * 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.admin.servers;
-
-import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
-import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
-
-import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.app.WebSession;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.form.TextArea;
-import org.apache.wicket.markup.html.form.TextField;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.time.Duration;
-
-/**
- * Form component to insert/update/delete {@link Server}
- *
- * @author swagner
- *
- */
-public class ServerForm extends AdminBaseForm<Server> {
- private final WebMarkupContainer listContainer;
- private static final long serialVersionUID = 1L;
-
- public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
- super(id, new CompoundPropertyModel<>(server));
- setOutputMarkupId(true);
- this.listContainer = listContainer;
-
- add(new RequiredTextField<String>("name").setLabel(Model.of(Application.getString(1500))));
- add(new CheckBox("active"));
- add(new RequiredTextField<String>("address").setLabel(Model.of(Application.getString(1501))));
- add(new TextField<Integer>("port"));
- add(new TextField<String>("user"));
- add(new TextField<String>("pass"));
- add(new TextField<String>("webapp"));
- add(new TextField<String>("protocol"));
- add(forDatePattern("lastPing", WEB_DATE_PATTERN));
- //add(new Label("pingRunning"));
- add(forDatePattern("inserted", WEB_DATE_PATTERN));
- add(new Label("insertedby.login"));
- add(forDatePattern("updated", WEB_DATE_PATTERN));
- add(new Label("updatedby.login"));
- add(new TextArea<String>("comment"));
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
- Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
- setModelObject(server);
- hideNewRecord();
- target.add(this);
- target.add(listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- Server s = new Server();
- s.setWebapp("openmeetings");
- s.setProtocol("http");
- setModelObject(s);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- Server server = getModelObject();
- if (server.getId() != null) {
- server = Application.getBean(ServerDao.class).get(server.getId());
- } else {
- server = new Server();
- }
- setModelObject(server);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
- this.setModelObject(new Server());
- target.add(listContainer);
- target.add(this);
- target.appendJavaScript("adminPanelInit();");
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-}
+/*
+ * 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.admin.servers;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.form.TextArea;
+import org.apache.wicket.markup.html.form.TextField;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.time.Duration;
+
+/**
+ * Form component to insert/update/delete {@link Server}
+ *
+ * @author swagner
+ *
+ */
+public class ServerForm extends AdminBaseForm<Server> {
+ private final WebMarkupContainer listContainer;
+ private static final long serialVersionUID = 1L;
+
+ public ServerForm(String id, WebMarkupContainer listContainer, final Server server) {
+ super(id, new CompoundPropertyModel<>(server));
+ setOutputMarkupId(true);
+ this.listContainer = listContainer;
+
+ add(new RequiredTextField<String>("name").setLabel(Model.of(Application.getString(1500))));
+ add(new CheckBox("active"));
+ add(new RequiredTextField<String>("address").setLabel(Model.of(Application.getString(1501))));
+ add(new TextField<Integer>("port"));
+ add(new TextField<String>("user"));
+ add(new TextField<String>("pass"));
+ add(new TextField<String>("webapp"));
+ add(new TextField<String>("protocol"));
+ add(forDatePattern("lastPing", WEB_DATE_PATTERN));
+ //add(new Label("pingRunning"));
+ add(forDatePattern("inserted", WEB_DATE_PATTERN));
+ add(new Label("insertedby.login"));
+ add(forDatePattern("updated", WEB_DATE_PATTERN));
+ add(new Label("updatedby.login"));
+ add(new TextArea<String>("comment"));
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ Application.getBean(ServerDao.class).update(getModelObject(), WebSession.getUserId());
+ Server server = Application.getBean(ServerDao.class).get(getModelObject().getId());
+ setModelObject(server);
+ hideNewRecord();
+ target.add(this);
+ target.add(listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ Server s = new Server();
+ s.setWebapp("openmeetings");
+ s.setProtocol("http");
+ setModelObject(s);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ Server server = getModelObject();
+ if (server.getId() != null) {
+ server = Application.getBean(ServerDao.class).get(server.getId());
+ } else {
+ server = new Server();
+ }
+ setModelObject(server);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ Application.getBean(ServerDao.class).delete(getModelObject(), WebSession.getUserId());
+ this.setModelObject(new Server());
+ target.add(listContainer);
+ target.add(this);
+ target.appendJavaScript("adminPanelInit();");
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
index b7889b3..1a60552 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServersPanel.java
@@ -1,95 +1,95 @@
-/*
- * 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.admin.servers;
-
-import org.apache.openmeetings.db.dao.server.ServerDao;
-import org.apache.openmeetings.db.entity.server.Server;
-import org.apache.openmeetings.web.admin.AdminPanel;
-import org.apache.openmeetings.web.admin.SearchableDataView;
-import org.apache.openmeetings.web.common.PagedEntityListPanel;
-import org.apache.openmeetings.web.data.DataViewContainer;
-import org.apache.openmeetings.web.data.OmOrderByBorder;
-import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.wicket.AttributeModifier;
-import org.apache.wicket.ajax.AjaxEventBehavior;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.repeater.Item;
-
-/**
- * Form component with list and form to manipulate {@link Server}
- *
- * @author swagner
- *
- */
-public class ServersPanel extends AdminPanel {
- private static final long serialVersionUID = 1L;
- final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
- private ServerForm form;
-
- public ServersPanel(String id) {
- super(id);
- SearchableDataView<Server> dataView = new SearchableDataView<Server>("serverList",
- new SearchableDataProvider<>(ServerDao.class)) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void populateItem(final Item<Server> item) {
- final Server server = item.getModelObject();
- item.add(new Label("id"));
- item.add(new Label("name"));
- item.add(new Label("address"));
- item.add(new AjaxEventBehavior("click") {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- form.setModelObject(server);
- form.hideNewRecord();
- target.add(form, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- });
- item.add(AttributeModifier.replace("class", getRowClass(server.getId(), form.getModelObject().getId())));
- }
- };
-
- add(listContainer.add(dataView).setOutputMarkupId(true));
- PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onEvent(AjaxRequestTarget target) {
- target.add(listContainer);
- }
- };
- DataViewContainer<Server> container = new DataViewContainer<>(listContainer, dataView, navigator);
- container.addLink(new OmOrderByBorder<>("orderById", "id", container))
- .addLink(new OmOrderByBorder<>("orderByName", "name", container))
- .addLink(new OmOrderByBorder<>("orderByAddress", "address", container));
- add(container.getLinks());
- add(navigator);
-
- form = new ServerForm("form", listContainer, new Server());
- form.showNewRecord();
- add(form);
-
- }
-}
+/*
+ * 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.admin.servers;
+
+import org.apache.openmeetings.db.dao.server.ServerDao;
+import org.apache.openmeetings.db.entity.server.Server;
+import org.apache.openmeetings.web.admin.AdminPanel;
+import org.apache.openmeetings.web.admin.SearchableDataView;
+import org.apache.openmeetings.web.common.PagedEntityListPanel;
+import org.apache.openmeetings.web.data.DataViewContainer;
+import org.apache.openmeetings.web.data.OmOrderByBorder;
+import org.apache.openmeetings.web.data.SearchableDataProvider;
+import org.apache.wicket.AttributeModifier;
+import org.apache.wicket.ajax.AjaxEventBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.repeater.Item;
+
+/**
+ * Form component with list and form to manipulate {@link Server}
+ *
+ * @author swagner
+ *
+ */
+public class ServersPanel extends AdminPanel {
+ private static final long serialVersionUID = 1L;
+ final WebMarkupContainer listContainer = new WebMarkupContainer("listContainer");
+ private ServerForm form;
+
+ public ServersPanel(String id) {
+ super(id);
+ SearchableDataView<Server> dataView = new SearchableDataView<Server>("serverList",
+ new SearchableDataProvider<>(ServerDao.class)) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void populateItem(final Item<Server> item) {
+ final Server server = item.getModelObject();
+ item.add(new Label("id"));
+ item.add(new Label("name"));
+ item.add(new Label("address"));
+ item.add(new AjaxEventBehavior("click") {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ form.setModelObject(server);
+ form.hideNewRecord();
+ target.add(form, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ });
+ item.add(AttributeModifier.replace("class", getRowClass(server.getId(), form.getModelObject().getId())));
+ }
+ };
+
+ add(listContainer.add(dataView).setOutputMarkupId(true));
+ PagedEntityListPanel navigator = new PagedEntityListPanel("navigator", dataView) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onEvent(AjaxRequestTarget target) {
+ target.add(listContainer);
+ }
+ };
+ DataViewContainer<Server> container = new DataViewContainer<>(listContainer, dataView, navigator);
+ container.addLink(new OmOrderByBorder<>("orderById", "id", container))
+ .addLink(new OmOrderByBorder<>("orderByName", "name", container))
+ .addLink(new OmOrderByBorder<>("orderByAddress", "address", container));
+ add(container.getLinks());
+ add(navigator);
+
+ form = new ServerForm("form", listContainer, new Server());
+ form.showNewRecord();
+ add(form);
+
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
index 30644c6..dadb391 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/users/UserForm.java
@@ -1,314 +1,314 @@
-/*
- * 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.admin.users;
-
-import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
-import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
-import static org.apache.openmeetings.web.app.Application.getBean;
-import static org.apache.openmeetings.web.app.WebSession.getRights;
-import static org.apache.openmeetings.web.app.WebSession.getUserId;
-import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
-import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
-import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
-import org.apache.openmeetings.db.dao.server.LdapConfigDao;
-import org.apache.openmeetings.db.dao.server.OAuth2Dao;
-import org.apache.openmeetings.db.dao.user.UserDao;
-import org.apache.openmeetings.db.entity.server.LdapConfig;
-import org.apache.openmeetings.db.entity.server.OAuthServer;
-import org.apache.openmeetings.db.entity.user.User;
-import org.apache.openmeetings.db.entity.user.User.Right;
-import org.apache.openmeetings.db.entity.user.User.Type;
-import org.apache.openmeetings.service.mail.EmailManager;
-import org.apache.openmeetings.web.admin.AdminBaseForm;
-import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.common.ComunityUserForm;
-import org.apache.openmeetings.web.common.GeneralUserForm;
-import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
-import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
-import org.apache.wicket.markup.html.WebMarkupContainer;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.form.CheckBox;
-import org.apache.wicket.markup.html.form.ChoiceRenderer;
-import org.apache.wicket.markup.html.form.DropDownChoice;
-import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.RequiredTextField;
-import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
-import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
-import org.apache.wicket.model.CompoundPropertyModel;
-import org.apache.wicket.model.Model;
-import org.apache.wicket.util.string.Strings;
-import org.apache.wicket.util.time.Duration;
-import org.red5.logging.Red5LoggerFactory;
-import org.slf4j.Logger;
-import org.wicketstuff.select2.ChoiceProvider;
-import org.wicketstuff.select2.Response;
-import org.wicketstuff.select2.Select2MultiChoice;
-
-import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
-
-/**
- * CRUD operations in form for {@link User}
- *
- * @author swagner
- *
- */
-public class UserForm extends AdminBaseForm<User> {
- private static final long serialVersionUID = 1L;
- private static final Logger log = Red5LoggerFactory.getLogger(UserForm.class, webAppRootKey);
- private final WebMarkupContainer listContainer;
- private final WebMarkupContainer domain = new WebMarkupContainer("domain");
- private GeneralUserForm generalForm;
- private final RequiredTextField<String> login = new RequiredTextField<>("login");
- private final MessageDialog warning;
- private final DropDownChoice<Long> domainId = new DropDownChoice<>("domainId");
-
- public UserForm(String id, WebMarkupContainer listContainer, final User user, MessageDialog warning) {
- super(id, new CompoundPropertyModel<>(user));
- setOutputMarkupId(true);
- this.listContainer = listContainer;
- this.warning = warning;
- // Add form fields
- addFormFields();
-
- // attach an ajax validation behavior to all form component's keydown
- // event and throttle it down to once per second
- add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
- }
-
- @Override
- protected void onModelChanged() {
- super.onModelChanged();
- generalForm.updateModelObject(getModelObject(), true);
- }
-
- @Override
- protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
- User u = getModelObject();
- try {
- boolean isNew = (u.getId() == null);
- boolean sendEmailAtRegister = (1 == getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", Integer.class, "0"));
- if (isNew && sendEmailAtRegister) {
- u.setActivatehash(UUID.randomUUID().toString());
- }
- u = getBean(UserDao.class).update(u, generalForm.getPasswordField().getConvertedInput(), getUserId());
- if (isNew && sendEmailAtRegister) {
- String sendMail = getBean(EmailManager.class).sendMail(login.getValue(), generalForm.getEmail(), u.getActivatehash(), false, null);
- if (!sendMail.equals("success")) {
- throw new Exception("Mail for new user is not sent");
- }
- }
- } catch (Exception e) {
- // FIXME update feedback with the error details
- log.error("[onSaveSubmit]: ", e);
- }
- setModelObject(u);
- hideNewRecord();
- target.add(this);
- target.add(listContainer);
- target.appendJavaScript("adminPanelInit();");
- if (u.getGroupUsers().isEmpty()) {
- warning.open(target);
- }
- }
-
- @Override
- protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
- UserDao userDao = getBean(UserDao.class);
- setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
- update(target);
- }
-
- @Override
- protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
- User user = getModelObject();
- if (user.getId() != null) {
- user = getBean(UserDao.class).get(user.getId());
- } else {
- user = getBean(UserDao.class).getNewUserInstance(null);
- }
- setModelObject(user);
- update(target);
- }
-
- @Override
- protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
- UserDao userDao = getBean(UserDao.class);
- userDao.delete(getModelObject(), getUserId());
- setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
- update(target);
- }
-
- /**
- * Add the fields to the form
- */
- private void addFormFields() {
- ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
- login.setLabel(Model.of(Application.getString(132)));
- add(login.add(minimumLength(getMinLoginLength(cfgDao))));
-
- add(generalForm = new GeneralUserForm("general", getModel(), true));
-
- add(new DropDownChoice<>("type", Arrays.asList(Type.values())).add(new OnChangeAjaxBehavior() {
- private static final long serialVersionUID = 1L;
-
- @Override
- protected void onUpdate(AjaxRequestTarget target) {
- updateDomain(target);
- }
- }));
- update(null);
- add(domain.add(domainId).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
- add(new Label("ownerId"));
- add(forDatePattern("inserted", WEB_DATE_PATTERN));
- add(forDatePattern("updated", WEB_DATE_PATTERN));
-
- add(new CheckBox("forceTimeZoneCheck"));
-
- add(new Select2MultiChoice<>("rights", null, new ChoiceProvider<Right>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public String getDisplayValue(Right choice) {
- return choice.name();
- }
-
- @Override
- public String getIdValue(Right choice) {
- return choice.name();
- }
-
- @Override
- public void query(String term, int page, Response<Right> response) {
- boolean isGroupAdmin = hasGroupAdminLevel(getRights());
- for (Right r : Right.values()) {
- if (Right.GroupAdmin == r) {
- continue;
- }
- if (isGroupAdmin && (Right.Admin == r || Right.Soap == r)) {
- continue;
- }
- if (Strings.isEmpty(term) || r.name().contains(term)) {
- response.add(r);
- }
- }
- }
-
- @Override
- public Collection<Right> toChoices(Collection<String> ids) {
- Collection<Right> rights = new ArrayList<>(ids.size());
- for (String id : ids) {
- rights.add(Right.valueOf(id));
- }
- return rights;
- }
- }));
- add(new ComunityUserForm("comunity", getModel()));
- }
-
- public void updateDomain(AjaxRequestTarget target) {
- User u = getModelObject();
- final Map<Long, String> values = new Hashtable<>();
- List<Long> ids = new ArrayList<>();
- if (u.getType() == Type.ldap) {
- for (LdapConfig c : getBean(LdapConfigDao.class).getActive()) {
- ids.add(c.getId());
- values.put(c.getId(), c.getName());
- }
- }
- if (u.getType() == Type.oauth) {
- for (OAuthServer s : getBean(OAuth2Dao.class).getActive()) {
- ids.add(s.getId());
- values.put(s.getId(), s.getName());
- }
- }
- domainId.setChoices(ids);
- domainId.setChoiceRenderer(new ChoiceRenderer<Long>() {
- private static final long serialVersionUID = 1L;
-
- @Override
- public Object getDisplayValue(Long object) {
- return values.get(object);
- }
-
- @Override
- public String getIdValue(Long object, int index) {
- return "" + object;
- }
- });
- domain.setVisible(u.getType() == Type.ldap || u.getType() == Type.oauth);
- if (target != null) {
- target.add(domain);
- }
- }
-
- public void update(AjaxRequestTarget target) {
- updateDomain(target);
- if (target != null) {
- target.add(this, listContainer);
- target.appendJavaScript("adminPanelInit();");
- }
- }
-
- @Override
- protected void onValidate() {
- User u = getModelObject();
- if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), u.getDomainId(), u.getId())) {
- error(getString("105"));
- }
- }
-
- @Override
- protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onNewError(AjaxRequestTarget target, Form<?> form) {
- //ignore validation errors
- onNewSubmit(target, form);
- }
-
- @Override
- protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
- // TODO Auto-generated method stub
- }
-
- @Override
- protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
- //ignore validation errors
- onDeleteSubmit(target, form);
- }
-
- @Override
- protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
- return new PanelMarkupSourcingStrategy(false);
- }
-}
+/*
+ * 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.admin.users;
+
+import static org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel;
+import static org.apache.openmeetings.db.util.UserHelper.getMinLoginLength;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.WEB_DATE_PATTERN;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getRights;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.datetime.markup.html.basic.DateLabel.forDatePattern;
+import static org.apache.wicket.validation.validator.StringValidator.minimumLength;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.dao.server.LdapConfigDao;
+import org.apache.openmeetings.db.dao.server.OAuth2Dao;
+import org.apache.openmeetings.db.dao.user.UserDao;
+import org.apache.openmeetings.db.entity.server.LdapConfig;
+import org.apache.openmeetings.db.entity.server.OAuthServer;
+import org.apache.openmeetings.db.entity.user.User;
+import org.apache.openmeetings.db.entity.user.User.Right;
+import org.apache.openmeetings.db.entity.user.User.Type;
+import org.apache.openmeetings.service.mail.EmailManager;
+import org.apache.openmeetings.web.admin.AdminBaseForm;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.common.ComunityUserForm;
+import org.apache.openmeetings.web.common.GeneralUserForm;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormValidatingBehavior;
+import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
+import org.apache.wicket.markup.html.WebMarkupContainer;
+import org.apache.wicket.markup.html.basic.Label;
+import org.apache.wicket.markup.html.form.CheckBox;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
+import org.apache.wicket.markup.html.form.DropDownChoice;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.RequiredTextField;
+import org.apache.wicket.markup.html.panel.IMarkupSourcingStrategy;
+import org.apache.wicket.markup.html.panel.PanelMarkupSourcingStrategy;
+import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.util.string.Strings;
+import org.apache.wicket.util.time.Duration;
+import org.red5.logging.Red5LoggerFactory;
+import org.slf4j.Logger;
+import org.wicketstuff.select2.ChoiceProvider;
+import org.wicketstuff.select2.Response;
+import org.wicketstuff.select2.Select2MultiChoice;
+
+import com.googlecode.wicket.jquery.ui.widget.dialog.MessageDialog;
+
+/**
+ * CRUD operations in form for {@link User}
+ *
+ * @author swagner
+ *
+ */
+public class UserForm extends AdminBaseForm<User> {
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = Red5LoggerFactory.getLogger(UserForm.class, webAppRootKey);
+ private final WebMarkupContainer listContainer;
+ private final WebMarkupContainer domain = new WebMarkupContainer("domain");
+ private GeneralUserForm generalForm;
+ private final RequiredTextField<String> login = new RequiredTextField<>("login");
+ private final MessageDialog warning;
+ private final DropDownChoice<Long> domainId = new DropDownChoice<>("domainId");
+
+ public UserForm(String id, WebMarkupContainer listContainer, final User user, MessageDialog warning) {
+ super(id, new CompoundPropertyModel<>(user));
+ setOutputMarkupId(true);
+ this.listContainer = listContainer;
+ this.warning = warning;
+ // Add form fields
+ addFormFields();
+
+ // attach an ajax validation behavior to all form component's keydown
+ // event and throttle it down to once per second
+ add(new AjaxFormValidatingBehavior("keydown", Duration.ONE_SECOND));
+ }
+
+ @Override
+ protected void onModelChanged() {
+ super.onModelChanged();
+ generalForm.updateModelObject(getModelObject(), true);
+ }
+
+ @Override
+ protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
+ User u = getModelObject();
+ try {
+ boolean isNew = (u.getId() == null);
+ boolean sendEmailAtRegister = (1 == getBean(ConfigurationDao.class).getConfValue("sendEmailAtRegister", Integer.class, "0"));
+ if (isNew && sendEmailAtRegister) {
+ u.setActivatehash(UUID.randomUUID().toString());
+ }
+ u = getBean(UserDao.class).update(u, generalForm.getPasswordField().getConvertedInput(), getUserId());
+ if (isNew && sendEmailAtRegister) {
+ String sendMail = getBean(EmailManager.class).sendMail(login.getValue(), generalForm.getEmail(), u.getActivatehash(), false, null);
+ if (!sendMail.equals("success")) {
+ throw new Exception("Mail for new user is not sent");
+ }
+ }
+ } catch (Exception e) {
+ // FIXME update feedback with the error details
+ log.error("[onSaveSubmit]: ", e);
+ }
+ setModelObject(u);
+ hideNewRecord();
+ target.add(this);
+ target.add(listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ if (u.getGroupUsers().isEmpty()) {
+ warning.open(target);
+ }
+ }
+
+ @Override
+ protected void onNewSubmit(AjaxRequestTarget target, Form<?> form) {
+ UserDao userDao = getBean(UserDao.class);
+ setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
+ update(target);
+ }
+
+ @Override
+ protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
+ User user = getModelObject();
+ if (user.getId() != null) {
+ user = getBean(UserDao.class).get(user.getId());
+ } else {
+ user = getBean(UserDao.class).getNewUserInstance(null);
+ }
+ setModelObject(user);
+ update(target);
+ }
+
+ @Override
+ protected void onDeleteSubmit(AjaxRequestTarget target, Form<?> form) {
+ UserDao userDao = getBean(UserDao.class);
+ userDao.delete(getModelObject(), getUserId());
+ setModelObject(userDao.getNewUserInstance(userDao.get(getUserId())));
+ update(target);
+ }
+
+ /**
+ * Add the fields to the form
+ */
+ private void addFormFields() {
+ ConfigurationDao cfgDao = getBean(ConfigurationDao.class);
+ login.setLabel(Model.of(Application.getString(132)));
+ add(login.add(minimumLength(getMinLoginLength(cfgDao))));
+
+ add(generalForm = new GeneralUserForm("general", getModel(), true));
+
+ add(new DropDownChoice<>("type", Arrays.asList(Type.values())).add(new OnChangeAjaxBehavior() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onUpdate(AjaxRequestTarget target) {
+ updateDomain(target);
+ }
+ }));
+ update(null);
+ add(domain.add(domainId).setOutputMarkupId(true).setOutputMarkupPlaceholderTag(true));
+ add(new Label("ownerId"));
+ add(forDatePattern("inserted", WEB_DATE_PATTERN));
+ add(forDatePattern("updated", WEB_DATE_PATTERN));
+
+ add(new CheckBox("forceTimeZoneCheck"));
+
+ add(new Select2MultiChoice<>("rights", null, new ChoiceProvider<Right>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public String getDisplayValue(Right choice) {
+ return choice.name();
+ }
+
+ @Override
+ public String getIdValue(Right choice) {
+ return choice.name();
+ }
+
+ @Override
+ public void query(String term, int page, Response<Right> response) {
+ boolean isGroupAdmin = hasGroupAdminLevel(getRights());
+ for (Right r : Right.values()) {
+ if (Right.GroupAdmin == r) {
+ continue;
+ }
+ if (isGroupAdmin && (Right.Admin == r || Right.Soap == r)) {
+ continue;
+ }
+ if (Strings.isEmpty(term) || r.name().contains(term)) {
+ response.add(r);
+ }
+ }
+ }
+
+ @Override
+ public Collection<Right> toChoices(Collection<String> ids) {
+ Collection<Right> rights = new ArrayList<>(ids.size());
+ for (String id : ids) {
+ rights.add(Right.valueOf(id));
+ }
+ return rights;
+ }
+ }));
+ add(new ComunityUserForm("comunity", getModel()));
+ }
+
+ public void updateDomain(AjaxRequestTarget target) {
+ User u = getModelObject();
+ final Map<Long, String> values = new Hashtable<>();
+ List<Long> ids = new ArrayList<>();
+ if (u.getType() == Type.ldap) {
+ for (LdapConfig c : getBean(LdapConfigDao.class).getActive()) {
+ ids.add(c.getId());
+ values.put(c.getId(), c.getName());
+ }
+ }
+ if (u.getType() == Type.oauth) {
+ for (OAuthServer s : getBean(OAuth2Dao.class).getActive()) {
+ ids.add(s.getId());
+ values.put(s.getId(), s.getName());
+ }
+ }
+ domainId.setChoices(ids);
+ domainId.setChoiceRenderer(new ChoiceRenderer<Long>() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public Object getDisplayValue(Long object) {
+ return values.get(object);
+ }
+
+ @Override
+ public String getIdValue(Long object, int index) {
+ return "" + object;
+ }
+ });
+ domain.setVisible(u.getType() == Type.ldap || u.getType() == Type.oauth);
+ if (target != null) {
+ target.add(domain);
+ }
+ }
+
+ public void update(AjaxRequestTarget target) {
+ updateDomain(target);
+ if (target != null) {
+ target.add(this, listContainer);
+ target.appendJavaScript("adminPanelInit();");
+ }
+ }
+
+ @Override
+ protected void onValidate() {
+ User u = getModelObject();
+ if(!getBean(UserDao.class).checkLogin(login.getConvertedInput(), u.getType(), u.getDomainId(), u.getId())) {
+ error(getString("105"));
+ }
+ }
+
+ @Override
+ protected void onSaveError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onNewError(AjaxRequestTarget target, Form<?> form) {
+ //ignore validation errors
+ onNewSubmit(target, form);
+ }
+
+ @Override
+ protected void onRefreshError(AjaxRequestTarget target, Form<?> form) {
+ // TODO Auto-generated method stub
+ }
+
+ @Override
+ protected void onDeleteError(AjaxRequestTarget target, Form<?> form) {
+ //ignore validation errors
+ onDeleteSubmit(target, form);
+ }
+
+ @Override
+ protected IMarkupSourcingStrategy newMarkupSourcingStrategy() {
+ return new PanelMarkupSourcingStrategy(false);
+ }
+}
http://git-wip-us.apache.org/repos/asf/openmeetings/blob/1cb3518f/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
----------------------------------------------------------------------
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
index aecfe6d..a1352ec 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/LabelResourceLoader.java
@@ -1,65 +1,65 @@
-/*
- * 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.app;
-
-import java.util.HashMap;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.wicket.Component;
-import org.apache.wicket.resource.loader.IStringResourceLoader;
-
-/**
- * Map property values to OpenMeetings labelid's and get the string
- *
- * @author swagner
- *
- */
-public class LabelResourceLoader implements IStringResourceLoader {
-
- private static Map<String,Long> STRING_LABEL_MAPPING = new HashMap<>();
-
- static {
- STRING_LABEL_MAPPING.put("PagingNavigator.first", 368L);
- STRING_LABEL_MAPPING.put("PagingNavigator.previous", 369L);
- STRING_LABEL_MAPPING.put("PagingNavigator.next", 370L);
- STRING_LABEL_MAPPING.put("PagingNavigator.last", 371L);
- }
-
- @Override
- public String loadStringResource(Class<?> clazz, String key, Locale locale,
- String style, String variation) {
- return getStringByPropertyKey(key);
- }
-
- @Override
- public String loadStringResource(Component component, String key,
- Locale locale, String style, String variation) {
- return getStringByPropertyKey(key);
- }
-
- private static String getStringByPropertyKey(String key) {
- Long labelId = STRING_LABEL_MAPPING.get(key);
- if (labelId == null) {
- return null;
- }
- return Application.getString(labelId);
- }
-
-}
+/*
+ * 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.app;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.resource.loader.IStringResourceLoader;
+
+/**
+ * Map property values to OpenMeetings labelid's and get the string
+ *
+ * @author swagner
+ *
+ */
+public class LabelResourceLoader implements IStringResourceLoader {
+
+ private static Map<String,Long> STRING_LABEL_MAPPING = new HashMap<>();
+
+ static {
+ STRING_LABEL_MAPPING.put("PagingNavigator.first", 368L);
+ STRING_LABEL_MAPPING.put("PagingNavigator.previous", 369L);
+ STRING_LABEL_MAPPING.put("PagingNavigator.next", 370L);
+ STRING_LABEL_MAPPING.put("PagingNavigator.last", 371L);
+ }
+
+ @Override
+ public String loadStringResource(Class<?> clazz, String key, Locale locale,
+ String style, String variation) {
+ return getStringByPropertyKey(key);
+ }
+
+ @Override
+ public String loadStringResource(Component component, String key,
+ Locale locale, String style, String variation) {
+ return getStringByPropertyKey(key);
+ }
+
+ private static String getStringByPropertyKey(String key) {
+ Long labelId = STRING_LABEL_MAPPING.get(key);
+ if (labelId == null) {
+ return null;
+ }
+ return Application.getString(labelId);
+ }
+
+}