[java-identity-provider] branch main updated: IDP-2002 - Migrate all unmanaged config files into core module

Scott Cantor cantor.2 at osu.edu
Thu May 11 13:48:56 UTC 2023


This is an automated email from the git hooks/post-receive script.

scantor pushed a commit to branch main
in repository java-identity-provider.

View the commit online:
http://git.shibboleth.net/view/?p=java-identity-provider.git;a=commit;h=525ffe3b014fcb225a5732e2aa89b3cdd362a996

The following commit(s) were added to refs/heads/main by this push:
     new 525ffe3b0 IDP-2002 - Migrate all unmanaged config files into core module
525ffe3b0 is described below

commit 525ffe3b014fcb225a5732e2aa89b3cdd362a996
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Thu May 11 09:48:52 2023 -0400

    IDP-2002 - Migrate all unmanaged config files into core module
    
    https://shibboleth.atlassian.net/browse/IDP-2002
    
    New module for edit-webapp content.
    For now, files copied from idp-war into module source tree.
---
 .../idp/module/core/impl/EditWebApp.java           |  50 ++
 .../services/net.shibboleth.idp.module.IdPModule   |   1 +
 .../idp/module/core/impl/module.properties         |  18 +
 .../idp/module/edit-webapp/css/logout.css          |  20 +
 .../idp/module/edit-webapp/css/placeholder.css     | 802 +++++++++++++++++++++
 .../module/edit-webapp/images/failure-32x32.png    | Bin 0 -> 2580 bytes
 .../module/edit-webapp/images/placeholder-logo.png | Bin 0 -> 2525 bytes
 .../module/edit-webapp/images/success-32x32.png    | Bin 0 -> 2448 bytes
 .../shibboleth/idp/module/edit-webapp/index.jsp    |  31 +
 9 files changed, 922 insertions(+)

