Try our conversational search powered by Generative AI!

Advanced CMS
Jun 16, 2019
  9964
(7 votes)

Advanced CMS - Add-on for Advanced & External reviews

Please take a look at a new Open Source add-on that improves the reviewing process and lets external users to view & review content without the need to access the Edit Mode.

Highlights

  • Context aware smart reviewing
  • Allow external reviewers to access unpublished data
  • Provide token-based, expirable links to any content version
  • Visually express issues in reviewed content by highlighting or adding screenshots
  • MIT licensed
  • Not officially supported by EPiServer - both authors (Greg Wiecheć & Bart Sekuła) are EPiServer employees, however this add-on, at the moment, is not going to be included in the Core product. We will maintain it on our own.

Please see it in action:

External review component

This is an Edit mode component used to generate external review links. There are two types of links:

  • view - external reviewer can preview draft content version
  • editable - external reviewver can add comments using advanced review widget

Share dialog

Editor can share external review links using share dialog. The [#link#] constant will be replaced with link to content.

Below is an email example:

Security

/externalContentReviews location is only accessible to users who are members of the ExternalReviewers role. You will have to manually add personal user accounts or a shared user account that could be used by the external reviews.

Install

Install-Package Advanced.CMS.AdvancedReviews

https://nuget.episerver.com/package/?id=Advanced.CMS.AdvancedReviews

Please note that we are now in BETA, there may still be issues that we try to fix as soon as we can.

The source code can be found here: https://github.com/advanced-cms/advanced-reviews Contributors are welcome.  

Jun 16, 2019

Comments

Praful Jangid
Praful Jangid Jun 17, 2019 07:17 AM

I haven't tried it personally but seems like very useful and will speedup the content review and apprval task.

I will try to take a look personally and will provide some feedback too.

Thanks and Regards,

Praful Jangid

Advanced CMS
Advanced CMS Jun 17, 2019 06:45 PM

Thanks, please note however that although both authors (Bart & Greg) are EPiServer employees, this add-on is Open Source and is not officially supported by EPiServer.

Kanika Arora
Kanika Arora Jul 2, 2019 11:57 PM

Hi,

Thanks for creating this very useful addon.
However I am getting 404 error on loading the Editable External Review link. I am able to use rest of the features fine. The view only link works well too (although it adds an additional /en before /externalContentView resulting in 404 but I was able to get around that by adding redirect to remove /en) but edit link keeps giving 404 error.

Can anyone please help in this regard?
I have already added the ExternalReviewInitialization file and set EdiatbleLinksEnabled option to true.

Another question what is the use of following 3 ExternalReviewOptions:
public string ReviewsUrl { get; set; }
public string ContentPreviewUrl { get; set; }
public string ContentIframeEditUrlSegment { get; set; }

Thanks.

Kanika Arora
Kanika Arora Jul 2, 2019 11:59 PM

Hi,

Thanks for creating this very useful addon.
However I am getting 404 error on loading the Editable External Review link. I am able to use rest of the features fine. The view only link works well too (although it adds an additional /en before /externalContentView resulting in 404 but I was able to get around that by adding redirect to remove /en) but edit link keeps giving 404 error.

Can anyone please help in this regard?
I have already added the ExternalReviewInitialization file and set EdiatbleLinksEnabled option to true.

Another question what is the use of following 3 ExternalReviewOptions:
public string ReviewsUrl { get; set; }
public string ContentPreviewUrl { get; set; }
public string ContentIframeEditUrlSegment { get; set; }

Thanks & Regards.

P.S. Already created an issue for the same in GitHub as well - https://github.com/advanced-cms/advanced-reviews/issues/53

Bartosz Sekula
Bartosz Sekula Jul 3, 2019 07:50 PM

@Kanika,

Thanks for reporting this issue, it's been resolved in v0.2.0

https://world.episerver.com/blogs/bartosz-sekula/dates/2019/7/new-version-of-advanced-reviews-released-v0-2-0/

Rob Stoves
Rob Stoves Nov 15, 2019 11:01 AM

I'd just like to say thanks to Greg Wiecheć & Bart Sekuła for creating and maintaining this add-on.  It's been a feature that a lot of customers have been asking for and went down very well at Ascend.

I've received two feature requests that I thought I'd feedback to you.

  1. Screen width issue
    When a comment "spot" is placed on the page it assumes the person reading the feedback has the same browser viewport width (otherwise it doesn't line up with where it was originally placed). Perhaps one solution to that would be to record the viewport width when the comments were placed and set to that width when reviewing the comments.

  2. External review for projects
    I've often heard the request for the same functionality to be available to preview a whole project unauthenticated.

Thanks

Bartosz Sekula
Bartosz Sekula Nov 17, 2019 02:57 PM

Thank you very much Rob. The fact that people like and use our open source projects is great! :)

About the issues:

1) Whenever adding a new "pin" we store: 1. top/left to the viewport 2. top/left to the property overlay (if applicable) 3. top/left to the block-id 4

