Bugfixes for RelatedInfoStep
parent
30320485d4
commit
80cf9143ee
|
|
@ -21,6 +21,7 @@ package org.librecms.ui.contentsections.assets;
|
|||
import org.libreccm.api.Identifier;
|
||||
import org.libreccm.api.IdentifierParser;
|
||||
import org.libreccm.security.AuthorizationRequired;
|
||||
import org.libreccm.ui.BaseUrl;
|
||||
import org.librecms.assets.ExternalAudioAsset;
|
||||
import org.librecms.assets.LegalMetadata;
|
||||
import org.librecms.contentsection.AssetRepository;
|
||||
|
|
@ -69,6 +70,9 @@ public class ExternalAudioAssetEditStep extends BookmarkEditStep {
|
|||
@Inject
|
||||
private AssetUi assetUi;
|
||||
|
||||
@Inject
|
||||
private BaseUrl baseUrl;
|
||||
|
||||
@Inject
|
||||
private ExternalAudioAssetEditStepModel editStepModel;
|
||||
|
||||
|
|
@ -96,16 +100,7 @@ public class ExternalAudioAssetEditStep extends BookmarkEditStep {
|
|||
getExternalAudioAsset().getLegalMetadata()
|
||||
);
|
||||
|
||||
final StringBuilder baseUrlBuilder = new StringBuilder();
|
||||
editStepModel.setBaseUrl(
|
||||
baseUrlBuilder
|
||||
.append(request.getScheme())
|
||||
.append("://")
|
||||
.append(request.getServerName())
|
||||
.append(addServerPortToBaseUrl())
|
||||
.append(addContextPathToBaseUrl())
|
||||
.toString()
|
||||
);
|
||||
editStepModel.setBaseUrl(baseUrl.getBaseUrl(request));
|
||||
} else {
|
||||
throw new AssetNotFoundException(
|
||||
assetUi.showAssetNotFound(
|
||||
|
|
@ -229,21 +224,4 @@ public class ExternalAudioAssetEditStep extends BookmarkEditStep {
|
|||
return "org/librecms/ui/contentsection/assets/external-audio-asset/legal-metadata-not-found.xhtml";
|
||||
}
|
||||
|
||||
private String addServerPortToBaseUrl() {
|
||||
if (request.getServerPort() == 80 || request.getServerPort() == 443) {
|
||||
return "";
|
||||
} else {
|
||||
return String.format(":%d", request.getServerPort());
|
||||
}
|
||||
}
|
||||
|
||||
private String addContextPathToBaseUrl() {
|
||||
if (request.getServletContext().getContextPath() == null
|
||||
|| request.getServletContext().getContextPath().isEmpty()) {
|
||||
return "/";
|
||||
} else {
|
||||
return request.getServletContext().getContextPath();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -26,7 +26,6 @@ import java.util.ArrayList;
|
|||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.librecms.ui.contentsections.documents.ItemAttachmentDto;
|
||||
|
||||
/**
|
||||
* A data transfer object used by the template for the listing of the
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
|
||||
* MA 02110-1301 USA
|
||||
*/
|
||||
package org.librecms.ui.contentsections.documents;
|
||||
package org.librecms.ui.contentsections.documents.relatedinfo;
|
||||
|
||||
import org.libreccm.l10n.GlobalizationHelper;
|
||||
import org.librecms.contentsection.ItemAttachment;
|
||||
|
|
@ -49,6 +49,11 @@ public class ItemAttachmentDto {
|
|||
*/
|
||||
private String assetType;
|
||||
|
||||
/**
|
||||
* The UUID of the attachment asset.
|
||||
*/
|
||||
private String assetUuid;
|
||||
|
||||
/**
|
||||
* The title of the asset assigned to an content item. This value is
|
||||
* determined from the title of the asset using {@link GlobalizationHelper#getValueFromLocalizedString(org.libreccm.l10n.LocalizedString)
|
||||
|
|
@ -106,8 +111,16 @@ public class ItemAttachmentDto {
|
|||
return internalLink;
|
||||
}
|
||||
|
||||
public void setLink(final boolean internalLink) {
|
||||
public void setInternalLink(final boolean internalLink) {
|
||||
this.internalLink = internalLink;
|
||||
}
|
||||
|
||||
public String getAssetUuid() {
|
||||
return assetUuid;
|
||||
}
|
||||
|
||||
public void setAssetUuid(final String assetUuid) {
|
||||
this.assetUuid = assetUuid;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -42,6 +42,8 @@ import javax.inject.Named;
|
|||
@Named("CmsLinkDetailsModel")
|
||||
public class LinkDetailsModel {
|
||||
|
||||
private String baseUrl;
|
||||
|
||||
/**
|
||||
* The identifier of the {@link AttachmentList} of the link.
|
||||
*/
|
||||
|
|
@ -64,6 +66,8 @@ public class LinkDetailsModel {
|
|||
|
||||
private String linkType;
|
||||
|
||||
private Map<String, String> linkTypes;
|
||||
|
||||
/**
|
||||
* The UUID of the target item of the link.
|
||||
*/
|
||||
|
|
@ -87,6 +91,14 @@ public class LinkDetailsModel {
|
|||
*/
|
||||
private String targetItemTitle;
|
||||
|
||||
public String getBaseUrl() {
|
||||
return baseUrl;
|
||||
}
|
||||
|
||||
public void setBaseUrl(final String baseUrl) {
|
||||
this.baseUrl = baseUrl;
|
||||
}
|
||||
|
||||
public String getListIdentifier() {
|
||||
return listIdentifier;
|
||||
}
|
||||
|
|
@ -216,4 +228,12 @@ public class LinkDetailsModel {
|
|||
this.targetItemTitle = targetItemTitle;
|
||||
}
|
||||
|
||||
public Map<String, String> getLinkTypes() {
|
||||
return Collections.unmodifiableMap(linkTypes);
|
||||
}
|
||||
|
||||
public void setLinkTypes(final Map<String, String> linkTypes) {
|
||||
this.linkTypes = new HashMap<>(linkTypes);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,8 +22,9 @@ import org.librecms.ui.contentsections.ContentSectionNotFoundException;
|
|||
import org.libreccm.api.Identifier;
|
||||
import org.libreccm.api.IdentifierParser;
|
||||
import org.libreccm.l10n.GlobalizationHelper;
|
||||
import org.libreccm.l10n.LocalizedTextsUtil;
|
||||
import org.libreccm.security.PermissionChecker;
|
||||
import org.librecms.assets.AssetTypeInfo;
|
||||
import org.libreccm.ui.BaseUrl;
|
||||
import org.librecms.assets.AssetTypesManager;
|
||||
import org.librecms.assets.RelatedLink;
|
||||
import org.librecms.contentsection.Asset;
|
||||
|
|
@ -58,14 +59,17 @@ import org.librecms.ui.contentsections.documents.AbstractMvcAuthoringStep;
|
|||
import org.librecms.ui.contentsections.documents.DefaultAuthoringStepConstants;
|
||||
import org.librecms.ui.contentsections.documents.DocumentNotFoundException;
|
||||
import org.librecms.ui.contentsections.documents.DocumentUi;
|
||||
import org.librecms.ui.contentsections.documents.ItemAttachmentDto;
|
||||
import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef;
|
||||
import org.librecms.ui.contentsections.documents.MvcAuthoringSteps;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.ws.rs.core.Context;
|
||||
|
||||
/**
|
||||
* Authoring step for managing the {@link AttachmentList} and
|
||||
* {@link ItemAttachment}s assigned to a {@link ContentItem}.
|
||||
|
|
@ -129,9 +133,15 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
@Inject
|
||||
private AttachmentListRepository listRepo;
|
||||
|
||||
@Inject
|
||||
private BaseUrl baseUrl;
|
||||
|
||||
@Inject
|
||||
private DocumentUi documentUi;
|
||||
|
||||
@Context
|
||||
private HttpServletRequest request;
|
||||
|
||||
/**
|
||||
* Model for the details view of an internal {@link RelatedLink}.
|
||||
*/
|
||||
|
|
@ -1139,7 +1149,7 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
link.getBookmark().getDisplayName()
|
||||
);
|
||||
linkDetailsModel.setBookmarkUuid(link.getBookmark().getUuid());
|
||||
} else if (link.getTargetItem() != null){
|
||||
} else if (link.getTargetItem() != null) {
|
||||
linkDetailsModel.setLinkType("internal");
|
||||
linkDetailsModel.setTargetItemName(
|
||||
link.getTargetItem().getDisplayName()
|
||||
|
|
@ -1153,9 +1163,28 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
link.getTargetItem().getUuid()
|
||||
);
|
||||
} else {
|
||||
linkDetailsModel.setLinkType("");
|
||||
linkDetailsModel.setLinkType("--none--");
|
||||
}
|
||||
|
||||
linkDetailsModel.setBaseUrl(baseUrl.getBaseUrl(request));
|
||||
|
||||
final LocalizedTextsUtil textsUtil = globalizationHelper
|
||||
.getLocalizedTextsUtil(DefaultAuthoringStepConstants.BUNDLE);
|
||||
final Map<String, String> linkTypes = new LinkedHashMap<>();
|
||||
linkTypes.put(
|
||||
"--none--",
|
||||
textsUtil.getText("relatedinfo.links.type.none_selected")
|
||||
);
|
||||
linkTypes.put(
|
||||
"external",
|
||||
textsUtil.getText("relatedinfo.links.type.external")
|
||||
);
|
||||
linkTypes.put(
|
||||
"internal",
|
||||
textsUtil.getText("relatedinfo.links.type.internal")
|
||||
);
|
||||
linkDetailsModel.setLinkTypes(linkTypes);
|
||||
|
||||
linkDetailsModel.setTitle(
|
||||
link
|
||||
.getTitle()
|
||||
|
|
@ -1352,7 +1381,11 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
assetRepo.save(link);
|
||||
|
||||
return buildRedirectPathForStep(
|
||||
String.format("/attachmentlists/%s/@details", list.getName())
|
||||
String.format(
|
||||
"/attachmentlists/%s/links/%s/@details",
|
||||
list.getName(),
|
||||
link.getUuid()
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return documentUi.showAccessDenied(
|
||||
|
|
@ -1435,7 +1468,11 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
assetRepo.save(link);
|
||||
|
||||
return buildRedirectPathForStep(
|
||||
String.format("/attachmentlists/%s/@details", list.getName())
|
||||
String.format(
|
||||
"/attachmentlists/%s/links/%s/@details",
|
||||
list.getName(),
|
||||
link.getUuid()
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return documentUi.showAccessDenied(
|
||||
|
|
@ -1516,7 +1553,11 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
assetRepo.save(link);
|
||||
|
||||
return buildRedirectPathForStep(
|
||||
String.format("/attachmentlists/%s/@details", list.getName())
|
||||
String.format(
|
||||
"/attachmentlists/%s/links/%s/@details",
|
||||
list.getName(),
|
||||
link.getUuid()
|
||||
)
|
||||
);
|
||||
} else {
|
||||
return documentUi.showAccessDenied(
|
||||
|
|
@ -1945,25 +1986,39 @@ public class RelatedInfoStep extends AbstractMvcAuthoringStep {
|
|||
final ItemAttachment<?> itemAttachment
|
||||
) {
|
||||
final ItemAttachmentDto dto = new ItemAttachmentDto();
|
||||
final AssetTypeInfo assetTypeInfo = assetTypesManager
|
||||
.getAssetTypeInfo(itemAttachment.getAsset().getClass());
|
||||
dto.setAssetType(
|
||||
globalizationHelper
|
||||
.getLocalizedTextsUtil(assetTypeInfo.getLabelBundle())
|
||||
.getText(assetTypeInfo.getLabelKey())
|
||||
Optional
|
||||
.ofNullable(itemAttachment.getAsset())
|
||||
.map(Asset::getClass)
|
||||
.map(clazz -> assetTypesManager.getAssetTypeInfo(clazz))
|
||||
.map(
|
||||
info -> globalizationHelper.getLocalizedTextsUtil(
|
||||
info.getLabelBundle()).getText(info.getLabelKey())
|
||||
).orElse("")
|
||||
);
|
||||
dto.setAssetUuid(
|
||||
Optional
|
||||
.ofNullable(itemAttachment.getAsset())
|
||||
.map(Asset::getUuid)
|
||||
.orElse(null)
|
||||
);
|
||||
dto.setAttachmentId(itemAttachment.getAttachmentId());
|
||||
dto.setLink(
|
||||
itemAttachment.getAsset() instanceof RelatedLink
|
||||
dto.setInternalLink(
|
||||
itemAttachment.getAsset() != null
|
||||
&& itemAttachment.getAsset() instanceof RelatedLink
|
||||
&& ((RelatedLink) itemAttachment.getAsset()).getTargetItem()
|
||||
!= null
|
||||
);
|
||||
dto.setSortKey(itemAttachment.getSortKey());
|
||||
dto.setTitle(
|
||||
globalizationHelper
|
||||
.getValueFromLocalizedString(
|
||||
itemAttachment.getAsset().getTitle()
|
||||
Optional
|
||||
.ofNullable(itemAttachment.getAsset())
|
||||
.map(
|
||||
asset -> globalizationHelper.getValueFromLocalizedString(
|
||||
asset.getTitle()
|
||||
)
|
||||
)
|
||||
.orElse("")
|
||||
);
|
||||
dto.setUuid(itemAttachment.getUuid());
|
||||
return dto;
|
||||
|
|
|
|||
|
|
@ -24,14 +24,14 @@
|
|||
addDialogTitle="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.add_dialog.title']}"
|
||||
addDialogValueHelp="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.add.value.help']}"
|
||||
addDialogValueLabel="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.add.value.label']}"
|
||||
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/title/@add"
|
||||
addMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/title/@add"
|
||||
editButtonLabel="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.edit.button_label']}"
|
||||
editDialogCancelLabel="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.edit.cancel']}"
|
||||
editDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.edit.submit']}"
|
||||
editDialogTitle="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.edit_dialog.title']}"
|
||||
editDialogValueHelp="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.edit.value.help']}"
|
||||
editDialogValueLabel="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.edit.value.label']}"
|
||||
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/title/@edit"
|
||||
editMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/title/@edit"
|
||||
editorId="link-title-editor"
|
||||
hasUnusedLocales="#{!CmsLinkDetailsModel.unusedTitleLocales.isEmpty()}"
|
||||
headingLevel="3"
|
||||
|
|
@ -41,47 +41,21 @@
|
|||
removeDialogSubmitLabel="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.remove.submit']}"
|
||||
removeDialogText="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.remove.text']}"
|
||||
removeDialogTitle="#{CmsDefaultStepsMessageBundle['contentsection.documents.relatedinfo.link.title.remove.title']}"
|
||||
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@authoringSteps/relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/title/@remove"
|
||||
removeMethod="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/title/@remove"
|
||||
title="#{CmsDefaultStepsMessageBundle['relatedinfo.link.details.title_editor.title']}"
|
||||
unusedLocales="#{CmsLinkDetailsModel.unusedTitleLocales}"
|
||||
values="#{CmsLinkDetailsModel.title}"
|
||||
/>
|
||||
|
||||
<form>
|
||||
<fieldset aria-describedby="linktype-help"
|
||||
class="form-group">
|
||||
<div class="row">
|
||||
<legend class="col-form-label col-sm-2 pt-0">#{CmsDefaultStepsMessageBundle['relatedinfo.links.type.label']}</legend>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-check">
|
||||
<input
|
||||
checked="#{'internal'.equals(selectedType)}"
|
||||
class="form-check-input link-type-select"
|
||||
id="linktype-internal"
|
||||
<bootstrap:formGroupSelect
|
||||
help="#{CmsDefaultStepsMessageBundle['relatedinfo.links.type.help']}"
|
||||
inputId="link-type-select"
|
||||
label="#{CmsDefaultStepsMessageBundle['relatedinfo.links.type.label']}"
|
||||
name="linkType"
|
||||
type="radio"
|
||||
value="internal"
|
||||
options="#{CmsLinkDetailsModel.linkTypes}"
|
||||
selectedOptions="#{[CmsLinkDetailsModel.linkType]}"
|
||||
/>
|
||||
<label for="linktype-internal">#{CmsDefaultStepsMessageBundle['relatedinfo.links.type.internal']}</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input
|
||||
checked="#{'external'.equals(selectedType)}"
|
||||
class="form-check-input link-type-select"
|
||||
id="linktype-internal"
|
||||
name="linkType"
|
||||
type="radio"
|
||||
value="external"
|
||||
/>
|
||||
<label for="linktype-internal">#{CmsDefaultStepsMessageBundle['relatedinfo.links.type.external']}</label>
|
||||
</div>
|
||||
</div>
|
||||
<small class="form-text text-muted"
|
||||
id="linktype-help">
|
||||
#{CmsDefaultStepsMessageBundle['relatedinfo.links.type.help']}
|
||||
</small>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
|
||||
<h3>#{CmsDefaultStepsMessageBundle['relatedinfo.link.details.title.target']}</h3>
|
||||
|
|
@ -101,7 +75,7 @@
|
|||
actionUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{CmsLinkDetailsModel.listIdentifier}/links/#{CmsLinkDetailsModel.uuid}/details/@set-target-bookmark"
|
||||
assetType="#{CmsLinkDetailsModel.bookmarkType}"
|
||||
assetPickerId="bookmark-picker"
|
||||
baseUrl="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo-service"
|
||||
baseUrl="#{CmsLinkDetailsModel.baseUrl}"
|
||||
contentSection="#{CmsLinkDetailsModel.sectionName}"
|
||||
formParamName="bookmarkIdentifier"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -446,7 +446,7 @@
|
|||
var="attachment">
|
||||
<li class="cms-attachment list-group-item mb-3 d-flex justify-content-between"
|
||||
data-id="#{attachment.uuid}">
|
||||
<div class="cms-attachment-label">#{attachment.name}</div>
|
||||
<div class="cms-attachment-label">#{attachment.title}</div>
|
||||
<div class="cms-attachment-buttons">
|
||||
<button class="btn btn-secondary cms-sort-handle"
|
||||
type="button">
|
||||
|
|
@ -459,7 +459,7 @@
|
|||
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.info.button']}"</span>
|
||||
</button>
|
||||
<a class="btn btn-primary"
|
||||
href="#"
|
||||
href="#{mvc.basePath}/#{ContentSectionModel.sectionName}/documents/#{CmsSelectedDocumentModel.itemPath}/@relatedinfo/attachmentlists/#{list.name}/links/#{attachment.assetUuid}/@details"
|
||||
type="button">
|
||||
<bootstrap:svgIcon icon="pen" />
|
||||
<span class="sr-only">#{CmsDefaultStepsMessageBundle['relatedinfo.attachments.edit.button']}"</span>
|
||||
|
|
|
|||
|
|
@ -204,3 +204,4 @@ relatedinfo.links.type.external=External link
|
|||
relatedinfo.links.type.help=The type of the link. Internal links are linked with another document (content item). External links link to an URL.
|
||||
relatedinfo.link.details.title.target=Target of the related link
|
||||
relatedinfo.link.details.title.target.select_bookmark=Select bookmark
|
||||
relatedinfo.links.type.none_selected=Please select a link type.
|
||||
|
|
|
|||
|
|
@ -204,3 +204,4 @@ relatedinfo.links.type.external=Externener Link
|
|||
relatedinfo.links.type.help=Der Typ des Links. Interne Links verweisen auf ein anderes Dokument (Content Item). Externe Links verweisen auf eine URL.
|
||||
relatedinfo.link.details.title.target=Ziel des weiterf\u00fchrenden Links
|
||||
relatedinfo.link.details.title.target.select_bookmark=Lesezeichen ausw\u00e4hlen
|
||||
relatedinfo.links.type.none_selected=Bitte w\u00e4hlen Sie einen Link-Typ aus.
|
||||
|
|
|
|||
|
|
@ -1,21 +1,55 @@
|
|||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
document.addEventListener("DOMContentLoaded", function (event) {
|
||||
const elem = document.querySelector("#link-type-select");
|
||||
if (elem) {
|
||||
const linkTypeSelect: HTMLSelectElement = elem as HTMLSelectElement;
|
||||
const preSelected = linkTypeSelect.options.item(
|
||||
linkTypeSelect.selectedIndex
|
||||
);
|
||||
if (preSelected) {
|
||||
const value = preSelected.value;
|
||||
if (value != "--none--") {
|
||||
enableLinkTypeInputs(value);
|
||||
}
|
||||
}
|
||||
|
||||
linkTypeSelect.addEventListener("input", function (event) {
|
||||
const target = event.currentTarget as HTMLSelectElement;
|
||||
const selected = target.options.item(
|
||||
linkTypeSelect.selectedIndex
|
||||
);
|
||||
if (selected) {
|
||||
const value = selected.value;
|
||||
if (value == "--none--") {
|
||||
const types = document.querySelectorAll(
|
||||
".relatedlink-target"
|
||||
);
|
||||
for (let j = 0; j < types.length; j++) {
|
||||
types[j].classList.add("d-none");
|
||||
}
|
||||
} else {
|
||||
enableLinkTypeInputs(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
const linkTypes = document.querySelectorAll(".link-type-select");
|
||||
|
||||
for(let i = 0; i < linkTypes.length; i++) {
|
||||
for (let i = 0; i < linkTypes.length; i++) {
|
||||
if (linkTypes[i].getAttribute("selected") === "selected") {
|
||||
const selectedTypeElem = document.querySelector(
|
||||
`#relatedlink-target-${linkTypes[i].getAttribute("value")}`
|
||||
);
|
||||
if (selectedTypeElem) {
|
||||
const types = document.querySelectorAll(".relatedlink-target");
|
||||
for(let j = 0; j < types.length; j++) {
|
||||
for (let j = 0; j < types.length; j++) {
|
||||
types[j].classList.add("d-none");
|
||||
}
|
||||
selectedTypeElem.classList.remove("d-none");
|
||||
}
|
||||
}
|
||||
|
||||
linkTypes[i].addEventListener("input", function(event) {
|
||||
linkTypes[i].addEventListener("input", function (event) {
|
||||
const target = event.currentTarget as HTMLElement;
|
||||
const value = target.getAttribute("value");
|
||||
|
||||
|
|
@ -24,12 +58,24 @@ document.addEventListener("DOMContentLoaded", function(event) {
|
|||
);
|
||||
if (selectedTypeElem) {
|
||||
const types = document.querySelectorAll(".relatedlink-target");
|
||||
for(let j = 0; j < types.length; j++) {
|
||||
for (let j = 0; j < types.length; j++) {
|
||||
types[j].classList.add("d-none");
|
||||
}
|
||||
selectedTypeElem.classList.remove("d-none");
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
function enableLinkTypeInputs(selectedLinkType: string): void {
|
||||
const selectedTypeElem = document.querySelector(
|
||||
`#relatedlink-target-${selectedLinkType}`
|
||||
);
|
||||
if (selectedTypeElem) {
|
||||
const types = document.querySelectorAll(".relatedlink-target");
|
||||
for (let j = 0; j < types.length; j++) {
|
||||
types[j].classList.add("d-none");
|
||||
}
|
||||
selectedTypeElem.classList.remove("d-none");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
/*
|
||||
* To change this license header, choose License Headers in Project Properties.
|
||||
* To change this template file, choose Tools | Templates
|
||||
* and open the template in the editor.
|
||||
*/
|
||||
package org.libreccm.ui;
|
||||
|
||||
import javax.enterprise.context.RequestScoped;
|
||||
import javax.inject.Inject;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.ws.rs.core.Context;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
|
||||
*/
|
||||
@RequestScoped
|
||||
public class BaseUrl {
|
||||
|
||||
public String getBaseUrl(final HttpServletRequest request) {
|
||||
final StringBuilder baseUrlBuilder = new StringBuilder();
|
||||
return baseUrlBuilder
|
||||
.append(request.getScheme())
|
||||
.append("://")
|
||||
.append(request.getServerName())
|
||||
.append(addServerPortToBaseUrl(request))
|
||||
.append(addContextPathToBaseUrl(request))
|
||||
.toString();
|
||||
}
|
||||
|
||||
private String addServerPortToBaseUrl(final HttpServletRequest request) {
|
||||
if (request.getServerPort() == 80 || request.getServerPort() == 443) {
|
||||
return "";
|
||||
} else {
|
||||
return String.format(":%d", request.getServerPort());
|
||||
}
|
||||
}
|
||||
|
||||
private String addContextPathToBaseUrl(final HttpServletRequest request) {
|
||||
if (request.getServletContext().getContextPath() == null
|
||||
|| request.getServletContext().getContextPath().isEmpty()) {
|
||||
return "/";
|
||||
} else {
|
||||
return request.getServletContext().getContextPath();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue