diff --git a/locale/en_US/LC_MESSAGES/django.mo b/locale/en_US/LC_MESSAGES/django.mo index fab5a46cbf..9eb9a401a1 100644 Binary files a/locale/en_US/LC_MESSAGES/django.mo and b/locale/en_US/LC_MESSAGES/django.mo differ diff --git a/locale/en_US/LC_MESSAGES/django.po b/locale/en_US/LC_MESSAGES/django.po index d84446e63a..47dcfe1b68 100644 --- a/locale/en_US/LC_MESSAGES/django.po +++ b/locale/en_US/LC_MESSAGES/django.po @@ -56,9 +56,39 @@ msgstr "A list of your imported headers." msgid "A preview of your concatenated data will appear in the box below." msgstr "A preview of your concatenated data will appear in the box below." +msgid "ACCESS_LEVEL_DELETE_AREYOUSURE" +msgstr "Are you sure you want to delete this Access Level Instance? The operation will also delete all Access Level Instances below this one." + +msgid "ACCESS_LEVEL_DESCRIPTION" +msgstr " Define access levels to structure your organization's content. An organization can have one or more access levels. All organizations have at least one level (level 1), which is named with the organization name by default. All access level names are customizable." + msgid "ACCESS_LEVEL_FILENAME_UPLOADED" msgstr "Access Level Instances File has been uploaded" +msgid "ACCESS_LEVEL_INSTANCE_DESCRIPTION" +msgstr "Access level instances are custom subgroups that can be defined within each access level. These ALIs are used to associate content together and restrict user access to data. There is a single ALI in level 1 of the hierarchy, the root of the tree. This is named 'root' by default, but can be customized. All other levels can contain one or more ALIs." + +msgid "ACCESS_LEVEL_ORG_OWNER" +msgstr "As an organization owner, you can set the structure of your access level tree using the buttons below. This process should be performed prior to importing data and adding users to your organization." + +msgid "ACCESS_LEVEL_OWNER_END" +msgstr "Once you have configured your organization's access level tree, you are ready to add users and properties to different levels of the tree." + +msgid "ACCESS_LEVEL_OWNER_STEP1" +msgstr "Configure the number and name of your access levels using the Edit/Add Access Levels button." + +msgid "ACCESS_LEVEL_OWNER_STEP2" +msgstr "Upload a spreadsheet of access level instances. The spreadsheet should have a column for each access level, with the header matching your customized level name. Access level instances make up the rows of the spreadsheet. Make sure to fully define the path of each access level instance. You can also select the level, parent access level instance, and configure the name of a single new access level instance using the Add Access Level Instance button." + +msgid "ACCESS_LEVEL_ROOT_TEXT" +msgstr "There is only one access level instance allowed at the root of the tree (level 1). Click on the pencil icon if you wish to rename it." + +msgid "ACCESS_LEVEL_STRUCTURE_UPLOAD_TEXT" +msgstr "Upload your Organizational Structure in spreadsheet form. The file should include a column for each access level with its column header equal to the custom access level name. Each row should contain an access level instance, with its ancestry fully defined (parent node name, grand-parent node name, etc.)" + +msgid "ACCESS_LEVEL_TREE_HELP_1" +msgstr "This page allows you to view the structure of your organization's content. The structure is made up of hierarchical levels that define a tree; these are called access levels. Each level contains one or more nodes, called access level instances. Permissions are managed by associating content and users with a particular access level instance, thereby grouping and restricting access to the content. The number of access levels in your structure, the names of the levels, and the names of the access level instances are customizable." + msgid "ADD_FILES_TO" msgstr "Add files to {dataset_name}." @@ -125,6 +155,18 @@ msgstr "Accept" msgid "Accept Terms of Service?" msgstr "Accept Terms of Service?" +msgid "Access Level Instances Errors" +msgstr "Access Level Instances Errors" + +msgid "Access Level Tree" +msgstr "Access Level Tree" + +msgid "Access Levels (AL)" +msgstr "Access Levels (AL)" + +msgid "Access Levels Instances (ALI)" +msgstr "Access Levels Instances (ALI)" + msgid "Acknowledge" msgstr "Acknowledge" @@ -147,6 +189,9 @@ msgstr "Actual Field" msgid "Add" msgstr "Add" +msgid "Add Access Level" +msgstr "Add Access Level" + msgid "Add Column" msgstr "Add Column" @@ -156,6 +201,12 @@ msgstr "Add Data Files" msgid "Add Label" msgstr "Add Label" +msgid "Add Level Instance (Node) to the Organizational Structure" +msgstr "Add Level Instance (Node) to the Organizational Structure" + +msgid "Add Levels to the Organizational Structure Tree" +msgstr "Add Levels to the Organizational Structure Tree" + msgid "Add Mapping" msgstr "Add Mapping" @@ -467,6 +518,9 @@ msgstr "Cancel" msgid "Cannot delete protected objects while related objects still exist" msgstr "Cannot delete protected objects while related objects still exist" +msgid "Cannot delete this access level instance." +msgstr "Cannot delete this access level instance." + msgid "Change Merged Property" msgstr "Change Merged Property" @@ -755,6 +809,9 @@ msgstr "Custom ID 1 (Property)" msgid "Custom ID 1 (Tax Lot)" msgstr "Custom ID 1 (Tax Lot)" +msgid "Custom Name for Level" +msgstr "Custom Name for Level" + msgid "Custom Reports" msgstr "Custom Reports" @@ -905,6 +962,9 @@ msgstr "Default Display Fields" msgid "Delete" msgstr "Delete" +msgid "Delete Access Level Instance" +msgstr "Delete Access Level Instance" + msgid "Delete All Mappings" msgstr "Delete All Mappings" @@ -1054,6 +1114,9 @@ msgstr "For “extra data” fields, this allows the user to set the type, such msgid "Edit" msgstr "Edit" +msgid "Edit Access Level Instance Name" +msgstr "Edit Access Level Instance Name" + msgid "Edit Name" msgstr "Edit Name" @@ -1105,6 +1168,9 @@ msgstr "English" msgid "Enter Email Address" msgstr "Enter Email Address" +msgid "Enter a Name for the new Access Level Instance" +msgstr "Enter a Name for the new Access Level Instance" + msgid "Enter a valid email address." msgstr "Enter a valid email address." @@ -1132,6 +1198,9 @@ msgstr "Error" msgid "Error Processing Data" msgstr "Error Processing Data" +msgid "Example Access Level Tree" +msgstr "Example Access Level Tree" + msgid "Example Usage" msgstr "Example Usage" @@ -1633,6 +1702,9 @@ msgstr "Left Axis" msgid "Left Half" msgstr "Left Half" +msgid "Level" +msgstr "Level" + msgid "Loading data..." msgstr "Loading data..." @@ -1752,6 +1824,9 @@ msgstr "Manage compliance" msgid "Managed by" msgstr "Managed by" +msgid "Managing the Access Level Tree" +msgstr "Managing the Access Level Tree" + msgid "Manual Matching" msgstr "Manual Matching" @@ -2471,6 +2546,9 @@ msgstr "Related Tax Lots" msgid "Remove" msgstr "Remove" +msgid "Remove Access Level" +msgstr "Remove Access Level" + msgid "Remove Column Mappings" msgstr "Remove Column Mappings" @@ -2885,6 +2963,12 @@ msgstr "Select columns from the lists below to make them appear on the left or r msgid "Select one or more filter groups to load your inventory." msgstr "Select one or more filter groups to load your inventory." +msgid "Select the Level at which you want to add the new Instance" +msgstr "Select the Level at which you want to add the new Instance" + +msgid "Select the new Instance's Parent Access Level Instance" +msgstr "Select the new Instance's Parent Access Level Instance" + msgid "Select the type of file(s) you would like to add to" msgstr "Select the type of file(s) you would like to add to" @@ -3013,6 +3097,12 @@ msgstr "State (Property)" msgid "State (Tax Lot)" msgstr "State (Tax Lot)" +msgid "Step 1: Add Access Levels" +msgstr "Step 1: Add Access Levels" + +msgid "Step 2: Upload Access Level Instances" +msgstr "Step 2: Upload Access Level Instances" + msgid "Sub-Org Name" msgstr "Sub-Org Name" diff --git a/locale/fr_CA/LC_MESSAGES/django.mo b/locale/fr_CA/LC_MESSAGES/django.mo index e73f313759..45b3766ecf 100644 Binary files a/locale/fr_CA/LC_MESSAGES/django.mo and b/locale/fr_CA/LC_MESSAGES/django.mo differ diff --git a/locale/fr_CA/LC_MESSAGES/django.po b/locale/fr_CA/LC_MESSAGES/django.po index 817d0acab1..94b23dae39 100644 --- a/locale/fr_CA/LC_MESSAGES/django.po +++ b/locale/fr_CA/LC_MESSAGES/django.po @@ -57,9 +57,39 @@ msgstr "Une liste de vos en-têtes importés." msgid "A preview of your concatenated data will appear in the box below." msgstr "Un aperçu de vos données concaténées apparaîtra dans la case ci-dessous." +msgid "ACCESS_LEVEL_DELETE_AREYOUSURE" +msgstr "Êtes-vous sûr de vouloir supprimer cette instance de niveau d'accès ? L'opération supprimera également toutes les instances de niveau d'accès inférieures à celle-ci." + +msgid "ACCESS_LEVEL_DESCRIPTION" +msgstr "Définissez des niveaux d'accès pour structurer le contenu de votre organisation. Une organisation peut avoir un ou plusieurs niveaux d'accès. Toutes les organisations ont au moins un niveau (niveau 1), nommé par défaut avec le nom de l'organisation. Tous les noms de niveaux d'accès sont personnalisables." + msgid "ACCESS_LEVEL_FILENAME_UPLOADED" msgstr "Le fichier d'instances de niveau d'accès a été téléchargé" +msgid "ACCESS_LEVEL_INSTANCE_DESCRIPTION" +msgstr "Les instances de niveau d'accès sont des sous-groupes personnalisés qui peuvent être définis au sein de chaque niveau d'accès. Ces ALI sont utilisées pour associer du contenu et restreindre l'accès des utilisateurs aux données. Il existe une seule ALI au niveau 1 de la hiérarchie, la racine du graphe en arbre. Celui-ci est nommé « racine » par défaut, mais peut être personnalisé. Tous les autres niveaux peuvent contenir une ou plusieurs ALI." + +msgid "ACCESS_LEVEL_ORG_OWNER" +msgstr "En tant que propriétaire d'une organisation, vous pouvez définir la structure de votre graphe en arbre de niveaux d'accès à l'aide des boutons ci-dessous. Ce processus doit être effectué avant d'importer des données et d'ajouter des utilisateurs à votre organisation." + +msgid "ACCESS_LEVEL_OWNER_END" +msgstr "Une fois que vous avez configuré le graphe en arbre des niveaux d'accès de votre organisation, vous êtes prêt à ajouter des utilisateurs et des propriétés aux différents niveaux de l'arbre." + +msgid "ACCESS_LEVEL_OWNER_STEP1" +msgstr "Configurez le numéro et le nom de vos niveaux d'accès à l'aide du bouton Modifier/Ajouter des niveaux d'accès." + +msgid "ACCESS_LEVEL_OWNER_STEP2" +msgstr "Téléchargez une feuille de calcul des instances de niveau d'accès. La feuille de calcul doit avoir un colonne pour chaque niveau d'accès, avec l'en-tête correspondant à votre nom de niveau personnalisé. Les instances de niveau d'accès constituent les lignes de la feuille de calcul. Assurez-vous de définir entièrement le chemin de chaque instance de niveau d’accès. Vous pouvez également sélectionner le niveau, l'instance de niveau d'accès parent et configurer le nom d'une seule nouvelle instance de niveau d'accès à l'aide du bouton Ajouter une instance de niveau d'accès." + +msgid "ACCESS_LEVEL_ROOT_TEXT" +msgstr "Il n'y a qu'une seule instance de niveau d'accès autorisée à la racine du graphe en arbre (niveau 1). Cliquez sur l'icône en forme de crayon si vous souhaitez le renommer." + +msgid "ACCESS_LEVEL_STRUCTURE_UPLOAD_TEXT" +msgstr "Téléchargez votre structure organisationnelle sous forme de feuille de calcul. Le fichier doit inclure une colonne pour chaque niveau d'accès avec son en-tête de colonne égal au nom du niveau d'accès personnalisé. Chaque ligne doit contenir une instance de niveau d'accès, avec son ascendance entièrement définie (nom du nœud parent, nom du nœud grand-parent, etc.)" + +msgid "ACCESS_LEVEL_TREE_HELP_1" +msgstr "Cette page vous permet de visualiser la structure du contenu de votre organisation. La structure est constituée de niveaux hiérarchiques qui définissent une arborescence ; c'est ce qu'on appelle les niveaux d'accès. Chaque niveau contient un ou plusieurs nœuds, appelés instances de niveau d'accès. Les autorisations sont gérées en associant le contenu et les utilisateurs à une instance de niveau d'accès particulière, regroupant et restreignant ainsi l'accès au contenu. Le nombre de niveaux d'accès dans votre structure, les noms des niveaux et les noms des instances de niveau d'accès sont personnalisables." + msgid "ADD_FILES_TO" msgstr "Ajoutez des fichiers à {dataset_name}." @@ -127,6 +157,18 @@ msgstr "Acceptez" msgid "Accept Terms of Service?" msgstr "Accepter les conditions d'utilisation?" +msgid "Access Level Instances Errors" +msgstr "Erreurs d’instances de niveau d’accès" + +msgid "Access Level Tree" +msgstr "Graphe en arbre des niveaux d'accès" + +msgid "Access Levels (AL)" +msgstr "Niveaux d'accès (AL)" + +msgid "Access Levels Instances (ALI)" +msgstr "Instances de niveaux d'accès (ALI)" + msgid "Acknowledge" msgstr "Reconnaître" @@ -149,6 +191,9 @@ msgstr "Champ réel" msgid "Add" msgstr "Ajouter" +msgid "Add Access Level" +msgstr "Ajouter un niveau d'accès" + msgid "Add Column" msgstr "Ajouter une colonne" @@ -158,6 +203,12 @@ msgstr "Ajouter des fichiers de données" msgid "Add Label" msgstr "Ajouter une étiquette" +msgid "Add Level Instance (Node) to the Organizational Structure" +msgstr "Ajouter une instance de niveau (nœud) à la structure organisationnelle" + +msgid "Add Levels to the Organizational Structure Tree" +msgstr "Ajouter des niveaux à l'arbre de la structure organisationnelle" + msgid "Add Mapping" msgstr "Ajouter une configuration" @@ -474,6 +525,9 @@ msgstr "Annuler" msgid "Cannot delete protected objects while related objects still exist" msgstr "Impossible de supprimer des objets protégés alors que des objets apparentés existent toujours" +msgid "Cannot delete this access level instance." +msgstr "Impossible de supprimer cette instance de niveau d'accès." + msgid "Change Merged Property" msgstr "Modifier la propriété fusionnée" @@ -764,6 +818,9 @@ msgstr "ID personnalisé 1 (propriété)" msgid "Custom ID 1 (Tax Lot)" msgstr "ID personnalisé 1 (lot d'impôt)" +msgid "Custom Name for Level" +msgstr "Nom personnalisé pour le niveau" + msgid "Custom Reports" msgstr "Rapports" @@ -914,6 +971,9 @@ msgstr "Champs d'affichage par défaut" msgid "Delete" msgstr "Supprimer" +msgid "Delete Access Level Instance" +msgstr "Supprimer une instance de niveau d'accès" + msgid "Delete All Mappings" msgstr "Supprimer tous les mappages" @@ -1064,6 +1124,9 @@ msgstr "Pour les champs «données supplémentaires», cela permet à l'utilisat msgid "Edit" msgstr "Modifier" +msgid "Edit Access Level Instance Name" +msgstr "Modifier le nom de l'instance du niveau d'accès" + msgid "Edit Name" msgstr "Modifier le nom" @@ -1116,6 +1179,9 @@ msgstr "Anglais" msgid "Enter Email Address" msgstr "Entrer l'adresse e-mail" +msgid "Enter a Name for the new Access Level Instance" +msgstr "Entrez un nom pour la nouvelle instance de niveau d'accès" + msgid "Enter a valid email address." msgstr "Entrez une adresse mail valide." @@ -1143,6 +1209,9 @@ msgstr "Erreur" msgid "Error Processing Data" msgstr "Erreur lors du traitement des données" +msgid "Example Access Level Tree" +msgstr "Exemple de graphe en arbre de niveaux d'accès" + msgid "Example Usage" msgstr "Exemple d'utilisation" @@ -1648,6 +1717,9 @@ msgstr "Axe gauche" msgid "Left Half" msgstr "Moitié gauche" +msgid "Level" +msgstr "Niveau" + msgid "Loading data..." msgstr "Chargeant les données ..." @@ -1767,6 +1839,9 @@ msgstr "Gérer la conformité" msgid "Managed by" msgstr "Dirigé par" +msgid "Managing the Access Level Tree" +msgstr "Graphe en arbre des niveaux d'accès" + msgid "Manual Matching" msgstr "Correspondance manuelle" @@ -1983,7 +2058,7 @@ msgid "NUM_PROPERTY_TAXLOT_COLUMNS_AVAILABLE" msgstr "Il existe {num_property_columns} colonnes de propriétés et {num_taxlot_columns} colonnes de lot d'impôt qui vous sont accessibles." msgid "Name" -msgstr "nom" +msgstr "Nom" msgid "National Renewable Energy Laboratory" msgstr "Laboratoire National Des Énergies Renouvelables" @@ -2491,6 +2566,9 @@ msgstr "Lots d'impôt connexes" msgid "Remove" msgstr "Supprimer" +msgid "Remove Access Level" +msgstr "Supprimer le niveau d'accès" + msgid "Remove Column Mappings" msgstr "Supprimer les mappages de colonnes" @@ -2910,6 +2988,12 @@ msgstr "Sélectionnez les colonnes dans les listes ci-dessous pour les faire app msgid "Select one or more filter groups to load your inventory." msgstr "Sélectionnez un ou plusieurs groupes de filtres pour charger votre inventaire." +msgid "Select the Level at which you want to add the new Instance" +msgstr "Sélectionnez le niveau auquel vous souhaitez ajouter la nouvelle instance" + +msgid "Select the new Instance's Parent Access Level Instance" +msgstr "Sélectionnez l'instance de niveau d'accès parent de la nouvelle instance" + msgid "Select the type of file(s) you would like to add to" msgstr "Sélectionnez le type de fichier (s) que vous souhaitez ajouter à" @@ -3038,6 +3122,12 @@ msgstr "Etat (Propriété)" msgid "State (Tax Lot)" msgstr "État (lot d'impôt)" +msgid "Step 1: Add Access Levels" +msgstr "Étape 1: ajouter des niveaux d'accès" + +msgid "Step 2: Upload Access Level Instances" +msgstr "Étape 2: Télécharger les instances de niveau d'accès" + msgid "Sub-Org Name" msgstr "Nom de la sous-organisation" diff --git a/seed/static/seed/images/ali-tree-example-lg.png b/seed/static/seed/images/ali-tree-example-lg.png new file mode 100644 index 0000000000..18b9ce3cb3 Binary files /dev/null and b/seed/static/seed/images/ali-tree-example-lg.png differ diff --git a/seed/static/seed/js/controllers/organization_access_level_tree_controller.js b/seed/static/seed/js/controllers/organization_access_level_tree_controller.js index 53bd6f87e9..09e62e8f20 100644 --- a/seed/static/seed/js/controllers/organization_access_level_tree_controller.js +++ b/seed/static/seed/js/controllers/organization_access_level_tree_controller.js @@ -23,7 +23,11 @@ angular.module('BE.seed.controller.organization_access_level_tree', []) spinner_utility ) { $scope.org = organization_payload.organization; + $scope.static_url = urls.static_url; + // AUTH: only owners can CRUD Access Level Tree and ALIs + // members and viewers can see their part of the hierarchy - read-only $scope.auth = auth_payload.auth; + $scope.btnText = 'Collapse Help'; $scope.access_level_tree = access_level_tree.access_level_tree; $scope.access_level_names = access_level_tree.access_level_names; @@ -34,6 +38,14 @@ angular.module('BE.seed.controller.organization_access_level_tree', []) $('.level-collapse').collapse(action); }; + $scope.changeText = (btnText) => { + if (btnText === 'Collapse Help') { + $scope.btnText = 'Expand Help'; + } else { + $scope.btnText = 'Collapse Help'; + } + }; + $scope.open_add_level_modal = function () { $uibModal.open({ templateUrl: `${urls.static_url}seed/partials/organization_add_access_level_modal.html`, diff --git a/seed/static/seed/js/controllers/organization_delete_access_level_instance_modal_controller.js b/seed/static/seed/js/controllers/organization_delete_access_level_instance_modal_controller.js index 3be0be834c..e8792c7a6a 100644 --- a/seed/static/seed/js/controllers/organization_delete_access_level_instance_modal_controller.js +++ b/seed/static/seed/js/controllers/organization_delete_access_level_instance_modal_controller.js @@ -29,7 +29,7 @@ angular.module('BE.seed.controller.organization_delete_access_level_instance_mod $scope.can_delete_access_level_instance = undefined; $scope.reasons_why = []; - spinner_utility.show();; + spinner_utility.show(); organization_service.can_delete_access_level_instance(org_id, $scope.instance_id) .then(res => { $scope.can_delete_access_level_instance = res.can_delete; @@ -46,4 +46,8 @@ angular.module('BE.seed.controller.organization_delete_access_level_instance_mod .then(_ => $uibModalInstance.close()) .catch(err => {Notification.error(err)}); } + + $scope.cancel = () => { + $uibModalInstance.dismiss('cancel'); + } }]); diff --git a/seed/static/seed/js/seed.js b/seed/static/seed/js/seed.js index c3ef004670..2254ebf36f 100644 --- a/seed/static/seed/js/seed.js +++ b/seed/static/seed/js/seed.js @@ -1409,9 +1409,9 @@ SEED_app.config([ '$q', (auth_service, $stateParams, $q) => { const organization_id = $stateParams.organization_id; - return auth_service.is_authorized(organization_id, ['requires_owner']) + return auth_service.is_authorized(organization_id, ['requires_viewer', 'requires_owner']) .then((data) => { - if (data.auth.requires_owner) { + if (data.auth.requires_viewer) { return data; } return $q.reject('not authorized'); diff --git a/seed/static/seed/locales/en_US.json b/seed/static/seed/locales/en_US.json index 3c9a46b919..0b1c678663 100644 --- a/seed/static/seed/locales/en_US.json +++ b/seed/static/seed/locales/en_US.json @@ -14,7 +14,17 @@ "A Custom Report allows you to look at aggregated data across your inventories and cycles. This is useful to see how specific metrics change over time.": "A Custom Report allows you to look at aggregated data across your inventories and cycles. This is useful to see how specific metrics change over time.", "A list of your imported headers.": "A list of your imported headers.", "A preview of your concatenated data will appear in the box below.": "A preview of your concatenated data will appear in the box below.", + "ACCESS_LEVEL_DELETE_AREYOUSURE": "Are you sure you want to delete this Access Level Instance? The operation will also delete all Access Level Instances below this one.", + "ACCESS_LEVEL_DESCRIPTION": " Define access levels to structure your organization's content. An organization can have one or more access levels. All organizations have at least one level (level 1), which is named with the organization name by default. All access level names are customizable.", "ACCESS_LEVEL_FILENAME_UPLOADED": "Access Level Instances File has been uploaded", + "ACCESS_LEVEL_INSTANCE_DESCRIPTION": "Access level instances are custom subgroups that can be defined within each access level. These ALIs are used to associate content together and restrict user access to data. There is a single ALI in level 1 of the hierarchy, the root of the tree. This is named 'root' by default, but can be customized. All other levels can contain one or more ALIs.", + "ACCESS_LEVEL_ORG_OWNER": "As an organization owner, you can set the structure of your access level tree using the buttons below. This process should be performed prior to importing data and adding users to your organization.", + "ACCESS_LEVEL_OWNER_END": "Once you have configured your organization's access level tree, you are ready to add users and properties to different levels of the tree.", + "ACCESS_LEVEL_OWNER_STEP1": "Configure the number and name of your access levels using the Edit\/Add Access Levels button.", + "ACCESS_LEVEL_OWNER_STEP2": "Upload a spreadsheet of access level instances. The spreadsheet should have a column for each access level, with the header matching your customized level name. Access level instances make up the rows of the spreadsheet. Make sure to fully define the path of each access level instance. You can also select the level, parent access level instance, and configure the name of a single new access level instance using the Add Access Level Instance button.", + "ACCESS_LEVEL_ROOT_TEXT": "There is only one access level instance allowed at the root of the tree (level 1). Click on the pencil icon if you wish to rename it.", + "ACCESS_LEVEL_STRUCTURE_UPLOAD_TEXT": "Upload your Organizational Structure in spreadsheet form. The file should include a column for each access level with its column header equal to the custom access level name. Each row should contain an access level instance, with its ancestry fully defined (parent node name, grand-parent node name, etc.)", + "ACCESS_LEVEL_TREE_HELP_1": "This page allows you to view the structure of your organization's content. The structure is made up of hierarchical levels that define a tree; these are called access levels. Each level contains one or more nodes, called access level instances. Permissions are managed by associating content and users with a particular access level instance, thereby grouping and restricting access to the content. The number of access levels in your structure, the names of the levels, and the names of the access level instances are customizable.", "ADD_FILES_TO": "Add files to {dataset_name}.", "ADD_REMOVE_LABELS_FROM_PROPERTIES": "Add or remove labels from {num, plural, one{1 selected property} other{# selected properties}}", "ADD_REMOVE_LABELS_FROM_TAXLOTS": "Add or remove labels from {num, plural, one{1 selected tax lot} other{# selected tax lots}}", @@ -36,6 +46,10 @@ "About SEED Platform™": "About SEED Platform™", "Accept": "Accept", "Accept Terms of Service?": "Accept Terms of Service?", + "Access Level Instances Errors": "Access Level Instances Errors", + "Access Level Tree": "Access Level Tree", + "Access Levels (AL)": "Access Levels (AL)", + "Access Levels Instances (ALI)": "Access Levels Instances (ALI)", "Acknowledge": "Acknowledge", "Actions": "Actions", "Active": "Active", @@ -43,9 +57,12 @@ "Actual Column": "Actual Column", "Actual Field": "Actual Field", "Add": "Add", + "Add Access Level": "Add Access Level", "Add Column": "Add Column", "Add Data Files": "Add Data Files", "Add Label": "Add Label", + "Add Level Instance (Node) to the Organizational Structure": "Add Level Instance (Node) to the Organizational Structure", + "Add Levels to the Organizational Structure Tree": "Add Levels to the Organizational Structure Tree", "Add Mapping": "Add Mapping", "Add Shared Properties": "Add Shared Properties", "Add Shared Tax Lots": "Add Shared Tax Lots", @@ -147,6 +164,7 @@ "Campus": "Campus", "Cancel": "Cancel", "Cannot delete protected objects while related objects still exist": "Cannot delete protected objects while related objects still exist", + "Cannot delete this access level instance.": "Cannot delete this access level instance.", "Change Merged Property": "Change Merged Property", "Change Merged Tax Lot": "Change Merged Tax Lot", "Change Password": "Change Password", @@ -241,6 +259,7 @@ "Custom ID 1": "Custom ID 1", "Custom ID 1 (Property)": "Custom ID 1 (Property)", "Custom ID 1 (Tax Lot)": "Custom ID 1 (Tax Lot)", + "Custom Name for Level": "Custom Name for Level", "Custom Reports": "Custom Reports", "Custom emails can be sent to Building Owners using the templates defined below. The email will be sent to the SEED record's Owner Email address and is currently not configurable. The email 'from' address is the same as the server email address which is also used to email users their account information.": "Custom emails can be sent to Building Owners using the templates defined below. The email will be sent to the SEED record's Owner Email address and is currently not configurable. The email 'from' address is the same as the server email address which is also used to email users their account information.", "Cycle": "Cycle", @@ -291,6 +310,7 @@ "Default Data Administrator Account Name": "Default Data Administrator Account Name", "Default Display Fields": "Default Display Fields", "Delete": "Delete", + "Delete Access Level Instance": "Delete Access Level Instance", "Delete All Mappings": "Delete All Mappings", "Delete Indication Label After Successful Salesforce Update": "Delete Indication Label After Successful Salesforce Update", "Delete Organization": "Delete Organization", @@ -340,6 +360,7 @@ "EXCLUDE": "EXCLUDE", "EXTRA_DATA_COL_TYPE_CHANGE": "For “extra data” fields, this allows the user to set the type, such as Text, Number, Date, etc.", "Edit": "Edit", + "Edit Access Level Instance Name": "Edit Access Level Instance Name", "Edit Name": "Edit Name", "Edit UBIDs": "Edit UBIDs", "Email": "Email", @@ -356,6 +377,7 @@ "Energy data file": "Energy data file", "English": "English", "Enter Email Address": "Enter Email Address", + "Enter a Name for the new Access Level Instance": "Enter a Name for the new Access Level Instance", "Enter a valid email address.": "Enter a valid email address.", "Enter email address": "Enter email address", "Enter first name": "Enter first name", @@ -365,6 +387,7 @@ "Enter the minimum threshold count of buildings that can be returned in a shared query. The building count threshold is important for allowing other organizations to perform statistical analysis on your data without revealing information about individual buildings.": "Enter the minimum threshold count of buildings that can be returned in a shared query. The building count threshold is important for allowing other organizations to perform statistical analysis on your data without revealing information about individual buildings.", "Error": "Error", "Error Processing Data": "Error Processing Data", + "Example Access Level Tree": "Example Access Level Tree", "Example Usage": "Example Usage", "Existing Audit Template Properties (skipped)": "Existing Audit Template Properties (skipped)", "Existing Cycles": "Existing Cycles", @@ -530,6 +553,7 @@ "Latitude": "Latitude", "Left Axis": "Left Axis", "Left Half": "Left Half", + "Level": "Level", "Loading data...": "Loading data...", "Loading labels...": "Loading labels...", "Loading...": "Loading...", @@ -568,6 +592,7 @@ "Manage available cycles.": "Manage available cycles.", "Manage compliance": "Manage compliance", "Managed by": "Managed by", + "Managing the Access Level Tree": "Managing the Access Level Tree", "Manual Matching": "Manual Matching", "Map": "Map", "Map SEED fields to imported file fields": "Map SEED fields to imported file fields", @@ -802,6 +827,7 @@ "Related Properties": "Related Properties", "Related Tax Lots": "Related Tax Lots", "Remove": "Remove", + "Remove Access Level": "Remove Access Level", "Remove Column Mappings": "Remove Column Mappings", "Remove From Project": "Remove From Project", "Remove Inventory": "Remove Inventory", @@ -938,6 +964,8 @@ "Select columns from the list below to make them appear in your Tax Lots Detail table. Drag the rows to change the order in which they appear.": "Select columns from the list below to make them appear in your Tax Lots Detail table. Drag the rows to change the order in which they appear.", "Select columns from the lists below to make them appear on the left or right halves of your Matching List table. Drag the rows to change the order in which they appear.": "Select columns from the lists below to make them appear on the left or right halves of your Matching List table. Drag the rows to change the order in which they appear.", "Select one or more filter groups to load your inventory.": "Select one or more filter groups to load your inventory.", + "Select the Level at which you want to add the new Instance": "Select the Level at which you want to add the new Instance", + "Select the new Instance's Parent Access Level Instance": "Select the new Instance's Parent Access Level Instance", "Select the type of file(s) you would like to add to": "Select the type of file(s) you would like to add to", "Select which columns to include in the list:": "Select which columns to include in the list:", "Selected Properties": "Selected Properties", @@ -980,6 +1008,8 @@ "State": "State", "State (Property)": "State (Property)", "State (Tax Lot)": "State (Tax Lot)", + "Step 1: Add Access Levels": "Step 1: Add Access Levels", + "Step 2: Upload Access Level Instances": "Step 2: Upload Access Level Instances", "Sub-Org Name": "Sub-Org Name", "Sub-Org name is required.": "Sub-Org name is required.", "Sub-Organization Name": "Sub-Organization Name", diff --git a/seed/static/seed/locales/fr_CA.json b/seed/static/seed/locales/fr_CA.json index fac5f1c5c1..bb01bd4241 100644 --- a/seed/static/seed/locales/fr_CA.json +++ b/seed/static/seed/locales/fr_CA.json @@ -14,7 +14,17 @@ "A Custom Report allows you to look at aggregated data across your inventories and cycles. This is useful to see how specific metrics change over time.": "Un rapport personnalisé vous permet de consulter des données agrégées sur vos inventaires et vos cycles. Ceci est utile pour voir comment des métriques spécifiques changent au fil du temps.", "A list of your imported headers.": "Une liste de vos en-têtes importés.", "A preview of your concatenated data will appear in the box below.": "Un aperçu de vos données concaténées apparaîtra dans la case ci-dessous.", + "ACCESS_LEVEL_DELETE_AREYOUSURE": "Êtes-vous sûr de vouloir supprimer cette instance de niveau d'accès ? L'opération supprimera également toutes les instances de niveau d'accès inférieures à celle-ci.", + "ACCESS_LEVEL_DESCRIPTION": "Définissez des niveaux d'accès pour structurer le contenu de votre organisation. Une organisation peut avoir un ou plusieurs niveaux d'accès. Toutes les organisations ont au moins un niveau (niveau 1), nommé par défaut avec le nom de l'organisation. Tous les noms de niveaux d'accès sont personnalisables.", "ACCESS_LEVEL_FILENAME_UPLOADED": "Le fichier d'instances de niveau d'accès a été téléchargé", + "ACCESS_LEVEL_INSTANCE_DESCRIPTION": "Les instances de niveau d'accès sont des sous-groupes personnalisés qui peuvent être définis au sein de chaque niveau d'accès. Ces ALI sont utilisées pour associer du contenu et restreindre l'accès des utilisateurs aux données. Il existe une seule ALI au niveau 1 de la hiérarchie, la racine du graphe en arbre. Celui-ci est nommé « racine » par défaut, mais peut être personnalisé. Tous les autres niveaux peuvent contenir une ou plusieurs ALI.", + "ACCESS_LEVEL_ORG_OWNER": "En tant que propriétaire d'une organisation, vous pouvez définir la structure de votre graphe en arbre de niveaux d'accès à l'aide des boutons ci-dessous. Ce processus doit être effectué avant d'importer des données et d'ajouter des utilisateurs à votre organisation.", + "ACCESS_LEVEL_OWNER_END": "Une fois que vous avez configuré le graphe en arbre des niveaux d'accès de votre organisation, vous êtes prêt à ajouter des utilisateurs et des propriétés aux différents niveaux de l'arbre.", + "ACCESS_LEVEL_OWNER_STEP1": "Configurez le numéro et le nom de vos niveaux d'accès à l'aide du bouton Modifier\/Ajouter des niveaux d'accès.", + "ACCESS_LEVEL_OWNER_STEP2": "Téléchargez une feuille de calcul des instances de niveau d'accès. La feuille de calcul doit avoir un colonne pour chaque niveau d'accès, avec l'en-tête correspondant à votre nom de niveau personnalisé. Les instances de niveau d'accès constituent les lignes de la feuille de calcul. Assurez-vous de définir entièrement le chemin de chaque instance de niveau d’accès. Vous pouvez également sélectionner le niveau, l'instance de niveau d'accès parent et configurer le nom d'une seule nouvelle instance de niveau d'accès à l'aide du bouton Ajouter une instance de niveau d'accès.", + "ACCESS_LEVEL_ROOT_TEXT": "Il n'y a qu'une seule instance de niveau d'accès autorisée à la racine du graphe en arbre (niveau 1). Cliquez sur l'icône en forme de crayon si vous souhaitez le renommer.", + "ACCESS_LEVEL_STRUCTURE_UPLOAD_TEXT": "Téléchargez votre structure organisationnelle sous forme de feuille de calcul. Le fichier doit inclure une colonne pour chaque niveau d'accès avec son en-tête de colonne égal au nom du niveau d'accès personnalisé. Chaque ligne doit contenir une instance de niveau d'accès, avec son ascendance entièrement définie (nom du nœud parent, nom du nœud grand-parent, etc.)", + "ACCESS_LEVEL_TREE_HELP_1": "Cette page vous permet de visualiser la structure du contenu de votre organisation. La structure est constituée de niveaux hiérarchiques qui définissent une arborescence ; c'est ce qu'on appelle les niveaux d'accès. Chaque niveau contient un ou plusieurs nœuds, appelés instances de niveau d'accès. Les autorisations sont gérées en associant le contenu et les utilisateurs à une instance de niveau d'accès particulière, regroupant et restreignant ainsi l'accès au contenu. Le nombre de niveaux d'accès dans votre structure, les noms des niveaux et les noms des instances de niveau d'accès sont personnalisables.", "ADD_FILES_TO": "Ajoutez des fichiers à {dataset_name}.", "ADD_REMOVE_LABELS_FROM_PROPERTIES": "Ajouter ou supprimer des étiquettes de {num, plural, one{1 propriété sélectionnée} other{# propriétés sélectionnées}}", "ADD_REMOVE_LABELS_FROM_TAXLOTS": "Ajouter ou supprimer des étiquettes de {num, plural, one{1 lot d'impôt sélectionné} other{# lots d'impôt sélectionnés}}", @@ -36,6 +46,10 @@ "About SEED Platform™": "À propos de SEED Platform™", "Accept": "Acceptez", "Accept Terms of Service?": "Accepter les conditions d'utilisation?", + "Access Level Instances Errors": "Erreurs d’instances de niveau d’accès", + "Access Level Tree": "Graphe en arbre des niveaux d'accès", + "Access Levels (AL)": "Niveaux d'accès (AL)", + "Access Levels Instances (ALI)": "Instances de niveaux d'accès (ALI)", "Acknowledge": "Reconnaître", "Actions": "Actions", "Active": "actif", @@ -43,9 +57,12 @@ "Actual Column": "Colonne réelle", "Actual Field": "Champ réel", "Add": "Ajouter", + "Add Access Level": "Ajouter un niveau d'accès", "Add Column": "Ajouter une colonne", "Add Data Files": "Ajouter des fichiers de données", "Add Label": "Ajouter une étiquette", + "Add Level Instance (Node) to the Organizational Structure": "Ajouter une instance de niveau (nœud) à la structure organisationnelle", + "Add Levels to the Organizational Structure Tree": "Ajouter des niveaux à l'arbre de la structure organisationnelle", "Add Mapping": "Ajouter une configuration", "Add Shared Properties": "Ajouter des propriétés partagées", "Add Shared Tax Lots": "Ajouter des lots d'impôt partagés", @@ -147,6 +164,7 @@ "Campus": "Campus", "Cancel": "Annuler", "Cannot delete protected objects while related objects still exist": "Impossible de supprimer des objets protégés alors que des objets apparentés existent toujours", + "Cannot delete this access level instance.": "Impossible de supprimer cette instance de niveau d'accès.", "Change Merged Property": "Modifier la propriété fusionnée", "Change Merged Tax Lot": "Modifier le lot d'impôt fusionnée", "Change Password": "Changer le mot de passe", @@ -241,6 +259,7 @@ "Custom ID 1": "ID personnalisée 1", "Custom ID 1 (Property)": "ID personnalisé 1 (propriété)", "Custom ID 1 (Tax Lot)": "ID personnalisé 1 (lot d'impôt)", + "Custom Name for Level": "Nom personnalisé pour le niveau", "Custom Reports": "Rapports", "Custom emails can be sent to Building Owners using the templates defined below. The email will be sent to the SEED record's Owner Email address and is currently not configurable. The email 'from' address is the same as the server email address which is also used to email users their account information.": "Des e-mails personnalisés peuvent être envoyés aux propriétaires d'immeubles à l'aide des modèles définis ci-dessous. L'e-mail sera envoyé à l'adresse e-mail du propriétaire de l'enregistrement SEED et n'est actuellement pas configurable. L'adresse e-mail \"de\" est la même que l'adresse e-mail du serveur qui est également utilisée pour envoyer aux utilisateurs leurs informations de compte par e-mail.", "Cycle": "Cycle", @@ -291,6 +310,7 @@ "Default Data Administrator Account Name": "Nom du compte d'administrateur de données par défaut", "Default Display Fields": "Champs d'affichage par défaut", "Delete": "Supprimer", + "Delete Access Level Instance": "Supprimer une instance de niveau d'accès", "Delete All Mappings": "Supprimer tous les mappages", "Delete Indication Label After Successful Salesforce Update": "Supprimer l'étiquette d'indication après une mise à jour réussie de Salesforce", "Delete Organization": "Supprimer l'organisation", @@ -340,6 +360,7 @@ "EXCLUDE": "EXCLURE", "EXTRA_DATA_COL_TYPE_CHANGE": "Pour les champs «données supplémentaires», cela permet à l'utilisateur de définir le type, tel que Texte, Numéro, Date, etc.", "Edit": "Modifier", + "Edit Access Level Instance Name": "Modifier le nom de l'instance du niveau d'accès", "Edit Name": "Modifier le nom", "Edit UBIDs": "Modifier les UBIDs", "Email": "Email", @@ -356,6 +377,7 @@ "Energy data file": "Fichier de données d'énergie", "English": "Anglais", "Enter Email Address": "Entrer l'adresse e-mail", + "Enter a Name for the new Access Level Instance": "Entrez un nom pour la nouvelle instance de niveau d'accès", "Enter a valid email address.": "Entrez une adresse mail valide.", "Enter email address": "Entrer l'adresse e-mail", "Enter first name": "Entrez le prénom", @@ -365,6 +387,7 @@ "Enter the minimum threshold count of buildings that can be returned in a shared query. The building count threshold is important for allowing other organizations to perform statistical analysis on your data without revealing information about individual buildings.": "Entrez le nombre de seuils minimal des bâtiments pouvant être renvoyés dans une requête partagée. Le seuil de nombre de bâtiments est important pour permettre à d'autres organisations d'effectuer une analyse statistique de vos données sans révéler d'informations sur les bâtiments individuels.", "Error": "Erreur", "Error Processing Data": "Erreur lors du traitement des données", + "Example Access Level Tree": "Exemple de graphe en arbre de niveaux d'accès", "Example Usage": "Exemple d'utilisation", "Existing Audit Template Properties (skipped)": "Propriétés du modèle d'audit existant (ignoré)", "Existing Cycles": "Cycles existants", @@ -530,6 +553,7 @@ "Latitude": "Latitude", "Left Axis": "Axe gauche", "Left Half": "Moitié gauche", + "Level": "Niveau", "Loading data...": "Chargeant les données ...", "Loading labels...": "Chargement des étiquettes ...", "Loading...": "Chargeant...", @@ -568,6 +592,7 @@ "Manage available cycles.": "Gérer les cycles disponibles.", "Manage compliance": "Gérer la conformité", "Managed by": "Dirigé par", + "Managing the Access Level Tree": "Graphe en arbre des niveaux d'accès", "Manual Matching": "Correspondance manuelle", "Map": "Carte", "Map SEED fields to imported file fields": "Mapper les champs SEED aux champs de fichiers importés", @@ -639,7 +664,7 @@ "NUMBER_OF_TAXLOTS": "{num, plural, one{1 lot d'impôt} other{# lot d'impôts}}", "NUM_PROPERTIES_AND_TAXLOTS_DELETED": "{num_properties,plural,=0{aucune propriété} one{1<\/strong> propriété} other{#<\/strong> propriétés}} et {num_taxlots,plural,=0{aucun lot d'impôt} one{1<\/strong>lot d'impôt} other{#<\/strong> lots d'impôt}} ont été supprimé", "NUM_PROPERTY_TAXLOT_COLUMNS_AVAILABLE": "Il existe {num_property_columns} colonnes de propriétés et {num_taxlot_columns} colonnes de lot d'impôt qui vous sont accessibles.", - "Name": "nom", + "Name": "Nom", "National Renewable Energy Laboratory": "Laboratoire National Des Énergies Renouvelables", "New Analysis": "Nouvelle analyse", "New Note": "Nouvelle note", @@ -802,6 +827,7 @@ "Related Properties": "Propriétés connexes", "Related Tax Lots": "Lots d'impôt connexes", "Remove": "Supprimer", + "Remove Access Level": "Supprimer le niveau d'accès", "Remove Column Mappings": "Supprimer les mappages de colonnes", "Remove From Project": "Supprimer du projet", "Remove Inventory": "Supprimer l'inventaire", @@ -938,6 +964,8 @@ "Select columns from the list below to make them appear in your Tax Lots Detail table. Drag the rows to change the order in which they appear.": "Sélectionnez les colonnes de la liste ci-dessous pour les faire apparaître dans votre tableau de détail des lots d'impôt. Faites glisser les lignes pour modifier l'ordre dans lequel elles apparaissent.", "Select columns from the lists below to make them appear on the left or right halves of your Matching List table. Drag the rows to change the order in which they appear.": "Sélectionnez les colonnes dans les listes ci-dessous pour les faire apparaître sur les moitiés gauche ou droite de votre table de Liste des Correspondances. Faites glisser les lignes pour modifier l'ordre dans lequel elles apparaissent.", "Select one or more filter groups to load your inventory.": "Sélectionnez un ou plusieurs groupes de filtres pour charger votre inventaire.", + "Select the Level at which you want to add the new Instance": "Sélectionnez le niveau auquel vous souhaitez ajouter la nouvelle instance", + "Select the new Instance's Parent Access Level Instance": "Sélectionnez l'instance de niveau d'accès parent de la nouvelle instance", "Select the type of file(s) you would like to add to": "Sélectionnez le type de fichier (s) que vous souhaitez ajouter à", "Select which columns to include in the list:": "Sélectionnez les colonnes à inclure dans la liste:", "Selected Properties": "Propriétés Sélectionnées", @@ -980,6 +1008,8 @@ "State": "État", "State (Property)": "Etat (Propriété)", "State (Tax Lot)": "État (lot d'impôt)", + "Step 1: Add Access Levels": "Étape 1: ajouter des niveaux d'accès", + "Step 2: Upload Access Level Instances": "Étape 2: Télécharger les instances de niveau d'accès", "Sub-Org Name": "Nom de la sous-organisation", "Sub-Org name is required.": "Le nom de la sous-organisation est requis.", "Sub-Organization Name": "Nom de la sous-organisation", diff --git a/seed/static/seed/partials/access_level_instances_import_messages.html b/seed/static/seed/partials/access_level_instances_import_messages.html index 631e1f186f..1ec00f433a 100644 --- a/seed/static/seed/partials/access_level_instances_import_messages.html +++ b/seed/static/seed/partials/access_level_instances_import_messages.html @@ -1,7 +1,7 @@
- Access Level Instances Errors + Access Level Instances Errors
diff --git a/seed/static/seed/partials/data_upload_modal.html b/seed/static/seed/partials/data_upload_modal.html index 5055b3bde1..c6ba20f333 100644 --- a/seed/static/seed/partials/data_upload_modal.html +++ b/seed/static/seed/partials/data_upload_modal.html @@ -39,6 +39,9 @@
+
+

ACCESS_LEVEL_STRUCTURE_UPLOAD_TEXT

+
diff --git a/seed/static/seed/partials/organization_access_level_tree.html b/seed/static/seed/partials/organization_access_level_tree.html index aa40f5bf0a..879db38291 100644 --- a/seed/static/seed/partials/organization_access_level_tree.html +++ b/seed/static/seed/partials/organization_access_level_tree.html @@ -21,66 +21,64 @@

{$:: 'Access Level Tree' | translate $}

-
+
+ +
+

ACCESS_LEVEL_TREE_HELP_1

+

Access Levels (AL)

+

ACCESS_LEVEL_DESCRIPTION

+

Access Levels Instances (ALI)

+

ACCESS_LEVEL_INSTANCE_DESCRIPTION

+

Example Access Level Tree

+ + +

Managing the Access Level Tree

+

ACCESS_LEVEL_ORG_OWNER

+
    +
  • {$:: 'Step 1: Add Access Levels' | translate $} - + ACCESS_LEVEL_OWNER_STEP1 +
  • +
  • {$:: 'Step 2: Upload Access Level Instances' | translate $} - + ACCESS_LEVEL_OWNER_STEP2 +
  • +
+

ACCESS_LEVEL_OWNER_END

+
- - -
-

{$:: access_level_tree[0].data.name $} - + + -

-
- - - -
- {$ access_level_names[1] $} -
-
-
-
- -
-
+ +
-
-
- -
-
-
-
-
-
+
+
+
+