And additionally we store `property-name` (if the html is rendered using our html helper or if data-epi-edit or data-epi-property-name is used) and `block-id` (if inside content area)

Then, when loading the pins we try to start from 3 then 2 and then, if there are no property/block to scope it down then we calculate the coords from top/left viewport.

However, I think your suggestion is great - what we could do is to also save the ratio of the pin creator and then when loading the pin just compare two viewport sizes.

This is definitely something we can do soon.

2) This is on our radar, https://github.com/advanced-cms/advanced-reviews/issues/42, we would appreciate your feedback, it's definitely something doable but we are not really sure how this should work exactly. For example, if it should be a single url or urls to all pages from the project? Should we support the navigation, so that the reviewer can just preview the site as a regular end user or rather we could display some kind of floating navigation widget with a list of project items? Please add your thoughts to the github issue. That would help us a lot!

Bartosz Sekula
Bartosz Sekula Nov 26, 2019 09:35 PM

1) Will be improved a bit more soon.

2) Has just been implemented in v0.5.0 https://nuget.episerver.com/package/?id=Advanced.CMS.AdvancedReviews&v=0.5.0

More info here: https://advanced-cms.org/blog/2019-11-24--project-preview/

Sanket Mahimkar
Sanket Mahimkar Sep 3, 2020 06:15 AM

Hi Greg Wiecheć & Bart Sekuła,

First of all, its a great component you have developed, it helping us a lot. 

We have a suggestion for this tool like, Will it be possible to have "View as" functionality as we have in our Episerver edit mode where editor can select visitor group to see specific version of a page.

We tried to connect with Episerver regarding this and they redirected us to you.

Best Regards,

Sanket Mahimkar

Bartosz Sekula
Bartosz Sekula Sep 3, 2020 10:31 AM

Sanket,

Could you please report an issue here?

https://github.com/advanced-cms/advanced-reviews/issues

Thanks

Tom Burton
Tom Burton Mar 30, 2021 04:22 AM

Has anyone had any luck using the review avatars functionality? I can't seem to get it to work. I've created a folder under the Media tab within 'For All Sites' called 'User Avatar'. Below that, I have uploaded an image with my username.jpg but I'm not seeing any results.

Am I doing something wrong?

Cheers.

GioeniF
GioeniF Jan 5, 2022 04:35 PM

Hi,  This is a very useful add-on, we have a lot of folks who need to review content but don't need to lear the CMS.  Question:  Is there ae way to save the comments that external reviewers add?  Once the editor resolves the concerns and resloves the pin the comments are gone.  Is there a setting or am I missing something. 

Thank you for your help.

Regards

Bartosz Sekula
Bartosz Sekula Jan 5, 2022 06:13 PM

Do you mean this?

Or you would like to store the comments permanently somewhere across versions?

GioeniF
GioeniF Jan 5, 2022 06:18 PM

Hey, 

