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); + } + +}
