Search in sources :

Example 1 with RoomModerator

use of org.apache.openmeetings.db.entity.room.RoomModerator in project openmeetings by apache.

the class RoomForm method onInitialize.

@Override
protected void onInitialize() {
    super.onInitialize();
    RequiredTextField<String> name = new RequiredTextField<>("name");
    name.setLabel(new Model<>(getString("165")));
    add(name);
    add(new // 
    DropDownChoice<>(// 
    "capacity", // 
    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(getString("45"))));
    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 ? groupDao.get(null, getUserId(), 0, Integer.MAX_VALUE, null) : groupDao.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<>("groups", null, new RestrictiveChoiceProvider<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 toId(RoomGroup choice) {
            Long id = choice.getGroup().getId();
            return id == null ? null : "" + id;
        }

        @Override
        public void query(String term, int page, Response<RoomGroup> response) {
            response.addAll(orgRooms.stream().filter(rg -> Strings.isEmpty(term) || rg.getGroup().getName().contains(term)).collect(Collectors.toList()));
        }

        @Override
        public RoomGroup fromId(String _id) {
            Long id = Long.valueOf(_id);
            if (!orgList.stream().filter(g -> g.getId().equals(id)).findFirst().isPresent()) {
                // seems to be hacked
                return null;
            }
            Group g = groupDao.get(id);
            return new RoomGroup(g, RoomForm.this.getModelObject());
        }
    }).setLabel(Model.of(getString("828"))).setRequired(isGroupAdmin));
    add(new CheckBox("isDemoRoom"));
    TextField<Integer> demoTime = new TextField<>("demoTime");
    demoTime.setLabel(new Model<>(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"));
    // 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(userDao.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());
        }
    });
    moderatorChoice.getSettings().setCloseOnSelect(true);
    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(ATTR_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"));
    // Files
    Form<Void> filesForm = new Form<>("filesForm");
    add(filesForm.add(new Select2MultiChoice<>("files2add", files2add, new ChoiceProvider<BaseFileItem>() {

        private static final long serialVersionUID = 1L;

        @Override
        public String getDisplayValue(BaseFileItem f) {
            return f.getName();
        }

        @Override
        public String getIdValue(BaseFileItem f) {
            return "" + f.getId();
        }

        @Override
        public void query(String term, int page, Response<BaseFileItem> response) {
            response.addAll(fileDao.getAllRoomFiles(term, page * PAGE_SIZE, PAGE_SIZE, RoomForm.this.getModelObject().getId(), orgList));
            response.setHasMore(PAGE_SIZE == response.getResults().size());
        }

        @Override
        public Collection<BaseFileItem> toChoices(Collection<String> ids) {
            return fileDao.get(ids);
        }
    }).setLabel(Model.of(getString("245")))).add(new TextField<Long>("wbidx", wbIdx) {

        private static final long serialVersionUID = 1L;

        @Override
        protected String[] getInputTypes() {
            return new String[] { "number" };
        }
    }).add(new AjaxButton("addFiles") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            Room r = RoomForm.this.getModelObject();
            if (r.getFiles() == null) {
                r.setFiles(new ArrayList<>());
            }
            for (BaseFileItem f : files2add.getObject()) {
                r.getFiles().add(new RoomFile(r.getId(), f, wbIdx.getObject()));
            }
            target.add(filesContainer, filesForm);
        }

        @Override
        protected String getIcon() {
            return JQueryIcon.PLUSTHICK;
        }
    }).setOutputMarkupId(true));
    add(filesContainer.add(new ListView<RoomFile>("files") {

        private static final long serialVersionUID = 1L;

        @Override
        protected void populateItem(final ListItem<RoomFile> item) {
            final RoomFile rf = item.getModelObject();
            item.add(new Label("name", new PropertyModel<>(rf.getFile(), "name"))).add(new Label("wbIdx", new PropertyModel<>(rf, "wbIdx"))).add(new ConfirmableAjaxBorder("delete", getString("80"), getString("833")) {

                private static final long serialVersionUID = 1L;

                @Override
                protected void onSubmit(AjaxRequestTarget target) {
                    Room r = RoomForm.this.getModelObject();
                    for (Iterator<RoomFile> iter = r.getFiles().iterator(); iter.hasNext(); ) {
                        RoomFile _rf = iter.next();
                        if (_rf.getFile().getId().equals(rf.getFile().getId())) {
                            iter.remove();
                            break;
                        }
                    }
                    target.add(filesContainer);
                }
            });
        }
    }).setOutputMarkupId(true));
    // Users in this Room
    add(clientsContainer.add(clients.setOutputMarkupId(true)).setOutputMarkupId(true));
    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));
}
Also used : Arrays(java.util.Arrays) SpringBean(org.apache.wicket.spring.injection.annot.SpringBean) AjaxFormComponentUpdatingBehavior(org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior) WebSession.getUserId(org.apache.openmeetings.web.app.WebSession.getUserId) FileItemDao(org.apache.openmeetings.db.dao.file.FileItemDao) AdminBaseForm(org.apache.openmeetings.web.admin.AdminBaseForm) RoomElement(org.apache.openmeetings.db.entity.room.Room.RoomElement) TextField(org.apache.wicket.markup.html.form.TextField) User(org.apache.openmeetings.db.entity.user.User) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) Strings(org.apache.wicket.util.string.Strings) IModel(org.apache.wicket.model.IModel) ChoiceProvider(org.wicketstuff.select2.ChoiceProvider) ListView(org.apache.wicket.markup.html.list.ListView) Label(org.apache.wicket.markup.html.basic.Label) Duration(org.apache.wicket.util.time.Duration) ListItem(org.apache.wicket.markup.html.list.ListItem) Collection(java.util.Collection) Model(org.apache.wicket.model.Model) AdminUserChoiceProvider(org.apache.openmeetings.web.admin.AdminUserChoiceProvider) AttributeModifier(org.apache.wicket.AttributeModifier) Collectors(java.util.stream.Collectors) RoomDao(org.apache.openmeetings.db.dao.room.RoomDao) Room(org.apache.openmeetings.db.entity.room.Room) DropDownChoice(org.apache.wicket.markup.html.form.DropDownChoice) Response(org.wicketstuff.select2.Response) PAGE_SIZE(org.apache.openmeetings.web.admin.AdminUserChoiceProvider.PAGE_SIZE) RoomTypeDropDown(org.apache.openmeetings.web.util.RoomTypeDropDown) List(java.util.List) Group(org.apache.openmeetings.db.entity.user.Group) PropertyModel(org.apache.wicket.model.PropertyModel) GroupDao(org.apache.openmeetings.db.dao.user.GroupDao) Form(org.apache.wicket.markup.html.form.Form) AjaxButton(com.googlecode.wicket.jquery.ui.form.button.AjaxButton) UserDao(org.apache.openmeetings.db.dao.user.UserDao) ConfirmableAjaxBorder(org.apache.openmeetings.web.common.ConfirmableAjaxBorder) CheckBox(org.apache.wicket.markup.html.form.CheckBox) CompoundPropertyModel(org.apache.wicket.model.CompoundPropertyModel) ArrayList(java.util.ArrayList) RequiredTextField(org.apache.wicket.markup.html.form.RequiredTextField) AuthLevelUtil.hasGroupAdminLevel(org.apache.openmeetings.db.util.AuthLevelUtil.hasGroupAdminLevel) ChoiceRenderer(org.apache.wicket.markup.html.form.ChoiceRenderer) Address(org.apache.openmeetings.db.entity.user.Address) CollectionModel(org.apache.wicket.model.util.CollectionModel) RoomFile(org.apache.openmeetings.db.entity.room.RoomFile) AjaxFormValidatingBehavior(org.apache.wicket.ajax.form.AjaxFormValidatingBehavior) RoomGroup(org.apache.openmeetings.db.entity.room.RoomGroup) TextArea(org.apache.wicket.markup.html.form.TextArea) JQueryIcon(com.googlecode.wicket.jquery.ui.JQueryIcon) ATTR_CLASS(org.apache.openmeetings.util.OpenmeetingsVariables.ATTR_CLASS) Application.kickUser(org.apache.openmeetings.web.app.Application.kickUser) Iterator(java.util.Iterator) Select2Choice(org.wicketstuff.select2.Select2Choice) RestrictiveChoiceProvider(org.apache.openmeetings.web.util.RestrictiveChoiceProvider) Client(org.apache.openmeetings.db.entity.basic.Client) Select2MultiChoice(org.wicketstuff.select2.Select2MultiChoice) WebMarkupContainer(org.apache.wicket.markup.html.WebMarkupContainer) ClientManager(org.apache.openmeetings.web.app.ClientManager) BaseFileItem(org.apache.openmeetings.db.entity.file.BaseFileItem) AjaxCheckBox(org.apache.wicket.ajax.markup.html.form.AjaxCheckBox) WebSession.getRights(org.apache.openmeetings.web.app.WebSession.getRights) RoomModerator(org.apache.openmeetings.db.entity.room.RoomModerator) Address(org.apache.openmeetings.db.entity.user.Address) ArrayList(java.util.ArrayList) Label(org.apache.wicket.markup.html.basic.Label) AjaxFormValidatingBehavior(org.apache.wicket.ajax.form.AjaxFormValidatingBehavior) AjaxButton(com.googlecode.wicket.jquery.ui.form.button.AjaxButton) TextField(org.apache.wicket.markup.html.form.TextField) RequiredTextField(org.apache.wicket.markup.html.form.RequiredTextField) AjaxFormComponentUpdatingBehavior(org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior) RestrictiveChoiceProvider(org.apache.openmeetings.web.util.RestrictiveChoiceProvider) ConfirmableAjaxBorder(org.apache.openmeetings.web.common.ConfirmableAjaxBorder) RoomModerator(org.apache.openmeetings.db.entity.room.RoomModerator) AjaxCheckBox(org.apache.wicket.ajax.markup.html.form.AjaxCheckBox) ChoiceProvider(org.wicketstuff.select2.ChoiceProvider) AdminUserChoiceProvider(org.apache.openmeetings.web.admin.AdminUserChoiceProvider) RestrictiveChoiceProvider(org.apache.openmeetings.web.util.RestrictiveChoiceProvider) AjaxRequestTarget(org.apache.wicket.ajax.AjaxRequestTarget) BaseFileItem(org.apache.openmeetings.db.entity.file.BaseFileItem) CheckBox(org.apache.wicket.markup.html.form.CheckBox) AjaxCheckBox(org.apache.wicket.ajax.markup.html.form.AjaxCheckBox) Collection(java.util.Collection) RoomGroup(org.apache.openmeetings.db.entity.room.RoomGroup) RoomElement(org.apache.openmeetings.db.entity.room.Room.RoomElement) Group(org.apache.openmeetings.db.entity.user.Group) RoomGroup(org.apache.openmeetings.db.entity.room.RoomGroup) User(org.apache.openmeetings.db.entity.user.User) Application.kickUser(org.apache.openmeetings.web.app.Application.kickUser) AdminBaseForm(org.apache.openmeetings.web.admin.AdminBaseForm) Form(org.apache.wicket.markup.html.form.Form) Room(org.apache.openmeetings.db.entity.room.Room) AdminUserChoiceProvider(org.apache.openmeetings.web.admin.AdminUserChoiceProvider) Select2Choice(org.wicketstuff.select2.Select2Choice) RoomFile(org.apache.openmeetings.db.entity.room.RoomFile) PropertyModel(org.apache.wicket.model.PropertyModel) CompoundPropertyModel(org.apache.wicket.model.CompoundPropertyModel) RequiredTextField(org.apache.wicket.markup.html.form.RequiredTextField) Response(org.wicketstuff.select2.Response) Select2MultiChoice(org.wicketstuff.select2.Select2MultiChoice) ChoiceRenderer(org.apache.wicket.markup.html.form.ChoiceRenderer) RoomTypeDropDown(org.apache.openmeetings.web.util.RoomTypeDropDown)

