diff options
Diffstat (limited to 'winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin')
4 files changed, 355 insertions, 0 deletions
diff --git a/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/adminindex.jsp b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/adminindex.jsp new file mode 100644 index 0000000..c7ee9f7 --- /dev/null +++ b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/adminindex.jsp @@ -0,0 +1,41 @@ +<%-- +/******************************************************************************* + * Copyright (c) 2012-2013 University of Stuttgart. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Oliver Kopp - initial API and implementation and/or initial documentation + *******************************************************************************/ +--%> +<%@taglib prefix="t" tagdir="/WEB-INF/tags" %> +<%@page import="org.eclipse.winery.repository.resources.SubMenuData"%> + +<% +java.util.List<SubMenuData> subMenus = new java.util.ArrayList<SubMenuData>(); + +SubMenuData data; + +data = new SubMenuData("#namespaces", "Namespaces"); +subMenus.add(data); + +data = new SubMenuData("#repository", "Repository"); +subMenus.add(data); + +data = new SubMenuData("#planlanguages", "Plan Languages"); +subMenus.add(data); + +data = new SubMenuData("#plantypes", "Plan Types"); +subMenus.add(data); + +data = new SubMenuData("#constrainttypes", "Constraint Types"); +subMenus.add(data); +%> + +<%-- TODO: do not use componentinstance, but introduce a layer inbetween componentinstance.tag and genericpage.tag --%> + +<t:componentinstance windowtitle="Admin" cssClass="mainContentContainer admin" selected="admin" subMenus="<%=subMenus%>"> +</t:componentinstance> diff --git a/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/namespaces.jsp b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/namespaces.jsp new file mode 100644 index 0000000..e80ad1d --- /dev/null +++ b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/namespaces.jsp @@ -0,0 +1,108 @@ +<%-- +/******************************************************************************* + * Copyright (c) 2012-2013 University of Stuttgart. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Oliver Kopp - initial API and implementation and/or initial documentation + * Yves Schubert - switch to bootstrap 3 + *******************************************************************************/ +--%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://www.eclipse.org/winery/repository/functions" prefix="w" %> +<script> +var namespacePrefixesTableInfo = { + id : '#namespacePrefixesTable' +}; + +$(function() { + require(["winery-support"], function(ws) { + ws.initTable(namespacePrefixesTableInfo); + }); +}); + +function addNSprefix() { + $.ajax({ + url: "${pageContext.request.contextPath}/admin/namespaces/", + type: "POST", + async: false, + data: $('#addNamespacePrefixForm').serialize(), + error: function(jqXHR, textStatus, errorThrown) { + vShowAJAXError("Could not add namespace prefix", jqXHR, errorThrown); + }, + success: function(data, textSTatus, jqXHR) { + namespacePrefixesTableInfo.table.fnAddData([$('#nsPrefixAdded').val(), $('#namespaceAdded').val()]); + $('#addNamespacePrefixDiag').modal('hide'); + vShowSuccess("Successfully added namespace prefix."); + } + }); +} + +</script> + +<div class="modal fade" id="addNamespacePrefixDiag"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title">Add namespace prefix</h4> + </div> + <div class="modal-body"> + <form id="addNamespacePrefixForm" enctype="multipart/form-data"> + <fieldset> + <div class="form-group"> + <label for="nsPrefixAdded">Prefix</label> + <input name="nsPrefix" id="nsPrefixAdded" class="form-control" type="text" /> + </div> + + <div class="form-group"> + <label for="namespaceAdded">Namespace</label> + <input name="namespace" id="namespaceAdded" class="form-control" type="text" /> + </div> + </fieldset> + </form> + </div> + + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> + <button type="button" class="btn btn-primary" onclick="addNSprefix()">Add</button> + </div> + </div> + </div> +</div> + +<div id="namespaces"> + <div class="listheading"> + <label>Defined Prefixes for Namespaces</label> + <button class="rightbutton btn btn-danger btn-xs" type="button" onclick="deleteOnServerAndInTable(namespacePrefixesTableInfo, 'namespace', 'namespaces/', 1);">Remove</button> + <button class="rightbutton btn btn-primary btn-xs" type="button" onclick="$('#addNamespacePrefixDiag').modal('show')">Add</button> + </div> + <table cellpadding="0" cellspacing="0" border="0" class="display" id="namespacePrefixesTable"> + <thead> + <tr> + <th>Prefix</th> + <th>Namespace</th> + </tr> + </thead> + <tbody> + <c:forEach var="ns" items="${it.namespacesForJSP}"> + <tr> + <td class="prefix">${w:getPrefix(ns.decoded)}</td> + <td>${ns.decoded}</td> + </tr> + </c:forEach> + </tbody> + </table> +</div> + +<script> +$(document).on("click", "td.prefix", + vCreateTdClickFunction( + "${pageContext.request.contextPath}/admin/namespaces/", + "nsPrefix", + "namespace")); +</script> diff --git a/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/repository.jsp b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/repository.jsp new file mode 100644 index 0000000..446bd46 --- /dev/null +++ b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/repository.jsp @@ -0,0 +1,101 @@ +<%-- +/******************************************************************************* + * Copyright (c) 2012-2013 University of Stuttgart. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Oliver Kopp - initial API and implementation and/or initial documentation + *******************************************************************************/ +--%> +<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> + +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> +<%@taglib prefix="t" tagdir="/WEB-INF/tags" %> + +<h4>General Repository Commands</h4> +<div> + <a href="repository/?dump" class="btn btn-primary">Dump Repository</a> + <button class="btn btn-danger" onclick="clearRepository();" id="btnclearrepository" data-loading-text="Deleting...">Clear Repository</button> + <button class="btn btn-default" onclick="$('#upRepoZipDiag').modal('show');">Import Repository</button> +</div> + +<% +org.eclipse.winery.repository.backend.IRepository rep; +rep = org.eclipse.winery.repository.Prefs.INSTANCE.getRepository(); +boolean isGitBasedRepo = (rep instanceof org.eclipse.winery.repository.backend.filebased.GitBasedRepository); + +org.eclipse.winery.repository.backend.filebased.GitBasedRepository repo = null; +if (isGitBasedRepo) { + repo = (org.eclipse.winery.repository.backend.filebased.GitBasedRepository) rep; +} + +// We only support the commit and reset buttons if we can authenticate at the repository +// This is a hack to offer different versions of winery at dev.winery.opentosca.org and winery.opentosca.org +isGitBasedRepo = isGitBasedRepo && (repo.authenticationInfoAvailable()); + +if (isGitBasedRepo) { +%> +<h4>Versioning</h4> +<div> +<button id="commitBtn" class="btn btn-default" onclick="doCommit();" data-loading-text="committing...">Commit</button> +<button id="resetBtn" class="btn btn-danger" onclick="doReset();" data-loading-text="resetting...">Reset</button> +</div> + +<script> +function doCommit() { + $("#commitBtn").button("loading"); + $.ajax({ + url: "repository/?commit", + async: false, + error: function(jqXHR, textStatus, errorThrown) { + $("#commitBtn").button("reset"); + vShowAJAXError("Could not commit", jqXHR, errorThrown); + }, + success: function(data, textSTatus, jqXHR) { + $("#commitBtn").button("reset"); + vShowSuccess("Successfully committed changes."); + } + }); +} + +function doReset() { + $("#resetBtn").button("loading"); + $.ajax({ + url: "repository/?reset", + async: false, + error: function(jqXHR, textStatus, errorThrown) { + $("#resetBtn").button("reset"); + vShowAJAXError("Could not reset", jqXHR, errorThrown); + }, + success: function(data, textSTatus, jqXHR) { + $("#resetBtn").button("reset"); + vShowSuccess("Successfully reset to last known state."); + } + }); +} +</script> +<% +} +%> + +<t:simpleSingleFileUpload + title="Upload Repository Content" + text="Repository dump file" + URL="repository/" + type="POST" + id="upRepoZip" + accept="application/zip" /> + +<script> +function clearRepository() { + deleteResource('the complete repository', 'repository/', + function() {$("#btnclearrepository").button("reset");}, + function() {$("#btnclearrepository").button("reset");}, + function() {$("#btnclearrepository").button("loading");} + ); +} +</script> diff --git a/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/types/types.jsp b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/types/types.jsp new file mode 100644 index 0000000..25b2e0f --- /dev/null +++ b/winery/org.eclipse.winery.repository/src/main/webapp/jsp/admin/types/types.jsp @@ -0,0 +1,105 @@ +<%-- +/******************************************************************************* + * Copyright (c) 2012-2013 University of Stuttgart. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Oliver Kopp - initial API and implementation and/or initial documentation + * Yves Schubert - switch to bootstrap 3 + *******************************************************************************/ +--%> +<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> + +<div class="listheading"> + <button class="rightbutton btn btn-danger btn-sm" type="button" onclick="deleteOnServerAndInTable(typesTableInfo, 'Type', '${it.URL}', 1);">Remove</button> + <button class="rightbutton btn btn-primary btn-sm" type="button" onclick="$('#addTypeShortnameDiag').modal('show');">Add</button> +</div> + +<table id="typeswithshortnametable"> + +<thead> + <tr> + <th>Short name</th> + <th>Long Name</th> + </tr> +</thead> + +<tbody> + <c:forEach var="type" items="${it.types}"> + <tr> + <td class="shortname editable">${type.shortName}</td> + <td>${type.type}</td> + </tr> + </c:forEach> +</tbody> + +</table> + + +<div class="modal fade" id="addTypeShortnameDiag"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title">Add short name</h4> + </div> + <div class="modal-body"> + <form id="addTypeShortnameForm" enctype="multipart/form-data"> + <fieldset> + <div class="form-group"> + <label for="shortname">Short name</label> + <input name="shortname" id="shortname" class="form-control" type="text" /> + </div> + <div class="form-group"> + <label for="type">Type</label> + <input name="type" id="type" class="form-control" type="text" /> + </div> + </fieldset> + </form> + </div> + + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> + <button type="button" class="btn btn-primary" onclick="addShortNameAndType();">Add</button> + </div> + </div> + </div> +</div> + + +<script> +$(document).on("click", "td.shortname", + vCreateTdClickFunction( + "${it.URL}", + "shortname", + "type")); + +var typesTableInfo = { + id: '#typeswithshortnametable' +}; +require(["winery-support"], function(ws) { + ws.initTable(typesTableInfo); +}); + +function addShortNameAndType() { + $.ajax({ + url: "${it.URL}", + type: "POST", + async: false, + data: $('#addTypeShortnameForm').serialize(), + error: function(jqXHR, textStatus, errorThrown) { + vShowAJAXError("Could not add type information", jqXHR, errorThrown); + }, + success: function(data, textSTatus, jqXHR) { + typesTableInfo.table.fnAddData([$('#shortname').val(), $('#type').val()]); + $('#addTypeShortnameDiag').modal('hide'); + vShowSuccess("Successfully added type information."); + } + }); +} + +</script> |