{"action":"created","issue":{"url":"https://api.github.com/repos/GeoNode/geonode/issues/2408","repository_url":"https://api.github.com/repos/GeoNode/geonode","labels_url":"https://api.github.com/repos/GeoNode/geonode/issues/2408/labels{/name}","comments_url":"https://api.github.com/repos/GeoNode/geonode/issues/2408/comments","events_url":"https://api.github.com/repos/GeoNode/geonode/issues/2408/events","html_url":"https://github.com/GeoNode/geonode/issues/2408","id":127937117,"number":2408,"title":"GNIP: GeoNode Metadata Editor Improvements","user":{"login":"afabiani","id":1278021,"avatar_url":"https://avatars.githubusercontent.com/u/1278021?v=3","gravatar_id":"","url":"https://api.github.com/users/afabiani","html_url":"https://github.com/afabiani","followers_url":"https://api.github.com/users/afabiani/followers","following_url":"https://api.github.com/users/afabiani/following{/other_user}","gists_url":"https://api.github.com/users/afabiani/gists{/gist_id}","starred_url":"https://api.github.com/users/afabiani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/afabiani/subscriptions","organizations_url":"https://api.github.com/users/afabiani/orgs","repos_url":"https://api.github.com/users/afabiani/repos","events_url":"https://api.github.com/users/afabiani/events{/privacy}","received_events_url":"https://api.github.com/users/afabiani/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/GeoNode/geonode/labels/enhancement","name":"enhancement","color":"02d7e1"},{"url":"https://api.github.com/repos/GeoNode/geonode/labels/gnip","name":"gnip","color":"d7e102"},{"url":"https://api.github.com/repos/GeoNode/geonode/labels/management-commands","name":"management-commands","color":"ededed"},{"url":"https://api.github.com/repos/GeoNode/geonode/labels/metadata","name":"metadata","color":"ededed"},{"url":"https://api.github.com/repos/GeoNode/geonode/labels/refactor","name":"refactor","color":"e102d8"}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/GeoNode/geonode/milestones/9","html_url":"https://github.com/GeoNode/geonode/milestones/2.7","labels_url":"https://api.github.com/repos/GeoNode/geonode/milestones/9/labels","id":1953396,"number":9,"title":"2.7","description":"","creator":{"login":"jj0hns0n","id":506078,"avatar_url":"https://avatars.githubusercontent.com/u/506078?v=3","gravatar_id":"","url":"https://api.github.com/users/jj0hns0n","html_url":"https://github.com/jj0hns0n","followers_url":"https://api.github.com/users/jj0hns0n/followers","following_url":"https://api.github.com/users/jj0hns0n/following{/other_user}","gists_url":"https://api.github.com/users/jj0hns0n/gists{/gist_id}","starred_url":"https://api.github.com/users/jj0hns0n/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jj0hns0n/subscriptions","organizations_url":"https://api.github.com/users/jj0hns0n/orgs","repos_url":"https://api.github.com/users/jj0hns0n/repos","events_url":"https://api.github.com/users/jj0hns0n/events{/privacy}","received_events_url":"https://api.github.com/users/jj0hns0n/received_events","type":"User","site_admin":false},"open_issues":100,"closed_issues":0,"state":"open","created_at":"2016-08-21T06:54:38Z","updated_at":"2016-08-21T12:57:50Z","due_on":null,"closed_at":null},"comments":11,"created_at":"2016-01-21T14:36:01Z","updated_at":"2016-08-21T13:36:11Z","closed_at":null,"body":"# Overview\r\nGeoNode provides a metadata editor which offers a basic set of fields in a quite flat form; the current form layout makes it relatively difficult for the user to find out which fields are mandatory, and how the different information are related one to the other. The editing form should be made more user-friendly, for instance by driving the user to edit the mandatory metadata, and helping him to easily spot the missing parts.\r\n\r\n## Proposed by\r\nEmanuele Tajariol ([GeoSolutions](http://www.geo-solutions.it))\r\nAlessio Fabiani ([GeoSolutions](http://www.geo-solutions.it))\r\n\r\n## Assigned to release\r\nNone yet.\r\n\r\n## Motivation\r\nGeoNode is a tool whose main purpose is sharing data. Metadata are functional in this context in order for the system to be able to keep a minimum of data information and to search data according to some standard filters. This means the GeoNode is not dealing with metadata in their full complexity, as other projects do, but restricts its range of metadata functionalities to a set of elements loosely related to the mandatory information that ISO19115(1) requires.\r\n\r\nMetadata are fundamental in cataloging data, since the more information are associated to a certain data, the easier it will be to search for and reuse it. On the other side, all this information need to be inserted and edited somehow. The edit process is usually long and time consuming, and often error prone if not properly driven.\r\n\r\nIn the open source software arena there are projects which are explicitly targeted at managing metadata, such as GeoNetwork Opensource(2) . GeoNetwork approach to data and metadata is just the opposite with respect to GeoNode: GeoNetwork concentrates on metadata, while leaving the data dissemination as an ancillary service. This complete dedication to the metadata aspects makes GeoNetwork well fit in any system which requires an all-around tool for dealing with metadata (metadata editing, standard query protocols and so on), so that GeoNode itself contemplates GeoNetwork as one of the possibile catalog backends. These considerations lead us to take GeoNetwork as one of the state-of-the-art models to which a metadata tool should compare to. Anyway the functionalities in GeoNetwork are way too advanced for the purposes metadata are used in GeoNode, so we may borrow just some ideas from the editor UI in GeoNetwork.\r\n\r\nGeoNetwork offers validation procedures to check, using different integrated tools, if the metadata under editing is valid according to the ISO schema and other constraints. Those validation procedures are quite complex and do not need to be replicated inside the GeoNode editor, anyway the user should always be able to check if the entered metadata are valid, with clear indication of the fields that needs to be corrected.\r\n\r\n# Proposal\r\n\r\n## Improved edit form\r\nThe current edit form is quite simple, and only includes a set of information that are a subset of the ISO19115. Furthermore the editing fields are not grouped by topic, and the user is not well informed about which fields are mandatory and which are not.\r\n\r\n### Mandatory fields and validation\r\nISO19115 dictates some constraints in the various fields of a metadata document. Since one of the most important point in running a metadata catalogs is the possibility of exchanging data, adhering the most to standard formats is one way to facilitate the integration among catalogs. \r\nMost of the constraints are usually about the existence of some specific information; some other times, the constraints involve the values of more than one field, e.g.  a specific field should be assigned a determined value according to the value of another field (this kind of constraints are often called cross-field checks).\r\n\r\nIn order to follow the metadata constraints, the metadata manager should be guided in compiling the various metadata fields. The editor UI should clearly show which metadata fields are mandatory, and the invalid fields should be clearly marked, in real time where possible, or at user request and when saving (for cross-fields checks). \r\nSince these checks imply the implementation of some validation logic, it can be optionally also used to disallow the user to submit a resource metadata that is not valid or complete. Such option should be enabled by the administrator in the system configuration. \r\n\r\n### Field grouping\r\nGenerally a metadata record is not a set of independent information about data. This information are often quite structured (for instance in ISO19115 the metadata are a set of information in a strict hierarchycal structure), and the various fields are inter related.\r\n\r\nShowing to the user this inter-relation may facilitate the understanding of the semantic of the information, and the editing of the related data.\r\nAll the information fields should be split in different groups in the user interface, grouping together the related metadata fields.\r\n\r\nWhen the editing interface appears, only the mandatory fields should be visualized and ready for editing; the available but optional fields should be hidden at first, leaving to the user who really needs it the option to visualize and edit them. This can be easily accomplished using the widget provided by the framework.\r\n\r\n### Keywords\r\nKeywords are free text tags which are used to categorize metadata. Given the free text nature of this data, errors such like misspellings or other minor editing issues (e.g.: using singular and plural words in different metadata) may decrease the usefulness of this tool.\r\nIn order to solve this issue, often one or more thesauri are given, that is a fixed set of terms that are selected from a list. Offering a list of fixed keywords, contained in a thesaurus configured by the administrator, will facilitate the user in categorizing the data being documented.\r\nThesauri also solve the localization issue in keyword search: being a list of fixed values, the stored value may be presented in the current user language, provided that a translation is set in the thesaurus.\r\n\r\nThe use of a thesaurus will be configured at system level by the administrator. \r\nThesauri will be provided in a standard format(3) . If the system is configured to use a thesaurus, the keyword input field will not be a textual field, but a multi select list, where the items will be displayed in the current language selected in the browser. In the same way, in the main search page the keyword selection list will display the keywords in the searcher language.\r\n\r\n## Dashboard\r\nAdministrators should be able to have an overview on all the inserted metadata, and quickly spot any invalid metadata stored in the catalog.\r\nGeoNode already provides dashboards for \r\n\r\n  - layers\r\n  - maps\r\n  - documents\r\n\r\nIn order not to have yet another resource list, those three existing dashboards will be enhanced with\r\n\r\n  - information about the metadata status (valid or invalid), \r\n  - filtering by the status\r\n  - in-line editing capabilities\r\n  - batch editing\r\n\r\nThe metadata status will be shown in a new column in the dashboard. The status is computed when the metadata is stored, and it’s added as a new information related to the metadata itself. This field will be a new searchable field, along with owner, category, licence and so on.\r\n\r\nFrom the dashboard, the administrator will be able to:\r\n\r\n  - open the resource detail page to edit the metadata (this can be only done for maps at the moment)\r\n  - edit some of the most common metadata fields without the need to open the detail editor page; \r\n  - perform a batch editing\r\n\r\n### Batch editing\r\nBatch editing will allow the administrator to set the same values for the edited fields for all the selected resources.\r\n\r\nWhile in the dashboard, the admin will select one or more elements;  the drop down action will have the new “edit metadata” entry. Once selected, the admin will be presented with an editing UI quite similar to the one for a single entry; Differences in the UI will be mainly on the fields that need to be unique (e.g. the title), which won’t be editable.\r\nWhen the editing will be finished (i.e. after the admin presses the “save” button on the UI), the fields that will have been edited will be updated in all the selected elements, while the unedited fields will be left untouched.\r\n\r\n## Uploading metadata\r\nThere may be cases when a given published data could already have an existing metadata in ISO19139 format, or it is desired for a metadata to be edited in an external tool which allow more information to be added to the metadata document.\r\nWhen such a metadata exists, it should be possible to use it to describe the related data.\r\n\r\nGeoNode handles the single metadata fields in an internal format; the fields values are then merged into a fixed template whenever a new ISO metadata is needed, that is on creation or after that metadata have been edited.\r\nThis means that the metadata XML document is recreated from scratch every time it is stored.\r\n\r\nThe requirement is to allow the user to upload its own metadata, making possible to edit in GeoNode the set of fields that the GeoNode metadata editor supports, while, at the same time, leaving unaltered all the remaining information in the metadata document.\r\nIn this scenario the fixed template should not be used, but the new edited values should be injected directly in the original XML document.\r\nIn order to obtain this behavior, each editable field should be bound to its xpath(4), which shall be used for both reading the values from the XML metadata into the internal model, and to store the edited values into the original uploaded XML document.\r\n\r\n# Mockups\r\n\r\n## Metadata editor\r\nAs proposed in the previous sections, the metadata editor will be modified in order to have\r\n  - field grouped by sections\r\n  - clear indication of which fields are mandatory\r\n  - handling of keywords by thesauri\r\n\r\nThe main editing page will be similar to the picture in Fig. 1:\r\n![wb-gfdrr - metadata editing improvements w- mockups](https://cloud.githubusercontent.com/assets/1278021/13774105/64499868-ea9d-11e5-9f09-a5094193181f.jpg)\r\n_Fig. 1_\r\n\r\nThe first section (**“Data Info”**) contains more or less the fields enclosed in the _MD_DataIdentification_ element of **ISO19115**.\r\n\r\nThe second section (**“Metadata Info”**) contains the other elements contained in _MD_Metadata_.\r\n\r\nThe elements in **“Responsible parties”** are elements that are either referred to data or to all the metadata; by having all the responsible parties one next to the other will help the user to understand the differences among them, which can be more difficult to understand when having these references scattered through the whole page.\r\n\r\nThe info in **“Resource administration”** and **“Attributes”** sections will not be used in the **ISO19115 ** metadata, but since the geonode user is used to find and edit these information in this page, we’ll leave them here.\r\n\r\nThe first 3 sections contains all of the **ISO19115 ** **mandatory **information, so that as soon as the editor page is presented, the user will have a clear idea about the information he has to insert in order to come out with a valid metadata record associated to the resource.\r\n\r\nSince the GeoNode user is usually allowed to edit also some more **optional fields** than the mandatory ones, we want to keep such fields in the editing interface, but we don’t want them to clutter the UI.\r\n\r\nIn each section that allows more optional fields, there will be a button “other information” that will expand the section panel and show such fields (Fig. 2).\r\n\r\n![wb-gfdrr - metadata editing improvements w- mockups 1](https://cloud.githubusercontent.com/assets/1278021/13774163/c6feb6dc-ea9d-11e5-8c1f-3e1deb1aca0f.jpg)\r\n_Fig. 2_\r\n\r\n### Metadata editor: “data info” section\r\n![wb-gfdrr - metadata editing improvements w- mockups 2](https://cloud.githubusercontent.com/assets/1278021/13774334/ce3e57da-ea9e-11e5-8feb-b35ad99c714b.jpg)\r\n_Fig. 3_\r\n\r\nMost of the fields in this section (Fig. 3) are already present in the current GeoNode metadata editor. What’s new here is the possibility to enter **keywords related to one or more specific thesauri**.\r\n\r\nA dropdown selection list will be presented to the user with all the available thesaurus terms.\r\n\r\nThe administrator will be able to tell to the system whether a keyword from a given thesaurus should be mandatory or not. In such case, the thesaurus dropdown will appear in the base editing page; otherwise, the keyword selection from such thesaurus will only appear when the section is expanded, showing the _“Other data information”_.\r\n\r\n### Metadata editor: “data info” extended section\r\nThe picture in Fig. 4 shows the expanded _“Data Info”_ section.\r\n![wb-gfdrr - metadata editing improvements w- mockups 3](https://cloud.githubusercontent.com/assets/1278021/13774377/fef6b304-ea9e-11e5-9e25-e08c38de948e.jpg)\r\n_Fig. 4_\r\n\r\nMost of the fields are already presented in the current GeoNode version.\r\nWe also have the optional thesauri keywords, as explained in the previous paragraph.\r\n\r\n### Metadata editor: “data info” section\r\n![wb-gfdrr - metadata editing improvements w- mockups 4](https://cloud.githubusercontent.com/assets/1278021/13774392/16653056-ea9f-11e5-866d-5a5d4b71ead5.jpg)\r\n_Fig. 5_\r\n\r\nThe fields in these section (Fig. 5) are exactly the same as the ones in the current GeoNode metadata editor.\r\n\r\nShould we need to be strictly conformant to ISO19115 specification, the “Other restrictions” field should be editable only when the “Restriction” dropdown selects the “Other restrictions” entry.\r\n\r\n### Metadata editor: “Metadata info” extended section\r\nThe extended section only adds the “dropdown” selector for the optional Spatial Representation Info (Fig. 6):\r\n\r\n![wb-gfdrr - metadata editing improvements w- mockups 5](https://cloud.githubusercontent.com/assets/1278021/13774414/362d06b6-ea9f-11e5-8680-13b4211fd5e3.jpg)\r\n_Fig. 6_\r\n\r\n### Metadata editor: “Responsible parties” section\r\n![wb-gfdrr - metadata editing improvements w- mockups 6](https://cloud.githubusercontent.com/assets/1278021/13774432/4d24b1fc-ea9f-11e5-97d4-56553b4e4d86.jpg)\r\n_Fig. 7_\r\n\r\nThe “metadata author” field in this section (Fig. 7) is exactly the same as the one in the current GeoNode metadata editor; the author will be chosen among one use in GeoNode DB, defaulting to the current user which is editing the metadata.\r\n\r\nThe “Metadata Point of Contact” and the “Data owner” may be users not registered in the GeoNode instance, so we may want to enter the various fields one by one. ISO19115 allows for lots of info, but, in order to keep things simple, we’ll only request the position name (e.g. “GIS office”), the Organization name and one mail address.\r\n\r\nIn case more parties or role are needed, they may be added in the extended part of this section.\r\n\r\n## New Metadata Editor Page Proposal\r\nAccordingly to what stated on the points above and the need to improve usability, we are going to propose the following solution\r\n\r\n### Overview\r\nThe metadata editor page will be splitted into tabs as shown in Fig. 8\r\n\r\n![metadata - 1 overview](https://cloud.githubusercontent.com/assets/1278021/13921407/ff0fafac-ef77-11e5-9d91-e5e8cc4f4452.jpg)\r\n_Fig. 8_\r\n\r\nThe first tab contains the mandatory entries for ISO19115, trying to keep as lowest as possible the number of fields the user must fill.\r\n\r\nThe second tab allows the users to insert optionally and advanced information, not mandatory to be compliant with ISO but still useful to improve search and browse capabilities of the catalog.\r\n\r\nThe third tab allows the users to update information about the ownership of the Layer, making available ways to define and edit responsible parties, ownership and permissions of the Layer itself.\r\n\r\n### Mandatory Fields\r\nThe Fig. 9 gives an idea on the content of the Metadata mandatory fields.\r\n\r\n![metadata - 2 mandatory](https://cloud.githubusercontent.com/assets/1278021/13922412/7104456a-ef7c-11e5-93a5-b05600c507db.jpg)\r\n_Fig. 9_\r\n\r\nThe fields are divided into two sections: \"Data Info\" and \"Metadata Info\" as explained on the previous sections of this document.\r\n\r\nThe Keywords are automatically inserted into the thesaurus when the user saves the metadata.\r\nThe thesaurus can be always managed via the Admin interface.\r\n\r\nThe Topic Categories presented by default are the one mandatory for ISO, but they are still customizable from the GeoNode Admin GUI. It will be possible add more categories and associate icons in order to provide a visual feedback to the user instead of a boring long list of categories.\r\n\r\n### Advanced Fields\r\nThe Fig. 10 shows how the advanced fields are presented on a separate tab, which the user can optionally fill if interested on specifying very detailed information about the Layer.\r\n\r\n![metadata - 3 advanced](https://cloud.githubusercontent.com/assets/1278021/13923029/28295b98-ef7f-11e5-87b3-c3c278cab6ab.jpg)\r\n_Fig. 10_\r\n\r\n### Ownership\r\nThe Fig. 11 shows a draft mockup for the fields related to the ownership of the Layer and Metadata.\r\n\r\n![metadata - 4 ownership](https://cloud.githubusercontent.com/assets/1278021/13923080/6ced7638-ef7f-11e5-8228-fef4d689360d.jpg)\r\n_Fig. 11_\r\n\r\nIt is worth to point out that \"Responsible Parties\" section is dynamic. It will be possible to add and remove many different type of responsible parties.\r\n\r\nThe user can also save/load information to a shared address-book in order to avoid writing them every time.\r\n\r\n# Useful links\r\n* (1) http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=53798  ISO19115 is an “International Standard [that] provides information about the identification, the extent, the quality, the spatial and temporal schema, spatial reference, and distribution of digital geographic data.\" (as reported in the ISO19115 document itself).\r\n* (2) http://geonetwork-opensource.org/\r\n* (3) http://www.w3.org/TR/2009/REC-skos-reference-20090818/\r\n* (4) http://www.w3.org/TR/xpath20/  Xpath is an expression language that allows, among other things, to define the position of a given element within an XML document."},"comment":{"url":"https://api.github.com/repos/GeoNode/geonode/issues/comments/241257684","html_url":"https://github.com/GeoNode/geonode/issues/2408#issuecomment-241257684","issue_url":"https://api.github.com/repos/GeoNode/geonode/issues/2408","id":241257684,"user":{"login":"afabiani","id":1278021,"avatar_url":"https://avatars.githubusercontent.com/u/1278021?v=3","gravatar_id":"","url":"https://api.github.com/users/afabiani","html_url":"https://github.com/afabiani","followers_url":"https://api.github.com/users/afabiani/followers","following_url":"https://api.github.com/users/afabiani/following{/other_user}","gists_url":"https://api.github.com/users/afabiani/gists{/gist_id}","starred_url":"https://api.github.com/users/afabiani/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/afabiani/subscriptions","organizations_url":"https://api.github.com/users/afabiani/orgs","repos_url":"https://api.github.com/users/afabiani/repos","events_url":"https://api.github.com/users/afabiani/events{/privacy}","received_events_url":"https://api.github.com/users/afabiani/received_events","type":"User","site_admin":false},"created_at":"2016-08-21T13:36:11Z","updated_at":"2016-08-21T13:36:11Z","body":"Yep, we are working on this, but I'm afraid we won't be able to finish for\nthe current release.\n\nBest Regards,\nAlessio Fabiani.\n\n==\nGeoServer Professional Services from the experts!\nVisit http://goo.gl/it488V for more information.\n==\n\nIng. Alessio Fabiani\n@alfa7691\nFounder/Technical Lead\n\nGeoSolutions S.A.S.\nVia di Montramito 3/A\n55054  Massarosa (LU)\nItaly\nphone: +39 0584 962313\nfax:     +39 0584 1660272\nmob:   +39 331 6233686\n\nhttp://www.geo-solutions.it\nhttp://twitter.com/geosolutions_it\n\n-------------------------------------------------------\n\n*AVVERTENZE AI SENSI DEL D.Lgs. 196/2003*\n\nLe informazioni contenute in questo messaggio di posta elettronica e/o\nnel/i file/s allegato/i sono da considerarsi strettamente riservate. Il\nloro utilizzo è consentito esclusivamente al destinatario del messaggio,\nper le finalità indicate nel messaggio stesso. Qualora riceviate questo\nmessaggio senza esserne il destinatario, Vi preghiamo cortesemente di\ndarcene notizia via e-mail e di procedere alla distruzione del messaggio\nstesso, cancellandolo dal Vostro sistema. Conservare il messaggio stesso,\ndivulgarlo anche in parte, distribuirlo ad altri soggetti, copiarlo, od\nutilizzarlo per finalità diverse, costituisce comportamento contrario ai\nprincipi dettati dal D.Lgs. 196/2003.\n\n\n\nThe information in this message and/or attachments, is intended solely for\nthe attention and use of the named addressee(s) and may be confidential or\nproprietary in nature or covered by the provisions of privacy act\n(Legislative Decree June, 30 2003, no.196 - Italy's New Data Protection\nCode).Any use not in accord with its purpose, any disclosure, reproduction,\ncopying, distribution, or either dissemination, either whole or partial, is\nstrictly forbidden except previous formal approval of the named\naddressee(s). If you are not the intended recipient, please contact\nimmediately the sender by telephone, fax or e-mail and delete the\ninformation in this message that has been received in error. The sender\ndoes not give any warranty or accept liability as the content, accuracy or\ncompleteness of sent messages and accepts no responsibility  for changes\nmade after they were sent or for other risks which arise as a result of\ne-mail transmission, viruses, etc.\n\n---------------------------------------------------------------------\n\nOn Sun, Aug 21, 2016 at 9:55 AM, Jeffrey Johnson <notifications@github.com>\nwrote:\n\n> @etj <https://github.com/etj> @afabiani <https://github.com/afabiani> can\n> you give us an update on this?\n>\n> —\n> You are receiving this because you were mentioned.\n> Reply to this email directly, view it on GitHub\n> <https://github.com/GeoNode/geonode/issues/2408#issuecomment-241244123>,\n> or mute the thread\n> <https://github.com/notifications/unsubscribe-auth/ABOARcccklvS-YA2yfP46XtS8anWm1DYks5qiASMgaJpZM4HJi2I>\n> .\n>\n"}}
{"actor":{"display_login":"afabiani"}}