Example 2 with RoomModerator

use of org.apache.openmeetings.db.entity.room.RoomModerator in project openmeetings by apache.

the class BackupImport method importRooms.

/*
	 * ##################### Import Rooms
	 */
private void importRooms(File f) throws Exception {
    log.info("Users import complete, starting room import");
    Registry registry = new Registry();
    Strategy strategy = new RegistryStrategy(registry);
    RegistryMatcher matcher = new RegistryMatcher();
    Serializer ser = new Persister(strategy, matcher);
    matcher.bind(Long.class, LongTransform.class);
    matcher.bind(Integer.class, IntegerTransform.class);
    registry.bind(User.class, new UserConverter(userDao, userMap));
    registry.bind(Room.Type.class, RoomTypeConverter.class);
    registry.bind(Date.class, DateConverter.class);
    List<Room> list = readList(ser, f, "rooms.xml", "rooms", Room.class);
    for (Room r : list) {
        Long roomId = r.getId();
        // We need to reset ids as openJPA reject to store them otherwise
        r.setId(null);
        if (r.getModerators() != null) {
            for (Iterator<RoomModerator> i = r.getModerators().iterator(); i.hasNext(); ) {
                RoomModerator rm = i.next();
                if (rm.getUser().getId() == null) {
                    i.remove();
                }
            }
        }
        r = roomDao.update(r, null);
        roomMap.put(roomId, r.getId());
    }
}
Also used : UserConverter(org.apache.openmeetings.backup.converter.UserConverter) RegistryStrategy(org.simpleframework.xml.convert.RegistryStrategy) RoomModerator(org.apache.openmeetings.db.entity.room.RoomModerator) RegistryStrategy(org.simpleframework.xml.convert.RegistryStrategy) Strategy(org.simpleframework.xml.strategy.Strategy) RegistryMatcher(org.simpleframework.xml.transform.RegistryMatcher) Registry(org.simpleframework.xml.convert.Registry) Persister(org.simpleframework.xml.core.Persister) Room(org.apache.openmeetings.db.entity.room.Room) Serializer(org.simpleframework.xml.Serializer)

