Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions AdminUI/LearningHub.Nhs.AdminUI/Views/Catalogue/Edit.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -228,10 +228,10 @@

<div class="row">
<div class="col-12">
<label>Content provided by</label>
<label>Content developed with</label>
<p class="providertext">When applicable please select the provider of this content. This will allow a contributor to flag content from a specific provider. </p>
<p class="providertext">This will enable learners to search for content produced by organisations and help separate learning resources from community contributions. </p>
<p class="providertext">Provided by;</p>
<p class="providertext">Developed with;</p>
</div>
</div>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@
<dl>
@if (Model.Providers != null && Model.Providers.Count > 0)
{
<dt>Provided by</dt>
<dt>Developed with</dt>
@foreach (var provider in Model.Providers)
{
<dd>
Expand Down
2 changes: 1 addition & 1 deletion AdminUI/LearningHub.Nhs.AdminUI/Views/User/Details.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@
<a class="tab-link" id="contributions-tab" data-toggle="tab" href="#contributions" role="tab" aria-controls="contributions" aria-selected="false">Contributions</a>
</li>
<li class="tab-item large">
<a class="tab-link" id="providedBy-tab" data-toggle="tab" href="#providedByPermission" role="tab" aria-controls="providedby" aria-selected="false">Provided by permission</a>
<a class="tab-link" id="providedBy-tab" data-toggle="tab" href="#providedByPermission" role="tab" aria-controls="providedby" aria-selected="false">Developed with permission</a>
</li>
<li class="tab-item">
<a class="tab-link" id="history-tab" data-toggle="tab" href="#history" role="tab" aria-controls="history" aria-selected="false">History</a>
Expand Down
38 changes: 19 additions & 19 deletions AdminUI/LearningHub.Nhs.AdminUI/Views/User/_UserProviders.cshtml
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,27 @@
@model List<SelectListItem>

<div class="mt-5">
<div class="row">
<div class="col-12">
<h1>Provided by permission</h1>
<p class="providertext ">Give permission to allow a contributor to flag content from a specific provider. This helps to separate learning resources from community contributions. </p>
<p class="providertext">Select the relevant providers;</p>
<div class="row">
<div class="col-12">
<h1>Developed with permission</h1>
<p class="providertext ">Give permission to allow a contributor to flag content from a specific provider. This helps to separate learning resources from community contributions. </p>
<p class="providertext">Select the relevant providers;</p>
</div>
</div>
</div>

<div class="row mt-2">
<div class="col-12">
@if (Model != null && Model.Count > 0)
{
<div class="form-check form-check-vertical">
@foreach (var item in Model)
{
<input type="checkbox" class="form-check-input-provider" id=@($"provider_{item.Value}") name="providers" value="@item.Value" checked="@item.Selected" />
<span class="span-provider providertext">@item.Text</span>
<br />
}
<div class="row mt-2">
<div class="col-12">
@if (Model != null && Model.Count > 0)
{
<div class="form-check form-check-vertical">
@foreach (var item in Model)
{
<input type="checkbox" class="form-check-input-provider" id=@($"provider_{item.Value}") name="providers" value="@item.Value" checked="@item.Selected" />
<span class="span-provider providertext">@item.Text</span>
<br />
}
</div>
}
</div>
}
</div>
</div>
</div>
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,12 @@ public LearningSessionsController(
public async Task<IActionResult> Scorm(int id)
{
var rv = await this.resourceService.GetItemByIdAsync(id);
if (rv != null)
{
this.ViewBag.FilePath = $"/ScormContent/{rv.ScormDetails.ContentFilePath}/{rv.ScormDetails.ScormManifest.ManifestUrl}";
}

this.ViewBag.ResourceReferenceId = id;
this.ViewBag.FilePath = $"/ScormContent/{rv.ScormDetails.ContentFilePath}/{rv.ScormDetails.ScormManifest.ManifestUrl}";
this.ViewBag.KeepUserSessionAliveInterval = Convert.ToInt32(this.settings.Value.KeepUserSessionAliveIntervalMins) * 60000;
this.ViewBag.UseTraceWindow = await this.userGroupService.UserHasPermissionAsync("Scorm_Trace_Window");

Expand Down
2 changes: 1 addition & 1 deletion LearningHub.Nhs.WebUI/Helpers/ProviderHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ public static string GetProvidersString(List<string> providerNames)

if (providerNames != null && providerNames.Count > 0)
{
providerstring += "Provided by ";
providerstring += "Developed with ";
providerstring += string.Join(", ", providerNames.ToArray());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@
</template>
<template v-slot:tab_2>
<Tick :complete="providedbyPermissionTabComplete"></Tick>
Content provided by
Content developed with
</template>
<template v-slot:page_2>
<ContributeProvideByTab :resourceDetails="resourceDetails" :userProviders="userProviders" />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<div class="lh-padding-fluid">
<div class="lh-container-xl py-15">
<div class="contribute contribute-providedby-tab">
<h2 id="licence-heading" class="nhsuk-heading-l pt-15">Content provided by</h2>
<h2 id="licence-heading" class="nhsuk-heading-l pt-15">Content developed with</h2>
<p class="nhsuk-u-font-weight-normal">When applicable pease select the provider of this content. This will enable users to search for content produced by specific organisations.</p>
<div class="my-3">
<input class="radio-button" name="resourceProviderId" type="radio" :value="0" v-model="resourceProviderId" @click="setResourceProvider($event.target.value)" />
Expand All @@ -22,15 +22,15 @@
<div class="heading" id="headingProvidedBy">
<div class="mb-0">
<a href="#" class="collapsed" data-toggle="collapse" data-target="#collapseProvidedByInfo" aria-expanded="false" aria-controls="collapseProvidedByInfo">
<div class="accordion-arrow">Why should I flag a resource as 'Provided by'</div>
<div class="accordion-arrow">Why should I flag a resource as 'Developed with'</div>
</a>
</div>
</div>
<div id="collapseProvidedByInfo" class="collapse" aria-labelledby="headingProvidedBy" data-parent="#provided-by-info-accordion">
<div class="content col-12">
<p>
<b>
When publishing a resource it is important to mark a resource as 'Provided by' as it helps;
When publishing a resource it is important to mark a resource as 'Developed with' as it helps;
</b>
</p>
<ul>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<div v-if="showProviders">
<div class="row">
<div class="form-group col-12">
<h2 class="nhsuk-heading-l">Content provided by<i v-if="resourceProviderId === null" class="warningTriangle fas fa-exclamation-triangle"></i></h2>
<h2 class="nhsuk-heading-l">Content developed with<i v-if="resourceProviderId === null" class="warningTriangle fas fa-exclamation-triangle"></i></h2>
</div>
</div>
<div class="row mt-3">
Expand All @@ -26,15 +26,15 @@
<div class="heading" id="headingProvidedBy">
<div class="mb-0">
<a href="#" class="collapsed" data-toggle="collapse" data-target="#collapseProvidedByInfo" aria-expanded="false" aria-controls="collapseProvidedByInfo">
<div class="accordion-arrow">Why should I flag a resource as 'Provided by'</div>
<div class="accordion-arrow">Why should I flag a resource as 'Developed with'</div>
</a>
</div>
</div>
<div id="collapseProvidedByInfo" class="collapse" aria-labelledby="headingProvidedBy" data-parent="#provided-by-info-accordion">
<div class="content col-12">
<p>
<b>
When publishing a resource it is important to mark a resource as 'Provided by' as it helps;
When publishing a resource it is important to mark a resource as 'Developed with' as it helps;
</b>
</p>
<ul>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ BEGIN
INNER JOIN
resources.[ResourceVersion] rv ON rv.id = r.CurrentResourceVersionId
WHERE
rr.id = @ResourceReferenceId
rr.OriginalResourceReferenceId = @ResourceReferenceId
AND rr.Deleted = 0
AND r.Deleted = 0
AND rv.Deleted = 0
Expand Down Expand Up @@ -61,4 +61,4 @@ BEGIN
END
END

GO
GO
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ BEGIN
LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
LEFT JOIN resources.ResourceVersionRatingSummary rs ON rs.ResourceVersionId = rv.Id
INNER JOIN resources.ResourceVersionRatingSummary rs ON rs.ResourceVersionId = rv.Id
WHERE rv.VersionStatusId = 2
ORDER BY rvrs.AverageRating DESC, rvrs.RatingCount DESC, rv.Title

Expand Down Expand Up @@ -207,7 +207,7 @@ BEGIN
LEFT JOIN ( SELECT DISTINCT CatalogueNodeId
FROM [hub].[RoleUserGroupView] rug JOIN hub.UserUserGroup uug ON rug.UserGroupId = uug.UserGroupId
WHERE rug.ScopeTypeId = 1 and rug.RoleId in (1,2,3) and uug.Deleted = 0 and uug.UserId = @userId) auth ON n.Id = auth.CatalogueNodeId
LEFT JOIN resources.ResourceVersionRatingSummary rs ON rs.ResourceVersionId = rv.Id
INNER JOIN resources.ResourceVersionRatingSummary rs ON rs.ResourceVersionId = rv.Id
WHERE rv.VersionStatusId = 2
ORDER BY p.CreateDate DESC

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ BEGIN
srv.EsrLinkTypeId EsrLinkType,
er.Active IsActive,
srv.ContentFilePath AS InternalResourceIdentifier,
svm.ManifestURL AS ManifestUrl
svm.ManifestURL AS DefaultUrl
FROM
[resources].[UrlRewriting] u
join resources.ExternalReference er on u.ExternalReferenceId = er.Id
Expand Down
131 changes: 69 additions & 62 deletions WebAPI/LearningHub.Nhs.Services/ResourceService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1646,64 +1646,71 @@ public async Task<ResourceItemViewModel> GetResourceItemViewModelAsync(int resou
// - set field ResourceVersionIdInEdit / ResourceVersionIdPublishing for this scenario, required for UI rendering
var rv = await this.resourceVersionRepository.GetCurrentForResourceReferenceIdAsync(resourceReferenceId);

int resourceVersionIdInEdit = 0;
int resourceVersionIdPublishing = 0;

if (rv.VersionStatusEnum == VersionStatusEnum.Draft || rv.VersionStatusEnum == VersionStatusEnum.Publishing)
if (rv != null)
{
var rvp = await this.resourceVersionRepository.GetCurrentPublicationForResourceReferenceIdAsync(resourceReferenceId);
int resourceVersionIdInEdit = 0;
int resourceVersionIdPublishing = 0;

if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Draft)
if (rv.VersionStatusEnum == VersionStatusEnum.Draft || rv.VersionStatusEnum == VersionStatusEnum.Publishing)
{
resourceVersionIdInEdit = rv.Id;
}
var rvp = await this.resourceVersionRepository.GetCurrentPublicationForResourceReferenceIdAsync(resourceReferenceId);

if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Publishing)
{
resourceVersionIdPublishing = rv.Id;
if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Draft)
{
resourceVersionIdInEdit = rv.Id;
}

if (rvp != null && rv.VersionStatusEnum == VersionStatusEnum.Publishing)
{
resourceVersionIdPublishing = rv.Id;
}

rv = rvp;
}

rv = rvp;
}
var erv = await this.GetResourceVersionExtendedViewModelAsync(rv.Id, userId);

var retVal = new ResourceItemViewModel(erv);
retVal.Id = resourceReferenceId;
var bookmark = this.bookmarkRepository.GetAll().Where(b => b.ResourceReferenceId == resourceReferenceId && b.UserId == userId).FirstOrDefault();
retVal.BookmarkId = bookmark?.Id;
retVal.IsBookmarked = !bookmark?.Deleted ?? false;
retVal.ReadOnly = readOnly;
retVal.DisplayForContributor = await this.UserCanEditResourceVersion(rv.CreateUserId, rv.Id, userId);
retVal.ResourceVersionIdInEdit = resourceVersionIdInEdit;
retVal.ResourceVersionIdPublishing = resourceVersionIdPublishing;
retVal.ResourceAccessibilityEnum = rv.ResourceAccessibilityEnum;

// Obtain catalogue associated with the supplied Resource Reference.
var rr = await this.resourceReferenceRepository.GetByOriginalResourceReferenceIdAsync(resourceReferenceId, true);
var catalogueNodeVersion = this.catalogueNodeVersionRepository.GetBasicCatalogue(rr.NodePath.CatalogueNode.Id);
retVal.Catalogue = this.mapper.Map<CatalogueViewModel>(catalogueNodeVersion);
retVal.NodePathId = rr.NodePathId.Value;

var erv = await this.GetResourceVersionExtendedViewModelAsync(rv.Id, userId);
switch (rv.Resource.ResourceTypeEnum)
{
case ResourceTypeEnum.Case:
retVal.CaseDetails = erv.CaseDetails;
break;

var retVal = new ResourceItemViewModel(erv);
retVal.Id = resourceReferenceId;
var bookmark = this.bookmarkRepository.GetAll().Where(b => b.ResourceReferenceId == resourceReferenceId && b.UserId == userId).FirstOrDefault();
retVal.BookmarkId = bookmark?.Id;
retVal.IsBookmarked = !bookmark?.Deleted ?? false;
retVal.ReadOnly = readOnly;
retVal.DisplayForContributor = await this.UserCanEditResourceVersion(rv.CreateUserId, rv.Id, userId);
retVal.ResourceVersionIdInEdit = resourceVersionIdInEdit;
retVal.ResourceVersionIdPublishing = resourceVersionIdPublishing;
retVal.ResourceAccessibilityEnum = rv.ResourceAccessibilityEnum;

// Obtain catalogue associated with the supplied Resource Reference.
var rr = await this.resourceReferenceRepository.GetByOriginalResourceReferenceIdAsync(resourceReferenceId, true);
var catalogueNodeVersion = this.catalogueNodeVersionRepository.GetBasicCatalogue(rr.NodePath.CatalogueNode.Id);
retVal.Catalogue = this.mapper.Map<CatalogueViewModel>(catalogueNodeVersion);
retVal.NodePathId = rr.NodePathId.Value;

switch (rv.Resource.ResourceTypeEnum)
{
case ResourceTypeEnum.Case:
retVal.CaseDetails = erv.CaseDetails;
break;
case ResourceTypeEnum.Assessment:
retVal.AssessmentDetails = erv.AssessmentDetails;
break;

case ResourceTypeEnum.Assessment:
retVal.AssessmentDetails = erv.AssessmentDetails;
break;
case ResourceTypeEnum.Html:
retVal.HtmlDetails = erv.HtmlDetails;
break;

case ResourceTypeEnum.Html:
retVal.HtmlDetails = erv.HtmlDetails;
break;
default:
break;
}

default:
break;
return retVal;
}
else
{
return null;
}

return retVal;
}

/// <summary>
Expand Down Expand Up @@ -3225,30 +3232,30 @@ await strategy.Execute(
/// <returns>The <see cref="Task{LearningHubValidationResult}"/>.</returns>
public async Task CheckAndRemoveResourceVersionProviderAsync(int resourceVersionId, int userId)
{
List<int> userProviderList = new List<int>();
List<int> userProviderList = new List<int>();

// list of resource version provider
var resourceProviderList = await this.providerService.GetByResourceVersionIdAsync(resourceVersionId);
// list of resource version provider
var resourceProviderList = await this.providerService.GetByResourceVersionIdAsync(resourceVersionId);

// list of user providers
var userProviders = await this.providerService.GetByUserIdAsync(userId);
// list of user providers
var userProviders = await this.providerService.GetByUserIdAsync(userId);

if (userProviders != null && userProviders.Count > 0)
{
userProviderList.AddRange(userProviders.Select(n => n.Id).ToList());
}
if (userProviders != null && userProviders.Count > 0)
{
userProviderList.AddRange(userProviders.Select(n => n.Id).ToList());
}

// delete provider from resource version if user do not have permission.
if (resourceProviderList != null && resourceProviderList.Count > 0)
// delete provider from resource version if user do not have permission.
if (resourceProviderList != null && resourceProviderList.Count > 0)
{
foreach (ProviderViewModel resourceProvider in resourceProviderList)
{
foreach (ProviderViewModel resourceProvider in resourceProviderList)
if (!userProviderList.Contains(resourceProvider.Id))
{
if (!userProviderList.Contains(resourceProvider.Id))
{
await this.resourceVersionProviderRepository.DeleteAsync(resourceVersionId, resourceProvider.Id, userId);
}
await this.resourceVersionProviderRepository.DeleteAsync(resourceVersionId, resourceProvider.Id, userId);
}
}
}
}

/// <summary>
Expand Down