{ /* -*- Mode: java; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  requires = ( MAIN, MainUI, CommonUI, Contacts );

  publicResources = ();

  factories = {};

  categories = {
    SOGoContactFolders = {
      slots = {
        toolbar = {
          protectedBy = "View";
          value = "SOGoContactFolder.toolbar";
        };
      };
      methods = {
        view = {
          protectedBy = "View";
          pageName    = "UIxContactFoldersView";
        };
        allContactSearch = {
          protectedBy = "<public>";
          pageName    = "UIxContactFoldersView";
          actionName  = "allContactSearch";
        };
        acls = {
          protectedBy = "ReadAcls";
          pageName    = "UIxAclEditor";
        };
        saveAcls = {
          protectedBy = "Change Permissions";
          pageName    = "UIxAclEditor";
          actionName  = "saveAcls";
        };
        UIxContactEditorTemplate = {
          protectedBy = "View";
          pageName    = "UIxContactEditorTemplate";
        };
        UIxContactsUserFolders = {
          protectedBy = "View";
          pageName    = "UIxContactsUserFolders"; 
        };
        addressbooksList = {
          protectedBy = "View";
          pageName = "UIxContactFoldersView";
          actionName = "addressbooksList";
        };
        saveDragHandleState = {
          protectedBy = "View";
          pageName    = "UIxContactFoldersView";
          actionName  = "saveDragHandleState";
        };
      };
    };

    /* both following class should be "reparented" so as to only have
       SOGoContactFolder here... */
    SOGoContactGCSFolder = {
      slots = {
        toolbar = {
          protectedBy = "View";
          value = "SOGoContactFolder.toolbar";
        };
      };
      methods = {
        view = {
          protectedBy = "View";
          actionClass = "UIxContactsListActions";
          actionName  = "contactsList";
        };
        headers = {
          protectedBy = "View";
          actionClass = "UIxContactsListActions";
          actionName  = "getHeaders";
        };
        export = {
          protectedBy = "View";
          actionClass = "UIxContactFolderActions";
          actionName  = "export";
        };
        import = {
          protectedBy = "Add Documents, Images, and Files";
          actionClass = "UIxContactFolderActions";
          actionName  = "import";
        };
        UIxContactsUserRightsEditor = {
          protectedBy = "ReadAcls";
          pageName    = "UIxContactsUserRightsEditor";
        };
        userRights = {
          protectedBy = "ReadAcls";
          pageName    = "UIxContactsUserRightsEditor";
          actionName  = "userRights";
        };
        saveUserRights = {
          protectedBy = "Change Permissions";
          pageName    = "UIxContactsUserRightsEditor";
          actionName  = "saveUserRights";
        };
        links = {
          protectedBy = "View";
          pageName = "UIxContactFolderLinksTemplate";
        };
        properties = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactFolderProperties";
        };
        save = {
          protectedBy = "Access Contents Information";
          pageName = "UIxContactFolderProperties";
          actionName = "saveProperties";
        };
      };
    };

    SOGoContactSourceFolder = {
      slots = {
        toolbar = {
          protectedBy = "View";
          value = "SOGoContactFolder.toolbar";
        };
      };
      methods = {
        view = {
          protectedBy = "<public>";
          actionClass = "UIxContactsListActions";
          actionName  = "contactsList";
        };
        copy = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxFolderActions";
          actionName = "copy";
        };
      };
    };

    SOGoContactGCSEntry = {
      methods = {
        view = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxContactView";
          actionName  = "data";
        };
        save = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactEditor";
          actionName  = "save";
        };
        saveAsContact = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactEditor";
          actionName  = "save";
        };
        setCategory = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactActions";
          actionName  = "setCategory";
        };
        unsetCategory = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactActions";
          actionName  = "unsetCategory";
        };
        raw = {
          protectedBy = "View";
          actionClass = "UIxContactActions";
          actionName  = "raw";
        };
        certificate = {
          protectedBy = "View";
          actionClass = "UIxContactActions";
          actionName = "certificate";
        };
        removeCertificate = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactActions";
          actionName = "removeCertificate";
        };
      };
    };

    SOGoContactGCSList = {
      methods = {
        view = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxListView";
          actionName  = "data";
        };
        properties = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxListView";
          actionName  = "properties";
        };
        save = {
          protectedBy = "Change Images And Files";
          actionClass    = "UIxListEditor";
          actionName  = "save";
        };
        saveAsList = {
          protectedBy = "Change Images And Files";
          actionClass    = "UIxListEditor";
          actionName  = "save";
        };
        raw = {
          protectedBy = "View";
          actionClass = "UIxContactActions";
          actionName  = "raw";
        };
      };
    };

    SOGoContactLDIFEntry = {
      methods = {
        view = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxContactView";
          actionName  = "data";
        };
        members = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxContactView";
          actionName  = "members";
        };
        save = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactEditor";
          actionName  = "save";
        };
        saveAsContact = {
          protectedBy = "Change Images And Files";
          actionClass = "UIxContactEditor";
          actionName  = "save";
        };
      };
    };
  };
}