Example 3 with RoomModerator

use of org.apache.openmeetings.db.entity.room.RoomModerator in project openmeetings by apache.

the class AuthLevelUtil method getRoomRight.

public static Set<Room.Right> getRoomRight(User u, Room r, Appointment a, int userCount) {
    Set<Room.Right> result = new HashSet<>();
    if (u == null) {
        return result;
    }
    if (hasAdminLevel(u.getRights())) {
        // admin user get superModerator level, no-one can kick him/her
        result.add(Room.Right.superModerator);
    } else if (r.isAppointment() && a != null && u.getId().equals(a.getOwner().getId())) {
        // appointment owner is super moderator
        result.add(Room.Right.superModerator);
    }
    if (result.isEmpty()) {
        if (!r.isModerated() && 1 == userCount) {
            // room is not moderated, first user is moderator!
            result.add(Room.Right.moderator);
        }
        // performing loop here to set possible 'superModerator' right
        for (RoomModerator rm : r.getModerators()) {
            if (u.getId().equals(rm.getUser().getId())) {
                result.add(rm.isSuperModerator() ? Room.Right.superModerator : Room.Right.moderator);
                break;
            }
        }
        // no need to loop if client is moderator
        if (result.isEmpty() && r.getGroups() != null && !r.getGroups().isEmpty()) {
            for (RoomGroup rg : r.getGroups()) {
                for (GroupUser gu : u.getGroupUsers()) {
                    if (gu.getGroup().getId().equals(rg.getGroup().getId()) && gu.isModerator()) {
                        result.add(Room.Right.moderator);
                        break;
                    }
                }
                if (!result.isEmpty()) {
                    break;
                }
            }
        }
    }
    if (Room.Type.conference == r.getType() && !result.contains(Room.Right.superModerator) && !result.contains(Room.Right.moderator) && !result.contains(Room.Right.video)) {
        result.add(Room.Right.audio);
        result.add(Room.Right.video);
    }
    return result;
}
Also used : GroupUser(org.apache.openmeetings.db.entity.user.GroupUser) RoomModerator(org.apache.openmeetings.db.entity.room.RoomModerator) RoomGroup(org.apache.openmeetings.db.entity.room.RoomGroup) HashSet(java.util.HashSet)

