{ /* -*- 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";
        };
        mailer-contacts = {
          protectedBy = "View";
          pageName    = "UIxContactFoldersView";
          actionName  = "mailerContacts";
        };
        allContactSearch = {
          protectedBy = "<public>";
          pageName    = "UIxContactFoldersView";
          actionName  = "allContactSearch";
        };
        updateAdditionalAddressBooks = {
          protectedBy = "View";
          pageName    = "UIxContactFoldersView";
          actionName = "updateAdditionalAddressBooks";
        };
        acls = {
          protectedBy = "ReadAcls";
          pageName    = "UIxAclEditor";
        };
        saveAcls = {
          protectedBy = "Change Permissions";
          pageName    = "UIxAclEditor";
          actionName  = "saveAcls";
        };
        checkRights = {
          protectedBy = "View";
          pageName    = "UIxContactFoldersView"; 
          actionName  = "checkRights";
        };
        userFolders = {
          protectedBy = "View";
          pageName    = "UIxContactsUserFolders"; 
        };
        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";
        };
        contactSearch = {
          protectedBy = "<public>";
          actionClass = "UIxContactsListActions";
          actionName  = "contactSearch";
        };
        newcontact = {
          protectedBy = "<public>";
          pageName    = "UIxContactEditor";
          actionName  = "new";
        };
        newlist = {
          protectedBy = "Add Documents, Images, and Files";
          pageName    = "UIxListEditor";
          actionName  = "new";
        };
        mailer-contacts = {
          protectedBy = "View";
          pageName    = "UIxContactFoldersView";
          actionName  = "mailerContacts";
        };
        export = {
          protectedBy = "View";
          actionClass = "UIxContactFolderActions";
          actionName  = "export";
        };
        exportFolder = {
          protectedBy = "View";
          actionClass = "UIxContactFolderActions";
          actionName = "export";
        };
        import = {
          protectedBy = "Add Documents, Images, and Files";
          actionClass = "UIxContactFolderActions";
          actionName  = "import";
        };
        userRights = {
          protectedBy = "ReadAcls";
          pageName    = "UIxContactsUserRightsEditor";
        };
        saveUserRights = {
          protectedBy = "Change Permissions";
          pageName    = "UIxContactsUserRightsEditor";
          actionName  = "saveUserRights";
        };
        properties = {
          protectedBy = "View";
          pageName = "UIxContactFolderProperties";
        };
        saveProperties = { 
          protectedBy = "Access Contents Information";
          pageName = "UIxContactFolderProperties";
          actionName = "saveProperties";
        };
      };
    };

    SOGoContactSourceFolder = {
      slots = {
        toolbar = {
          protectedBy = "View";
          value = "SOGoContactFolder.toolbar";
        };
      };
      methods = {
        view = {
          protectedBy = "<public>";
          actionClass = "UIxContactsListActions";
          actionName  = "contactsList";
        };
        newcontact = {
          protectedBy = "<public>";
          pageName    = "UIxContactEditor";
          actionName  = "new";
        };
        renameFolder = {
          protectedBy = "Change Permissions";
          actionClass = "UIxFolderActions";
          actionName  = "renameFolder";
        };
        mailer-contacts = {
          protectedBy = "<public>";
          pageName    = "UIxContactFoldersView";
          actionName = "mailerContacts";
        };
        canAccessContent = {
          protectedBy = "<public>";
          actionClass = "UIxFolderActions";
          actionName = "canAccessContent";
        };
        copy = {
          protectedBy = "Access Contents Information";
          actionClass = "UIxFolderActions";
          actionName = "copy";
        };
      };
    };

    SOGoContactGCSEntry = {
      methods = {
        view = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactView";
        };
        edit = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactEditor";
        };
        editAsContact = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactEditor";
        };
        save = {
          protectedBy = "Change Images And Files";
          pageName    = "UIxContactEditor";
          actionName  = "save";
        };
        saveAsContact = {
          protectedBy = "Change Images And Files";
          pageName    = "UIxContactEditor";
          actionName  = "save";
        };
        write = {
          protectedBy = "View";
          pageName    = "UIxContactEditor";
          actionName  = "write";
        };
        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";
        };
      };
    };

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

    SOGoContactLDIFEntry = {
      methods = {
        view = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactView";
        };
        edit = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactEditor";
        };
        editAsContact = {
          protectedBy = "Access Contents Information";
          pageName    = "UIxContactEditor";
        };
        save = {
          protectedBy = "Change Images And Files";
          pageName    = "UIxContactEditor";
          actionName  = "save";
        };
        saveAsContact = {
          protectedBy = "Change Images And Files";
          pageName    = "UIxContactEditor";
          actionName  = "save";
        };
        write = {
          protectedBy = "<public>";
          pageName    = "UIxContactEditor";
          actionName  = "write";
        };
      };
    };
  };
}
