Picture of Lars Halkjær
An Adapt AT wish list
by Lars Halkjær - Saturday, 14 December 2019, 8:48 PM

As the holiday approaches I would like to make an Adapt wish list with the two things I would like the most in upcoming versions.
They are actually a bit related and would be especially nice to have if you need to make translations of your courses.

My first wish is: Persistent IDs.
The IDs of components, blocks, articles and content objects are MongoDB ObjectIDs.
This means that any copy of a course, either made by just copying it in the AT or exporting and importing it, will have all new IDs.

Any IDs entered by hand – e.g. start lists or menu locking – will have to be reentered by hand.

But if you do translations you also end up with CSV files whose IDs are no longer correct. And there is no simple or safe way to replace the IDs.

If there were a dedicated ID for the items that was not tied to the database and this ID was used for generating the course JSON files, the problem would be solved.

A nice extra would be if you could enter ID values in the AT.
They could be initialized with the current MongoDB value when first created, but if you were able to edit them in the AT, you could enter IDs relevant to the course.

In both translation and QA, I would like to use IDs relating to the course storyboard. This would make it a lot easier to navigate a course with 3.000 lines of text in the CSV files.

People are of course always a source of errors and there should be some checking of the uniqueness of the IDs. It could either be a custom validator on the field in the AT or a build-time check (which may already exist).

I know that there has been some talk about this before, but I do not know if it is on the roadmap.

My second wish is: Real asset file names.
Any asset file uploaded to the AT is assigned a file name on the server derived from a sha1 hash of the file.

From here the original file name is in reality lost forever – it is stored in the title field of the asset record, but this can be edited by users.

I have a few issues with this.

Again translation: assets can be language specific – bitmaps can have text or symbols, VTT-files are by nature language specific, videos may have language content etc.

And the asset file names are not only no longer descriptive of their content or role in the course, they are also hard to read:
Instead of “introduction.mp4” you get “0ebf6f3e272749769a879953acd227f6b5a813be.mp4” and instead of “module_3_section_1_image.jpg” you may get “1dcbbf0f889d5a6bc4331c0dc5cbd9b04c646fa9.jpg”…

Not so great for the person making the translated versions, and it is not too motivating to tell a Computer Graphics Artist that his “module_3_section_1_image.jpg” now is referred to as “1dcbbf0f889d5a6bc4331c0dc5cbd9b04c646fa9.jpg”.

In the asset manager you can see the original name of e.g. a JPG image (if it has not been altered) and the image itself – but you cannot see the internal filename which makes it difficult to link the two – and that may be necessary as translated versions have to use the internal name.

To overcome this, we have made system of grunt scripts, that can map between the internal and original file name through the new exported “assets.json” file, but it is not ideal.

I would really like that the AT kept the original file names!

It would make the above-mentioned problems go away, and if you need to work with the exported JSON-files, it makes looking at asset links so much easier.

But I also believe it would benefit the general work with assets in the AT.

Today you cannot replace an asset in the AT, and this can be a bigger pain than it may seem…

A case:

  • We make a course for a client and the course contains 16 videos.
  • The client reviews the course and finds that the logo embedded in the video is too small.
  • We make new videos, and now we must upload a new set of 16 videos, but we cannot overwrite the old ones.
  • We must upload the new ones, mark the old ones as deleted (they still clutter the asset manager) and relink to the new ones in the components where they are used.

I do not know why the current system was designed like it is, and I may overlook something.

But conceptually I believe that using the original filenames and make an upload of an asset with the same file name as an existing one, overwrite the existing file (proper warning issued of course) is easy to understand.

Most people know it from their operating system – you replace a file by overwriting it with a similar named file.

These are the things I want for Christmas.
I hope they can be an inspiration for anyone working with these issues in the Adapt AT.

Picture of Barry Jenkin
Re: An Adapt AT wish list
by Barry Jenkin - Sunday, 15 December 2019, 1:37 AM

All my Christmases would come at once if I could just copy an article from one course to another.

Picture of Lars Halkjær
Re: An Adapt AT wish list
by Lars Halkjær - Sunday, 15 December 2019, 1:44 AM

I think this might do the trick:


I have used it a couple of times.

One time it missed some content, but I was able to copy it block by block instead.

Picture of Barry Jenkin
Re: An Adapt AT wish list
by Barry Jenkin - Sunday, 15 December 2019, 1:53 AM

That was my post lol. It does work within a course but not between courses. Have you got it working between courses?

Picture of Lars Halkjær
Re: An Adapt AT wish list
by Lars Halkjær - Sunday, 15 December 2019, 2:16 AM

Talk about circular references..! :)
I didn't notice that it was yours.

And I didn't read it properly - I haven't been able to copy between two different courses - it shows up in the course structure when pasted, but gives an error when you build - sorry.

Picture of John Niezen
Re: An Adapt AT wish list
by John Niezen - Monday, 16 December 2019, 7:26 AM

Hi Barry and Lars,

I have been able to do it. stared my AT twice, in the destination use a blank A, B or C and on click copy, then in the source click copy on the element to be copied and go back to the destination again and paste on the more or less wanted area. I could only do this when I opened the AT in the same browser. And be aware of the used versions in source and destination, I had an older MCQ in my source, and could not preview the destination, also not with forced rebuild, adding a new MCQ and rewrite the old in the new and then do preview solved that. I did not need to rewrite my other copied MCQ's luckily

Picture of Barry Jenkin
Re: An Adapt AT wish list
by Barry Jenkin - Tuesday, 17 December 2019, 6:21 AM

Hi John.

Did you get it working between courses? I haven't been able to do it even with text components of the same version, so assumed it didn't like the IDs. On pasting, the article does appear in the AT editor but doesn't load. Mind you I'm on AT 0.6.5 / fw 2.3.3 (without force rebuild) which could be a factor.

Picture of John Niezen
Re: An Adapt AT wish list
by John Niezen - Tuesday, 17 December 2019, 7:24 AM

Yep between courses. we are on AT  0.10 and FW 4.4.0 by now and I cannot remember if we managed this on older versions.

Any copy should create a new ID as far as I am aware of. Did you get any error while loading?

I must also say that we copied components not articles or blocks.

Picture of Barry Jenkin
Re: An Adapt AT wish list
by Barry Jenkin - Wednesday, 18 December 2019, 4:11 AM

No mention of an error – it just doesn't appear. I tried at component level also. 

I'll have a go on a more recent AT/FW combo.