Example 4 with RoomModerator

use of org.apache.openmeetings.db.entity.room.RoomModerator in project openmeetings by apache.

the class RoomForm method onSaveSubmit.

@Override
protected void onSaveSubmit(AjaxRequestTarget target, Form<?> form) {
    Room r = getModelObject();
    boolean newRoom = r.getId() == null;
    r = roomDao.update(r, getUserId());
    if (newRoom) {
        for (RoomModerator rm : r.getModerators()) {
            rm.setRoomId(r.getId());
        }
        for (RoomFile rf : r.getFiles()) {
            rf.setRoomId(r.getId());
        }
        roomDao.update(getModelObject(), getUserId());
    }
    hideNewRecord();
    updateView(target);
}
Also used : RoomModerator(org.apache.openmeetings.db.entity.room.RoomModerator) RoomFile(org.apache.openmeetings.db.entity.room.RoomFile) Room(org.apache.openmeetings.db.entity.room.Room)

Aggregations

RoomModerator (org.apache.openmeetings.db.entity.room.RoomModerator)4 Room (org.apache.openmeetings.db.entity.room.Room)3 RoomFile (org.apache.openmeetings.db.entity.room.RoomFile)2 RoomGroup (org.apache.openmeetings.db.entity.room.RoomGroup)2 JQueryIcon (com.googlecode.wicket.jquery.ui.JQueryIcon)1 AjaxButton (com.googlecode.wicket.jquery.ui.form.button.AjaxButton)1 ArrayList (java.util.ArrayList)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 HashSet (java.util.HashSet)1 Iterator (java.util.Iterator)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1 UserConverter (org.apache.openmeetings.backup.converter.UserConverter)1 FileItemDao (org.apache.openmeetings.db.dao.file.FileItemDao)1 RoomDao (org.apache.openmeetings.db.dao.room.RoomDao)1 GroupDao (org.apache.openmeetings.db.dao.user.GroupDao)1 UserDao (org.apache.openmeetings.db.dao.user.UserDao)1 Client (org.apache.openmeetings.db.entity.basic.Client)1 BaseFileItem (org.apache.openmeetings.db.entity.file.BaseFileItem)1