Thank you for responding,  the first snapshot would be great to keep but it appears once the content is published you no longer see the advanced review comments, correct me if I am wrong on that.  If I am correct then I would be looking to store the comments permanently somewhere.  

Thanks again for you assistance.

Bartosz Sekula
Bartosz Sekula Jan 5, 2022 06:20 PM

You can always change the version in the version gadget so that you can go back to previous comments.

Is that acceptable for you?

GioeniF
GioeniF Jan 5, 2022 06:50 PM

That is perfect!  Thank you for you help. 

Joelle Bergeron Poudrier
Joelle Bergeron Poudrier Jul 7, 2022 03:58 PM

Hello! I've just discovered this. This is awesome. Quick question, can it also be used in Commerce Cloud? Thanks!

snehjadh
snehjadh Aug 16, 2022 02:49 PM

Hi,

I am using advanced reviewers version 0.9.1. The add-on worked perfectly fine locally. This is very useful add-on
I am currently testing the add-on on UAT and it gave me 500 error(Error: could not add component) while adding the external review link from gadget.

Could you please help me what has gone wrong ? 

Thanks in Advance
Snehal

snehjadh
snehjadh Aug 16, 2022 03:10 PM

Error Description : 
"EPiServer.Global : Unhandled exception in ASP.NET
System.InvalidOperationException: The JSON request was too large to be deserialized.
   at System.Web.Mvc.JsonValueProviderFactory.EntryLimitedDictionary.Add(String key, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.AddToBackingStore(EntryLimitedDictionary backingStore, String prefix, Object value)
   at System.Web.Mvc.JsonValueProviderFactory.GetValueProvider(ControllerContext controllerContext)
   at System.Web.Mvc.ValueProviderFactoryCollection.GetValueProvider(ControllerContext controllerContext)
   at System.Web.Mvc.ControllerBase.get_ValueProvider()
   at System.Web.Mvc.ControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor)
   at EPiServer.Shell.Services.Rest.RestControllerActionInvoker.GetParameterValue(ControllerContext controllerContext, ParameterDescriptor parameterDescriptor)
   at System.Web.Mvc.ControllerActionInvoker.GetParameterValues(ControllerContext controllerContext, ActionDescriptor actionDescriptor)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass3_1.b__0(AsyncCallback asyncCallback, Object asyncState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.Begin(AsyncCallback callback, Object state, Int32 timeout)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.BeginInvokeAction(ControllerContext controllerContext, String actionName, AsyncCallback callback, Object state)
   at EPiServer.Shell.Services.Rest.RestControllerBase.BeginExecute(RequestContext requestContext, AsyncCallback callback, Object state)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.<>c__DisplayClass285_0.b__0()
   at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)",

Andreas Ljung
Andreas Ljung Dec 18, 2023 11:04 AM

I could see that support for Commerce has been added but not in the version for .net 4 (net4_master). Is it possible request that it would be added in a 0.9.4 version? 

Please login to comment.
Latest blogs
Optimizely and the never-ending story of the missing globe!

I've worked with Optimizely CMS for 14 years, and there are two things I'm obsessed with: Link validation and the globe that keeps disappearing on...

Tomas Hensrud Gulla | Apr 18, 2024 | Syndicated blog

Visitor Groups Usage Report For Optimizely CMS 12

This add-on offers detailed information on how visitor groups are used and how effective they are within Optimizely CMS. Editors can monitor and...

Adnan Zameer | Apr 18, 2024 | Syndicated blog

Azure AI Language – Abstractive Summarisation in Optimizely CMS

In this article, I show how the abstraction summarisation feature provided by the Azure AI Language platform, can be used within Optimizely CMS to...

Anil Patel | Apr 18, 2024 | Syndicated blog

Fix your Search & Navigation (Find) indexing job, please

Once upon a time, a colleague asked me to look into a customer database with weird spikes in database log usage. (You might start to wonder why I a...

Quan Mai | Apr 17, 2024 | Syndicated blog