| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <meta name="keywords" content="eclipse, Oomph, eclipse installer, eclipse marketplace"/> |
| <link rel="shortcut icon" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/favicon.ico"/> |
| |
| <title>Eclipse Marketplace Listing</title> |
| <link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/eclipse-ide.min.css?v1.7"/> |
| |
| <meta name="description" content="The Eclipse Foundation - home to a global community, the Eclipse IDE, Jakarta EE and over 350 open source projects, including runtimes, tools and frameworks."/> |
| |
| <script src='https://code.jquery.com/jquery-1.9.0.min.js' type='text/javascript'></script> |
| |
| <link href="//fonts.googleapis.com/css?family=Libre+Franklin:400,700,300,600,100" rel="stylesheet" type="text/css"/> |
| |
| <style> |
| .button, .button:visited, .button:hover, .button:active, .button:link { |
| margin-left: 0em; |
| margin-top: 1ex; |
| margin-bottom: 1ex; |
| font-weight: bold; |
| border: 1px solid Chocolate; |
| background-color: DarkOrange; |
| color: white; |
| padding: 0.25ex 0.25em; |
| text-align: center; |
| text-decoration: none; |
| display: inline-block; |
| } |
| |
| .button:hover { |
| transition: background-color 0.5s ease; |
| background-color: rgb(218, 122,8); |
| } |
| |
| .thumb { |
| width : 25em; |
| cursor: pointer; |
| transition: 0.3s; |
| } |
| |
| .thumb:hover { |
| opacity: 0.7; |
| } |
| |
| .section-header { |
| margin-bottom: 1.5ex; |
| text-indent: -1em; |
| margin-left: 1em; |
| } |
| |
| .bb { |
| background-color: white; |
| border: none; |
| padding: 0px 0px; |
| } |
| |
| .bb:focus { |
| outline: none; |
| } |
| |
| .bb:hover { |
| transition: color 0.5s ease; |
| color: rgb(218, 122,8); |
| } |
| |
| .help { |
| position: relative; |
| bottom: 1.2ex; |
| margin-left: -0.10ex; |
| margin-right: 0.10ex; |
| width: 1.6ex; |
| cursor: pointer; |
| } |
| |
| .help:hover { |
| animation: rotation 1.5s infinite linear; |
| } |
| |
| @keyframes rotation { |
| from { |
| transform: rotate(0deg); |
| transform-origin: center center; |
| } |
| to { |
| transform: rotate(359deg); |
| transform-origin: center center; |
| } |
| } |
| |
| .help-link { |
| cursor: pointer; |
| transition: font-weight 2s; |
| } |
| |
| .help-link:hover { |
| cursor: pointer; |
| text-decoration: underline; |
| text-decoration-color: orange; |
| } |
| |
| .modal-popup { |
| display: none; |
| position: fixed; |
| z-index: 1; |
| padding-top: 100px; |
| left: 0; |
| top: 0; |
| width: 100%; |
| height: 100%; |
| overflow: auto; |
| background-color: rgb(0,0,0); |
| background-color: rgba(0,0,0,0.8); |
| } |
| |
| .modal-popup-content { |
| margin: auto; |
| display: block; |
| width: 80%; |
| max-width: 900px; |
| } |
| |
| #modal-popup-caption { |
| margin: auto; |
| display: block; |
| width: 80%; |
| max-width: 90%; |
| text-align: left; |
| font-size: 150%; |
| color: white; |
| padding: 0 0; |
| height: 150px; |
| } |
| |
| .modal-popup-content, #modal-popup-caption { |
| animation-name: zoom; |
| animation-duration: 0.6s; |
| } |
| |
| @keyframes zoom { |
| from {transform:scale(0)} |
| to {transform:scale(1)} |
| } |
| |
| .modal-popup-close { |
| position: absolute; |
| top: 15px; |
| right: 35px; |
| color: #f1f1f1; |
| font-size: 40px; |
| font-weight: bold; |
| transition: 0.3s; |
| } |
| |
| .modal-popup-close:hover, .modal-popup-close:focus { |
| color: #bbb; |
| text-decoration: none; |
| cursor: pointer; |
| } |
| |
| @media only screen and (max-width: 900px) { |
| modal-content { |
| width: 100%; |
| } |
| } |
| |
| [tooltip]::after { |
| content: attr(tooltip); |
| position: absolute; |
| opacity: 0; |
| display: none; |
| white-space: pre-line; |
| font-weight: normal; |
| transition: all 0.15s ease; |
| padding: 10px; |
| color: #333; |
| border-radius: 10px; |
| box-shadow: 2px 2px 1px silver; |
| max-height: 0px; |
| } |
| |
| [tooltip]:hover::after { |
| content: attr(tooltip); |
| opacity: 1; |
| display: inline-block; |
| background: Moccasin; |
| margin-top: -4ex; |
| margin-left: 1ex; |
| z-index: 99; |
| max-height: 100%; |
| } |
| |
| #marketplace-title-span, .marketplace-title-span { |
| font-size: 100%; |
| cursor: pointer; |
| } |
| |
| #marketplace-insertion-section, .marketplace-insertion-section { |
| display: none; |
| } |
| |
| #marketplace-section, .marketplace-section { |
| overflow: hidden; |
| margin-left: 2em; |
| } |
| |
| #marketplace-image, .marketplace-image { |
| float: left; |
| margin-right: 2ex; |
| margin-bottom: 2ex; |
| } |
| |
| #marketplace-small-image, .marketplace-small-image { |
| font-size: 100%; |
| height: 2ex; |
| vertical-align: baseline; |
| margin-bottom: -0.1ex; |
| } |
| |
| .loader { |
| border: 0.5ex solid #f3f3f3; |
| border-top: 0.5ex solid #3498db; |
| border-radius: 50%; |
| width: 3ex; |
| height: 3ex; |
| animation: spin 2s linear infinite; |
| } |
| |
| @keyframes spin { |
| 0% { transform: rotate(0deg); } |
| 100% { transform: rotate(360deg); } |
| } |
| </style> |
| |
| <script> |
| var eclipse_org_common = { |
| "settings": { |
| "cookies_class": { |
| "name": "eclipse_settings", |
| "enabled": 1 |
| } |
| } |
| } |
| |
| function getParameter(search, name) { |
| try { |
| // This is not available on IE 11. |
| var urlParameters = new URLSearchParams(search); |
| return urlParameters.get(name); |
| } |
| catch (e) { |
| var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(search); |
| if (results == null) { |
| return null; |
| } |
| else { |
| return decodeURI(results[1]) || 0; |
| } |
| } |
| } |
| |
| window.onload = function () { |
| var scheme = getParameter(window.location.search, 'scheme'); |
| if (scheme == null) { |
| scheme = 'eclipse+installer'; |
| } else { |
| scheme = scheme.replace(/ /g, '+'); |
| } |
| updateScheme('scheme', scheme); |
| |
| var url = getParameter(window.location.search, 'url'); |
| var nodeID = getParameter(window.location.search, 'id'); |
| |
| var os = getOS(); |
| if (os == 'win') { |
| hide('installer-mac'); hide('installer-linux'); |
| } else if (os == 'mac') { |
| hide('installer-win'); hide('installer-linux'); |
| } else if (os == 'linux') { |
| hide('installer-win'); hide('installer-mac'); |
| } |
| |
| var style = getParameter(window.location.search, 'style'); |
| |
| var titleSection = document.getElementById('title'); |
| if (nodeID != null || url != null) |
| { |
| titleSection.innerText = " for a single listing"; |
| } |
| else if (style == null) |
| { |
| titleSection.innerText = 'usable ' + titleSection.innerText; |
| } |
| else if (style == 'all') |
| { |
| titleSection.innerText = 'all ' + titleSection.innerText; |
| } |
| else if (style == 'warning') |
| { |
| titleSection.innerText += ' with warnings' |
| } |
| else if (style == 'error-only') |
| { |
| titleSection.innerText += ' with errors' |
| } |
| else if (style == 'error') |
| { |
| titleSection.innerText += ' with errors or warnings' |
| } |
| else if (style == 'site-error') |
| { |
| titleSection.innerText += ' with broken sites' |
| } |
| else if (style == 'resolution-error') |
| { |
| titleSection.innerText += ' with resolution errors' |
| } |
| else if (style == 'iu-error') |
| { |
| titleSection.innerText += ' with installable unit errors' |
| } |
| |
| if (nodeID != null) { |
| style='all'; |
| loadSingleMarketplaceListings(style, url, null, nodeID); |
| } else if (url != null) { |
| style='all'; |
| var marketplaceContentMatch = url.match(/https?:\/\/marketplace\.eclipse\.org\/content\/([^\/?#]*)/); |
| if (marketplaceContentMatch != null) { |
| var id = marketplaceContentMatch[1]; |
| loadSingleMarketplaceListings(style, url, id, nodeID); |
| } |
| } else { |
| loadMarketplaceListings(style, url); |
| } |
| } |
| |
| function updateHref(id, url, tooltip) { |
| var e = document.getElementById(id); |
| if (e != null) { |
| e.href = url; |
| e.setAttribute('tooltip', tooltip.replace(/\//g, '/\u200B')); |
| } |
| } |
| |
| function hide(id) { |
| var e = document.getElementById(id); |
| if (e != null) { |
| document.getElementById(id).style.display = 'none'; |
| } |
| } |
| |
| function updateScheme(id, scheme) { |
| var e = document.getElementById(id); |
| if (e != null) { |
| e.innerHTML = scheme; |
| } |
| } |
| |
| function getOS() { |
| var os='unknown'; |
| var appVersion = navigator.appVersion; |
| if (appVersion.indexOf('Win') !=-1) os = 'win'; |
| else if (appVersion.indexOf('Mac') !=-1) os = 'mac'; |
| else if (appVersion.indexOf('X11') !=-1 || appVersion.indexOf('Linux') !=-1) os = 'linux'; |
| return os; |
| } |
| |
| function expand_collapse(id, navigate) { |
| var e = document.getElementById(id); |
| var f = document.getElementById(id + '_arrow'); |
| if (e.style.display == 'none'){ |
| e.style.display = 'block'; |
| f.innerHTML = '◢'; |
| if (navigate) { |
| e.previousElementSibling.scrollIntoView(); |
| } |
| } else { |
| e.style.display = 'none'; |
| f.innerHTML = '▷'; |
| } |
| } |
| |
| function copyToClipboard(element) { |
| var $temp = $("<textarea>"); |
| $("body").append($temp); |
| $temp.val($(element).text().replaceAll('>', '>\n')).select(); |
| document.execCommand("copy"); |
| $temp.remove(); |
| } |
| |
| function downloadXML(filename, textElement) { |
| var element = document.createElement('a'); |
| element.setAttribute('href', 'data:text/xml;charset=utf-8,' + encodeURIComponent($(textElement).text().replaceAll('>', '>\n'))); |
| element.setAttribute('download', filename); |
| element.style.display = 'none'; |
| document.body.appendChild(element); |
| element.click(); |
| document.body.removeChild(element); |
| } |
| |
| function popup(id) { |
| var popup = document.getElementById('popup'); |
| popup.style.display = 'block'; |
| |
| // Get the source image and insert its "src" as the popup image's "src". |
| var sourceImage = document.getElementById(id); |
| var targetImage = document.getElementById('modal-popup-image'); |
| targetImage.src = sourceImage.src; |
| |
| // Use the source image's "alt" text as a caption. |
| var captionText = document.getElementById('modal-popup-caption'); |
| captionText.innerHTML = sourceImage.alt; |
| |
| // When the user clicks on close button, close the popup. |
| var closeButton = document.getElementsByClassName('modal-popup-close')[0]; |
| closeButton.onclick = function() { |
| popup.style.display = 'none'; |
| } |
| } |
| |
| function popupMessage(image, text) { |
| var popup = document.getElementById('popup'); |
| popup.style.display = 'block'; |
| |
| var targetImage = document.getElementById('modal-popup-image'); |
| targetImage.style.display = 'none'; |
| targetImage.src = image; |
| |
| var captionText = document.getElementById('modal-popup-caption'); |
| captionText.innerHTML = text; |
| captionText.style.textAlign = 'left'; |
| captionText.style.fontSize = '80%'; |
| captionText.style.whiteSpace = 'pre'; |
| |
| // When the user clicks on close button, close the popup. |
| var closeButton = document.getElementsByClassName('modal-popup-close')[0]; |
| closeButton.onclick = function() { |
| popup.style.display = 'none'; |
| } |
| } |
| |
| function summarize(style) |
| { |
| var listingSummary = document.getElementById('listing-summary'); |
| listingSummary.innerText = '<?xml version="1.0" encoding="UTF-8"?>\n<listings' + (style == null ? '' : ' style="' + style + '"') + '>\n' + listingSummary.innerText + '</listings>'; |
| } |
| |
| function loadSingleMarketplaceListings(style, url, id, nodeID) { |
| var request = new XMLHttpRequest(); |
| var fetchURL = "fetch.php?id=" + (id != null ? id : nodeID); |
| request.open('GET', fetchURL, true); |
| request.onreadystatechange = function () { |
| if (request.readyState === 4 && request.status === 200 && request.responseText != null && request.responseText.length > 100) { |
| |
| var progressTextHTML = document.getElementById('progress-text'); |
| progressTextHTML.innerText = 'Analyzing the the catalog'; |
| |
| var parser = new DOMParser(); |
| var xmlDoc = parser.parseFromString(request.responseText, "text/xml"); |
| createMarketplaceListings(xmlDoc, style, url); |
| summarize(style); |
| var expandButton = document.getElementsByClassName('marketplace-section_arrow')[0]; |
| expandButton.onclick(); |
| } |
| }; |
| request.send(); |
| } |
| |
| function loadMarketplaceListings(style, url) { |
| var request = new XMLHttpRequest(); |
| var requestURL = '../marketplace-listings/marketplace.eclipse.org.setup'; |
| request.open('GET', requestURL, true); |
| request.onreadystatechange = function () { |
| if (request.readyState === 4 && request.status === 200 && request.responseText != null && request.responseText.length > 100) { |
| |
| var progressTextHTML = document.getElementById('progress-text'); |
| progressTextHTML.innerText = 'Analyzing the the catalog'; |
| |
| var parser = new DOMParser(); |
| var xmlDoc = parser.parseFromString(request.responseText, "text/xml"); |
| createMarketplaceListings(xmlDoc, style, url); |
| summarize(style); |
| if (url != null) { |
| var expandButton = document.getElementsByClassName('marketplace-section_arrow')[0]; |
| expandButton.onclick(); |
| } |
| } |
| }; |
| request.send(); |
| } |
| |
| function createMarketplaceListings(xmlDoc, style, url) { |
| var projects = xmlDoc.getElementsByTagName('project') ; |
| |
| var progressTextHTML = document.getElementById('progress-text'); |
| progressTextHTML.innerText = 'Processing ' + projects.length + ' lists.'; |
| |
| var count = 0; |
| var displayCount = 0; |
| var warningCount = 0; |
| var errorCount = 0; |
| for (var i = 0; i < projects.length; ++i) { |
| var result = createMarketplaceListing(projects[i], style, url); |
| ++count; |
| if (result != null) { |
| ++displayCount; |
| if (result[0] == 'Error.png') { |
| ++errorCount; |
| } else if (result[0] == 'Warning.png') { |
| ++warningCount; |
| } |
| } |
| } |
| |
| var progressHTML = document.getElementById('progress'); |
| progressHTML.style.display = 'none'; |
| |
| var summarySection = document.getElementById('summary'); |
| summarySection.style.display = 'block'; |
| var summaryCount = document.getElementById('summary-count'); |
| if (style == null) { |
| summaryCount.innerText = displayCount + ' usable '; |
| } else { |
| summaryCount.innerText = count; |
| if (style != 'all') |
| { |
| var displaySummary = document.getElementById('display-summary'); |
| displaySummary.style.display = 'inline-block'; |
| var summaryDisplayCount = document.getElementById('display-count'); |
| summaryDisplayCount.innerText = displayCount; |
| } |
| } |
| |
| if (style != null) { |
| var summaryError = document.getElementById('summary-error'); |
| summaryError.style.display = 'inline-block'; |
| |
| var summaryErrorCount = document.getElementById('summary-error-count'); |
| summaryErrorCount.innerText = errorCount; |
| var summaryWarningCount = document.getElementById('summary-warning-count'); |
| summaryWarningCount.innerText = warningCount; |
| } |
| } |
| |
| function createMarketplaceListing(project, style, url) { |
| var siteURI = null; |
| var siteDetail = project.querySelector("detail[key='siteURI']"); |
| if (siteDetail != null) { |
| siteURI = siteDetail.querySelector('value').textContent; |
| } |
| |
| var marketplaceID = null; |
| var marketplaceIDDetail = project.querySelector("detail[key='marketplaceID']"); |
| if (marketplaceIDDetail != null) { |
| marketplaceID = marketplaceIDDetail.querySelector('value').textContent; |
| } |
| |
| if (url != null && url != siteURI && url != decodeURI(siteURI)) { |
| return null; |
| } |
| |
| var imageURI = null; |
| var xmlImageDetail = project.querySelector("detail[key='imageURI']"); |
| if (xmlImageDetail != null) { |
| imageURI = xmlImageDetail.querySelector('value').textContent; |
| } |
| |
| var title = project.getAttribute('label'); |
| var body= project.querySelector('description').textContent; |
| |
| var mainUpdateURL = null; |
| var mainIUs = new Map(); |
| var mainUpdateURLProblem = null; |
| var bogusIUs = false; |
| var failedResolutions = false; |
| var streamDetails = new Map(); |
| var problem = [null, null]; |
| |
| var p2Task = project.querySelector(':scope > setupTask'); |
| if (p2Task != null) { |
| var repository = p2Task.querySelector('repository'); |
| if (repository != null) { |
| mainUpdateURL = repository.getAttribute('url'); |
| var detailMessage = repository.querySelector("detail[key='message']") |
| if (detailMessage != null) { |
| mainUpdateURLProblem = detailMessage.querySelector('value').textContent; |
| problem[0] = 'Error.png'; |
| problem[1] = mainUpdateURLProblem; |
| } |
| } |
| |
| var requirements = p2Task.querySelectorAll('requirement'); |
| for (var i = 0; i < requirements.length; ++i) { |
| var requirement = requirements[i]; |
| var requirementID = requirement.getAttribute("name"); |
| var requirementName = requirement.querySelector("detail[key='name']"); |
| if (requirementName != null) { |
| var name = requirementName.querySelector('value').textContent; |
| mainIUs.set(requirementID, name); |
| if (name == 'BogusIU') { |
| bogusIUs = true; |
| if (problem[0] == null) { |
| problem[0] = 'Error.png'; |
| problem[1] = "The installable unit with id '" + requirementID + "' cannot be resolved in the repository"; |
| } |
| } |
| } |
| } |
| } |
| |
| if (mainUpdateURLProblem == null) { |
| var streams = project.querySelectorAll('stream'); |
| var successes = 0; |
| for (var i = 0; i < streams.length; ++i) { |
| var success = false; |
| const stream = streams[i]; |
| const data = [ null, null, null, null, null ]; |
| const exception = stream.querySelector("detail[key='exception']"); |
| if (exception == null) { |
| success = true; |
| } else { |
| const reject = stream.querySelector("detail[key='reject']"); |
| data[0] = exception.querySelector('value').textContent; |
| if (reject == null) { |
| failedResolutions = true; |
| if (problem[0] == null) { |
| problem[0] = 'Error.png'; |
| problem[1] = data[0]; |
| } |
| } else { |
| data[1] = 'reject'; |
| } |
| } |
| |
| streamDetails.set(stream.getAttribute('name'), data); |
| |
| var streamP2Task = stream.querySelector('setupTask'); |
| if (streamP2Task != null) { |
| var streamRepository = streamP2Task.querySelector('repository'); |
| var streamUpdateURL = null; |
| var streamUpdateURLProblem = null; |
| if (streamRepository != null) { |
| streamUpdateURL = streamRepository.getAttribute('url'); |
| var streamDetailMessage = streamRepository.querySelector("detail[key='message']") |
| if (streamDetailMessage != null) { |
| success = false; |
| streamUpdateURLProblem = streamDetailMessage.querySelector('value').textContent; |
| if (problem[0] == null) { |
| problem[0] = 'Error.png'; |
| problem[1] = streamUpdateURLProblem; |
| } |
| } |
| } |
| |
| var streamIUs = new Map(); |
| var streamRequirements = streamP2Task.querySelectorAll('requirement'); |
| for (var j = 0; j < streamRequirements.length; ++j) { |
| var streamRequirement = streamRequirements[j]; |
| var streamRequirementID = streamRequirement.getAttribute("name"); |
| var streamRequirementName = streamRequirement.querySelector("detail[key='name']"); |
| if (streamRequirementName != null) { |
| var name = streamRequirementName.querySelector('value').textContent; |
| streamIUs.set(streamRequirementID, name); |
| if (name == 'BogusIU') { |
| bogusIUs = true; |
| if (problem[0] == null) { |
| problem[0] = 'Error.png'; |
| problem[1] = "The installable unit with id '" + streamRequirementID + "' cannot be resolved in the repository"; |
| } |
| } |
| } |
| } |
| |
| data[2] = streamUpdateURL; |
| data[3] = streamUpdateURLProblem; |
| data[4] = streamIUs; |
| } |
| |
| if (success) { |
| ++successes; |
| } |
| |
| if (successes > 0 && problem[0] != null) { |
| problem[0] = "Warning.png"; |
| } |
| } |
| } |
| |
| var prefix = '_' + project.getAttribute('name') + '_'; |
| |
| if (style == 'all' || |
| style == 'error' && problem[0] != null || |
| style == null && problem[0] != 'Error.png' || |
| style == 'warning' && problem[0] == 'Warning.png' || |
| style == 'error-only' && problem[0] == 'Error.png' || |
| style == 'site-error' && mainUpdateURLProblem != null || |
| style == 'iu-error' && bogusIUs || |
| style == 'resolution-error' && mainUpdateURLProblem == null && problem[0] == 'Error.png') { |
| var sectionTemplate = document.getElementById('marketplace-insertion-section'); |
| var section = sectionTemplate.cloneNode(true); |
| var allIDs = section.querySelectorAll("*[id]"); |
| for (var i = 0; i < allIDs.length; ++i) { |
| var element = allIDs[i]; |
| var id = element.getAttribute('id'); |
| element.setAttribute('id', prefix + id); |
| } |
| |
| var id = section.getAttribute('id'); |
| section.setAttribute('id', prefix + section.getAttribute('id')); |
| |
| sectionTemplate.parentNode.insertBefore(section, sectionTemplate); |
| updateMarketplace(prefix, imageURI, siteURI, marketplaceID, title, body, ' and create an installation that includes <b>' + title + '</b>', mainUpdateURL, mainUpdateURLProblem, mainIUs, streamDetails); |
| |
| if (problem[0] != null) { |
| var statusHTML = document.getElementById(prefix +'marketplace-status-image'); |
| if (statusHTML != null) { |
| statusHTML.src = problem[0]; |
| statusHTML.style.display = 'inline-block'; |
| statusHTML.onclick = function() { |
| popupMessage('Error.png', problem[1]); |
| } |
| } |
| } |
| |
| var listingSummary = document.getElementById('listing-summary'); |
| listingSummary.innerText += ' <listing id="' + marketplaceID + '" uri="' + siteURI + '"/>\n'; |
| |
| return problem; |
| } |
| |
| return null; |
| } |
| |
| function updateMarketplace(prefix, imageURI, siteURI, marketplaceID, title, body, instruction, mainUpdateURL, mainUpdateURLProblem, mainIUs, streamDetails) { |
| |
| var init = function() { |
| if (imageURI != null) { |
| var sectionImage = document.getElementById(prefix + 'marketplace-image'); |
| sectionImage.src = imageURI; |
| sectionImage.parentElement.href = siteURI; |
| } |
| |
| var htmlBody = document.getElementById(prefix + 'marketplace-body'); |
| htmlBody.innerHTML = body; |
| |
| if (mainUpdateURL != null) { |
| var repositoryHTML = document.getElementById(prefix +'marketplace-main-repository'); |
| repositoryHTML.style.display = 'block'; |
| |
| var anchorHTML = document.getElementById(prefix +'marketkplace-main-url'); |
| anchorHTML.href = mainUpdateURL; |
| anchorHTML.innerText = mainUpdateURL; |
| |
| if (mainUpdateURLProblem != null) { |
| var problemHTML = document.getElementById(prefix +'marketkplace-main-url-problem'); |
| problemHTML.style.display = 'inline-block'; |
| problemHTML.parentElement.onclick = function() { |
| popupMessage('Error.png', mainUpdateURLProblem); |
| } |
| } |
| } |
| |
| var launchInstaller = document.getElementById(prefix + 'link-installer-launch'); |
| launchInstaller.href = 'eclipse+installer:' + siteURI; |
| |
| var launchInstallerHelp = document.getElementById(prefix + 'link-installer-launch-help'); |
| launchInstallerHelp.href = '../installer/?show=true&url=' + siteURI; |
| |
| var launchMPC = document.getElementById(prefix + 'link-mpc-launch'); |
| launchMPC.href = 'eclipse+mpc://marketplace.eclipse.org/marketplace-client-intro?mpc_install=' + marketplaceID; |
| |
| if (mainIUs.length != 0) { |
| var mainIUHTMLPrototype = document.getElementById(prefix +'marketplace-main-iu'); |
| var mainIUNameHTMLPrototype = document.getElementById(prefix +'marketplace-main-iu-name'); |
| var mainIUHTMLProblemPrototype = document.getElementById(prefix +'marketkplace-main-iu-problem'); |
| |
| for (var [key, value] of mainIUs) { |
| if (value == "BogusIU") { |
| mainIUNameHTMLPrototype.innerText = key; |
| mainIUHTMLProblemPrototype.style.display = 'inline-block'; |
| } else { |
| mainIUNameHTMLPrototype.innerText = value; |
| mainIUHTMLProblemPrototype.style.display = 'none'; |
| } |
| |
| var mainIUHTML = mainIUHTMLPrototype.cloneNode(true); |
| if (value == 'BogusIU') { |
| const bogusIU = key; |
| var popup = function() { |
| popupMessage('Error.png', "The installable unit with id '" + bogusIU + "' cannot be resolved in the repository:\n " + mainUpdateURL); |
| }; |
| |
| mainIUHTML.querySelector('button').onclick = popup; |
| } |
| |
| mainIUHTMLPrototype.parentElement.insertBefore(mainIUHTML, mainIUHTMLPrototype); |
| |
| if (mainUpdateURL != null) { |
| mainIUHTML.style.marginLeft = '1em'; |
| } |
| } |
| |
| mainIUHTMLPrototype.style.display = 'none'; |
| } |
| |
| var streamPrototype = document.getElementById(prefix +'marketplace-stream'); |
| if (streamDetails.length != 0) { |
| for (var [key, value] of streamDetails) { |
| |
| var streamHTML = streamPrototype.cloneNode(true); |
| var streamName= streamHTML.querySelector("*[templateID='marketplace-stream-name']"); |
| var streamProblem = streamHTML.querySelector("*[templateID='marketkplace-stream-problem']"); |
| var streamAnchorHTML = streamHTML.querySelector("*[templateID='marketkplace-stream-url']"); |
| var streamProblemHTML = streamHTML.querySelector("*[templateID='marketkplace-stream-url-problem']"); |
| |
| streamName.innerText = key; |
| |
| const exception = value[0]; |
| const reject = value[1]; |
| const streamURL = value[2]; |
| const streamURLProblem = value[3]; |
| const streamIUs = value[4]; |
| |
| var popup = function () { |
| if (exception != null) { |
| popupMessage('Error.png', exception); |
| } else { |
| popupMessage('Error.png', streamURLProblem); |
| } |
| }; |
| |
| if (exception == null && streamURLProblem == null) { |
| streamProblem.src= 'OK.png'; |
| } else { |
| // todo |
| streamProblem.parentElement.onclick = popup; |
| streamProblem.parentElement.style.display = 'inline-block'; |
| |
| if (reject == 'reject') { |
| streamProblem.src= 'Reject.png'; |
| } else { |
| streamProblem.src= 'Error.png'; |
| } |
| } |
| |
| if (streamURL != null) { |
| streamAnchorHTML.href = streamURL; |
| streamAnchorHTML.innerText = streamURL; |
| streamAnchorHTML.parentElement.style.marginLeft = '1em'; |
| streamAnchorHTML.parentElement.style.display = 'block'; |
| } else { |
| streamAnchorHTML.parentElement.style.display = 'none'; |
| } |
| |
| var streamIUHTMLPrototype = streamHTML.querySelector("*[templateID='marketplace-stream-iu']"); |
| if (streamIUs != null) { |
| for (var [key, value] of streamIUs) { |
| var streamIUHTML = streamIUHTMLPrototype.cloneNode(true); |
| var streamIUNameHTML = streamIUHTML.querySelector("*[templateID='marketplace-stream-iu-name']"); |
| var streamIUHTMLProblem = streamIUHTML.querySelector("*[templateID='marketkplace-stream-iu-problem']"); |
| |
| if (value == "BogusIU") { |
| streamIUNameHTML.innerText = key; |
| streamIUHTMLProblem.style.display = 'inline-block'; |
| } else { |
| streamIUNameHTML.innerText = value; |
| streamIUHTMLProblem.style.display = 'none'; |
| } |
| |
| streamIUHTML.style.display = 'block'; |
| if (value == 'BogusIU') { |
| const badIU = key; |
| var popup = function() { |
| // todo |
| popupMessage('Error.png', "The installable unit with id '" + badIU + "' cannot be resolved in the repository:\n " + streamURL); |
| }; |
| |
| // todo |
| streamIUHTML.querySelector('button').onclick = popup; |
| } |
| |
| streamIUHTMLPrototype.parentElement.insertBefore(streamIUHTML, streamIUHTMLPrototype); |
| |
| if (streamURL != null) { |
| streamIUHTML.style.marginLeft = '2em'; |
| } else { |
| streamIUHTML.style.marginLeft = '1em'; |
| } |
| } |
| } |
| |
| streamIUHTMLPrototype.style.display = 'none'; |
| |
| var problemButton = streamHTML.querySelector('button'); |
| if (exception == null && streamURLProblem == null) { |
| // problemButton.style.display = 'none'; |
| } else { |
| problemButton.style.display = 'inline-block'; |
| problemButton.onclick = popup; |
| } |
| |
| streamPrototype.parentElement.insertBefore(streamHTML, streamPrototype); |
| } |
| } |
| |
| streamPrototype.style.display = 'none'; |
| }; |
| |
| const expandCollapse = function() { |
| if (init != null) { |
| init(); |
| init = null; |
| } |
| expand_collapse(prefix + 'marketplace-section'); |
| } |
| |
| if (imageURI != null) { |
| var smallImage = document.getElementById(prefix + 'marketplace-small-image'); |
| smallImage.src = imageURI; |
| } |
| |
| var button = document.getElementById(prefix + 'marketplace-section_arrow'); |
| button.onclick = expandCollapse; |
| |
| button = document.getElementById(prefix + 'marketplace-title-span'); |
| button.onclick = expandCollapse; |
| |
| var section = document.getElementById(prefix + 'marketplace-insertion-section'); |
| section.style.display = 'block'; |
| |
| var sectionHeader = document.getElementById(prefix + 'marketplace-title-span'); |
| sectionHeader.innerText = title; |
| } |
| </script> |
| </head> |
| |
| <body id="body_solstice"> |
| <header class="header-wrapper" id="header-wrapper"> |
| <div class="clearfix toolbar-container-wrapper"> |
| <div class="container"> |
| <div class="text-right toolbar-row row hidden-print"> |
| </div> |
| </div> |
| </div> |
| <div class="container"> |
| <div class="row" id="header-row"> |
| <div class="col-sm-5 col-md-4" id="header-left"> |
| <div class="wrapper-logo-default"> |
| <a href="https://www.eclipse.org/"> |
| <img class="logo-eclipse-default hidden-xs" alt="Eclipse.org logo" width="160" src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-ide/eclipse_logo_white.svg"/> |
| </a> |
| </div> |
| </div> |
| <div class="col-sm-19 col-md-20 margin-top-10" id="main-menu-wrapper"> |
| <div class="float-right hidden-xs" id="btn-call-for-action"><a href="https://www.eclipse.org/donate/ide?scope=Eclipse%20Installer" class="btn btn-huge btn-primary"><i class="fa fa-star"></i> Donate</a></div> |
| <div class="navbar yamm float-sm-right" id="main-menu"> |
| <div class="navbar-collapse collapse" id="navbar-main-menu"> |
| <ul class="nav navbar-nav"> |
| <li><a href="https://www.eclipse.org/membership/" target="_self">Members</a></li> |
| <li><a href="https://www.eclipse.org/org/workinggroups/" target="_self">Working Groups</a></li> |
| <li><a href="https://www.eclipse.org/projects/" target="_self">Projects</a></li> |
| <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Community <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="https://marketplace.eclipse.org">Marketplace</a></li> |
| <li><a href="https://events.eclipse.org">Events</a></li> |
| <li><a href="https://www.planeteclipse.org/">Planet Eclipse</a></li> |
| <li><a href="https://www.eclipse.org/community/eclipse_newsletter/">Newsletter</a></li> |
| <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li> |
| <li><a href="https://blogs.eclipse.org">Blogs</a></li> |
| </ul> |
| </li> |
| <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Participate <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li> |
| <li><a href="https://www.eclipse.org/forums/">Forums</a></li> |
| <li><a href="https://www.eclipse.org/mail/">Mailing Lists</a></li> |
| <li><a href="https://wiki.eclipse.org/">Wiki</a></li> |
| <li><a href="https://wiki.eclipse.org/IRC">IRC</a></li> |
| <li><a href="https://www.eclipse.org/org/research/">Research</a></li> |
| </ul> |
| </li> |
| <li class="dropdown visible-xs"><a href="#" data-toggle="dropdown" class="dropdown-toggle">Eclipse IDE <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li><a href="https://www.eclipse.org/downloads">Download</a></li> |
| <li><a href="https://www.eclipse.org/eclipseide">Learn More</a></li> |
| <li><a href="https://help.eclipse.org">Documentation</a></li> |
| <li><a href="https://www.eclipse.org/getting_started">Getting Started / Support</a></li> |
| <li><a href="https://www.eclipse.org/contribute/">How to Contribute</a></li> |
| <li><a href="https://www.eclipse.org/ide/">IDE and Tools</a></li> |
| <li><a href="https://www.eclipse.org/forums/index.php/f/89/">Newcomer Forum</a></li> |
| </ul> |
| </li> |
| |
| <!-- More --> |
| <li class="dropdown eclipse-more hidden-xs"> |
| <a data-toggle="dropdown" class="dropdown-toggle" role="button">More<b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li> |
| <!-- Content container to add padding --> |
| <div class="yamm-content"> |
| <div class="row"> |
| <ul class="col-sm-8 list-unstyled"> |
| <li> |
| <p><strong>Community</strong></p> |
| </li> |
| <li><a href="https://marketplace.eclipse.org">Marketplace</a></li> |
| <li><a href="https://events.eclipse.org">Events</a></li> |
| <li><a href="https://www.planeteclipse.org/">Planet Eclipse</a></li> |
| <li><a href="https://www.eclipse.org/community/eclipse_newsletter/">Newsletter</a></li> |
| <li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li> |
| <li><a href="https://blogs.eclipse.org">Blogs</a></li> |
| </ul> |
| <ul class="col-sm-8 list-unstyled"> |
| <li> |
| <p><strong>Participate</strong></p> |
| </li> |
| <li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li> |
| <li><a href="https://www.eclipse.org/forums/">Forums</a></li> |
| <li><a href="https://www.eclipse.org/mail/">Mailing Lists</a></li> |
| <li><a href="https://wiki.eclipse.org/">Wiki</a></li> |
| <li><a href="https://wiki.eclipse.org/IRC">IRC</a></li> |
| <li><a href="https://www.eclipse.org/org/research/">Research</a></li> |
| </ul> |
| <ul class="col-sm-8 list-unstyled"> |
| <li> |
| <p><strong>Eclipse IDE</strong></p> |
| </li> |
| <li><a href="https://www.eclipse.org/downloads">Download</a></li> |
| <li><a href="https://www.eclipse.org/eclipseide">Learn More</a></li> |
| <li><a href="https://help.eclipse.org">Documentation</a></li> |
| <li><a href="https://www.eclipse.org/getting_started">Getting Started / Support</a></li> |
| <li><a href="https://www.eclipse.org/contribute/">How to Contribute</a></li> |
| <li><a href="https://www.eclipse.org/ide/">IDE and Tools</a></li> |
| <li><a href="https://www.eclipse.org/forums/index.php/f/89/">Newcomer Forum</a></li> |
| </ul> |
| </div> |
| </div> |
| </li> |
| </ul> |
| </li> |
| <li class="dropdown eclipse-more main-menu-search"> |
| <a data-toggle="dropdown" class="dropdown-toggle" role="button"><i class="fa fa-search"></i> <b class="caret"></b></a> |
| <ul class="dropdown-menu"> |
| <li> |
| <!-- Content container to add padding --> |
| <div class="yamm-content"> |
| <div class="row"> |
| <div class="col-sm-24"> |
| <p>Search</p> |
| <div class="row"> |
| <div class="col-md-24"> |
| <div id="custom-search-form" class="reset-box-sizing"> |
| <script> |
| (function() { |
| var cx = '011805775785170369411:p3ec0igo0qq'; |
| var gcse = document.createElement('script'); |
| gcse.type = 'text/javascript'; |
| gcse.async = true; |
| gcse.src = (document.location.protocol == 'https:' ? 'https:' : 'http:') + '//cse.google.com/cse.js?cx=' + cx; |
| var s = document.getElementsByTagName('script')[0]; |
| s.parentNode.insertBefore(gcse, s); |
| })(); |
| </script> |
| <gcse:searchbox-only gname="main" resultsUrl="https://www.eclipse.org/home/search.php"></gcse:searchbox-only> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="navbar-header"> |
| <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-main-menu"> |
| <span class="sr-only">Toggle navigation</span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| <span class="icon-bar"></span> |
| </button> |
| <div class="wrapper-logo-mobile"> |
| <a class="navbar-brand visible-xs" href="https://www.eclipse.org/"> |
| <img class="logo-eclipse-default-mobile img-responsive" alt="Eclipse.org logo" width="160" src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-ide/eclipse_logo_white.svg"/> |
| </a> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </div> |
| </header> |
| |
| <section class="default-breadcrumbs hidden-print breadcrumbs-default-margin" id="breadcrumb"> |
| <div class="container"> |
| <h3 class="sr-only">Breadcrumbs</h3> |
| <div class="row"> |
| <div class="col-sm-24"> |
| <ol class="breadcrumb"> |
| <li><a href="/">Home</a></li> |
| <li><a href="https://www.eclipse.org/oomph/">Oomph</a></li> |
| <li><a href="https://wiki.eclipse.org/Oomph">Marketplace</a></li> |
| </ol> |
| </div> |
| </div> |
| </div> |
| </section> |
| |
| <main> |
| <div class="novaContent container legacy-page" id="novaContent"> |
| <div class="row"> |
| <div class="col-md-18"> |
| <div id="maincontent"> |
| <div id="midcolumn" style="padding: 0;"> |
| <div class="homeitem3col"> |
| <div style="text-align: right; margin-top: -1.5ex; margin-bottom: -3ex; margin-right: -1.5em;"> |
| <a href="https://wiki.eclipse.org/Oomph" target="oomph_wiki"><img id="brand-image" style="width: 4ex; height: 4ex;" src="../installer/oomph256.png"/></a> |
| </div> |
| |
| |
| <h3 class="section-header"> |
| <button id="mpc_arrow" class="orange bb" onclick="expand_collapse('mpc');">◢</button> |
| <img style="height: 2.5ex;" src="https://marketplace.eclipse.org/sites/default/files/styles/ds_medium/public/mpc-logo-marketplace.png?itok=F0Yk3YlX"/> |
| <span style=" font-variant: small-caps;">Marketplace.Eclipse.org <span id="title">listings</span></span> |
| </h3> |
| <div class="toggle-target" id="mpc"> |
| <p> |
| The |
| <a class="help-link" style="font-family: Arial, Helvetica, sans-serif;" href="https://marketplace.eclipse.org/" target="eclipse_marketplace"><span style="color: #2c2255;">eclipse market</span><span class="orange">place</span></a> |
| provides a large number of listings that can be installed into an existing |
| <a class="help-link" style="font-family: Arial, Helvetica, sans-serif; white-space: nowrap;" href="https://www.eclipse.org/downloads/packages/" target="eclipse_downloads"><span style="color: #2c2255;">eclipse</span> <span class="orange">IDE</span></a> |
| or can be added to the |
| <a class="help-link" style="font-family: Arial, Helvetica, sans-serif; white-space: nowrap;" href="https://www.eclipse.org/setups/installer/?url=https://marketplace.eclipse.org/content/eclipse-marketplace-client" target="eclipse_installer"><span style="color: #2c2255;">eclipse</span> <span class="orange">installer</span></a> |
| while creating a new installation. |
| </p> |
| <p id="summary" style="display: none;"> |
| There are a total of <span id="summary-count">1000+</span> listings<span id="display-summary" style="display:none;">, <span id="display-count">0</span> displayed</span><span id="summary-error" style="display: none;">, <span id="summary-error-count">0</span> of which contain errors and <span id="summary-warning-count">0</span> of which contain warnings</span>. |
| </p> |
| <pre id="listing-summary" style="display: none;"></pre> |
| </div> |
| <hr class="clearer"/> |
| |
| <div id="progress"> |
| <p id="progress-text"> |
| The catalog is being loaded. |
| </p> |
| <div class="loader"></div> |
| <hr class="clearer"/> |
| </div> |
| |
| <div id="marketplace-insertion-section" class="marketplace-insertion-section"> |
| <h3 id="marketplace-title" class="section-header marketplace-title"> |
| <button id="marketplace-section_arrow" class="orange bb marketplace-section_arrow" onclick="expand_collapse('marketplace-section');">▷</button> |
| <img id="marketplace-small-image" class="marketplace-small-image" src="Configuration.png"/> |
| <href id="marketplace-title-span" class="marketplace-title-span bb" onclick="expand_collapse('marketplace-section');"></href> |
| <button class="bb"><img id="marketplace-status-image" style="display: none;" class="marketplace-small-image" src="Error.png"/></button> |
| </h3> |
| <div id="marketplace-section" class="marketplace-section" style="display: none;"> |
| |
| <div style=" overflow: hidden;"> |
| <a href="" target="marketplace_listing"><img id="marketplace-image" class="marketplace-image" src=""/></a> |
| <div id="marketplace-body" class="marketplace-body"></div> |
| </div> |
| |
| <div style="padding-bottom: 2ex;"> |
| <span id="marketplace-launch" style="font-family: Arial, Helvetica, sans-serif;"> |
| <a id="link-installer-launch" class="button" href="eclipse+installer:"><span style="color: #2c2255;">eclipse</span>+installer</a> |
| <a id="link-installer-launch-help" class="help-link" href="../installer/" target="eclipse_installer"><img class="help" src="../installer/Help.png"/></a> |
| <a id="link-mpc-launch" class="button" href="eclipse+mpc:" style="margin-left: 1em;"><span style="color: #2c2255;">eclipse</span>+mpc</a> |
| </span> |
| </div> |
| |
| <div> |
| <div id="marketplace-main-repository" style="display: none;"> |
| <img class="marketplace-small-image" src="Repository.png"/> |
| <a href="" id="marketkplace-main-url" class="marketplace-main-url" target="marketplace_site"></a> |
| <button class="bb" onclick=""><img id="marketkplace-main-url-problem" style="display: none;" class="marketplace-small-image" src="Error.png"/></button> |
| </div> |
| </div> |
| |
| <div> |
| <div id="marketplace-main-iu" style="display: block;"> |
| <img class="marketplace-small-image" src="Feature.png"/> |
| <span id="marketplace-main-iu-name" class="marketplace-main-iu-name"></span> |
| <button class="bb" onclick=""><img id="marketkplace-main-iu-problem" style="display: inline-block;" class="marketplace-small-image" src="Error.png"></button> |
| </div> |
| </div> |
| |
| <div> |
| <div id="marketplace-stream" templateID="marketplace-stream" style="display: block;"> |
| <img class="marketplace-small-image" src="Version.png"/> |
| <span templateID="marketplace-stream-name" class="marketplace-stream-name"></span> |
| <button class="bb" onclick=""><img templateID="marketkplace-stream-problem" style="display: inline-block;" class="marketplace-small-image" src="Error.png"></button> |
| |
| <div> |
| <div templateID="marketplace-stream-repository" style="display: block;"> |
| <img class="marketplace-small-image" src="Repository.png"/> |
| <a href="" templateID="marketkplace-stream-url" class="marketplace-stream-url" target="marketplace_site"></a> |
| <button class="bb" onclick=""><img templateID="marketkplace-stream-url-problem" style="display: none;" class="marketplace-small-image" src="Error.png"/></button> |
| </div> |
| </div> |
| |
| <div> |
| <div templateID="marketplace-stream-iu" style="display: block;"> |
| <img class="marketplace-small-image" src="Feature.png"/> |
| <span templateID="marketplace-stream-iu-name" class="marketplace-stream-iu-name"></span> |
| <button class="bb" onclick=""><img templateID="marketkplace-stream-iu-problem" style="display: inline-block;" class="marketplace-small-image" src="Error.png"></button> |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| </div> |
| <hr class="url-required clearer"/> |
| </div> |
| |
| <div id="popup" class="modal-popup"> |
| <span class="modal-popup-close">×</span> |
| <img class="modal-popup-content" id="modal-popup-image"/> |
| <div id="modal-popup-caption"></div> |
| </div> |
| |
| </div> |
| </div> |
| </div> |
| </div> |
| |
| |
| <div class="col-md-6"> |
| <!-- nav --> |
| <aside class="main-sidebar-default-margin" id="main-sidebar"> |
| <ul id="leftnav" class="ul-left-nav fa-ul hidden-print"> |
| <li class="separator"> |
| <a class="separator"> |
| <button id="copy" title="Copy Listing Summary to Clipboard" class="orange" style="background-color: transparent; border: none; padding: 0px 0px;" onclick="copyToClipboard('#listing-summary');">✎</button> |
| <a id="download" title="Download Listing Summary" href="" class="orange" style="color: DarkOrange;" onclick="downloadXML('list-report.xml', '#listing-summary');">⇩</a> |
| Reports |
| </a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?">Usuable Listings</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=all">All Listings</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=warning">Listings with Warnings</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=error-only">Listings with Errors</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=error">Listings with Errors or Warnings</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=site-error">Listings with Broken Sites</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=resolution-error">Listings with Resolution Errors</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"/></i> |
| <a href="?style=iu-error">Listings with Unit Errors</a> |
| </li> |
| <li class="separator">Community</li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"></i> |
| <a href="https://www.eclipse.org/forums/index.php/f/287/" target="oomph_forum">Ask a Question</a> |
| </li> |
| <li> |
| <i class="fa fa-caret-right fa-fw"></i> |
| <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=Oomph&component=Setup&short_desc=Marketplace%20reports" target="oomph_bugzilla">Report a Problem</a> |
| </li> |
| </ul> |
| </aside> |
| </div> |
| </div> |
| </div> |
| </main> |
| |
| <!-- Placed at the end of the document so the pages load faster --> |
| <script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/main.min.js?var=1.3"></script> |
| |
| </body> |
| |
| </html> |