docs: @Override
      public void actionCommit() {
  
          List<Throwable> errors = new ArrayList<Throwable>();
  
          boolean isEmail = (getParamMsgtype() != null) && getParamMsgtype().equals(MSGTYPE_EMAIL);
  
          if ((m_groups == null) || m_groups.isEmpty()) {
              setCommitErrors(
                  Collections.singletonList((Throwable)new CmsIllegalStateException(
                      Messages.get().container(Messages.ERR_NO_SELECTED_GROUP_0))));
              return;
          }
  
          boolean hasUser = false;
          Iterator<String> itGroups = getGroups().iterator();
          while (!hasUser && itGroups.hasNext()) {
              String groupName = itGroups.next();
              try {
                  Iterator<CmsUser> itUsers = getCms().getUsersOfGroup(groupName, true).iterator();
                  while (!hasUser && itUsers.hasNext()) {
                      CmsUser user = itUsers.next();
                      if (!isEmail) {
                          if (!OpenCms.getSessionManager().getSessionInfos(user.getId()).isEmpty()) {
                              hasUser = true;
                          }
                      } else {
                          if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(user.getEmail())) {
                              hasUser = true;
                          }
                      }
                  }
              } catch (CmsException e) {
                  // should never happen
              }
          }
  
          if (!hasUser) {
              setCommitErrors(
                  Collections.singletonList((Throwable)new CmsIllegalStateException(
                      Messages.get().container(Messages.ERR_NO_SELECTED_RECEIVERS_0))));
              return;
          }
  
          try {
              Set<String> groups = new HashSet<String>(m_groups);
              Map<String, String[]> params = new HashMap<String, String[]>();
              params.put(CmsToolDialog.PARAM_STYLE, new String[] {CmsToolDialog.STYLE_NEW});
              params.put(
                  CmsSendEmailGroupsDialog.PARAM_GROUPS,
                  new String[] {CmsStringUtil.collectionAsString(groups, CmsHtmlList.ITEM_SEPARATOR)});
              params.put(
                  CmsDialog.PARAM_CLOSELINK,
                  new String[] {CmsToolManager.linkForToolPath(getJsp(), "/workplace/broadcast")});
  
              if (isEmail) {
                  getToolManager().jspForwardPage(
                      this,
                      "/system/workplace/admin/workplace/groups_send_email.jsp",
                      params);
              } else {
                  getToolManager().jspForwardPage(
                      this,
                      "/system/workplace/admin/workplace/groups_send_popup.jsp",
                      params);
              }
          } catch (Throwable t) {
              errors.add(t);
          }
          // set the list of errors to display when saving failed
          setCommitErrors(errors);
      }