Giter Club home page Giter Club logo

archivesspace's Introduction

ArchivesSpace

Built for archives by archivists, ArchivesSpace is the open source archives information management application for managing and providing web access to archives, manuscripts and digital objects.

Build ArchivesSpace release package Translation status

The latest technical documentation is managed in a separate GitHub repository ArchivesSpace tech-docs and is published at https://archivesspace.github.io/tech-docs/.

License

ArchivesSpace is released under the Educational Community License, version 2.0. See the COPYING file for more information.

Credits

ArchivesSpace (http://archivesspace.org) is community-supported software whose ongoing development is led, managed, implemented and funded by a diverse community of users, developers, and administrators all working together to achieve the goal of helping archives and cultural heritage institutions better manage and provide access to their collections.

ArchivesSpace 1.0 (released in 2013) was developed by Hudson Molonglo in partnership with the New York University Libraries, UC San Diego Libraries, and University of Illinois Urbana-Champaign Library and with funding from the Andrew W. Mellon Foundation, organizational support from LYRASIS, and contributions from diverse persons in the archives community.

Membership

ArchivesSpace is free to download and use, but has a membership model to promote sustainability and the continuing development of the application and to support those who use it. Learn more about ArchivesSpace membership at https://archivesspace.org/community/why-become-a-member. Reach out to the program team at [email protected] if you are interested in becoming an ArchivesSpace member.

archivesspace's People

Contributors

abbistani avatar alexduryee avatar anarchivist avatar andrew-morrison avatar avatar382 avatar blake- avatar bobbi-smr avatar brialparker avatar brianzelip avatar cdibella avatar cfitz avatar crugas avatar donaldjosephsmith avatar fordmadox avatar gwiedeman avatar jambun avatar jdcrouch avatar lmcglohon avatar lorawoodford avatar mark-cooper avatar marktriggs avatar michael-lts avatar nebulon42 avatar payten avatar perticus avatar pobocks avatar quoideneuf avatar sdm7g avatar thimios avatar weblate avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

archivesspace's Issues

Backend API allows archival_objects to be created with no resource ID

The backend API allows new archival objects to be created which have no specified resource ID. If the new archival object is the child of an existing archival object, it's not filled in using that; it remains null.

While the backend API accepts these records, the frontend isn't designed to be able to deal with a record with no resource ID, and trying to view any of these records results in a 500 with the following backtrace:

NoMethodError (undefined method `[]' for nil:NilClass):
  app/models/resolver.rb:47:in `default_uri_properties'
  app/models/resolver.rb:25:in `view_uri'
  app/controllers/resolver_controller.rb:25:in `resolve_readonly'

The line here is unconditionally referencing the archival object's resource: https://github.com/archivesspace/archivesspace/blob/master/frontend/app/models/resolver.rb#L47

Which is a reasonable assumption - maybe the backend should just reject a record like this?

POSTing the following object reproduces the problem:

{
  "level": "series",
  "parent": {
    "ref": "/repositories/2/archival_objects/2"
  },
  "jsonmodel_type": "archival_object",
  "title": "Test no resource"
}

Duplicate Merge buttons on View Agent screen

In v1.0.9, two Merge buttons display side-by-side on the Agent view screen, between the Download EAC-CPF and Delete buttons. If you click one of the Merge buttons, two overlapping Merge drop-downs appear.
Two Merge buttons
Two Merge drop-downs

Custom Stylesheets

Following instructions provided in https://github.com/hudmol/archivesspace/tree/master/plugins, where it reads "files such as images, stylesheets and PDFs can be made available as static resources by placing them in an assets directory under an enabled plug-in," I have tried to modify the color scheme of my local instance's public interface. I thought putting customized copies of as-eac-cpf-html.xsl and as-ead-html.xsl in plugins/local/public/assets would do it, but I've gotten nowhere. I also tried placing a customized variables.less in the same directory to no avail. What stylesheet should I place in plugins/local/public/assets to override the master one?

Create User button not functional (1.0.9 w/ LDAP)

After upgrading to 1.0.9, the Create User button immediately returns to the main URL. We have LDAP configured in our setup.

Please advise if this is an issue with all installations or if it appears we have a local problem. Thanks!

Doc update for CSS tweaks

Howdy,

I don't think I can send a pull request for a Wiki page, but I just noticed we never really said anything about making small CSS changes to the application. I've added a note here if you want to merge it into the main version:

marktriggs/archivesspace-wiki@HEAD^^...master

There's also an unrelated URL fix in there, just because I happened to notice it.

Attribute Map Listing for LDAP

Hi,

Is there a list anywhere of the values that can be mapped for "aspace_attribute" from ldap, via the attribute map?

Adding event to existing archival object redirects to invalid route

When adding an event to an existing archival object record, an exception is thrown after 'save' is clicked. This seems to be due to the controller re-directing to an invalid route (does not happen when adding an event to a resource).

To reproduce:

  1. Open an archival object record in edit mode
  2. Use "add event" drop-down to add an event.
  3. Enter required event details and click 'save'
  4. "Something went wrong..." message displays. URL corresponds to the archival object (e.g. '/archival_objects/333438', which is not a valid route)
  5. Browse events and locate the event just created - it's there and is correctly linked to the record

Unable to list resources in a repository using /repositories/:repo_id/resources without specifying a page

I've noticed what seems to be a bug with the /repositories/:repo_id/resources endpoint in the API. I'm unable to retrieve a list of resources if I don't specify a page.

This endpoint is documented as taking no mandatory parameters (beyond the repository); however, when I attempt to use it, it fails with the response reporting missing parameters:

{
  "error": {
    "page": [
      "Parameter required but no value provided"
    ],
    "id_set": [
      "Parameter required but no value provided"
    ],
    "all_ids": [
      "Parameter required but no value provided"
    ]
  }
}

If I pass ?page=1, then the expected response is received. Other endpoints (for example, /repositories) don't make page mandatory, so I believe this may be a bug. I tested in ArchivesSpace 1.1.2.

Linking Events to Agents - 1.2.3 - dev.05

When attempting to link an event to an agent from the agent record, I get a Routing Error on save of the event. This error occurs if I attempt to create the agent from the event or link to an existing agent.

Running against the local derby db in Mac OS 10.9.5, FF 37.

Thanks!
Joshua

Error displayed in browser:
Routing Error
No route matches {:controller=>"agent_people", :action=>"edit", :id=>2}
Try running rake routes for more information on available routes.

Error log snippet:
Completed 200 OK in 47.0ms (Views: 3.0ms)
Started GET "/has_session" for 0:0:0:0:0:0:0:1 at 2015-05-12 17:14:14 -0400
Processing by SessionController#has_session as /
Completed 200 OK in 3.0ms (Views: 1.0ms)
Started POST "/events" for 0:0:0:0:0:0:0:1 at 2015-05-12 17:14:14 -0400
Processing by EventsController#create as HTML
Parameters: {"utf8"=>"โœ“", "authenticity_token"=>"g3sSKWFwxj91ismCu8t1iQVBEHu3xV9VTyIuy7luE/E=", "event"=>{"lock_version"=>"", "event_type"=>"acknowledgement_sent", "outcome"=>"", "outcome_note"=>"", "chronotype_label"=>"subrecord", "date"=>{"lock_version"=>"", "label"=>"agent_relation", "expression"=>"", "date_type"=>"single", "begin"=>"2015-05-08", "certainty"=>"", "era"=>"", "calendar"=>""}, "linked_agents"=>{"0"=>{"role"=>"recipient", "_resolved"=>["{"id":"/agents/people/3","title":"Carini, Peter","primary_type":"agent_person","types":["agent_person","agent"],"json":"{\"lock_version\":1,\"publish\":false,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2015-05-12T21:08:51Z\",\"system_mtime\":\"2015-05-12T21:08:59Z\",\"user_mtime\":\"2015-05-12T21:08:51Z\",\"jsonmodel_type\":\"agent_person\",\"linked_agent_roles\":[],\"external_documents\":[],\"notes\":[],\"dates_of_existence\":[],\"names\":[{\"lock_version\":0,\"primary_name\":\"Carini\",\"rest_of_name\":\"Peter\",\"sort_name\":\"Carini, Peter\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2015-05-12T21:08:51Z\",\"system_mtime\":\"2015-05-12T21:08:51Z\",\"user_mtime\":\"2015-05-12T21:08:51Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"name_order\":\"inverted\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]}],\"related_agents\":[],\"uri\":\"/agents/people/3\",\"agent_type\":\"agent_person\",\"display_name\":{\"lock_version\":0,\"primary_name\":\"Carini\",\"rest_of_name\":\"Peter\",\"sort_name\":\"Carini, Peter\",\"sort_name_auto_generate\":true,\"created_by\":\"admin\",\"last_modified_by\":\"admin\",\"create_time\":\"2015-05-12T21:08:51Z\",\"system_mtime\":\"2015-05-12T21:08:51Z\",\"user_mtime\":\"2015-05-12T21:08:51Z\",\"authorized\":true,\"is_display_name\":true,\"source\":\"local\",\"name_order\":\"inverted\",\"jsonmodel_type\":\"name_person\",\"use_dates\":[]},\"title\":\"Carini, Peter\",\"is_linked_to_published_record\":false}","suppressed":false,"publish":false,"system_generated":false,"repository":"global","source_enum_s":["local"],"name_order_enum_s":["inverted"],"created_by":"admin","last_modified_by":"admin","user_mtime":"2015-05-12T21:08:51Z","system_mtime":"2015-05-12T21:08:59Z","create_time":"2015-05-12T21:08:51Z","source":"local","uri":"/agents/people/3","jsonmodel_type":"agent_person"}"], "ref"=>["/agents/people/3"]}}, "linked_records"=>{"0"=>{"role"=>"source", "_resolved"=>"{"lock_version":3,"publish":false,"created_by":"admin","last_modified_by":"admin","create_time":"2015-05-06T20:53:15Z","system_mtime":"2015-05-12T21:08:59Z","user_mtime":"2015-05-06T20:53:15Z","jsonmodel_type":"agent_person","agent_contacts":[],"linked_agent_roles":[],"external_documents":[],"notes":[],"dates_of_existence":[],"names":[{"lock_version":0,"primary_name":"Shaw","rest_of_name":"Joshua","sort_name":"Shaw, Joshua","sort_name_auto_generate":true,"created_by":"admin","last_modified_by":"admin","create_time":"2015-05-06T20:53:15Z","system_mtime":"2015-05-06T20:53:15Z","user_mtime":"2015-05-06T20:53:15Z","authorized":true,"is_display_name":true,"source":"local","name_order":"inverted","jsonmodel_type":"name_person","use_dates":[]}],"related_agents":[],"uri":"/agents/people/2","agent_type":"agent_person","display_name":{"lock_version":0,"primary_name":"Shaw","rest_of_name":"Joshua","sort_name":"Shaw, Joshua","sort_name_auto_generate":true,"created_by":"admin","last_modified_by":"admin","create_time":"2015-05-06T20:53:15Z","system_mtime":"2015-05-06T20:53:15Z","user_mtime":"2015-05-06T20:53:15Z","authorized":true,"is_display_name":true,"source":"local","name_order":"inverted","jsonmodel_type":"name_person","use_dates":[]},"title":"Shaw, Joshua","is_linked_to_published_record":false}", "ref"=>"/agents/people/2"}}}, "redirect_record"=>"/agents/people/2", "redirect_action"=>"edit"}
D, [2015-05-12T17:14:14.784000 #30954] DEBUG -- : Thread-24548: POST /repositories/2/events [session: #<Session:0x180446da @store={:user=>"admin", :login_time=>2015-05-12 16:56:22 -0400, :expirable=>true}, @id="4e2e81fa92f22b45a17373a0d98217499774a6547382f5bde899313a3830d023">]
D, [2015-05-12T17:14:14.816000 #30954] DEBUG -- : Thread-24548: Post-processed params: {:event=>#<JSONModel(:event) {"event_type"=>"acknowledgement_sent", "date"=>{"label"=>"agent_relation", "date_type"=>"single", "begin"=>"2015-05-08"}, "linked_agents"=>[{"role"=>"recipient", "ref"=>"/agents/people/3"}], "linked_records"=>[{"role"=>"source", "ref"=>"/agents/people/2"}], "jsonmodel_type"=>"event", "external_ids"=>[], "external_documents"=>[]}>, :repo_id=>2}
D, [2015-05-12T17:14:14.923000 #30954] DEBUG -- : Thread-24548: Responded with [200, {"Content-Type"=>"application/json", "Cache-Control"=>"private, must-revalidate, max-age=0", "Content-Length"=>"105"}, ["{"status":"Created","id":8,"lock_version":0,"stale":null,"uri":"/repositories/2/events/8","warnings":[]}\n"]]... in 145.0ms
D, [2015-05-12T17:14:14.925000 #30954] DEBUG -- : Thread-22964: Responded with [200, {"Content-Type"=>"application/json", "Cache-Control"=>"private, must-revalidate, max-age=0", "Content-Length"=>"1120"}, ["[{"record":{"lock_version":0,"begin":"2015-05-08","created_by":"admin","last_modified_by":"admin","create_time":"2015-05-12T21:14:14Z","system_mtime":"2015-05-12T21:14:14Z","user_mtime":"2015-05-12T21:14:14Z","date_type":"single","label":"agent_relation","jsonmodel_type":"date"},"uri":null,"sequence":1431464178,"timestamp":1431465254922}... in 15719.0ms
Redirected to
Completed 404 Not Found in 172.0ms

ActionController::RoutingError (No route matches {:controller=>"agent_people", :action=>"edit", :id=>2}):
app/controllers/events_controller.rb:66:in create' app/controllers/application_controller.rb:117:inhandle_crud'
app/controllers/events_controller.rb:48:in `create'

Upgrade Steps for 1.2.0

Hi,

I noticed the upgrade notes were not updated for the 1.2.0 release? Is there anything special that will need be done for this release?

No explicit sequencing of subject terms

For subjects comprised of multiple terms, the terms are ordered by term_id. If terms were not created in the order they should appear in the subject, this generates an incorrect subject title when the subject record is edited (for example, to add a link to an external document).

Reordering the terms in the subject edit view and re-saving changes the subject title back, but the term order remains the same, and saving the subject again (without first reordering the terms) results in the subject title being changed again to the incorrect form.

EXAMPLE: The subject "American fiction -- 20th Century" (an authorized LCSH subject heading), where the term "20th Century" was created first (used by a previously-created subject). Editing and saving the subject record (without first sorting the terms correctly) changes the subject to "20th Century -- American fiction".

Ideally (IMO) the sequence (position) of the terms should be maintained as an attribute of the subject_term association.

Database issue on location creation

When attempting to create a location, a SQL error occurs indicating that there is no default for repo_id in the location table. When I set a default value for repo_id in the table, the error disappears.

We are running AS 1.1.0 on MySQL.

Plugin assets not loading when running AS under Tomcat

When running AS under Tomcat, files in a plugin's assets directories fail to load. Plugins work without problems when running under Jetty.

Confirmed with LCNAF plugin.

I'm running 1.1.0 - not sure if the same issue was present under 1.0.9.

Inconsistent escaping in <unittitle> tags

Nearly identical component records roundtrip inconsistently:

Source EAD snippet:

    <c>
         <did>
              <container type="Box">43</container>
              <container type="Folder">III.G.2.53</container>
                 <unittitle>Red Paintings: <title render="italic">In the Tepee at Leverett</title> (1973-1974)</unittitle>
          </did>
       </c>
       <c>
           <did>
              <container type="Box">43</container>
               <container type="Folder">III.G.2.53</container>
                <unittitle>Red Paintings: <title render="italic">In the Tepee at Leverett</title> (1973-1974)</unittitle>
                <abstract>Two photographs and forty-four slides.</abstract>
           </did>
         </c>

Export snippet:

        <c id="aspace_b847321160d56ce5aa2b015357d80480" level="file">
          <did>
            <unittitle>Red Paintings: &lt;title render="italic"&gt;In the Tepee at Leverett&lt;/title&gt; (1973-1974)</unittitle>
            <container label="Mixed Materials" type="Box">43</container>
            <container type="Folder">III.G.2.53</container>
          </did>
        </c>
        <c id="aspace_5dcb1a1f4da645e9ea5bff0e91dc6f86" level="file">
          <did>
            <unittitle>Red Paintings: &amp;lt;title render="italic"&amp;gt;In the Tepee at Leverett&amp;lt;/title&amp;gt; (1973-1974)</unittitle>
            <abstract audience="internal" id="5b3204b2e509685530facc14de0218e8">Two photographs and forty-four slides.</abstract>
            <container label="Mixed Materials" type="Box">43</container>
            <container type="Folder">III.G.2.53</container>
          </did>
        </c>

Notice that the second component is twice-escaped. Removing the <abstract> tag seems to prevent this.

Perhaps this is a Nokogiri bug of some kind.

ETA:
The behavior described above is in the 1.0.9 tag. In the current HEAD, the markup appears to be missing altogether:

<unittitle>Red Paintings:  In the Tepee at Leverett  (1973-1974)</unittitle>

Tomcat setup script deletes existing Tomcat services

The Tomcat configuration script overwrites Tomcat's server.xml file with it's own version. This effectively deletes the 'Catalina' service and disables anything already running under Tomcat. Rather than overwriting this file, the script should instead insert new service instances for the ArchivesSpace webapps into the existing server.xml.

build_release zip from current master won't run.

I ran ./scripts/build_release master-09-23 from current master,
unzipped file and cd-ed to directory. On attempting to start I get this:

archivesspace$ ./archivesspace.sh
ArchivesSpace base directory: /projects/Archivespace/archivesspace
TypeError: can't convert nil into String
             exists? at org/jruby/RubyDir.java:624
 find_base_directory at file:/projects/Archivespace/archivesspace/lib/common.jar!/asutils.rb:85
                find at org/jruby/RubyEnumerable.java:594
 find_base_directory at file:/projects/Archivespace/archivesspace/lib/common.jar!/asutils.rb:82
 find_local_directories at file:/projects/Archivespace/archivesspace/lib/common.jar!/asutils.rb:92
               setup at file:/projects/Archivespace/archivesspace/lib/common.jar!/aspace_gems.rb:30
              (root) at launcher/launcher.rb:5

Nothing in those sources appeared to have changed.
I still had a previous build on disk, and comparing them, the only significant difference I found was that the previous build had two versions of jruby-jars: 1.7.18 and 1.7.21 , and the new build had only 1.7.21.

I copied 1.7.18 into gem directory and startup now works.
When archivesspace.sh builds classpath, and both gems are there, 1.7.18 is first on the list before 1.7.21, so it's presence must have been masking the issue.

I don't see any problems running out of the development directory with build/run script.,and running scripts/jirb, I don't get any errors on Dir.exists? nil

Can anyone else reproduce this ?

update:

I was able to reproduce this using rbenv to switch jruby versions outside of archivesspace dev. env.
Using jruby-1.7.12, Dir.exists? nil returns false.
Using jruby-1.7.21 Dir.exists? nil raises TypeError: can't convert nil into String

How can i change the front UI in to Chinese?

I want to know how to change the front UI into Chinese
I have try to modify the en.yml document under "data/tmp/jetty-0.0.0.0-8082-frontend.war-_-any-/webapp/WEB-INF/config/locales/" ,but when I restart the archivesspace the document rebuild.Can I change the front language by a simple way? or what can i do to make ArchivesSpace's UI in Chinese?

Resource merge not working in 1.1.0

Steps to reproduce:

  1. Open a resource record
  2. Click 'merge'
  3. Select resource to merge into (either via search or browse)
  4. Click 'Merge'
  5. Error: "Please select a resource". Merge cannot be completed.

Backend API doesn't validate that resource ID and parent archival object's resource ID are the same

When creating a new archival object which is a child of an existing archival object, it's possible to specify a resource ID that is not the resource ID of the parent. The backend API doesn't reject the object in this case, but the frontend interface won't be able to render it properly.

For example, this record reproduces the problem where /repositories/2/archival_objects/2 is a child of /repositories/2/resources/1:

{
  "level": "series",
  "resource": {
    "ref": "/repositories/2/resources/2"
  },
  "parent": {
    "ref": "/repositories/2/archival_objects/2"
  },
  "jsonmodel_type": "archival_object",
  "title": "Test bad resource"
}

If this happens, then trying to view the new archival object in the user interface results in this "not found" error. The resource itself can be viewed.
screen shot 2015-09-10 at 11 32 51 am

/repositories/2/archival_objects/2 itself can be viewed, but will render with a never-ending "loading" spinner next to itself - presumably while the tree tries and fails to render its children.

Indexing changes for fullrecord?

Hi ArchivesSpacers,

While working with Yale we've had a few cases where searches match documents that were surprising to users.

This comes about because keyword (and typeahead) searches generally target the fullrecord Solr field, and this is populated with the raw JSON representation of each record by this copyField definition:

 <copyField source="json" dest="fullrecord"/>

For example, if you search for "lock" you'll probably get a match on the lock_version JSON property, which you won't see in the user interface but is hiding there behind the scenes.

I'm wondering whether we could change this as follows:

  • Remove the copyField definition from schema.xml and change the indexer to generate values for this field itself.
  • Change the default fullrecord generator to index the (string?) values from JSON documents instead of the entire document.

The first change would allow for more fine-grained control over which fields get indexed for keyword searching, while the second would hopefully give a less surprising default. What do you think?

Thanks!

Mark

Raw tags displayed in Title/unittitle field

According to the EAD specification (see for example, http://www.loc.gov/ead/tglib/elements/unittitle.html), unittitle can contain non-CDATA elements (e.g., <emph/> tags). However, ArchivesSpace treats this field as plain text and escapes these tags, which is undesirable for a public user interface.

I think there are two possible solutions:

  1. Strip out any tags in this field as part of the EAD import process.
  2. Convert any style-relevant tags (e.g., <emph render="italic"/>) into their HTML counterparts and mark the string as html_safe.

The second solution would be ideal, but may not be feasible or desirable in other contexts. Thoughts?

CSV import for container lists

I created a tool called Steady that takes a CSV container list as input and exports EAD XML that could be imported into Archivists' Toolkit and can now be imported into ArchivesSpace. There has been some discussion about adding this functionality into AS itself. In the past the message was that this feature would not be added to AS, though I believe @cfitz has recently suggested on the members' list whether this Steady tool ought to be integrated into AS. (I do not know that much of the stead code even though Ruby would be very useful.)

Is this CSV container list import a feature that AS would consider implementing in core? When might it happen? Here at NCSU we have considered creating a way for us to do more direct import of CSV into AS, possibly with an application that uses the AS API. If CSV import of container lists is something the core team is going to work on then we can work on some other applications that have AS integrations instead. I would hate to duplicate work. If it is not something AS will be implementing, please let me know so that I can look closer at what it would take to use the AS API to accomplish this.

In any case, I think my experience with creating and administering such a tool could be useful for any development effort. I am happy to help however I can.

Exported note content discrepancy between 1.0.9 and master

I have a note with the following content (cut and pasted from the ASpace UI):

TL Alicia Legg - Miller (8/4/1967), describing meeting with Byars and his proposed projects.<lb/>Photocopied TLS Linley Hubbell - Miller (10/16/41), describing a performance piece by Byars.<lb/>Photocopied Byars mention in Publisher's Weekly, n.d.

In v.1.0.9, this appears in the exported EAD as:

<abstract audience="internal" id="fc045663f49dfb26873b336e08f9091d">TL Alicia Legg - Miller (8/4/1967), describing meeting with Byars and his proposed projects.<lb/>Photocopied TLS Linley Hubbell - Miller (10/16/41), describing a performance piece by Byars.<lb/>Photocopied Byars mention in Publisher's Weekly, n.d.</abstract>

In the current master branch, it appears as:

<abstract audience="internal" id="aspace_fc045663f49dfb26873b336e08f9091d"><![CDATA[TL Alicia Legg - Miller (8/4/1967), describing meeting with Byars and his proposed projects.<lb/>Photocopied TLS Linley Hubbell - Miller (10/16/41), describing a performance piece by Byars.<lb/>Photocopied Byars mention in Publisher's Weekly, n.d.]]></abstract>

Why the change? <lb> is a legal child of <abstract> according to www.loc.gov. And, although it may be possible using XSLT 3.0 to transform the CDATA tags into HTML, I don't think it will be possible using the XSLT technologies of EAD's vintage.

export/import of JSON resources

I am trying to export JSON resources from an AS repository via the API and then import them into a local repository via the API to use for development. I would like to be able to cherry pick a resource from a remote repository to pull down into my local repository when I am working on an issue or adding a new feature to an external application that uses the AS API.

There are a couple issues that make this more work than it could be. Exporting resources does not resolve all related resources recursively. For instance even when subjects are set to be resolved, they are not resolved within related_accessions. Even when subjects are resolved, import fails because it cannot find a matching subject that already exists in the database. I would expect that resolved subjects would be imported.

Right now in order to get a resource that was exported to import into an empty repository, I need to delete at least the following keys in a resource: related_accessions, subjects, and linked_agents. Subject information is particularly important for my current development.

Maybe there is some other way via the API or otherwise to move resources from one repository to another in separate instances of AS? I could see something like this being useful for aggregators as well.

Bootstrap 3?

Are there any plans to upgrade to a newer version of Twitter Bootstrap?

Prefix Cookies With Port Number For Multitenancy

It sounds like the cookies are being shared between both instances.
We have a session cookie ("_archivesspace_session") that tracks your
session, but it's only scoped to the hostname (not the port). So if
you log in to an instance on http://myhost.example.com:3333/, then do
the same on http://myhost.example.com:4444/, the "myhost.example.com"
session cookie gets overwritten and you would be logged out of the :3333 instance.

Configuring the different instances with different hostnames should
fix the issue (even if the hostnames all resolved to the same IP).
The current multitenancy setup assumes that each tenant would have
their own hostname. Needs some testing on two instances sharing the same hostname.

I think we would just need to prefix the session cookie with the port number to ensure their uniqueness.

(Mark suggested)

1.1.0 will not run under Java 1.8 (?)

Trying to install version 1.1.0 on Mac OS running Mavericks and Java 1.8.0_05, the startup script fails with this error from the backend:

load error: ./app/main -- net.sf.jasperreports.engine.JRException: Errors were encountered when compiling report expressions class file:
1. The type java.lang.CharSequence cannot be resolved. It is indirectly referenced from required .class files
                value = "" + StringUtils.join( ((java.lang.String)field_identifier.getValue()).replaceAll("null", "").replace("\"","").replace("[","").replace("]","").split(","), '-'); //$JR_EXPR_ID=9$

Running on a Linux box with Java 1.7.0_51 works fine. Found this, which seems to be related to this error:
http://stackoverflow.com/questions/24301986/the-type-java-lang-charsequence-cannot-be-resolved-in-package-declaration

Indexer BindException

Hi there,

I'm trying to install version 1.1.2 clean and when starting it up the indexer complains that the port is already in use, the version we had been running (1.0.9) doesn't have this problem. The error is:
2015-02-09 19:17:37.360:WARN:oejuc.AbstractLifeCycle:FAILED [email protected]:8091: java.net.BindException: Address already in use
java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:444)
at sun.nio.ch.Net.bind(Net.java:436)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:214)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.eclipse.jetty.server.nio.SelectChannelConnector.open(SelectChannelConnector.java:182)
at org.eclipse.jetty.server.AbstractConnector.doStart(AbstractConnector.java:311)
at org.eclipse.jetty.server.nio.SelectChannelConnector.doStart(SelectChannelConnector.java:260)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at org.eclipse.jetty.server.Server.doStart(Server.java:283)
at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:440)
at org.jruby.javasupport.JavaMethod.invokeDirect(JavaMethod.java:304)
at org.jruby.java.invokers.InstanceMethodInvoker.call(InstanceMethodInvoker.java:52)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
at launcher.launcher.method__1$RUBY$start_server(launcher/launcher.rb:86)
at launcher$launcher$method__1$RUBY$start_server.call(launcher$launcher$method__1$RUBY$start_server)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:218)
at org.jruby.internal.runtime.methods.CompiledMethod.call(CompiledMethod.java:268)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:346)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:204)
at launcher.launcher.chained_4_rescue_1$RUBY$SYNTHETICmain(launcher/launcher.rb:152)
at launcher.launcher.method__3$RUBY$main(launcher/launcher.rb:145)
at launcher$launcher$method__3$RUBY$main.call(launcher$launcher$method__3$RUBY$main)
at launcher$launcher$method__3$RUBY$main.call(launcher$launcher$method__3$RUBY$main)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at launcher.launcher.file(launcher/launcher.rb:230)
at launcher.launcher.load(launcher/launcher.rb)
at org.jruby.Ruby.runScript(Ruby.java:811)
at org.jruby.Ruby.runScript(Ruby.java:804)
at org.jruby.Ruby.runNormally(Ruby.java:673)
at org.jruby.Ruby.runFromMain(Ruby.java:522)
at org.jruby.Main.doRunFromMain(Main.java:395)
at org.jruby.Main.internalRun(Main.java:290)
at org.jruby.Main.run(Main.java:217)
at org.jruby.Main.main(Main.java:197)
2015-02-09 19:17:37.365:WARN:oejuc.AbstractLifeCycle:FAILED org.eclipse.jetty.server.Server@5c3de68d: java.net.BindException: Address already in use
java.net.BindException: Address already in use

Please help!

Hyphens in typeahead searches

Hi all,

Another case that we've hit a few times is hyphens causing problems in typeahead searches. For example, you search for "MC" and get some hits, but "MC-123" gives no results.

The problem comes down to the way the typeaheads currently use Solr wildcard searches. You type MC-123 and your input gets turned into a wildcard query like MC-123*. Solr doesn't perform its usual query analysis when a wildcard is present, so this causes it to look for indexed tokens starting with the literal string MC-123.

During normal tokenization, hyphens (and other punctuation) get treated as whitespace, and more-or-less get dropped during indexing. This means that MC-123 gets indexed as two tokens ['mc', '123'], so a query containing the hyphen will never get a match.

I think a better solution would be to identify which fields should be searchable via typeahead, then create a separate set of Solr fields that use an EdgeNGramTokenizer during analysis. Then the various typeaheads could be changed to use these fields without needing a wildcard query, and we would still get the same sort of partial matches we have now.

I realise this isn't a trivial exercise, but I just thought I'd make note of it so the details don't get lost.

Cheers,

Mark

API query endpoint to get resource by eadid

The external id we use for filenaming during digitization and some of our workflows is the eadid. In looking through the API documentation I could not find a way to make a query to the API and return the resource with a given eadid. If this is not there, could such an endpoint be added? Seems common to use the eadid as the main external identifier for looking things up and that this would be a beneficial API endpoint for others.

Running archivesspace in Tomcat with separate CATALINA_HOME and CATALINA_BASE

I'm trying to install ArchivesSpace on a Debian Linux server with Tomcat installed by the apt package manager. This creates separate CATALINA_HOME (/usr/share/tomcat6) and CATALINA_BASE (/var/lib/tomcat6) directories. The existing configure_tomcat.sh script refuses to run with this configuration when given either of the above directories as its argument. It exits stating that the directory "doesn't look like a Tomcat directory".

I tried downloading a version of Tomcat outside the package manager, unpacking it to a folder in my home directory, running configure_tomcat.sh to copy the libraries and configuration for ArchivesSpace to that folder, and then manually copying the changes to the package manager maintained Tomcat installation, but I must have missed something. I'm getting exceptions from each of the archivesspace webapps when I try to start Tomcat. The first says
org.jruby.exceptions.RaiseException: (ArgumentError) wrong number of arguments (1 for 2)
at RUBY.capture(file:/libwebdata/tomcat6/catalina_home/lib/jruby-rack-1.1.12.jar!/jruby/rack/capture.rb:48) ...

The next says
org.jruby.rack.RackInitializationException: no such file to load -- bundler/set
up
from org/jruby/RubyKernel.java:1082:in require' from jar:file:/libwebdata/tomcat6/catalina_home/lib/jruby-stdlib-complete-1.7.6.jar!/META-INF/jruby.home/lib/ruby/shared/rubygems/core_ext/kernel_requ\ire.rb:55:inrequire'
from /var/lib/tomcat6/webapps/public/WEB-INF/config/boot.rb:10:in `(root)' ...

That sequence repeats several times. Any thoughts what's causing this? Did I miss copying a library to CATALINA_HOME/lib?

Default value for 'otherlevel' when importing EAD?

Components with a level type of 'otherlevel' are required to have an 'other_level' property. Example:

    object.level = 'otherlevel'
    object.other_level = 'subsubsubsubseries' # <-- mandatory

This is a snippet of EAD exported from the AT:

<c id="beffff19" level="otherlevel">
  <did>
    <unittitle>Preamble and Constitution,</unittitle>
    <container id="cid10526" type="Box" label="Mixed materials (31142046889807)">1</container>
    <container parent="cid10526" type="Folder">1</container>
    <unitdate>1851</unitdate>
  </did>
</c>

For this to import successfully, the importer will need to assign something to the 'otherlevel' fields. Should this just be the string 'unknown', or something else? Or should the import fail?

archivesspace.bat doesn't check if Java is available

If Java isn't available, then the Windows archivesspace.bat launcher will print the following single line and quit immediately:

Writing log file to logs\archivesspace.out

This happens because there isn't any check that the java executable actually exists, or was run correctly. In my case Java was installed but not in the user's %PATH%.

LDAP Login with no password

In ArchivesSpace 1.0.2+ with LDAP authentication configured, a user can login with only a username and a blank password. Typing an incorrect password denies the user properly.

Nested forms (invalid HTML) on Resource Edit page causes display issue in IE

The frontend/app/views/shared/_merge_dropdown.html.erb partial creates a nested form on the Resource Edit page (e.g., /resources/3/edit), which is invalid HTML. Firefox and Chrome ignore the tag entirely; IE (9) ignores the opening tag, but preserves the closing tag, which triggers the closing of the primary "resource_form", which causes the "record-toolbar" to break and the sidebar to obscure form elements on scroll.

It seems like the nested form tag could be removed entirely: the "submit" URL is added to the button separately with the "button_confirm_action" helper, and there appears to be JS handling in place to ensure the appropriate inputs are submitted on clicking the "Merge" button.

Public interface timeout / slow with large resource records

For example, download the Edison Collection from: http://findingaids.loc.gov/source/MUS

The file is 14.6MB. Import this record (go grab some coffee as it will take a while). View it in the staff interface (after indexing has caught up). No problem, the parts are retrieved as you request (click on) them.

Now go to the public interface and try to view it: it takes a long time, far too long (1 minute +). This is with v1.0 and 1024GB assigned in archivesspace.sh (as it is by default). Upping the ram allocation further had a negligible impact. Looking at the network tab with the Developer Tools (Chrome) shows that AS is retrieving the resource as a 17MB document -- so it appears to be retrieving the whole thing as one big chunk. Yet when selecting components they are loaded as an additional request so you have to wait for them too (also slow with this very large finding aid).

Looks like the application needs to retrieve the parts of a resource asynchronously, on demand, in the public interface as in the staff side.

Hmm, LOC is shutdown. FA available (at least temporarily): https://dl.dropboxusercontent.com/u/870845/mu002003.xml

Tomcat Runtime error: doesn't look like a Tomcat directory

I am trying to install ArchivesSpace on a Ubuntu 14.04 running with a manually installed Tomcat 7.0.53. The folders for both programs are at the var/tmp directory (if I move tomcat folder to a folder not owned my root, tomcat doesn't work).

When I run this script: archivesspace_v1.0.7.1/archivesspace/scripts/configure-tomcat.sh ../tomcat7

I get this as a response:

archivesspace_v1.0.7.1/archivesspace/scripts/configure-tomcat.sh: line 3: cd: ../tomcat7: No such file or directory
Loading ArchivesSpace configuration file from path: /var/tmp/archivesspace_v1.0.7.1/archivesspace/config/config.rb
Loading ArchivesSpace configuration file from path: /var/tmp/archivesspace_v1.0.7.1/archivesspace/config/config.rb
RuntimeError: Directory '/var/tmp' doesn't look like a Tomcat directory.
initialize at ../launcher/tomcat/lib/configure-tomcat.rb:22
(root) at ../launcher/tomcat/lib/configure-tomcat.rb:139

I also got this same message on the our museum's hosting site which is running CentOS. In this instance, I have run this script other times, but it work normally. Both the Tomcat and archivesspace files are located in the same directory.

Any thoughts on what is making this happen?

How to handle inclusive dates without ends from Archon

Archon (and maybe AT?) can export the following EAD snippet:

<unittitle label="Collection Title" encodinganalog="245">CollectionMgr.Title-Archon<unitdate label="Dates" encodinganalog="245$f" type="inclusive" normal="1999">CollectionMgr.InclusiveDate-Archon</unitdate>

ASpace validation rules don't allow inclusive dates without an end_date.

Should we:

a) fail the import
b) change the date type to 'expression' if there is no end
c) change the validation rule
d) supply a default end date in the configurable importer

My tentative recommendations are either a) or d) and leave admins the option to supply their own more nuanced workarounds in the configurable importer.

Brian

Backend API error response for malformed resource is misleading

This is a minor issue but I thought I'd mention it.

When POSTing a new archival object, if the provided resource ID is malformed, the error message returned by the API is moderately misleading. The message is "Must be a JSONModel(:resource) uri (you provided a String)", which doesn't immediately make the cause clear.

For example, here's a response returned when the resource ID was typoed as /repositories/resources/2 instead of /repositories/2/resources/2.

{
  "invalid_object": "#<JSONModel(:archival_object) {\"level\"=>\"series\", \"resource\"=>{\"ref\"=>\"/repositories/resources/2\"}, \"parent\"=>{\"ref\"=>\"/repositories/2/archival_objects/2\"}, \"jsonmodel_type\"=>\"archival_object\", \"title\"=>\"Test bad resource\", \"external_ids\"=>[], \"subjects\"=>[], \"linked_events\"=>[], \"extents\"=>[], \"dates\"=>[], \"external_documents\"=>[], \"rights_statements\"=>[], \"linked_agents\"=>[], \"component_id\"=>\"\", \"restrictions_apply\"=>false, \"instances\"=>[], \"notes\"=>[]}>",
  "warning": null,
  "error": {
    "resource/ref": [
      "Must be a JSONModel(:resource) uri (you provided a String)"
    ]
  }
}

EAD export produces malformed XML in v. 1.0.9

Issue moved from https://github.com/hudmol/archivesspace/issues/776 -- created by @kardeiz


In upgrading to the latest release, I've noticed that the EAD exporter is generating invalid XML for many of my finding aid "resources". Some XML files end with a closing tag; the root node and possibly others remain unclosed.

I've tried this with a number of different EAD export options, but that has no effect. However, some resources do in fact generate well-formed and valid EAD files, which leads me to think the issue is with how AS is parsing certain fields.

In my previous version (v. 1.0.0 or v. 1.0.1--question: is there an easy way to find out which version I'm running, either from the web interface or in my app directory?), all resources (as far as I can tell) generate valid XML. This includes those resources which are having issues in v. 1.0.9.

I realize that it would be easier to debug this issue with a snapshot of my resource data. Is there an easy way to get a "data dump" of some sort for an AS resource?

Jira inaccessible to anonymous but looks accessible

The Jira instance linked from the documentation will let anonymous users get almost all the way through the issue creation process, but will refuse to submit an issue without a user id. Jira's messaging treats this like a form submission error on the part of the user.

This can (and has, in at least one case) lead to user entering bug to some level of detail, hitting enter, scanning form multiple times for field, and only then realizing that they can't actually submit issues via Jira.

Tomcat setup script does not copy stylesheets directory

Running AS under Tomcat we were unable to export EAD to PDF due to this error:
(RuntimeError) {"error":"File not found: as-ead-pdf.xsl in []"}

Copied the stylesheets directory from the main install location to the Tomcat directory and this fixed the problem. This should probably be added to the Tomcat setup script.

search on keyword will fail when it includes a record with an event

We have a fresh install of v1.1.0, with the aspace-110-plugin included. We noticed that the top search will display an error message ("We're sorry, but something went wrong") if the resultset includes any record with an event. When we take off the event from the record, the search works fine. Or if we do an advanced search based on the title or anything other than keyword, it works fine.

Just to clarify - we are not searching on the event itself, or any information within the event, we are searching for accession and resource records, but if those records have events, an error message is displayed.

search error message

Support running the application under a URL prefix

On the ArchivesSpace group, Steve DiSorbo was wondering whether we could run ArchivesSpace instances under a URL prefix (like http://myhost.example.com/archivesspace).

At the moment we assume we'll always run under "/", but it shouldn't be hard to support an optional URL prefix. We're already using the various Rails helpers that would take a prefix into account, so it's probably just a question of having something parse any path part out of AppConfig[:frontend_url] and AppConfig[:public_url] and do the right thing with it.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.