diff --git a/idp-conf-impl/src/main/java/net/shibboleth/idp/module/core/impl/EditWebApp.java b/idp-conf-impl/src/main/java/net/shibboleth/idp/module/core/impl/EditWebApp.java
new file mode 100644
index 000000000..08f0eb758
--- /dev/null
+++ b/idp-conf-impl/src/main/java/net/shibboleth/idp/module/core/impl/EditWebApp.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the University Corporation for Advanced Internet Development,
+ * Inc. (UCAID) under one or more contributor license agreements.  See the
+ * NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The UCAID licenses this file to You under the Apache
+ * License, Version 2.0 (the "License"); you may not use this file except in
+ * compliance with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package net.shibboleth.idp.module.core.impl;
+
+import java.io.IOException;
+
+import javax.annotation.Nonnull;
+
+import net.shibboleth.idp.module.IdPModule;
+import net.shibboleth.idp.module.ModuleContext;
+import net.shibboleth.idp.module.ModuleException;
+import net.shibboleth.idp.module.impl.CoreIdPModule;
+
+/**
+ * {@link IdPModule} implementation.
+ */
+public final class EditWebApp extends CoreIdPModule {
+
+    /**
+     * Constructor.
+     *  
+     * @throws ModuleException on error
+     * @throws IOException on error
+     */
+    public EditWebApp() throws IOException, ModuleException {
+        super(EditWebApp.class);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public boolean isEnabled(@Nonnull final ModuleContext moduleContext) {
+        return true;
+    }
+
+}
\ No newline at end of file
diff --git a/idp-conf-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule b/idp-conf-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule
index 68cd53d74..417916eda 100644
--- a/idp-conf-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule
+++ b/idp-conf-impl/src/main/resources/META-INF/services/net.shibboleth.idp.module.IdPModule
@@ -1,4 +1,5 @@
 net.shibboleth.idp.module.core.impl.Core
+net.shibboleth.idp.module.core.impl.EditWebApp
 net.shibboleth.idp.module.core.impl.UserPrefs
 
 net.shibboleth.idp.module.authn.impl.Duo
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/core/impl/module.properties b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/core/impl/module.properties
index 6703a80fe..0ba99b741 100644
--- a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/core/impl/module.properties
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/core/impl/module.properties
@@ -3,6 +3,24 @@
 # Class to Module ID mappings
 net.shibboleth.idp.module.core.impl.Core = idp.Core
 net.shibboleth.idp.module.core.impl.UserPrefs = idp.UserPrefs
+net.shibboleth.idp.module.core.impl.EditWebApp = idp.EditWebApp
+
+idp.EditWebApp.name = Overlay Tree for WAR Build
+idp.EditWebApp.desc = Tree allowing overlay of files into the WAR build process
+idp.EditWebApp.url = /
+idp.EditWebApp.1.src = /net/shibboleth/idp/module/edit-webapp/css/placeholder.css
+idp.EditWebApp.1.dest = edit-webapp/css/placeholder.css
+idp.EditWebApp.2.src = /net/shibboleth/idp/module/edit-webapp/css/logout.css
+idp.EditWebApp.2.dest = edit-webapp/css/logout.css
+idp.EditWebApp.3.src = /net/shibboleth/idp/module/edit-webapp/images/placeholder-logo.png
+idp.EditWebApp.3.dest = edit-webapp/images/placeholder-logo.png
+idp.EditWebApp.4.src = /net/shibboleth/idp/module/edit-webapp/images/failure-32x32.png
+idp.EditWebApp.4.dest = edit-webapp/images/failure-32x32.png
+idp.EditWebApp.5.src = /net/shibboleth/idp/module/edit-webapp/images/success-32x32.png
+idp.EditWebApp.5.dest = edit-webapp/images/success-32x32.png
+idp.EditWebApp.6.src = /net/shibboleth/idp/module/edit-webapp/index.jsp
+idp.EditWebApp.6.dest = edit-webapp/index.jsp
+
 
 idp.UserPrefs.name = User Preferences Flow
 idp.UserPrefs.desc = Flow that renders a view allowing manipulation of preference cookies
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/css/logout.css b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/css/logout.css
new file mode 100644
index 000000000..5cd06c1a1
--- /dev/null
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/css/logout.css
@@ -0,0 +1,20 @@
+/* Success/Failure indicators for logout propagation. */
+ol li:before {
+    content: ''
+}
+li.logout {
+    line-height: 36px;
+    padding-left: 36px;
+}
+li.logout.success {
+    background: url(../images/success-32x32.png) no-repeat left center;
+}
+li.logout.failure {
+    background: url(../images/failure-32x32.png) no-repeat left center;
+}
+li.logout.pending{
+
+}
+li.logout.na {
+    background: url(../images/failure-32x32.png) no-repeat left center;
+}
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/css/placeholder.css b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/css/placeholder.css
new file mode 100644
index 000000000..c1dbe1c11
--- /dev/null
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/css/placeholder.css
@@ -0,0 +1,802 @@
+/* Colours pallet
+
+To change the colours, use find and replace with the values below:
+
+ #ECEFF1 - Body background, header / section border, read only / disabled input fields.
+
+ #1534E3 - Links, buttons, list items, selected radio, selected checkbox.
+
+ #1A237E - Hover buttons.
+
+ #32424A - Body text, input fields border.
+ 
+ #7A2D00 - Output message.
+ 
+ #B50024 - Error messages / fields.
+ 
+ #1C7D40 - Success messages / fields.
+ 
+ #999999 - read only / disabled input fields.
+
+*/
+
+html, html * {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+  box-sizing: border-box;
+  background: none;
+  background-repeat: no-repeat;
+  background-position: left top;
+  border: 0;
+  outline: 0;
+}
+
+html {
+  height: 100%;
+}
+
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section, main {
+  display: block;
+}
+
+/* Default document styles - fonts, font sizes, text colours, font weight */
+body {
+  font-family: Segoe UI, Helvetica, Arial, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol;
+  font-size: 16px;
+  font-size: 1rem;
+  line-height: 24px;
+  line-height: 1.5rem;
+  color: #32424a;
+  font-weight: 400;
+  max-width: 3000px;
+  margin: 0 auto;
+  background-color: #eceff1;
+  padding: 24px;
+}
+
+/* Links */
+a[href] {
+  text-decoration: none;
+  color: #1534e3;
+}
+
+/* Link hover states */
+a[href]:hover, a[href]:active, a[href]:focus {
+  text-decoration: underline;
+  color: #1534e3;
+}
+
+/* Heading styles */
+h1 {
+  font-size: 24px;
+  font-size: 1.5rem;
+  line-height: 28px;
+  line-height: 1.75rem;
+  font-weight: 700;
+}
+
+h2 {
+  font-size: 20px;
+  font-size: 1.25rem;
+  line-height: 25px;
+  line-height: 1.5rem;
+  font-weight: 400;
+}
+
+h3 {
+  font-size: 16px;
+  font-size: 1rem;
+  line-height: 22px;
+  line-height: 1.375rem;
+  font-weight: 700;
+}
+
+h4 {
+  font-size: 14px;
+  font-size: 0.875rem;
+  line-height: 18px;
+  line-height: 1.125rem;
+  font-weight: 700;
+  margin-bottom: 0.5em;
+}
+
+h5 {
+  font-size: 14px;
+  font-size: 0.875rem;
+  line-height: 18px;
+  line-height: 1.125rem;
+  font-weight: 400;
+}
+
+h1, h2, h3, h4, h5, h6, p {
+  margin-bottom: 1em;
+}
+
+h1:last-child, h2:last-child, h3:last-child, h4:last-child, h5:last-child, h6:last-child, p:last-child {
+  margin-bottom: 0px;
+}
+
+/* List styles */
+ol, ul {
+  list-style: none;
+  margin: 20px 0;
+}
+
+ol:before, ol:after,
+ul:before, ul:after {
+  content: " ";
+  display: table;
+}
+
+ol:after,
+ul:after {
+  clear: both;
+}
+
+ol:last-child,
+ul:last-child {
+  margin-bottom: 0px;
+}
+
+ol:first-child,
+ul:first-child {
+  margin-top: 0px;
+}
+
+ul li {
+  padding-left: 22px;
+  margin-bottom: 4px;
+  position: relative;
+  list-style: none;
+}
+
+ul li:last-child {
+  margin-bottom: 0px;
+}
+
+ul li:before {
+  content: '';
+  -webkit-border-radius: 2px;
+  -ms-border-radius: 2px;
+  -moz-border-radius: 2px;
+  -o-border-radius: 2px;
+  border-radius: 2px;
+  background-color: #1534e3;
+  height: 7px;
+  width: 7px;
+  display: block;
+  position: absolute;
+  left: 0;
+  top: 7px;
+}
+
+ol {
+  counter-reset: item;
+}
+
+ol li {
+  padding-left: 22px;
+  margin-bottom: 10px;
+  position: relative;
+  list-style: none;
+}
+
+ol li:last-child {
+  margin-bottom: 0px;
+}
+
+ol li:before {
+  color: #1534e3;
+  position: absolute;
+  left: 0;
+  content: counter(item) ". ";
+  counter-increment: item;
+  font-weight: 700;
+  top: 1px;
+}
+
+ol li:nth-child(n+10) {
+  padding-left: 30px;
+}
+
+ol li:nth-child(n+100) {
+  padding-left: 38px;
+}
+
+hr {
+  width: 100%;
+  clear: both;
+  border: 0;
+  outline: 0;
+  background-color: #eceff1;
+  height: 1px;
+  display: block;
+  margin: 30px 0;
+}
+
+b, strong {
+  font-weight: 700;
+}
+
+i, em {
+  font-style: italic;
+}
+
+small {
+  font-size: 0.8em;
+}
+
+big {
+  font-size: 1.2em;
+}
+
+.cc {
+  clear: both;
+  margin: 0 auto;
+  width: 100%;
+  max-width: 649px;
+  padding: 0 0;
+}
+
+.cc:before, .cc:after {
+  content: " ";
+  display: table;
+}
+
+.cc:after {
+  clear: both;
+}
+
+img {
+  max-width: 100%;
+  height: auto;
+}
+
+/* Main content area */
+main {
+  clear: both;
+  margin: 0 auto;
+  width: 100%;
+  max-width: 800px;
+  background-color: #fff;
+  -webkit-border-radius: 8px;
+  -ms-border-radius: 8px;
+  -moz-border-radius: 8px;
+  -o-border-radius: 8px;
+  border-radius: 8px;
+  -webkit-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  -ms-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  -moz-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  -o-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+}
+
+/* Add a border top when 2 sections are together */
+main section + section {
+  border-top: 1px solid #eceff1;
+}
+
+/* Header */
+header {
+  display: block; /* Change to display: none to hide */
+  border-bottom: 1px solid #eceff1;
+  text-align: center;
+  padding: 6% 8%;
+}
+
+header .main-logo {
+  display: block;
+  margin: 0 auto;
+}
+
+.service-logo {
+	display: block;
+	margin: 24px 0;
+}
+
+section {
+  padding: 4% 8% 4% 8%;
+}
+
+/* Output Messages */
+.output-message {
+  font-size: 14px;
+  font-size: 0.875rem;
+  line-height: 18px;
+  line-height: 1.125rem;
+  font-style: italic;
+  -webkit-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  background-color: #FFD8C2;
+  display: block;
+  padding: 4%;
+  margin-bottom: 20px;
+  color: #7A2D00;
+}
+
+.output-message:last-child {
+  margin-bottom: 0px;
+}
+
+/* Output Message Success */
+.output-message.output--success {
+  background-color: #DCF9E7;
+  color: #1C7D40;
+}
+
+/* Output Message Error */
+.output-message.output--error {
+  background-color: #FFF0F3;
+  color: #B50024;
+}
+
+.boxed {
+  -webkit-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  -ms-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  -moz-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  -o-box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  box-shadow: 0px 0px 10px 0px rgba(38, 50, 56, 0.11);
+  background-color: #fff;
+  padding: 6%;
+  margin: 30px 0;
+}
+
+.boxed:last-child {
+  margin-bottom: 0px;
+}
+
+.boxed:first-child {
+  margin-top: 0px;
+}
+
+/* Footer style */
+footer {
+  z-index: 1;
+  position: relative;
+  text-align: center;
+  margin-top: 20px;
+  font-size: 12px;
+  font-size: 0.75rem;
+  line-height: 16px;
+  line-height: 1rem;
+}
+
+/* Forms styles */
+fieldset {
+  display: block;
+  margin-bottom: 20px;
+}
+
+fieldset:last-child {
+  margin-bottom: 0px;
+}
+
+fieldset .field-validation {
+  display: block;
+  margin-top: 10px;
+}
+
+fieldset .error {
+  color: #B50024;
+}
+
+fieldset legend span {
+  display: block;
+  text-indent: 100%;
+  white-space: nowrap;
+  overflow: hidden;
+  height: 0;
+}
+
+/* Form labels */
+label {
+  vertical-align: top;
+  font-size: 14px;
+  font-size: 0.875rem;
+  line-height: 18px;
+  line-height: 1.125rem;
+  font-weight: 700;
+  display: block;
+  color: #32424a;
+  margin-bottom: 6px;
+}
+
+label:focus {
+  color: #1534E3;
+}
+
+/* Form input fields */
+input[type="text"], 
+input[type="email"], 
+input[type="password"], 
+input[type="telephone"], 
+input[type="tel"], 
+input[type="url"], 
+textarea, 
+select {
+  background-color: #fff;
+  border: 2px solid #32424a;
+  -webkit-transition: all 0.3s ease-in-out;
+  -moz-transition: all 0.3s ease-in-out;
+  -ms-transition: all 0.3s ease-in-out;
+  -o-transition: all 0.3s ease-in-out;
+  transition: all 0.3s ease-in-out;
+  color: #32424a;
+  padding: 13px 20px;
+  display: block;
+  width: 100%;
+  -webkit-appearance: none;
+  -ms-appearance: none;
+  -moz-appearance: none;
+  -o-appearance: none;
+  appearance: none;
+  -webkit-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+
+/* Form input focus */
+input[type="text"]:focus, 
+input[type="email"]:focus, 
+input[type="password"]:focus, 
+input[type="telephone"]:focus, 
+input[type="tel"]:focus, 
+input[type="url"]:focus, 
+textarea:focus, 
+select:focus,
+input[type="text"]:active, 
+input[type="email"]:active, 
+input[type="password"]:active, 
+input[type="telephone"]:active, 
+input[type="tel"]:active, 
+input[type="url"]:active, 
+textarea:active, 
+select:active {
+  border-color: #1534e3;
+  background-color: #fff;
+}
+
+/* Form input errors */
+input[type="text"].error, 
+input[type="email"].error, 
+input[type="password"].error, 
+input[type="telephone"].error, 
+input[type="tel"].error, 
+input[type="url"].error, 
+textarea.error, 
+select.error {
+  border-color: #B50024;
+}
+
+/* Form input read only / disabled */
+input[type="text"]:read-only, 
+input[type="email"]:read-only, 
+input[type="password"]:read-only, 
+input[type="telephone"]:read-only,
+input[type="tel"]:read-only, 
+input[type="url"]:read-only, 
+textarea:read-only, 
+select:read-only, 
+input[type="text"]:disabled, 
+input[type="email"]:disabled, 
+input[type="password"]:disabled, 
+input[type="telephone"]:disabled, 
+input[type="tel"]:disabled, 
+input[type="url"]:disabled, 
+textarea:disabled, 
+select:disabled {
+  background-color: #ECEFF1;
+  pointer-events: none;
+}
+
+/* Text areas */
+textarea {
+  height: 124px;
+  resize: none;
+}
+
+
+/* Dropdowns */
+select {
+  -webkit-appearance: auto;
+  -ms-appearance: auto;
+  -moz-appearance: auto;
+  -o-appearance: auto;
+  appearance: auto;
+}
+
+select:read-only {
+  background-color: #fff;
+  pointer-events: unset;
+}
+
+select::-ms-expand {
+  display: none;
+}
+
+/* Checkboxes / Radio buttons */
+input[type="checkbox"], input[type="radio"] {
+  position : absolute;
+  opacity: 0;
+  height: 0;
+  width: 0;
+}
+
+input[type="checkbox"] + label, input[type="radio"] + label {
+  display: block;
+  font-weight: 400;
+  font-size: 16px;
+  font-size: 1rem;
+  line-height: 24px;
+  line-height: 1.5rem;
+  cursor: pointer;
+  position: relative;
+  padding-left: 30px;
+  padding-top: 3px;
+  margin-bottom: 4px;
+  margin-right: 12px;
+  display: inline-block;
+}
+
+input[type="checkbox"] + label:before, input[type="radio"] + label:before {
+  content: "";
+  position: absolute;
+  top: 2px;
+  left: 0;
+  height: 20px;
+  width: 20px;
+  background-color: #fff;
+  border: 2px solid #32424a;
+  -webkit-transition: all 0.2s ease-out;
+  -ms-transition: all 0.2s ease-out;
+  -moz-transition: all 0.2s ease-out;
+  -o-transition: all 0.2s ease-out;
+  transition: all 0.2s ease-out;
+}
+
+input[type="checkbox"] + label:after, input[type="radio"] + label:after {
+  content: "";
+  position: absolute;
+  -webkit-transform: rotate(45deg);
+  -ms-transform: rotate(45deg);
+  -moz-transform: rotate(45deg);
+  -o-transform: rotate(45deg);
+  transform: rotate(45deg);
+  display: none;
+}
+
+input[type="checkbox"]:checked + label, input[type="radio"]:checked + label,
+input[type="checkbox"]:focus + label, input[type="radio"]:focus + label {
+  color: #1534e3;
+}
+
+input[type="checkbox"]:checked + label:before, input[type="radio"]:checked + label:before,
+input[type="checkbox"]:focus + label:before, input[type="radio"]:focus + label:before {
+  border-color: #1534e3;
+}
+
+input[type="checkbox"]:checked + label:after, input[type="radio"]:checked + label:after {
+  display: block;
+}
+
+input[type="checkbox"] + label:before {
+  -webkit-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+}
+
+input[type="checkbox"] + label:after {
+  left: 8px;
+  top: 5px;
+  width: 4px;
+  height: 10px;
+  border: solid #1534e3;
+  border-width: 0 4px 4px 0;
+}
+
+input[type="radio"] + label:before {
+  -webkit-border-radius: 100%;
+  -ms-border-radius: 100%;
+  -moz-border-radius: 100%;
+  -o-border-radius: 100%;
+  border-radius: 100%;
+}
+
+input[type="radio"] + label:after {
+  background-color: #1534e3;
+  height: 12px;
+  width: 12px;
+  -webkit-border-radius: 100%;
+  -ms-border-radius: 100%;
+  -moz-border-radius: 100%;
+  -o-border-radius: 100%;
+  border-radius: 100%;
+  left: 6px;
+  top: 8px;
+}
+
+/* Buttons / Submit buttons */
+button, input[type=button], 
+input[type=submit], 
+a.button, 
+.button {
+  display: inline-block;
+  text-align: center;
+  background-color: #1534e3;
+  border: 4px solid #1534e3;
+  font-weight: 700;
+  padding: 11px 74px;
+  cursor: pointer;
+  color: #fff;
+  -webkit-appearance: none;
+  -ms-appearance: none;
+  -moz-appearance: none;
+  -o-appearance: none;
+  appearance: none;
+  -webkit-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -o-border-radius: 4px;
+  border-radius: 4px;
+  -webkit-transition: all 0.2s ease-out;
+  -ms-transition: all 0.2s ease-out;
+  -moz-transition: all 0.2s ease-out;
+  -o-transition: all 0.2s ease-out;
+  transition: all 0.2s ease-out;
+}
+
+/* Button hover & focus states */
+button:hover, 
+input[type=button]:hover, 
+input[type=submit]:hover, 
+a.button:hover, 
+.button:hover, 
+button:focus, 
+input[type=button]:focus, 
+input[type=submit]:focus, 
+a.button:focus, 
+.button:focus {
+  background: #1a237e;
+  color: #fff !important;
+  text-decoration: none !important;
+  border-color: #1a237e;
+}
+
+/* Secondary button styles */
+button.button--secondary, 
+input[type=button].button--secondary, 
+input[type=submit].button--secondary, 
+a.button.button--secondary, 
+.button.button--secondary {
+  background-color: transparent;
+  border-color: #1534e3;
+  color: #1534e3;
+}
+
+/* Secondary button hover & focus states */
+button.button--secondary:hover, 
+input[type=button].button--secondary:hover, 
+input[type=submit].button--secondary:hover, 
+a.button.button--secondary:hover, 
+.button.button--secondary:hover,
+button.button--secondary:focus, 
+input[type=button].button--secondary:focus, 
+input[type=submit].button--secondary:focus, 
+a.button.button--secondary:focus, 
+.button.button--secondary:focus {
+  background: #1a237e;
+  border-color: #1a237e;
+}
+
+/* Secondary button disabled states */
+button.button--secondary:disabled, 
+input[type=button].button--secondary:disabled, 
+input[type=submit].button--secondary:disabled, 
+a.button.button--secondary:disabled, 
+.button.button--secondary:disabled {
+  background-color: transparent;
+  color: #999999;
+}
+
+/* Full width buttons */
+button.button--full, 
+input[type=button].button--full, 
+input[type=submit].button--full, 
+a.button.button--full, 
+.button.button--full {
+  width: 100%;
+  padding-left: 30px;
+  padding-right: 30px;
+}
+
+/* Button disabled states */
+button:disabled, 
+input[type=button]:disabled, 
+input[type=submit]:disabled, 
+a.button:disabled, 
+.button:disabled {
+  pointer-events: none;
+  background-color: #999999;
+  border-color: #999999;
+}
+
+/* Placeholder styles */
+::-webkit-input-placeholder {
+  color: #a9b0b4;
+}
+
+:-moz-placeholder {
+  color: #a9b0b4;
+}
+
+::-moz-placeholder {
+  color: #a9b0b4;
+}
+
+:-ms-input-placeholder {
+  color: #a9b0b4;
+}
+
+.grid {
+  margin-top: 12px;
+}
+
+/* Grid (used for 2 columns) */
+.grid:before, .grid:after {
+  content: " ";
+  display: table;
+}
+
+.grid:after {
+  clear: both;
+}
+
+.grid > .grid-item {
+  margin-bottom: 18px;
+  min-height: 1px;
+  width: 100%;
+}
+
+.grid:last-child > .item:last-child {
+  margin-bottom: 0px;
+}
+
+ at media screen and (min-width: 760px) {
+	
+  .grid.md-2 > .grid-item {
+    float: left;
+    width: 48.34436%;
+    margin-right: 3.31126%;
+  }
+  
+  .grid.md-2 > .grid-item:nth-child(n), .grid.md-2 > .grid-item:nth-of-type(n) {
+    margin-right: 3.31126%;
+    clear: none;
+  }
+  
+  .grid.md-2 > .grid-item:nth-child(2n) {
+    margin-right: 0;
+  }
+  
+  .grid.md-2 > .grid-item:nth-child(2n+1) {
+    clear: both;
+  }
+  
+}
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/failure-32x32.png b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/failure-32x32.png
new file mode 100644
index 000000000..3c48e4669
Binary files /dev/null and b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/failure-32x32.png differ
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/placeholder-logo.png b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/placeholder-logo.png
new file mode 100644
index 000000000..f5807ed22
Binary files /dev/null and b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/placeholder-logo.png differ
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/success-32x32.png b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/success-32x32.png
new file mode 100644
index 000000000..aa512048d
Binary files /dev/null and b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/images/success-32x32.png differ
diff --git a/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/index.jsp b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/index.jsp
new file mode 100644
index 000000000..087cee26b
--- /dev/null
+++ b/idp-conf-impl/src/main/resources/net/shibboleth/idp/module/edit-webapp/index.jsp
@@ -0,0 +1,31 @@
+<%@ page pageEncoding="UTF-8" %>
+<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %>
+<!DOCTYPE html>
+<html>
+  <head>
+    <meta charset="utf-8">
+    <title><spring:message code="root.title" text="Shibboleth IdP" /></title>
+    <link rel="stylesheet" type="text/css" href="<%= request.getContextPath()%><spring:message code="root.css" text="/css/placeholder.css" />">
+  </head>
+
+  <body>
+    <div class="wrapper">
+      <div class="container">
+        <header>
+          <img src="<%= request.getContextPath() %><spring:message code="idp.logo" />" alt="<spring:message code="idp.logo.alt-text" text="logo" />">
+        </header>
+    
+        <div class="content">
+          <h2><spring:message code="root.message" text="No services are available at this location." /></h2>
+        </div>
+      </div>
+
+      <footer>
+        <div class="container container-footer">
+          <p class="footer-text"><spring:message code="root.footer" text="Insert your footer text here." /></p>
+        </div>
+      </footer>
+    </div>
+
+  </body>
+</html>

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list