code: private List getModulesFromServer() {
  
          List result = new ArrayList();
  
          // get the systems-exportpath
          String exportpath = OpenCms.getSystemInfo().getPackagesRfsPath();
          exportpath = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(exportpath + "modules");
          File folder = new File(exportpath);
  
          // get a list of all files
          String[] list = folder.list();
          for (int i = 0; i < list.length; i++) {
              try {
                  File diskFile = new File(exportpath, list[i]);
                  // check if it is a file and ends with zip -> this is a module
                  if (diskFile.isFile() && diskFile.getName().endsWith(".zip")) {
                      result.add(new CmsSelectWidgetOption(diskFile.getName()));
                  } else
                      if (diskFile.isDirectory() && ((new File(diskFile + File.separator + "manifest.xml")).exists())) {
                      // this is a folder with manifest file -> this a module
                      result.add(new CmsSelectWidgetOption(diskFile.getName()));
                  }
              } catch (Throwable t) {
                  // ignore and continue
              }
          }
  
          Collections.sort(result, new ComparatorSelectWidgetOption());
          return result;
      }
docs: Returns the list of all modules available on the server in prepared CmsSelectWidgetOption objects.<p>
  
  @return List of module names in CmsSelectWidgetOption objects