MultiUser Branch

## Summary of Main Changes

1. Introduces basic capabilities to permit others to edit your collection. The collection configuration pane lets you switch this feature on, and you can then pick a list of editors for a collection and, after sharing your URL, those on the list can edit your collection, including adding, editing and deleting exhibits and artifacts.

2. Also fixed Kiosk Mode checkbox (in the collection configuration pane) which was previously always checked.

3. Minor clean-up of Profile Pane, including layout, wording, spelling/punctuation/grammar, indicating required, and broken link.

4. Create icon (pencil) in header at top right no longer displays if you do not have edit rights. Edit rights logic overhauled.

5. Replaced Exceptional.IO error reporting with Airbrake.IO error reporting.

6. Replaced .NET in-built automatic schema migrations with programmatic solution, which resolves a number of db issues, including db sometimes not populating or fully populating for new installs. This new solution works both from scratch (will automatically create a schema if there is no pre-existing db schema) or with an existing db schema, which it can automatically upgrade. You do need to create the database first if it doesn't exist yet, but you do not need to manually create any schema or import any data.

7. Removed hard-coded OneDrive API key and redirect URL from settings.ts. Hard-coded value was redirecting to test.chronozoom.com, which was replaced with a dynamically generated value to redirect to the current domain. OneDrive API key (client id) moved to web.config.


## Known Issues

A new "circa" checkbox appears for dates, which can be used in future to indicate that a date is approximate. Currently this is not wired up so ticking/checking the checkbox doesn't do anything. This feature is being worked on and will hopefully be completed shortly.


## Deployment Notes

**Important:** Production installations, please make and retain a full db backup **before** deploying this version, since it includes db schema and data changes, and removes code-first automatic migrations. It is recommended to take a corresponding copy of the existing code too.

There are new web.config appKeys:

* OneDriveClientID should be set to the OneDrive client id for whatever domain you are using. (This can be set up and obtained from onedrive.live.com's Developer section.) The default key is a key for "chronozoom.localhost" domain.

* The default SignInURL keys are also for the "chronozoom.localhost" domain, and these are set up in an Azure Access Control System already, (a test one, not the same as the production one,) so if you're a developer, you can set up a local hosts entry for chronozoom.localhost and start using that domain.


## Developer Notes

In order to set up the appropriate OneDrive redirect URL in the onedrive.live.com web screens, you can't use "localhost", and you can't use a domain with a specified port such as "my.domain.com:1234". Therefore, to test OneDrive, you should use a domain that includes at least one period, such as chronozoom.localhost or a real domain, and you shouldn't use a specific port.

I addressed this in Visual Studio by changing localhost:4949 to localhost in the Chronozoom.UI project configuration file. My local debug launches as localhost and I can then change my URL to chronozoom.localhost, which I have mapped to 127.0.0.1 to continue testing. Alternatively you can publish to a local domain with IIS instead and attach a debugger.
I feel the force of your argument and it’s true. ;)

 

From: Eugene W. Nourminsky [mailto:notifications@github.com] 
Sent: Friday, June 13, 2014 1:37 AM
To: alterm4nn/ChronoZoom
Cc: Neil Cresswell
Subject: Re: [ChronoZoom] MultiUser Branch (#1265)

 

In Source/Chronozoom.UI/api/IChronozoomSVC.cs:

> +        /// <summary>
> +        /// Returns a list of users whose display names match the partial display name provided as a parameter.
> +        /// </summary>
> +        /// <param name="partialName">Part of a User's DisplayName.</param>
> +        /// <returns></returns>
> +        [OperationContract]
> +        [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/find/users?partial={partialName}")]
> +        IEnumerable<User> FindUsers(string partialName);
> +
> +        //public DateTime? GetExhibitLastUpdateTime(string exhibitId)
> +        [OperationContract]
> +        [WebGet(ResponseFormat = WebMessageFormat.Json, UriTemplate = "/exhibit/{exhibitId}/lastupdate")]
> +        DateTime? GetExhibitLastUpdate(string exhibitId);
> +
> +        /// <summary>
> +        /// Returns true/force depending on if the currently logged in user has a membership to the specified collection or is the collection owner.

true/false probably :-)

—
Reply to this email directly or view it on GitHub <https://github.com/alterm4nn/ChronoZoom/pull/1265/files#r13742165> .  <https://github.com/notifications/beacon/6371440__eyJzY29wZSI6Ik5ld3NpZXM6QmVhY29uIiwiZXhwaXJlcyI6MTcxODI2NzgzNSwiZGF0YSI6eyJpZCI6MzQ1NTYxNzV9fQ==--2b423a4967cc320e54b957f713ad72bca39357e4.gif>