").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/tech/administration.md b/tech/administration.md
index c283b618a1..6b80e6c04a 100644
--- a/tech/administration.md
+++ b/tech/administration.md
@@ -39,7 +39,7 @@ items from the lists you need to hold CTRL as you select them.
By default email is disabled, but if you are able to you can configure it to
enable SEEK to send emails - such are emails about changes within your
project, notification emails, feedback emails and notifications about errors.
-You can configure email under Admin->Site configuration->Enable/disable
+You can configure email under Admin->Configuration->Enable/disable
features. Part way down that page there is a checkbox "Email enabled" that you
should select. This reveals some SMTP settings that you need to fill out. Any
that are not needed can be left blank. The meaning of the settings are:
@@ -68,7 +68,7 @@ below (comma or space seperated).
## Configuring BioPortal
-[BioPortal](http://bioportal.bioontology.org/) is a service used in SEEK for
+[BioPortal](https://bioportal.bioontology.org/) is a service used in SEEK for
supporting and searching ontologies, which we communicate with via its API.
However, the API requires an api-key that we are unable to distribute with
SEEK. To be able to link organisms with NCBI terms, or search for organisms
@@ -77,24 +77,30 @@ for more widespread uses of ontologies - such as for the Assay and Technology
types, and for tagging with semantic terms.
To get an api-key you first need to register with BioPortal at
-http://bioportal.bioontology.org/accounts/new, and once registered and logged
+https://bioportal.bioontology.org/accounts/new, and once registered and logged
in your api-key should be shown under Account details. More information is
available at
-http://www.bioontology.org/wiki/index.php/BioPortal_REST_services.
+https://www.bioontology.org/wiki/index.php/BioPortal_REST_services.
-In SEEK, you apply the BioPortal api-key under the Admin->Site
-Configuration->Additional Settings.
+In SEEK, you apply the BioPortal api-key under the Admin->Configuration->Settings.
## Configuring DOI and PubMed search
To be able to support adding publications using a
-[PubMed](http://www.ncbi.nlm.nih.gov/pubmed) ID or DOI to your SEEK
+[PubMed](https://www.ncbi.nlm.nih.gov/pubmed) ID or DOI to your SEEK
installation, you need to do 2 things.
-* For PubMed you simply need to add your email address under Admin->Site
- Configuration->Additional Settings
+* For PubMed you simply need to add your email address under Admin->Configuration->Settings
* For DOI - you need to register your email address with
- [CrossRef](http://www.crossref.org/) at
- http://www.crossref.org/requestaccount/ and then provide that email to
- SEEK under Admin->Site Configuration->Additional Settings
+ [CrossRef](https://www.crossref.org/) at
+ https://www.crossref.org/requestaccount/ and then provide that email to
+ SEEK under Admin->Configuration->Settings
+
+## Configuring Session Store Timeout
+
+The timeout period is set to 1 hour by default. This means that a user may be logged out after 1 hour, if they haven't selected "Remember Me"
+when logging in, and could lead to lost information if spending a long time filling out a form.
+
+Usually, 1 hour is sufficient, but the timeout can be updated under Admin->Configuration->Settings.
+
diff --git a/tech/api/scripts/full.py b/tech/api/scripts/full.py
index 4ef8a7f96c..cd2ca57030 100644
--- a/tech/api/scripts/full.py
+++ b/tech/api/scripts/full.py
@@ -11,14 +11,14 @@
import os
import zipfile, io
-master_definitions_url = 'https://raw.githubusercontent.com/seek4science/seek/master/public/2010/json/rest/definitions.json'
+main_definitions_url = 'https://raw.githubusercontent.com/seek4science/seek/main/public/2010/json/rest/definitions.json'
headers = {"Accept-Charset": "ISO-8859-1"}
session = requests.Session()
session.headers.update(headers)
-r = session.get(master_definitions_url)
+r = session.get(main_definitions_url)
r.raise_for_status()
definitions_json = r.text.replace('\r', '')
diff --git a/tech/contributing-to-seek.md b/tech/contributing-to-seek.md
index 861422409c..cc635cf446 100644
--- a/tech/contributing-to-seek.md
+++ b/tech/contributing-to-seek.md
@@ -10,7 +10,7 @@ We welcome all sorts of contributions to SEEK,
* **Non-developer contributions.** These are contributions that can be made by anyone
using SEEK.
- * *Vote and comment other feature requests:* [Contact us](/contacting-us.html) us to get a user within the [JIRA issue tracker](http://fair-dom.org/issues). This enables you to upvote or downvote features. This helps us in the development process.
+ * *Vote and comment other feature requests:* [Contact us](/contacting-us.html) please use the [SEEK issue tracker](https://fair-dom.org/issues).
* *Documentation:* Are you reading the documentation and feel something could/should be better explained? Please read [Contributing to these Pages](/contributing-to-pages.html)
* *Reporting errors:* We are also thankful if you spot errors or broken links.
* **Developer contributions** These are contributions that can be made by other software
@@ -29,7 +29,6 @@ It is possible the feature is already being looked at by another contributor and
The SEEK source code is available on GitHub at [https://github.com/seek4science/seek](https://github.com/seek4science/seek)
The easiest way to contribute code (for both us and you) is to do so through GitHub. You can do so by creating a forked repository. Make you changes on a branch within your forked repository.
-For large changes you would be advised to link your repository to [Code Climate](https://codeclimate.com) and [Travis](https://travis-ci.org) (see below).
Once you have finished making your changes and wish to contribute them, you can do so by issuing a pull request.
@@ -43,5 +42,4 @@ For a contribution to be accepted, we do have a few requirements.
* Code should follow the [Ruby Style Guidelines](https://github.com/bbatsov/ruby-style-guide). Our gems include the tool [Rubocop](https://github.com/bbatsov/rubocop), which can be used to check against the guidelines and (with care) automatically fix some issues.
* Where practical, tests should be added to cover your changes, and all existing tests should pass. The continuous integration tool: [Travis](https://travis-ci.org/seek4science/seek) is useful to checking your tests as your work. _Be pragmatic, don't spend 2 days writing tests for a 5 minute 2 line fix!_
- * We will check quality using [Code Climate](https://codeclimate.com/github/seek4science/seek) for complexity or duplication. You can use [Rubycritic](https://github.com/whitesmith/rubycritic) to check on your local machine.
* Code should be clear, and in some cases we may request some documentation.
diff --git a/tech/docker/basic-container.md b/tech/docker/basic-container.md
index bb0f9d2265..6bf86f6e62 100644
--- a/tech/docker/basic-container.md
+++ b/tech/docker/basic-container.md
@@ -44,11 +44,12 @@ the data (see [Persistent Storage](#persistent-storage) for how to avoid this)
The above example used the image name _fairdom/seek:{{ site.current_docker_tag }}_. The number following the : is the tag, and corresponds to the SEEK minor version _{{ site.current_docker_tag }}_ .
From SEEK 1.1 onwards tags are available for each stable version of SEEK.
-Note that the patch version (i.e. the x in 1.1.x is omitted, the image is always up to date with the latest patch and fixes).
+Tags are available with or without the patch version - i.e _fairdom/seek:1.13.0_ and _fairdom/seek:1.13_.
+The image without the patch is always up to date with the latest version, whereas the image with the patch version is locked to that specific version and gives some more control over updates.
Our images are automatically built, and you can see the full list on the [FAIRDOM Docker Hub](https://hub.docker.com/r/fairdom/seek/tags/)
-Note that there is also a _master_ tag. This is the latest development build of SEEK.
+Note that there is also a _main_ tag. This is the latest development build of SEEK.
It is useful for testing and trying out new cutting edge features,
but is not suitable for a production deployment of SEEK.
diff --git a/tech/docker/building-images.md b/tech/docker/building-images.md
index 44fed2b1ca..abf8e7d4b3 100644
--- a/tech/docker/building-images.md
+++ b/tech/docker/building-images.md
@@ -11,7 +11,7 @@ If you are doing your own development, or you want to tweak the Docker image, it
You need first of course, to have the SEEK code which you can get from [GitHub](https://github.com/seek4science/seek), see [Getting SEEK](../install.html#getting-seek)
-The Docker image is determined by the [Dockerfile](https://github.com/seek4science/seek/blob/master/Dockerfile),
+The Docker image is determined by the [Dockerfile](https://github.com/seek4science/seek/blob/main/Dockerfile),
and in most cases you shouldn't need to change this.
To build your own image, simply run the following from the root of the source folder
diff --git a/tech/docker/docker-compose.md b/tech/docker/docker-compose.md
index c6df067074..011405a99e 100644
--- a/tech/docker/docker-compose.md
+++ b/tech/docker/docker-compose.md
@@ -45,7 +45,7 @@ You change the port, and image in the docker-compose.yml by editing
ports:
- "3000:3000"
-## Proxy through NGINX
+## Proxy through NGINX or Apache
An alternative to changing the port (particularly if running several instances on
same machine), you can proxy through Apache or Nginx. E.g. for Nginx you would configure a virtual host
@@ -63,6 +63,15 @@ like the following:
proxy_pass http://127.0.0.1:3000;
}
}
+
+for Apache the virtual host would include:
+
+ UseCanonicalName on
+ ProxyPreserveHost on
+
+ ProxyPass http://127.0.0.1:3000/ Keepalive=On
+ ProxyPassReverse http://127.0.0.1:3000/
+
You would also want to configure for HTTPS (port 443), and would strongly recommend using [Lets Encrypt](https://letsencrypt.org/) for free SSL certificates.
@@ -133,4 +142,17 @@ The script to use can be found at [https://github.com/seek4science/seek/blob/see
Start with a clean Docker Compose setup described above. Running the script, passing the location of the directory, will drop any existing volumes, recreate new ones and populate them with the sql and filestore data.
wget https://github.com/seek4science/seek/raw/seek-{{ site.current_docker_tag }}/script/import-docker-data.sh
- sh ./import-docker-data.sh /tmp/seek-migration/
\ No newline at end of file
+ sh ./import-docker-data.sh /tmp/seek-migration/
+
+## Using a sub-URI
+
+If you wish to run SEEK under a sub-URI (e.g. https://yourdomain.com/seek/) you can use the alternative `docker-compose-relative-root.yml` file:
+
+ docker-compose -f docker-compose-relative-root.yml up -d
+
+To customize the sub-URI (`/seek` by default), change the `RAILS_RELATIVE_URL_ROOT` variable in that file in *both* the `seek` and `seek_workers` sections.
+
+Please note if adding/changing/removing the `RAILS_RELATIVE_URL_ROOT` on an existing container, you will have to recompile assets and clear the cache:
+
+ docker exec seek bundle exec rake assets:precompile
+ docker exec seek bundle exec rake tmp:clear
diff --git a/tech/earlier-upgrades.md b/tech/earlier-upgrades.md
index 6c47abaf77..884062f35d 100644
--- a/tech/earlier-upgrades.md
+++ b/tech/earlier-upgrades.md
@@ -18,6 +18,184 @@ each released minor version in order incrementally (i.e. 0.13.x -> 0.14.x ->
Each version has a tag, which has the format of *v* prefix
followed by the version - e.g. v0.11.1, v0.13.2, v0.17.1
+## Steps to upgrade from 1.12.x to 1.13.x
+
+### Dependencies
+
+Graphviz, and Python 3.7 are new required dependencies
+
+First add a repo which contains python versions that may not be available in the default repositories
+
+ sudo apt update
+ sudo apt install software-properties-common
+ sudo add-apt-repository ppa:deadsnakes/ppa
+ sudo apt update
+
+and now install the packages:
+
+ sudo apt install graphviz python3.7-dev python3.7-distutils python3-pip
+
+### Set RAILS_ENV
+
+**If upgrading a production instance of SEEK, remember to set the RAILS_ENV first**
+
+ export RAILS_ENV=production
+
+### Stopping services before upgrading
+
+ bundle exec rake seek:workers:stop
+
+### Updating from GitHub
+
+If you have an existing installation linked to our GitHub, you can fetch the
+files with:
+
+ git pull
+ git checkout v1.13.4
+
+### Updating using the tarball
+
+You can download the file from
+
You can
+unpack this file using:
+
+ tar zxvf seek-1.13.4.tar.gz
+ mv seek seek-previous
+ mv seek-1.13.4 seek
+ cd seek/
+
+and then copy across your existing filestore and database configuration file
+from your previous installation and continue with the upgrade steps. The
+database configuration file you would need to copy is _config/database.yml_,
+and the filestore is simply _filestore/_
+
+### Install Python dependencies
+
+First, a specific version of `setuptools` needs to be installed to avoid an issue when installing dependencies
+
+ python3.7 -m pip install setuptools==58
+
+Then the other dependencies can be installed
+
+ python3.7 -m pip install -r requirements.txt
+
+### Upgrading Ruby
+
+You are recommended to upgrade to Ruby 2.7.8 If you are using [RVM](https://rvm.io/) (according to the [Installation Guide](install.html) )you should be prompted to install during the standard installation steps that follow.
+If you are not prompted you can install with the command:
+
+ rvm install $(cat .ruby-version)
+
+### Doing the upgrade
+
+After updating the files, the following steps will update the database, gems,
+and other necessary changes. Note that seek:upgrade may take longer than usual if you have data stored that points to remote
+content.
+
+**Please note** - during the upgrade the step _Updating session store_ can take a long time and appear that it has frozen, so please be patient.
+
+ cd . #this is to allow RVM to pick up the ruby and gemset changes
+ gem install bundler
+ bundle install --deployment --without development test
+ bundle exec rake seek:upgrade
+ bundle exec rake assets:precompile # this task will take a while
+
+### Update Cron Services
+
+SEEK requires some cron jobs for periodic background jobs to run. To update these run:
+
+ bundle exec whenever --update-crontab
+
+### Restarting background job services
+
+ bundle exec rake seek:workers:start
+
+---
+
+## Steps to upgrade from 1.11.x to 1.12.x
+
+**Note** the requirement to setup Apache Solr, which is no longer bundled together with FAIRDOM-SEEK.
+
+### Set RAILS_ENV
+
+
+**If upgrading a production instance of SEEK, remember to set the RAILS_ENV first**
+
+ export RAILS_ENV=production
+
+### Stopping services before upgrading
+
+ bundle exec rake seek:workers:stop
+ bundle exec rake sunspot:solr:stop
+
+### Updating from GitHub
+
+If you have an existing installation linked to our GitHub, you can fetch the
+files with:
+
+ git pull
+ git checkout v1.12.3
+
+### Updating using the tarball
+
+You can download the file from
+ You can
+unpack this file using:
+
+ tar zxvf seek-1.12.3.tar.gz
+ mv seek seek-previous
+ mv seek-1.12.3 seek
+ cd seek/
+
+and then copy across your existing filestore and database configuration file
+from your previous installation and continue with the upgrade steps. The
+database configuration file you would need to copy is _config/database.yml_,
+and the filestore is simply _filestore/_
+
+### Upgrading Ruby
+
+You are recommended to upgrade to Ruby 2.7. If you are using [RVM](https://rvm.io/) (according to the [Installation Guide](install.html) )you should be prompted to install during the standard installation steps that follow.
+If you are not prompted you can install with the command:
+
+ rvm install $(cat .ruby-version)
+
+### Doing the upgrade
+
+After updating the files, the following steps will update the database, gems,
+and other necessary changes. Note that seek:upgrade may take longer than usual if you have data stored that points to remote
+content.
+
+**Please note** - during the upgrade the step _Updating session store_ can take a long time and appear that it has frozen, so please be patient.
+
+ cd . #this is to allow RVM to pick up the ruby and gemset changes
+ gem install bundler
+ bundle install --deployment --without development test
+ bundle exec rake seek:upgrade
+ bundle exec rake assets:precompile # this task will take a while
+
+### Update Cron Services
+
+SEEK requires some cron jobs for periodic background jobs to run. To update these run:
+
+ bundle exec whenever --update-crontab
+
+### Setting up Apache Solr
+
+The [Apache Solr Search Engine](https://solr.apache.org/) now needs to be set up separately.
+It is relatively straightforward and there are instructions on how to do this in [Setting Up Solr](setting-up-solr).
+
+
+### Restarting background job services
+
+ bundle exec rake seek:workers:start
+
+## Stopping soffice
+
+From version 1.12.0 it is no longer necessary to run soffice as a service. If you had previously set up the _/etc/init.d/soffice_ service,
+you now stop and remove this (the soffice executable from LibreOffice is still required though).
+
+---
+
## Steps to upgrade from 1.10.x to 1.11.x
### Upgrading Ruby
@@ -829,6 +1007,7 @@ Please read [Installing SEEK in a production environment](install-production.htm
### Dependencies
libgmp-dev is needed for RedCloth with ruby 2.1.7
+ sudo apt-get update
sudo apt-get install libgmp-dev
### Set RAILS_ENV
diff --git a/tech/extended-metadata.md b/tech/extended-metadata.md
new file mode 100644
index 0000000000..e44884a630
--- /dev/null
+++ b/tech/extended-metadata.md
@@ -0,0 +1,261 @@
+---
+title: Extended Metadata Technical Overview
+layout: page
+---
+
+# Extended Metadata Technical Overview
+
+## Introduction
+
+Extended Metadata is a feature added to SEEK as part of [version 1.11](/tech/releases/#version-1110), originally to support
+MIAPPE but designed for future use.
+It provides the ability to define additional metadata attributes for a particular type, to support a particular standard (i.e MIAPPE).
+
+
+It was originally referred to as 'Custom Metadata' but recently renamed to avoid confusion, as the metadata can only be extended but not entirely customised.
+You may sometimes hear or read it referred to as Custom Metadata, and they are the same thing.
+
+
+It is not a feature a user would directly see, other than revealed through extensions that are made available:
+
+![](/images/user-guide/extended-metadata/extended-metadata-select.png)
+{:.screenshot}
+
+... will reveal new fields below:
+
+![](/images/user-guide/extended-metadata/extended-metadata-fields.png)
+{:.screenshot}
+
+The attributes can be associated with a particular attribute type, and marked as optional or mandatory, and will be validated against. This is very similar to Samples.
+
+Extended metadata will only be shown if defined within the database, which is currently the only way of configuring it.
+
+
+## How it works
+
+Extended Metadata works in a very similar way to Samples, and shares a lot of the same code. Extended Metadata Types are defined, that describe a set of attributes with names
+and point to a SampleAttributeType to define the attribute type.
+
+The Extended Metadata type is linked to a particular resource type in SEEK. Currently, it can be incorporated into the following types:
+`Collection`, `DataFile`, `Document`, `Event`, `Model`,`Presentation`,`Sop`, `Project`.
+
+You can define the supported resource type as shown below:
+
+```
+ExtendedMetadataType.new(title: 'person', supported_type: 'YOUR_TYPE_NAME')
+```
+
+You can think of Extended Metadata being a Sample, but instead of standing alone is embedded within another type to extend it's metadata.
+This is explained in the following high level representation.
+
+![](/images/user-guide/extended-metadata/high-level-arch.png)
+{:.screenshot}
+
+Currently, Extended Metadata can only be defined by directly making entries in the database.
+This is generally done through a seed file, for example the [MIAPPE Extended Metadata Seed](https://github.com/seek4science/seek/blob/main/db/seeds/008_miappe_extended_metadata.seeds.rb).
+By default only MIAPPE is provided, but other bespoke installations have used the ability to extend their own metadata, e.g. for ENA. We hope to include this as a pre-installed option in the future.
+
+We are planning on making it easier for an instance administrator to define Extended Metadata themselves, initially through simple JSON or an Excel template, and then longer term through a user interface.
+
+If you have a metadata scheme that you think is in a mature state and would like to be added as a default installation,
+or need help adding to your own instance, then please [contact us](/contacting-us)
+
+This is something we've been rolling out slowly and carefully, after initially using internally, because once defined and populated they are difficult to redefine.
+
+ ## Define your own Extended Metadata type
+
+
+If you are managing your own SEEK instance, you have the flexibility to define your project-specific Extended Metadata Types by populating the database with a seed file.
+
+The following are the supported Extended Metadata Attribute Types, each accompanied by a corresponding code snippet for implementation and screenshot in SEEK.
+
+1.**String type**: the attribute refers to a fixed-length character field. (e.g. "blue")
+
+```
+ ExtendedMetadataAttribute.new(
+
+ # The attribute's identifier or name (mandatory) .
+ title: 'title',
+
+ # Indicates whether this attribute is mandatory for the associated metadata. By default, it is set to false.
+ required: true,
+
+ # Specifies the attribute type, here set to 'String' (mandatory).
+ sample_attribute_type: SampleAttributeType.where(title: 'String').first,
+
+ # A brief description providing additional details about the attribute. By default, it is set to the empty string.
+ description: 'the title of your study',
+
+ # The label to be displayed in the user interface, conveying the purpose of the attribute. By default, it is set to the value of the 'title' attribute."
+ label: 'study title'
+
+)
+```
+![](/images/user-guide/extended-metadata/atrribute_string_type.png)
+{:.screenshot}
+
+2. **Text type**: the attribute is used for longer, variable-length character fields. (e.g. "The 4th experiment in the batch, it was sampled late, so may not be as accurate" ).
+
+```
+ ExtendedMetadataAttribute.new(title: 'description', required:true, sample_attribute_type: SampleAttributeType.where(title:'Text').first)
+```
+![](/images/user-guide/extended-metadata/attribute_text_type.png)
+{:.screenshot}
+
+3. **Date type**: the attribute is used to represent dates. (e.g. January 1, 2015)
+```
+ ExtendedMetadataAttribute.new(title: 'study_start_date', required:true, sample_attribute_type: SampleAttributeType.where(title:'Date').first)
+```
+![](/images/user-guide/extended-metadata/attribute_date_type.png)
+{:.screenshot}
+
+4. **Date-Time type**: the attribute is used to represent dates and times. (e.g. January 1, 2015 at 14:00 GMT)
+
+```
+ ExtendedMetadataAttribute.new(title: 'study_start_time', required:true, sample_attribute_type: SampleAttributeType.where(title:'Date time').first)
+```
+![](/images/user-guide/extended-metadata/attribute_time_type.png)
+{:.screenshot}
+
+5. **Integer type**: the attribute is positive, negative, or zero numbers that do not have a fractional part. (e.g. 1, 2, 3, 4)
+
+```
+ ExtendedMetadataAttribute.new(title: 'study_age', required:true, sample_attribute_type: SampleAttributeType.where(title:'Integer').first)
+```
+![](/images/user-guide/extended-metadata/attribute_integer_type.png)
+{:.screenshot}
+
+6. **Real Number**: the attribute is used to represent numbers that may have a fractional component or decimal point. (e.g. 180.5)
+
+```
+ ExtendedMetadataAttribute.new(title: 'cholesterol_level', required:true, sample_attribute_type: SampleAttributeType.where(title:'Real number').first)
+```
+![](/images/user-guide/extended-metadata/attribute_real_number_type.png)
+{:.screenshot}
+
+7. **Boolean**: the attribute uses true and false to represent truth values. (e.g. true, false)
+
+```
+ ExtendedMetadataAttribute.new(title: 'resource_use_rights_authors_confirmation', required:true, sample_attribute_type: SampleAttributeType.where(title:'Boolean').first)
+```
+![](/images/user-guide/extended-metadata/attribute_boolean_type.png)
+{:.screenshot}
+
+8. **Controlled Vocabulary**: The attribute is limited to a predefined set of terms, and users must choose from this set. This selection is presented as a single-select dropdown list in the user interface.
+
+```
+def create_sample_controlled_vocab_terms_attributes(array)
+ attributes = []
+ array.each do |type|
+ attributes << { label: type }
+ end
+ attributes
+end
+
+
+# Create a list of controlled vocablary for the personal title of role name
+
+ role_name_personal_title_cv = SampleControlledVocab.where(title: 'Personal Title').first_or_create!(sample_controlled_vocab_terms_attributes: create_sample_controlled_vocab_terms_attributes(['Mr.', 'Ms.', 'Dr.', 'Prof. Dr.', 'Other']))
+
+ ExtendedMetadataAttribute.new(title: 'role_name_personal_title', required:true,
+ sample_attribute_type: SampleAttributeType.where(title:'Controlled Vocabulary').first, sample_controlled_vocab: role_name_personal_title_cv)
+
+```
+
+![](/images/user-guide/extended-metadata/attribute_cv_type.png)
+{:.screenshot}
+
+9. **Controlled Vocabulary List**: Unlike a single-select option in Controlled Vocabulary, Controlled Vocabulary List allows users to make multiple selections from a predefined set of terms for a given attribute.
+
+```
+# Create a controlled vocabulary for European study countries.
+
+ study_country_cv = SampleControlledVocab.where(title: 'study_country').first_or_create!(
+ sample_controlled_vocab_terms_attributes: create_sample_controlled_vocab_terms_attributes([
+ 'Albania',
+ 'Austria',
+ 'Belgium',
+ 'Bosnia and Herzegovina',
+ 'Bulgaria',
+ 'Croatia',
+ 'Cyprus',
+ 'Czech Republic','Denmark',
+ 'Estonia',
+ ....
+ ]))
+
+ ExtendedMetadataAttribute.new(title: 'study_country', required:true, sample_attribute_type: SampleAttributeType.where(title:'Controlled Vocabulary List').first, sample_controlled_vocab: study_country_cv)
+```
+![](/images/user-guide/extended-metadata/attribute_cvlist_type.png)
+{:.screenshot}
+
+10. **Nested Extended Metadata**: the attribute allows for a hierarchical structure where one Extended Metadata type definition can reference another, resulting in the nesting of these types within a single form.
+Furthermore, The inner Extended Metadata type can also now be defined as a list, with the form allowing new items to be added or removed.
+
+```
+# Define the inner extended metadata type 'person' with attributes 'first_name' and 'last_name'.
+# The 'supported_type' is set to 'ExtendedMetadata' to denote it as the inner extended metadata type.
+
+unless ExtendedMetadataType.where(title: 'person', supported_type: 'ExtendedMetadata').any?
+
+ emt = ExtendedMetadataType.new(title: 'person', supported_type: 'ExtendedMetadata')
+
+ # Define 'first_name' attribute as a 'String' type
+ emt.extended_metadata_attributes << ExtendedMetadataAttribute.new(
+ title: 'first_name',
+ sample_attribute_type: SampleAttributeType.where(title: 'String').first
+ )
+
+ # Define 'last_name' attribute as a 'String' type
+ emt.extended_metadata_attributes << ExtendedMetadataAttribute.new(
+ title: 'last_name',
+ sample_attribute_type: SampleAttributeType.where(title: 'String').first
+ )
+ emt.save!
+end
+
+# Define the extended metadata type 'family', which contains the nested extended metadata attributes
+person_emt = ExtendedMetadataType.where(title: 'person', supported_type: 'ExtendedMetadata').first
+
+unless ExtendedMetadataType.where(title: 'family', supported_type: 'Investigation').any?
+ emt = ExtendedMetadataType.new(title: 'family', supported_type: 'Investigation')
+
+ # Define 'dad' attribute for 'family' linked to the 'person' type
+ emt.extended_metadata_attributes << ExtendedMetadataAttribute.new(
+ title: 'dad',
+ sample_attribute_type: SampleAttributeType.where(title: 'Linked Extended Metadata').first,
+ linked_extended_metadata_type: person_emt
+ )
+
+ # Define 'mom' attribute for 'family' linked to the 'person' type
+ emt.extended_metadata_attributes << ExtendedMetadataAttribute.new(
+ title: 'mom',
+ sample_attribute_type: SampleAttributeType.where(title: 'Linked Extended Metadata').first,
+ linked_extended_metadata_type: person_emt
+ )
+
+ # Define 'child' attribute for 'family' linked to the 'person' type (multiple children allowed)
+ emt.extended_metadata_attributes << ExtendedMetadataAttribute.new(
+ title: 'child',
+ sample_attribute_type: SampleAttributeType.where(title: 'Linked Extended Metadata (multiple)').first,
+ linked_extended_metadata_type: person_emt
+ )
+end
+
+```
+![](/images/user-guide/extended-metadata/attribute_nested_type.png)
+{:.screenshot}
+
+You can find the complete example [here](https://github.com/seek4science/seek/blob/main/db/seeds/extended_metadata_drafts/family_example.seeds.rb), you need to move the file under the `db/seeds` folder, then run the seed file using the command
+```bundle exec rake db:seed:family_example``` from the SEEK instance root path.
+
+### How to run the seed file?
+
+[Here](https://github.com/seek4science/seek/blob/main/db/seeds/extended_metadata_drafts/extended_study_metadata_example.seeds.rb) is a seed file named **extended_study_metadata_example.seeds.rb**, which creates an Extended Metadata type named **"My study metadata"** for study.
+
+You can place it under the `db/seeds` folder, then run the seed file using the command
+```bundle exec rake db:seed:extended_study_metadata_example``` from the SEEK instance root path.
+
+
+
+
diff --git a/tech/install-production.md b/tech/install-production.md
index f9c5f74cd6..031238c82d 100644
--- a/tech/install-production.md
+++ b/tech/install-production.md
@@ -24,25 +24,19 @@ To save time later there are also some additional packages to install:
sudo apt-get install libapr1-dev libaprutil1-dev
-You will need to install SEEK as the www-data user. First, to make the
-installation simpler, give this user a dedicated home directory:
+First create a user to own the SEEK application:
- sudo /etc/init.d/apache2 stop
- sudo usermod -d /home/www-data www-data
- sudo usermod -s /bin/bash www-data
- sudo mkdir /home/www-data
- sudo chown www-data /home/www-data
- sudo /etc/init.d/apache2 start
+ sudo useradd -m seek
We recommend installing SEEK in /srv/rails/seek - first you need to create
-this and grant permissions to www-data
+this and grant permissions to `seek`
sudo mkdir -p /srv/rails
- sudo chown www-data /srv/rails
+ sudo chown seek:seek /srv/rails
-Now switch to the www-data user
+Now switch to the `seek` user
- sudo su - www-data
+ sudo su - seek
cd /srv/rails
Before following the standard INSTALL guide you need to set an environment
@@ -60,9 +54,18 @@ together with Apache, and also automating the required services.
If you have problems with requiring a sudo password during the RVM steps -
first setup RVM and ruby-1.9.3 as a user with sudo access, and repeat the
-steps as the www-data user. This means the required packages should then be
+steps as the `seek` user. This means the required packages should then be
installed. At the time of writing this guide this shouldn't be necessary.
+## Bundler Configuration
+
+When installing gems with Bundler, first configure with
+
+ bundle config set deployment 'true'
+ bundle config set without 'development test'
+
+this will prevent gems being accidentally changed, and also avoid unnecessary gems being installed.
+
## After you have installed SEEK
## Compiling Assets
@@ -76,24 +79,37 @@ the following command. This can take some time, so be patient
### Serving SEEK through Apache
-First you need to setup [Passenger Phusion](https://www.phusionpassenger.com/)
-.Still as the www-data user, run the command:
+First you need to setup [Passenger Phusion](https://www.phusionpassenger.com/library/install/apache/install/oss/bionic/).
+
+#### Install Passenger
+
+The following steps are taken from the above guide:
+
+Install PGP key:
- bundle exec passenger-install-apache2-module
+ sudo apt-get install -y dirmngr gnupg
+ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
+ sudo apt-get install -y apt-transport-https ca-certificates
-This will compile a module for Apache, and at the end present you with some
-lines that need adding to /etc/apache2/apache2.conf. These will look something
-like the following, but the paths will most likely be different:
+Add apt repository:
- LoadModule passenger_module /home/www-data/.rvm/gems/ruby-2.2.7/gems/passenger-5.1.2/buildout/apache2/mod_passenger.so
-
- PassengerRoot /home/www-data/.rvm/gems/ruby-2.2.7/gems/passenger-5.1.2
- PassengerDefaultRuby /home/www-data/.rvm/gems/ruby-2.2.7/wrappers/ruby
-
+ sudo sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger bionic main > /etc/apt/sources.list.d/passenger.list'
+ sudo apt-get update
-You will need to be a user that has sudo permissions, and edit this file:
+Install Apache module:
- sudo nano /etc/apache2/apache2.conf
+ sudo apt-get install -y libapache2-mod-passenger
+
+Enable the module:
+
+ sudo a2enmod passenger
+ sudo apache2ctl restart
+
+Check everything worked:
+
+ sudo /usr/bin/passenger-config validate-install
+
+#### Apache configuration
Now create a virtual host definition for SEEK:
@@ -104,6 +120,9 @@ ServerName appropriately):
ServerName www.yourhost.com
+
+ PassengerRuby /usr/local/rvm/rubies/seek/bin/ruby
+
DocumentRoot /srv/rails/seek/public
# This relaxes Apache security settings.
@@ -121,6 +140,8 @@ ServerName appropriately):
+(Notice we are referencing our "seek" alias in the `PassengerRuby` directive.)
+
The LocationMatch block tells Apache to serve up the assets (images, CSS,
Javascript) with a long expiry time, leading to better performance since these
items will be cached. You may need to enable the *headers* and *expires*
@@ -140,13 +161,19 @@ If you now visit http://localhost (note there is no 3000 port) - you should
see SEEK.
If you wish to restart SEEK, maybe after an upgrade, without restarting Apache
-you can do so by running (as www-data)
+you can do so by running (as the `seek` user)
touch /srv/rails/seek/tmp/restart.txt
### Configuring for HTTPS
-We would strongly recommend using [Lets Encrypt](https://letsencrypt.org/) for free SSL certificates.
+We would strongly recommend using [Lets Encrypt](https://letsencrypt.org/) for free SSL certificates.
+
+### Setup Cron Services
+
+SEEK requires some cron jobs for periodic background jobs to run. To create these run:
+
+ bundle exec whenever --update-crontab
### Setting up the services
@@ -169,17 +196,3 @@ start it up with:
sudo /etc/init.d/delayed_job-seek start
-### The LibreOffice Soffice service
-
-Create the file /etc/init.d/soffice and copy the contents of
-[scripts/soffice](scripts/soffice) into it.
-
-The run:
-
- sudo chmod +x /etc/init.d/soffice
- sudo update-rc.d soffice defaults
-
-start it up with:
-
- sudo /etc/init.d/soffice start
-
diff --git a/tech/install.md b/tech/install.md
index 57cd3cacd6..d4a6ea3c59 100644
--- a/tech/install.md
+++ b/tech/install.md
@@ -1,5 +1,5 @@
---
-title: install
+title: Install Guide
layout: page
redirect_from: "/install.html"
---
@@ -14,7 +14,7 @@ For how to install and run using Docker, which in many cases is simpler and quic
If you have installed SEEK, please take a moment to fill out our very
short,optional [SEEK Registration
-Form](http://seek4science.org/seek-registration)
+Form](https://seek4science.org/seek-registration)
If you have any problems or questions, you should contact us. The following
link will give you details on how to [Contact Us](/contacting_us.html)
@@ -23,18 +23,20 @@ SEEK is based upon the Ruby on Rails platform. Although the information on
this page should provide you with everything you need to get a basic
installation of SEEK up and running, some background reading on Ruby on Rails
would be beneficial if it is new to you. Documentation and resources
-describing Ruby on Rails can be found at http://rubyonrails.org/documentation
+describing Ruby on Rails can be found at https://rubyonrails.org/documentation
.
-SEEK is built upon the 5.2 version of Rails, and requires Ruby 2.6.
+SEEK is built upon Rails, and requires Ruby 3.1.
We recommend that you run SEEK on a Linux system. This guide is based on an
-[Ubuntu (18.04 LTS)](http://releases.ubuntu.com/18.04/) system. However, running on other Linux distributions the
+[Ubuntu (20.04 LTS)](https://releases.ubuntu.com/20.04/) system. However, running on other Linux distributions the
main difference is the name of the required packages that have to be installed
for that distribution, other than that the steps will be the same. If you want
to install on different distribution or version please visit [Other
Distributions](other-distributions.html) and see if it is listed there.
+
+
You will need to have *sudo* access on the machine you are installing SEEK, or
be able to login as root. You will also need an active internet connection
throughout the installation process.
@@ -48,34 +50,33 @@ These are the packages required to run SEEK with Ubuntu 20.04 (Desktop or
Server). For other distributions or versions please visit our [Other
Distributions](other-distributions.html) notes.
-You should run an update first
+First add a repo which contains python versions that may not be available in the default repositories
+
+ sudo apt install software-properties-common
+ sudo add-apt-repository ppa:deadsnakes/ppa
+
+Then ensure everything is up-to-date
sudo apt update
sudo apt upgrade
Now install the packages:
- sudo apt install mysql-server
-
-Pay attention to what you use for the 'MySQL root' password when requested -
-you will need this later.
-
-The remaining packages are:
-
- sudo apt install build-essential git imagemagick libcurl4-gnutls-dev libgmp-dev \
+ sudo apt install build-essential cmake git graphviz imagemagick libcurl4-gnutls-dev libgmp-dev \
libmagick++-dev libmysqlclient-dev libpq-dev libreadline-dev libreoffice libssl-dev \
- libxml++2.6-dev libxslt1-dev nodejs openjdk-8-jdk openssh-server poppler-utils zip
+ libxml++2.6-dev libxslt1-dev mysql-server nodejs openjdk-11-jdk openssh-server poppler-utils zip \
+ python3.9-dev python3.9-distutils python3-pip
Installing these packages now will make installing Ruby easier later on:
sudo apt install autoconf automake bison curl gawk libffi-dev libgdbm-dev \
libncurses5-dev libsqlite3-dev libyaml-dev sqlite3
-SEEK's Solr implementation currently requires Java 8, so you may need to switch the system's default Java runtime:
+SEEK's Solr implementation currently requires Java 11, so you may need to switch the system's default Java runtime:
sudo update-alternatives --config java
-...and select the version named `/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java` or similar.
+...and select the version named `/usr/lib/jvm/java-11-openjdk-amd64/bin/java` or similar.
## Development or Production?
@@ -91,7 +92,7 @@ Now you are ready for installing SEEK. You can either install directly from Gith
### Install directly from Github
If you wish to install directly from GitHub, the latest version of SEEK is
-tagged as *(v{{ site.current_seek_version }})*. To fetch this run:
+tagged as *v{{ site.current_seek_version }}*. To fetch this run:
git clone https://github.com/seek4science/seek.git
cd seek/
@@ -117,25 +118,21 @@ Ruby and RubyGems version. Although you can use the version that comes with
your linux distribution, it is more difficult to control the version you use
and keep up to date.
-To install RVM follow the steps at . The current
-basic installation method is to run:
-
- \curl -L https://get.rvm.io | bash
+To install RVM on Ubuntu there is package available described at , the steps being
-to save restarting your shell run:
+ sudo apt-add-repository -y ppa:rael-gc/rvm
+ sudo apt-get update
+ sudo apt-get install rvm
+ sudo usermod -a -G rvm $USER
- source ~/.rvm/scripts/rvm
+... the guide recommends rebooting here, but logging in and out again usually works.
-if you already had RVM installed, bring it up to date with:
-
- rvm get stable
+Other ways to install RVM can be found at .
now install the appropriate version of Ruby
rvm install $(cat .ruby-version)
-you may be asked for your password so that some additional packages can be
-installed. You will then need to wait for Ruby to be downloaded and compiled.
## Installing Gems
@@ -143,9 +140,20 @@ First install bundler, which is used to manage gem versions
gem install bundler
-Next install the ruby gems SEEK needs:
+Next install the ruby gems SEEK needs ( for production see [Bundler Configuration](install-production.html#bundler-configuration) )
+
+ bundle install
- bundle install --deployment --without development test
+## Install Python dependencies
+
+First, a specific version of `setuptools` needs to be installed to avoid an issue when installing dependencies
+
+ python3.9 -m pip install setuptools==58
+
+Then the other dependencies can be installed
+
+ python3.9 -m pip install -r requirements.txt
+
## Setting up the Database
@@ -159,10 +167,9 @@ default version of this and then edit it:
Change this for each environment (development,production,test).
Now you need to grant permissions for the user and password you just used
-(changing the example below appropriately). You will need the root password
-you created for mySQL when installing the package. e.g:
+(changing the example below appropriately).
- > mysql -uroot -p
+ > sudo mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1522
@@ -214,19 +221,6 @@ you can also restart with
bundle exec rake seek:workers:restart
-### Starting and Stopping the SOFFICE service
-
-SEEK uses the soffice service provided by
-[LibreOffice](https://www.libreoffice.org/) to convert various document
-formats to PDF and Text - to allow them to be viewed in a web browser, and to
-make them indexable to the search. To start soffice run:
-
- soffice --headless --accept="socket,host=127.0.0.1,port=8100;urp;" --nofirststartwizard > /dev/null 2>&1 &
-
-and to stop it run:
-
- killall -15 soffice
-
## Starting SEEK
You can now start up SEEK again running:
diff --git a/tech/other-distributions.md b/tech/other-distributions.md
index ac52d7e3f9..f1290a6131 100644
--- a/tech/other-distributions.md
+++ b/tech/other-distributions.md
@@ -165,7 +165,7 @@ http://sergiy.kyrylkov.name/2012/02/26/phusion-passenger-with-apache-on-rhel-6
-centos-6-sl-6-with-selinux but we have been unable to get this to work.
If you have a solution on how to re-enable SELinux, please contact us. You can
-find details about how to contact us at http://seek4science.org/contact
+find details about how to contact us at https://seek4science.org/contact
## Ubuntu 10.04 (LTS)
diff --git a/tech/releases/index.md b/tech/releases/index.md
index b4a3b53a6e..be54d14822 100644
--- a/tech/releases/index.md
+++ b/tech/releases/index.md
@@ -11,6 +11,307 @@ Please see [Getting FAIRDOM-SEEK](/get-seek.html) for details about installing S
If you have any comments or feedback about a release, then please [Contact Us](/contacting-us.html)
+## Version 1.15.0
+
+Release date: _March 2024_
+
+* Licenses are now linked to SPDX identifiers, with support for more open source licences.
+* A sitemap.xml is generated for public content.
+* Samples extracted from a template are now editable and have their won sharing policies and associated projects (previously bound to the tempalte datafile)
+* Detect and warn of duplicate samples during extraction
+* Samples related to a DataFile are shown if linked together, as well as if the samples originated from the DataFile
+* Allowing free text for a Controlled Vocabulary sample attribute, which can be set as allowed for the attribute as part of a defined Sample Type.
+* Improved Citation selector UI.
+* Performace improvements to allow a Controlled Vocabulary to be populated from a large number of terms from an ontology
+* Can define multiple root nodes from an ontology tree when populating a Controlled Vocabulary
+* UI improvements when selecting Projects and Institutions for sharing permissions, making them searchable and easier to find in a long list
+* Configuration allowing Project requests to be automatically approved for site managed programmes.
+* Importing projects from a Data Management Plan that conforms to the RDA DMP Common Standard
+* Performance improvements when viewing Data files - checking for matching sample types has been improved and now happens asynchronously
+* UI improvments for nested Extended metadata
+* Magnify icon next to a file now supports Explore if it is an Excel file
+* Admin area that lists Extended Metadata definitions and allows them to be disabled
+* Performance improvements when deleting items, especially large numbers of samples tied to a deleted DataFile
+* Improvements to the deletion of content-blobs (which describe the registered files) and protection against them being reused after deletion
+* Docker compose now recommends MySQL 8
+* Fix to LS Login authentication configuration
+* Support for generic OpenID Connect authentication to be configured
+* Extended Metadata write API, and documentation for both read and write.
+
+For a full list, see [closed issues for 1.15.0](https://github.com/seek4science/seek/milestone/19?closed=1)
+
+## Version 1.14.2
+
+Release date: _2nd February 2024_
+
+A patch release that includes some important bug fixes and improvements:
+
+* Significant performance improvements for jobs updating the authorization tables.
+* Stop displaying usage metrics (views, downloads) from list items, due to a large overhead. The metrics are still available when viewing an individual item.
+* Allow users to override http response code validation, but with a warning, when attempting to register and item via a URL - as some servers do not always provide the correct response code.
+* Fixes to the BioModels search to better handle unexpected JSON responses, or where information is missing.
+* Fix to parsing Excel spreadsheets which have errors reported in the logging, but the errors don't prevent the spreadsheet being successfully parse.
+* Keep the "External Search" box ticked between searches.
+
+For a full list, see [closed issues for 1.14.2](https://github.com/seek4science/seek/milestone/21?closed=1)
+
+## Version 1.14.1
+
+Release date: _13th November 2023_
+
+A patch release that includes some important bug fixes and improvements:
+
+* Fixed a problem that prevented extracted samples that include links to other samples being successfully registered.
+* Fixed an error that was occurring when a sample attrribute PID was inadvertently set to an invalid IRI.
+* A fix to some cases where the submit button was always disabled when attempting to "Request membership" to a Project.
+* The integration with the Ontology Lookup Service has been updated to use version 4.
+* The sample attribute type "Registered Sample (multiple)" has been renamed "Registered Sample List" to be consistent with other types.
+* The sample attribute type "Ontology" has been removed, as it was just duplicate of "Controlled Vocabulary". We are looking at ways to distinguish between
+plain CV's and ontology based CV's in the UI.
+* Allow a Controlled Vocabulary that has been populated from an ontology via the Ontology Lookup Service to now also allow additional terms to be manually added.
+
+For a full list, see [closed issues for 1.14.1](https://github.com/seek4science/seek/milestone/20?closed=1)
+
+## Version 1.14.0
+
+Release date: _12th October 2023_
+
+A major release that contains a number of improvements, upgrades and bug fixes, including:
+
+* **Upgrade of Ruby**, from Ruby 2.7 to Ruby 3.1.
+ * This gives improved speed and overall performance, along with keeping up with security patches.
+* **Upgrade to Rails**, to the latest 6.1 release.
+* **Nested [Extended Metadata](/tech/extended-metadata)** (previously referred to as Custom Metadata).
+ * Extended Metadata allows items to be customized with additional typed metadata, similar to samples, and was used to support MIAPPE along
+ with some bespoke installations.
+ * Extended Metadata can now be nested, i.e one Extended Metadata type definition can include a reference to another,
+ and these will be nested together in a single form.
+ * The inner Extended Metadata type can also now be defined as a list, with the form allowing new items to be added or removed.
+* **Gatekeeper behaviour** refresh and fixes
+ * Many bugs fixed, along with improvements and refinements.
+ * Fixes to notifications for when a gatekeeper intervention is required.
+ * Fixes to tracking items waiting to be published, and updating the list when they are rejected or approved.
+ * Fix to better keep track of the full sharing permissions whilst a request to make public is being reviewed by the gatekeeper,
+ and have them applied correctly when approved.
+ * Users can now cancel a publishing request.
+ * Added support for Samples.
+ * Improved integration with DataHub and the Single Page View.
+ * Updated [documentation](/help/user-guide/roles.html#asset-gatekeeper).
+* **Viewing of Excel files in the browser** for all asset types (previously only Data Files were supported).
+* **Event filtering improvements**.
+ * Includes the full set of common filters available for other items, plus the addition of Event specific filters.
+* **Fix duplications in the ISA graph and tree**, particularly for publications.
+* **Updated and unified auto complete text fields** to use an improved UI component and be consistent throughout.
+ * Type ahead fields that autocomplete (e.g. tagging, sample controlled vocabularies) have now been updated to use [select2](https://select2.org/) throughout.
+* **Programme creation request notifications** to adminstrators are now shown in the browser as well as by email.
+* **Explanatory text for Programme creation** has been provided.
+* **Navigating from broad search results across all types, to the full list** with filtering for a specific type has been made clearer .
+* **Better phone and tablet support** for some places in the UI.
+* **[FAIR Signposting](https://signposting.org/FAIR/) support** option added.
+ * Data dumps containing aggregated Bioschemas metadata generated daily for each asset type.
+* **bio.tools** support extended to API.
+* **Workflow metadata improvements**.
+ * Automatic identification of license from `LICENSE` etc. files in Git repositories or RO-Crates.
+ * Recognize additional metadata from CFF files.
+ * Add "Deprecated" as a maturity level option.
+* **Citation improvements**.
+ * Citations can now be generated from CFF files for resources without a DOI.
+ * Citation style select list can now be filtered.
+
+For a full list, see [closed issues for 1.14.0](https://github.com/seek4science/seek/milestone/16?closed=1)
+
+## Version 1.13.4
+
+Release date: _14th June 2023_
+
+A small patch release that contains some small bug fixes:
+
+* Fix for handling redirects correctly when registering an item by URL.
+* Fix to handle items registered as a remote URL - when the URL needs authorization it is always shown as an external link.
+* Fix for a missing python dependency (filelock), which is required for processing CWL workflows.
+
+We have also provided details about [installing Ruby 2.7 on Ubuntu 22.04](/tech/ruby-2.7-ubuntu-22.04).
+
+For a full list, see [closed issues for 1.13.4](https://github.com/seek4science/seek/milestone/18?closed=1)
+
+## Version 1.13.3
+
+Release date: _16th May 2023_
+
+A small patch release that contains bug fixes and small improvements:
+
+* Ability to recursively select items in the tree when batch changing permissions
+ * ( for 1.14 this will be further improved and combined with batch publishing which is a very similar action)
+* When running with Docker, a new PUMA_WORKERS_NUM environment variable can be used to control the number of puma
+ workers, overriding the default that is set to the number of available processor cores
+* Fix for when combing filtering with ordering by views or downloads
+* Fix for publications incorrectly showing a license that cannot be set
+
+For a full list, see [closed issues for 1.13.3](https://github.com/seek4science/seek/milestone/17?closed=1)
+
+## Version 1.13.2
+
+Release date: _14th April 2023_
+
+A small patch release that contains several bug fixes and small improvements, including
+
+* Ability to tag Investigations and Studies, providing better overall consistency
+* Fix duplicate projects appearing in Workflow RO-Crates
+* Sort items by view or download counts in the filtered search index views
+* A new Sample attribute type, _Controlled Vocabulary List_, that supports multiple terms selected from a Controlled Vocabulary as an array
+* Fix to correctly provide the content length in HTTP headers for downloads that was missing in some cases, and also added the Content-MD5 header to include the md5 checksum
+* Programmes are now listed in MyItems, and related items generally, if the user is the Programme Administrator but not directly a member of a related Project
+* Space out daily background jobs so that they don't all run at once, avoiding potential memory issues
+* Upgrade of Rails to the 6.1.7.2 version, and also Ruby to the 2.7.8 version
+
+For a full list, see [closed issues for 1.13.2](https://github.com/seek4science/seek/milestone/15?closed=1)
+
+## Version 1.13.1
+
+Release date: _2nd February 2023_
+
+A small bugfix patch release ...
+
+* Fix to forcing a copy when registering data via a URL, using the Upload a copy checkbox.
+* Group together notification emails, to prevent many emails for the same error being sent in quick succession.
+ The are now sent in groups of increasing size, within a configurable time period.
+* Fix to prevent links being displayed, when displaying the text that was used for a search.
+
+For a full list, see [closed issues for 1.13.1](https://github.com/seek4science/seek/milestone/12?closed=1)
+
+## Version 1.13.0
+
+Release date: _12th January 2023_
+
+A major release with broad number of changes, including many small changes and bug fixes not listed here.
+The high level changes include:
+
+* **Maintenance period** - code tidying, removing old unused features, refactoring.
+* **Rails 6.1 upgrade**.
+* **Workflow support improvements**:
+ * **Git** repository support:
+ * Import from git repository,
+ * Add and modify files dynamically,
+ * Preview and download individual files,
+ * Versioning via Git.
+ * **Bio.tools** integration for workflow steps,
+ * **Citation CFF** support,
+ * **Jupyter** notebook rendering,
+ * **RO-Crate** parsing and creation fixes,
+ * Improved workflow **diagram** generation,
+ * Workflow **maturity flag** and filter,
+ * **LifeMonitor** integration - filter by test status.
+* **Sample enhancements**:
+ * Extraction performance improvements,
+ * Improved error handling and reporting during sample extraction,
+ * Sample types have contributor shown, and now supports creators,
+ * Filtering and search view now available for samples and sample types.
+ * JSON API improvements.
+* **Integrated [TeSS](https://tess.elixir-europe.org/) search** for Events.
+* **Timezone information** provided for Event start and end dates.
+* **Search improvements**:
+ * Fix to the order of search results,
+ * Improvements to indexing.
+ * Harmonization between general search and searching and filtering.
+* **Show the last person** that updated an item (shown only to project members).
+* **Improvements to the table view** of items, adding more columns and making more consistent.
+* **Tagging projects from the EDAM** ontology, and made easier to extend with other ontologies in the future.
+* **API testing and documentation** improvements.
+* **Project creation and join requests** fixes and improvements, including:
+ * Other administrators are notified when a request is responded to.
+ * Ability to delete a request without responding, for handling spam or duplicates.
+* **Descriptive help text** for each creatable entry, show in the Create or Browse pages that link off to documentation where available.
+* **IBISBA enhancements**:
+ * iPOP - to populate a Project and ISA information from a spreadsheet template,
+ * File templates and Placeholders.
+* **Publication improvements**:
+ * Option to support the upload of full text PDF or link,
+ * Any number of related links,
+ * Option to allow editing imported publications.
+* **Settings caching** - giving a page load speed improvement
+* **Cookie consent banner** improved to give more control over which cookies are set, and when content from other sites can be embedded.
+
+For a full list, see [closed issues for 1.13.0](https://github.com/seek4science/seek/milestone/10?closed=1)
+
+
+
+## Version 1.12.3
+
+Release date: _5th August 2022_
+
+Small bug fix release that patches an issue introduced by the previous release causing a 404 when trying to filter using a search term.
+
+## Version 1.12.2
+
+Release date: _28th July 2022_
+
+Small update release that includes
+
+* A fix to search results not being correctly displayed in order of relevance
+* A fix that correctly displays the tab, when linking to a tab (such as related items) using the bookmark (e.g )
+
+For a full list, see [closed issues for 1.12.2](https://github.com/seek4science/seek/milestone/11?closed=1)
+
+## Version 1.12.1
+
+Release date: _24th June 2022_
+
+Small release with some bugfixes and small improvements. In particular a security fix, so **we recommend upgrading to this version**
+
+* An overhaul and refresh of Gatekeeper behaviour, fixing bugs and allowing repeat requests to be sent following a previous rejection.
+* Fix to an error when interacting with the Ontology Lookup Service API, which affected creating and using sample types and controlled vocabularies in some cases.
+* More tolerant URL checking when registering a remote asset.
+* Removed option to generate a DOI for a hidden version.
+
+For a full list, see [closed issues for 1.12.1](https://github.com/seek4science/seek/milestone/9?closed=1)
+
+## Version 1.12.0
+
+Release date: _6th May 2022_
+
+
+For a full list, see [closed issues for 1.12.0](https://github.com/seek4science/seek/milestone/6?closed=1)
+
+This version includes:
+
+* **Collections** - the ability to bundle together items that are conceptually related into an ordered list, which can
+ then be shared together as collection.
+* **New customisable front landing page** - a cleaner front page, with more useful information, that can be customized
+ and configured per SEEK instance.
+* **Sample attributes enhancements** - attributes can be provided a description, which provides more details when
+ entering or viewing a sample. They can also be given a persistent identifier, to provide a semantic definition of the
+ attributes meaning.
+* **Improvements to how creators can be credited** - there is now an improved UI for crediting the creators, or authors,
+ of assets. Extra information, such their as ORCID and affiliation, can now be added for each creator, even if they are
+ not registered in SEEK. The exact order of how creators appear can also be specified.
+* **Explicit ordering of Investigations, Studies and Assays** - each can be provided with an explicit order within the
+ other, rather than the order they are added. They can re-ordered at any time.
+* **Ability to link a Sample to multiple other samples** - previously, a sample could only be linked to a single other
+ sample. This has now been updated to allow a one to many relationship as long as the samples are of the same type.
+* **EDAM annotations for workflows** - describe the workflow operations and topics from the EDAM ontology. This is also
+ planned to be reused to describe data types and formats.
+* **Simpler branding settings** - for SEEK administrators, the settings to give particular branding to an instance were
+ complicated and confusing. This has now been simplified, and organised in logical groups.
+* **Moved related items into a tab** - the list of related items associated with the item shown have now been moved into a separate tab, rather than needing to
+ scroll to the bottom of the page. There are also plans to move other information, such as versions and files, into
+ additional tabs.
+* **Fixes and improvements running to under a relative URL** - for those running SEEK under a relative URL (
+ e.g. https://mysite.com/fairdom-seek/), some issues were found with incorrect links. These problems have now been
+ fixed, for both Docker and Bare-metal installations, and the testing process improved.
+* **Batch registration of Samples through the API** - it is now possible to register Samples in batches through the API,
+ rather than one by one, to reduce the number of necessary calls and performance.
+* **Updated to use latest version of Apache Solr** - the Apache Solr that was being bundled with SEEK, was no longer
+ being maintained and updated. This locked SEEK to an older version of Java. Solr has now been separated, that can be
+ installed separately using the latest version, along with an updated configurations. A new updated Docker image is
+ also now available.
+* **Workflow API enhancements** updates to support the GA4GH TRS API, allowing one click execution of Galaxy workflows, and support for registering an RO-Crate through the API.
+* **Extending the items a workflow can be linked to** - ability to link a workflow to Datafiles (as test, example and training data),
+ Documents, SOPs, and Presentations as well as Publications.
+* **User defined workflow types** - users can now add to the selection of workflow types, if they can't find the one
+ they need, when registering a workflow.
+
+For a full list, see [closed issues for 1.12.0](https://github.com/seek4science/seek/milestone/6?closed=1)
+
## Version 1.11.3
Release date: _3rd November 2021_
@@ -405,11 +706,11 @@ Release date: _December 11th 2017_
This is quite a large release, and the main highlights include:
- * Our first released version of our **JSON API**. This has been built to conform to the [JSON API](http://jsonapi.org) specification,
+ * Our first released version of our **JSON API**. This has been built to conform to the [JSON API](https://jsonapi.org) specification,
and is documented on [SwaggerHub](https://app.swaggerhub.com/apis/FAIRDOM/SEEK/0.1).
This read API has been developed in conjuction with, and feeds into, a write API which will be released incrementally
in subsequent releases. For more details please read [API](/help/user-guide/api.html).
- * Incorporating the new **[JERM 2 ontology](http://jermontology.org)**, along with updates and extensions to the RDF produced by
+ * Incorporating the new **[JERM 2 ontology](https://jermontology.org)**, along with updates and extensions to the RDF produced by
SEEK.
* **Migrated legacy sharing permissions**: Given registration for SEEK is open to anyone,
we have removed the ability to administer sharing permissions of items for _“all registered users”_.
@@ -498,7 +799,7 @@ Release date: _March 17th 2017_
![new_sharing_matrix](/images/release-notes/openbis.png)
-This is the first public release that supports [openBIS](http://fair-dom.org/platform/openbis/) integration. This version includes
+This is the first public release that supports [openBIS](https://fair-dom.org/platform/openbis/) integration. This version includes
* Ability to link and browse an openBIS space and datastore, and browse DataSets
* Easily register an openBIS DataSet with SEEK as a DataFile
@@ -546,7 +847,7 @@ Release date: _January 23rd 2017_
Large update with many new features and improvements, in particular a new approach to handling Sample information.
* A major reimplementation and design of our support for Samples
- * Developed as part of our discussions within the [FAIRDOM-ELIXIR Samples Club](http://fair-dom.org/communities/samplesclub/), which was setup specifically to overcome problems with
+ * Developed as part of our discussions within the [FAIRDOM-ELIXIR Samples Club](https://fair-dom.org/communities/samplesclub/), which was setup specifically to overcome problems with
our old BioSamples
* Flexible system that allows users to design their own Sample Type standards, which are associated with an
extractable spreadsheet template
@@ -614,7 +915,7 @@ Small fixes and minor improvements - for full details see [SEEK v1.1.1 release n
Release date: _June 15th 2016_
* New icons and front page changes - in particular
- * New and improved SEEK logo - [http://goo.gl/NeALVA](http://goo.gl/NeALVA)
+ * New and improved SEEK logo - [https://goo.gl/NeALVA](https://goo.gl/NeALVA)
* New default avatars for Project and Institution
* New logos for Investigation, Study and Assays
* New logos badges for the different roles
@@ -680,7 +981,7 @@ Release date: _December 8th 2015_
### Investigation Snapshots and publication
-* Support for creating a [Research Object](http://www.researchobject.org/) for an Investigation to form a *Snapshot*.
+* Support for creating a [Research Object](https://www.researchobject.org/) for an Investigation to form a *Snapshot*.
* This allows an Investigation to be frozen in time for publication, whilst allowing it to continue to change in the future.
* Support for easily and quickly making a full Investigation publically available.
* A DOI can be generated and associated with an Investigation Snapshot.
@@ -710,7 +1011,7 @@ Release date: _December 8th 2015_
* Improvements to ISA graph rendering.
* Better reporting of the source of error, if an error occurs with a 3rd party service integration.
-* [ORCiD](http://orcid.org/) field can be made mandatory during registration.
+* [ORCiD](https://orcid.org/) field can be made mandatory during registration.
* File extensions and urls are indexed for search.
* [Imprint/Impressum](https://en.wikipedia.org/wiki/Impressum) support.
@@ -720,4 +1021,4 @@ A full detailed list of changes included in this release can be found in the [SE
[//]: <>## Previous releases
-[//]: <>For previous releases please visit our [Earlier Changelogs](http://seek4science.org/changes).
+[//]: <>For previous releases please visit our [Earlier Changelogs](https://seek4science.org/changes).
diff --git a/tech/reporting-bugs-and-features.md b/tech/reporting-bugs-and-features.md
index 9d4100bcd2..1a5fda11f4 100644
--- a/tech/reporting-bugs-and-features.md
+++ b/tech/reporting-bugs-and-features.md
@@ -5,9 +5,9 @@ layout: page
# Reporting Bugs and raising Feature Requests
-You can report bugs or request new features using the any of the [methods to contact us](/contacting-us.html). Preferably submit a [Github issue](http://fair-dom.org/issues).
+You can report bugs or request new features using the any of the [methods to contact us](/contacting-us.html). Preferably submit a [Github issue](https://fair-dom.org/issues).
-First check [Existing Issues](http://fair-dom.org/issues) in order to see if your planned contribution is new.
+First check [Existing Issues](https://fair-dom.org/issues) in order to see if your planned contribution is new.
If you find a feature or bug has already been reported, please don't let this deter you from reporting it yourself. Doing so will help prioritise issues.
diff --git a/tech/roadmap.md b/tech/roadmap.md
index b3d93d4bea..27ad2db1fb 100644
--- a/tech/roadmap.md
+++ b/tech/roadmap.md
@@ -13,23 +13,29 @@ It is an overview of the main priorities, and milestones. FAIRDOM-SEEK is develo
They are expected to be added to FAIRDOM-SEEK in roughly the order they are presented here.
| Feature | Milestone date |
-| --- | --- |
-| Collections - grouping assets together under a topic or theme | Q1 2022 |
-| A new customizable front page | Q1 2022 |
-| Improvements to defining authors and creators, and their order | Q1 2022 |
-| Explicit ordering of items within ISA | Q1 2022 |
-| Better and easier definition of institutions, integrating the Research Organization Registry (ROR) | Q2 2022 |
-| License improvements, using SPDX | Q2 2022 |
-| Project folders, to help organise files outside of the ISA structure | Q2 2022 |
-| UI for creating Custom Metadata Extensions | Q2 2022 |
-| Describing Observed Variables within MIAPPE | Q2 2022 |
-| Backend storage changes with better versioning support | Q2 2022 |
-| Better support for GitHub | Q2 2022 |
-| Support for Datasets containing multiple files organised into folders | Q2 2022 |
-| API support for creating new versions | Q3 2022 |
-| ISA improvements, with a single page for creating and managing them | 2022 |
-| Deposition to repositories, such as ENA | 2022 |
-| Integration with other file storage systems, e.g. Dropbox, Google Drive, Nextflow | 2022 |
+| --- |----------------|
+| Provide a Sitemap XML | Q1 2024 |
+| License improvements, using SPDX | Q1 2024 |
+| Improve navigation between ISA-JSON compliant single page and default view | Q1 2024 |
+| Visualise study and assay design in default view | Q1 2024 |
+| Extended integration with the Norwegian e-Infrastructure for Life Sciences (NeLS) system | Q2 2024 |
+| Easier mechanism for administrators to define and manage Extended Metadata | Q2 2024 |
+| UI Improvements to the Admin area | Q2 2024 |
+| Research Organisation Registry (ROR) integration for institutions | Q2 2024 |
+| Rails 7 and Ruby 3.2 upgrades | Q2 2024 |
+| Implement editable Sample Types (with shared permission) | Q2 2024 |
+| Ability to Merge accounts | Q2 2024 |
+| Improving the configurations for Search Indexing and Query parsing | Q2 2024 |
+| JERM RO-Crate profile and support for snapshots, export and import | Q2 2024 |
+| Extended Metadata write API extensions | Q2 2024 |
+| RO-Crate profile to support Collections | Q3 2024 |
+| Enhanced ISA-JSON export (via DataHub) supporting brokering tools to submit to repositories | Q3 2024 |
+| Harmonize and tidy up the submission forms, and remove the DataFile upload wizard to improve consistency | Q3 2024 |
+| Visible history log for Sample changes | Q4 2024 |
+| Improving search to support more advanced queries | Q4 2024 |
+| Improve usability of single page view | Q4 2024 |
+| ISA RO-Crate import and export support for compliant ISA-JSON | Q1 2025 |
+
@@ -37,7 +43,6 @@ Please also see the [Workflow Hub Roadmap](https://about.workflowhub.eu/roadmap/
which is being built on and in conjunction with FAIRDOM-SEEK.
-
---
@@ -49,7 +54,15 @@ You can find more details about each release in our [Change Logs](/tech/releases
| Feature | SEEK version |
-| --- | --- |
+| --- | --- |
+| Upgrade to Ruby 3.1 | 1.14.0 |
+| Backend storage changes with better versioning support | 1.13.0 |
+| Better support for GitHub | 1.13.0 |
+| Search configuration improvements, with UI improvements for Search filtering | 1.13.0 |
+| Collections - grouping assets together under a topic or theme | 1.12.0 |
+| A new customizable front page | 1.12.0 |
+| Improvements to defining authors and creators, and their order | 1.12.0 |
+| Explicit ordering of items within ISA | 1.12.0 |
| Sample and Sample Type API | 1.11.2 |
| Generic Custom Metadata fields | 1.11.0 |
| Extended Studies with extended metadata, supporting MIAPPE | 1.11.0 |
diff --git a/tech/ruby-2.7-ubuntu-22.04.md b/tech/ruby-2.7-ubuntu-22.04.md
new file mode 100644
index 0000000000..64de2f5582
--- /dev/null
+++ b/tech/ruby-2.7-ubuntu-22.04.md
@@ -0,0 +1,50 @@
+---
+title: Installing Ruby 2.7 on Ubuntu 22.04
+layout: page
+redirect_from: "/install.html"
+---
+
+# Installing Ruby 2.7 on Ubuntu 22.04
+
+## Install openssl libraries
+
+This describes the steps for the installation of the correct openSSL libraries - based on information from this [forum](https://askubuntu.com/questions/1399788/ruby-installation-build-failed-ubuntu-20-04-using-ruby-build-20220324).
+
+
+### Downloading the libraries
+
+```sh
+wget https://www.openssl.org/source/openssl-1.1.1n.tar.gz
+tar xf openssl-1.1.1n.tar.gz
+```
+
+### Compiling
+
+`cd` in the directory `openssl-1.1.1n`
+
+```sh
+./config --prefix=/opt/openssl-1.1.1n --openssldir=/opt/openssl-1.1.1n shared zlib
+make
+make test
+sudo make install
+```
+
+### Link system certificates to openSSL1.1.1 directory
+```sh
+sudo rm -rf /opt/openssl-1.1.1n/certs
+sudo ln -s /etc/ssl/certs /opt/openssl-1.1.1n
+```
+
+## Install ruby using rvm
+
+If you cd in the project folder:
+
+```sh
+rvm install $(cat .ruby-version) --with-openssl-dir=/opt/openssl-1.1.1n/
+```
+
+or if you want to install another version:
+
+```sh
+rvm install --with-openssl-dir=/opt/openssl-1.1.1n/
+```
\ No newline at end of file
diff --git a/tech/scripts/soffice b/tech/scripts/soffice
deleted file mode 100644
index e3b179eca7..0000000000
--- a/tech/scripts/soffice
+++ /dev/null
@@ -1,49 +0,0 @@
-
-#!/bin/bash
-# originally from: http://code.google.com/p/openmeetings/wiki/OpenOfficeConverter
-# openoffice.org headless server script
-#
-# description: headless openoffice server script
-# processname: openoffice
-#
-# Author: Vic Vijayakumar
-# Modified by Federico Ch. Tomasczik
-# Modified by Stuart Owen
-#
-OOo_HOME=/usr/bin
-SOFFICE_PATH=$OOo_HOME/soffice
-
-set -e
-
-start_soffice(){
- echo "Starting OpenOffice headless server"
- sudo -H -u www-data $SOFFICE_PATH --headless --nologo --nofirststartwizard --accept="socket,host=127.0.0.1,port=8100;urp" & > /dev/null 2>&1
-}
-
-stop_soffice(){
- echo "Stopping OpenOffice headless server."
- killall -9 soffice.bin
-}
-
-COMMAND="$1"
-shift
-
-case $COMMAND in
-status)
- ;;
-start|stop|restart)
- $ECHO
- if [ "$COMMAND" = "stop" ]; then
- stop_soffice
- elif [ "$COMMAND" = "start" ]; then
- start_soffice
- elif [ "$COMMAND" = "restart" ]; then
- stop_soffice
- sleep 1s
- start_soffice
- exit 0
- fi
- ;;
-esac
-
-exit 0
diff --git a/tech/scripts/solr-seek b/tech/scripts/solr-seek
deleted file mode 100644
index a56b540444..0000000000
--- a/tech/scripts/solr-seek
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/sh -e
-# upstart-job
-#
-# Symlink target for initscripts that have been converted to Upstart.
-
-set -e
-APP_PATH="/srv/rails/seek"
-
-start_sunspot(){
- echo "Starting Sunspot"
- sudo -iu www-data bash -c "source ~/.rvm/scripts/rvm && cd $APP_PATH && bundle exec rake sunspot:solr:start RAILS_ENV=production"
-}
-
-stop_sunspot(){
- echo "Stopping Sunspot"
- sudo -iu www-data bash -c "source ~/.rvm/scripts/rvm && cd $APP_PATH && bundle exec rake sunspot:solr:stop RAILS_ENV=production"
-}
-
-COMMAND="$1"
-shift
-
-case $COMMAND in
-status)
- ;;
-start|stop|restart)
- $ECHO
- if [ "$COMMAND" = "stop" ]; then
- stop_sunspot
- elif [ "$COMMAND" = "start" ]; then
- start_sunspot
- elif [ "$COMMAND" = "restart" ]; then
- stop_sunspot
- sleep 1s
- start_sunspot
- exit 0
- fi
- ;;
-esac
diff --git a/tech/setting-up-solr.md b/tech/setting-up-solr.md
index 33cf62f484..6bd7c35bb4 100644
--- a/tech/setting-up-solr.md
+++ b/tech/setting-up-solr.md
@@ -34,7 +34,7 @@ The Docker container will be named _seek-solr_ and the volume named _seek-solr-d
Once running, and with search enabled, you can trigger jobs to reindex all searchable content with
- bundle exec rake seek:index_all
+ bundle exec rake seek:reindex_all
There is an additional script, [script/delete-docker-solr.sh](https://github.com/seek4science/seek/blob/v{{ site.current_seek_version }}/script/delete-docker-solr.sh),
that can be used to delete both the container and volume.
@@ -43,7 +43,7 @@ that can be used to delete both the container and volume.
The following describes the steps for installing and setting up Solr on Ubuntu 20.04, but the process should be the same for
all Debian based distributions, and very similar for others. It is based on the guide found at [https://tecadmin.net/install-apache-solr-on-ubuntu-20-04/](https://tecadmin.net/install-apache-solr-on-ubuntu-20-04/)
-but the follwoing steps have been updated for solr 8.11.1.
+but the follwoing steps have been updated for solr 8.11.2.
First you should make sure Java 11 is installed. OpenJDK is fine
@@ -61,9 +61,9 @@ If an different version is shown, use the following command and select the numbe
The next step is to download and install Solr into _/opt/_, and set it up as a service
cd /opt
- sudo wget https://downloads.apache.org/lucene/solr/8.11.1/solr-8.11.1.tgz
- sudo tar xzf solr-8.11.1.tgz solr-8.11.1/bin/install_solr_service.sh --strip-components=2
- sudo bash ./install_solr_service.sh solr-8.11.1.tgz
+ sudo wget https://downloads.apache.org/lucene/solr/8.11.2/solr-8.11.2.tgz
+ sudo tar xzf solr-8.11.2.tgz solr-8.11.2/bin/install_solr_service.sh --strip-components=2
+ sudo bash ./install_solr_service.sh solr-8.11.2.tgz
The services can be stopped and started the usual way with
diff --git a/tech/upgrading.md b/tech/upgrading.md
index 9a70f7ee5e..3df5a4b238 100644
--- a/tech/upgrading.md
+++ b/tech/upgrading.md
@@ -41,12 +41,19 @@ When upgrading between patch versions, it should only be necessary to run
bundle install
bundle exec rake seek:upgrade
-## Steps to upgrade from 1.11.x to 1.12.x
+## Steps to upgrade from 1.13.x to 1.14.x
-**Note** the requirement to setup Apache Solr, which is no longer bundled together with FAIRDOM-SEEK.
+### Dependencies
+
+You will need to update Python to version 3.9
+
+ sudo apt install python3.9-dev python3.9-distutils
+
+you may remove 3.7 unless it is used for other applications. If unsure there is no harm leaving it installed
+
+ sudo apt remove python3.7-dev python3.7-distutils
### Set RAILS_ENV
-
**If upgrading a production instance of SEEK, remember to set the RAILS_ENV first**
@@ -54,26 +61,30 @@ When upgrading between patch versions, it should only be necessary to run
### Stopping services before upgrading
- bundle exec rake seek:workers:stop
- bundle exec rake sunspot:solr:stop
+ bundle exec rake seek:workers:stop
+
+### Getting the upgrade
-### Updating from GitHub
+The steps to fetch the upgrade will be different depending on whether it was originally installed directly
+from Github or via a downloaded tarball.
+
+#### Updating from GitHub
If you have an existing installation linked to our GitHub, you can fetch the
files with:
git pull
- git checkout v1.12.0
+ git checkout v1.14.2
-### Updating using the tarball
+#### Updating using the tarball
You can download the file from
- You can
+ You can
unpack this file using:
- tar zxvf seek-1.12.0.tar.gz
+ tar zxvf seek-1.14.2.tar.gz
mv seek seek-previous
- mv seek-1.12.0 seek
+ mv seek-1.14.2 seek
cd seek/
and then copy across your existing filestore and database configuration file
@@ -81,7 +92,22 @@ from your previous installation and continue with the upgrade steps. The
database configuration file you would need to copy is _config/database.yml_,
and the filestore is simply _filestore/_
-If you have a modified _config/sunspot.yml_ you will also need to copy that across.
+### Install Python dependencies
+
+First, a specific version of `setuptools` needs to be installed to avoid an issue when installing dependencies
+
+ python3.9 -m pip install setuptools==58
+
+Then the other dependencies can be installed
+
+ python3.9 -m pip install -r requirements.txt
+
+### Upgrading Ruby
+
+It is necessary to upgrade to Ruby 3.1.4. If you are using [RVM](https://rvm.io/) (according to the [Installation Guide](install.html) )you should be prompted to install during the standard installation steps that follow.
+If you are not prompted you can install with the command:
+
+ rvm install $(cat .ruby-version)
### Doing the upgrade
@@ -93,9 +119,9 @@ content.
cd . #this is to allow RVM to pick up the ruby and gemset changes
gem install bundler
- bundle install --deployment --without development test
+ bundle install
bundle exec rake seek:upgrade
- bundle exec rake assets:precompile # this task will take a while
+ bundle exec rake assets:precompile # this task will take a while
### Update Cron Services
@@ -103,18 +129,10 @@ SEEK requires some cron jobs for periodic background jobs to run. To update thes
bundle exec whenever --update-crontab
-### Setting up Apache Solr
-
-The [Apache Solr Search Engine](https://solr.apache.org/) need to be set up separately.
-It is relatively straightforward and there are instructions on how to do this in [Setting Up Solr](setting-up-solr).
-
-
### Restarting background job services
- bundle exec rake sunspot:solr:start
- bundle exec rake tmp:clear
-
-
+ bundle exec rake seek:workers:start
+
---
## Earlier upgrade notes
diff --git a/tech/using-teaspoon.md b/tech/using-teaspoon.md
index c5e7b52612..54ad5627ee 100644
--- a/tech/using-teaspoon.md
+++ b/tech/using-teaspoon.md
@@ -23,5 +23,5 @@ We integrate [Chai](http://chaijs.com/api/assert/) as the assertion library, and
To write javascript test in SEEK, add your *_spec.js file under spec/javascripts folder.
-You can find an example here: [upload_selection_spec.js](https://github.com/seek4science/seek/blob/master/spec/javascripts/upload_selection_spec.js)
+You can find an example here: [upload_selection_spec.js](https://github.com/seek4science/seek/blob/main/spec/javascripts/upload_selection_spec.js)