Documentation for this repository is broken down into:
- Development
- Local development setup
- Staging
- Staging server setup
- Deployment process
- Production
- Release
A module for Omeka S that provides an API for the Neatline 3 single page application
Documentation for this repository is broken down into:
As a Neatline for Omeka S developer, I want to know what functionality specific to Omeka is included between the Omeka S module (this repository) and the single page application. This will supplement the general list of API endpoints and the exhibit/record schema that the SPA requires, which will be documented in the SPA repository.
As a Neatline developer, I want to have the option to set and view the secret key that will be used to encode and decode JWTs. If I've set an environment variable in my Omeka S server configuration called 'NEATLINE_JWT_SECRET', its value should be used as a secret.
As a Neatline user, I want to be able to install and use the Neatline module for Omeka S without having to learn about JWT or edit my server configuration. The module should, if I haven't provided one in the environment configuration, generate a secure pseudo-random string and store it in Omeka's global settings to serve as the secret key for JWT actions.
As a non-admin Neatline user, I want to be able to interact with Neatline exhibits for which I have permission when logged in — either because I own the exhibit or because my Omeka role (e.g. Reviewer, Author) allows me selective permissions over other exhibits.
As a Neatline user, I want to be able to use an image-based tile server for my exhibit's default layer, alongside the other available base layer types. In addition, all base layer types outside the predefined spatial layers menu (WMS, static image, and image-based tile server) should have accompanying fields in the exhibit schema as provided by the back-end adapter.
The addition of these fields accompanies https://github.com/performant-software/neatline-3/pull/55 in the front-end repository.
As a Neatline user, I want to attach a variety of geometry object types to a record. Geometry objects should be passed together as a geoJSON object and converted by the backend into the appropriate format for mySQL storage and querying; they should be converted back into geoJSON when I retrieve their corresponding records in an API request.
As a Neatline user, I want the default map layer loaded by Leaflet to be that specified by the exhibit's spatial_layer property.
New:
for Imperial/Metric units
The map layer button appears in the top right after changing pages from the "Records" page to the "Exhibit Settings" page. The icon does not go away after this, and appears on every page. When present, a user can select the option 'DEFAULT Open Street Map', which puts the map behind the image, with no way to remove. No map options needed with Image based exhibits.
After leaflet-draw edit, save should record new geometries to DB
As a Neatline developer, I want to be able to quickly set up a local instance of Omeka S with the Neatline module and its included single page application in order to make changes to the back-end Omeka module and/or the front-end application.
A Docker-based approach could provide a quick universal setup for all three components: https://github.com/scholarslab/neatline-omeka-s-docker
One issue for the development setup is how to maintain the usefulness of the create-react-app features (e.g. dynamic reloading) while also providing the ability to view the same version of front-end application rendered in its Omeka view container.
As a user, I want to be able to install the Neatline module in my Omeka S instance and have it include the full frontend application already configured to work with Omeka S without further build steps. This means the React SPA's production build should be included in any release tags or zip files, and that the full Neatline 3 SPA project (minus dependencies) should be included as a git submodule in this project.
When creating a new Neatline exhibt, even though the Base Layer field appears to have "Open Street Map" selected, those layers are not displayed until you specifically select it again. If this is the default value to start, the layers should appear.
As a Neatline for Omeka S user, I want to be able to import items as records and link existing records I make to items, as Neatline 2.6.1 currently provides with Omeka Classic. Additionally, I want Neatline 3 to interface with the new concept of Sites in Omeka S, such that Neatline exhibits are automatically scoped to the site in which they are created.
I installed Neatline 3.0 to use it with my installation of omeka s, after Installing it all I got is a white screen with the an error message. As I was not able to access any screen in Omeka s I deleted the neatline folder from my host and I regained access to omeka s. However in the modules cp I found the following message replacing the module name: Error: module in database but not in filesystem
How can I delete this module from the database.
As a Neatline user, I want to be able to trigger an action that will create a copy of a given exhibit and all its records, assigning the exhibit a unique slug and setting me as its owner.
As a Neatline for Omeka S developer, I want a streamlined workflow for setting up a local instance of Omeka S, installing the Neatline 3 for Omeka S module (this repository), and spinning up the single page React application (linked from this repository as a git submodule as /asset/neatline). Ideally, this setup should allow for the viewing of the SPA in its Omeka-rendered view container, as the end user would experience it, while also providing dynamic reloading through the create-react-app scripts. The documentation should be sufficient that a developer can install any of the three components, (Omeka S, neatline-omeka-s, and neatline-3) individually in a customized setup.
Is there a full-screen public view option available? Previous Neatline exhibits all had a link that added /fullscreen to the url to make the exhibit view full screen.
This link should be accessible from the public view page?
There are a lot of bugs when creating a new record for an image-based exhibit:
As a Neatline user, I want the front-end application to be able to reflect the permission level associated with my user account in the containing Omeka S instance. This information should be included in the JWT payload passed down to the front-end app.
For an exhibit with an image background instead of a map background, need some way to set the default zoom level for exhibit
There is currently no way to find neatline apart from appending /s/neatline
to the URL.
Selected polylines should behave the same as de-selected polylines (no interior shape showing)
What happened
Noticing that there was an update on Github, I pulled the latest version of the code, and immediately tried to go to the Neatline view without updating. But all that showed was:
Zend\Permissions\Acl\Exception\InvalidArgumentException
Resource 'Omeka\Controller\Site\Neatline' not found
Details:
exception 'Zend\Permissions\Acl\Exception\InvalidArgumentException' with message 'Resource 'Omeka\Controller\Site\Neatline' not found' in C:\wamp64\www\omeka-s\vendor\zendframework\zend-permissions-acl\src\Acl.php:291
Stack trace:
0 C:\wamp64\www\omeka-s\vendor\zendframework\zend-permissions-acl\src\Acl.php(731): Zend\Permissions\Acl\Acl->getResource('Omeka\\Controlle...')
1 C:\wamp64\www\omeka-s\application\src\Permissions\Acl.php(92): Zend\Permissions\Acl\Acl->isAllowed(Object(Omeka\Entity\User), 'Omeka\\Controlle...', 'browse')
2 C:\wamp64\www\omeka-s\application\src\Mvc\MvcListeners.php(430): Omeka\Permissions\Acl->userIsAllowed('Omeka\\Controlle...', 'browse')
3 C:\wamp64\www\omeka-s\vendor\zendframework\zend-eventmanager\src\EventManager.php(322): Omeka\Mvc\MvcListeners->authorizeUserAgainstController(Object(Zend\Mvc\MvcEvent))
4 C:\wamp64\www\omeka-s\vendor\zendframework\zend-eventmanager\src\EventManager.php(179): Zend\EventManager\EventManager->triggerListeners(Object(Zend\Mvc\MvcEvent), Object(Closure))
5 C:\wamp64\www\omeka-s\vendor\zendframework\zend-mvc\src\Application.php(332): Zend\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Zend\Mvc\MvcEvent))
6 C:\wamp64\www\omeka-s\index.php(21): Zend\Mvc\Application->run()
7 {main}
The rest of the omeka-s continued working, but any Neatline view with "/neatline" gave the message above.
To fix
All that was necessary to fix was to go to modules in omeka-s, and click update next to Neatline.
Additional comments by @akstuhl:
The Upgrade button is a standard part of how Omeka modules add fields to their database tables - so the note in the PR was to make sure anyone testing for the presence of those new fields knew to click Upgrade first, otherwise they wouldn’t see them. However, an end user who replaces their copy of the module with the latest version would reasonably expect the module to continue working between when they did that and when they ran the upgrade.
As a Neatline for Omeka S user, I want to be able to import Omeka Items as new Neatline Records and to link existing Records to Items.
It should be possible to move existing exhibits and all of their records from Neatline 2.x and Omeka Classic to Neatline 3 and Omeka S.
The only configuration option is the Google Maps API key, but this input lacks a visible label. Let's add one.
As a Neatline for Omeka user, I want the permitted actions and ownership for Neatline resources to interface with Omeka's user accounts and permission levels.
Unable to create a historic map layer using WMS Address and WMS Layer fields in Records-> Style->Imagery
Problem: the SPA fails to fetch exhibits, creating an error in the Omeka logs about a missing database column.
Steps to reproduce:
Displays "km" for area and length, even on image based "maps"
When creating a new record, a user needs to first click save before the drawing tools appear - can these be visible initially when creating a new record? Currently seems like an extra step thats not user friendly.
As a Neatline for Omeka S user, I want to create and view an exhibit within the scope of a particular Site in my Omeka S instance.
Question for team: do we support associating a single Neatline exhibit with multiple Omeka sites?
As a Neatline user, I want listed and editable exhibits to reflect my particular user permissions. This will necessitate integrating authorization checks to Neatline API endpoints, likely best accomplished using JWT.
While in the Record settings, if I click on a record, or click on the corresponding geometry, it opens the record - thats great- but if I then click on 'Exhibit Settings' with the record still open, the record remains highlighted in the view box (with the title box visible).
Maybe the exhibit view should always revert to the default exhibit view (once these settings are added) when the 'Exhibit Settings' tab is open?
This occurs in both map and image based exhibits
If you select a record, then switch, it doesn't always de-select in leaflet draw.
Save button should not be active when there's nothing to save
Omeka S Import module repo, documentation, and forum posts:
In the first development sprint for Neatline 3 with Omeka S, we used a git-based deployment workflow for reviewing new features on a Heroku staging instance. Documentation of this approach should be added to the ReadMe here for use by other developers and/or consideration in the design of a new deployment strategy.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.