Index: main/kernel/i18n/messages_en.xml
===================================================================
--- main/kernel/i18n/messages_en.xml (revision 34071)
+++ main/kernel/i18n/messages_en.xml (working copy)
@@ -23,11 +23,5 @@
<!-- UI -->
<message key="KERNEL_NOSCRIPT">You must activate javascript to use this application.</message>
-
- <!-- Error -->
- <message key="KERNEL_ERROR_DETAILS">Error details</message>
- <message key="KERNEL_ERROR_401">Authorisation required</message>
- <message key="KERNEL_ERROR_403">Access denied</message>
- <message key="KERNEL_ERROR_404">Resource not found</message>
- <message key="KERNEL_ERROR_500">Server error</message>
-</catalogue>
\ No newline at end of file
+
+</catalogue>
Index: main/kernel/i18n/messages_fr.xml
===================================================================
--- main/kernel/i18n/messages_fr.xml (revision 34071)
+++ main/kernel/i18n/messages_fr.xml (working copy)
@@ -23,10 +23,5 @@
<!-- UI -->
<message key="KERNEL_NOSCRIPT">Vous devez activer le javascript pour utiliser cette application.</message>
-
- <message key="KERNEL_ERROR_DETAILS">Détails de l'erreur</message>
- <message key="KERNEL_ERROR_401">Autorisation requise</message>
- <message key="KERNEL_ERROR_403">Accès refusé</message>
- <message key="KERNEL_ERROR_404">Page introuvable</message>
- <message key="KERNEL_ERROR_500">Erreur serveur</message>
-</catalogue>
\ No newline at end of file
+
+</catalogue>
Index: main/kernel/pages/error/fatal.xsl
===================================================================
--- main/kernel/pages/error/fatal.xsl (revision 34071)
+++ main/kernel/pages/error/fatal.xsl (working copy)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright 2012 Anyware Services
+ Copyright 2015 Anyware Services
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,77 +22,88 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ex="http://apache.org/cocoon/exception/1.0"
+ xmlns:stringutils="org.apache.commons.lang.StringUtils"
exclude-result-prefixes="ex">
- <xsl:param name="pageTitle">An error has occurred</xsl:param>
- <xsl:param name="contextPath" />
- <xsl:param name="realpath" />
-
- <xsl:variable name="backslashedRealpath" select="translate($realpath, '\', '/')" />
+ <xsl:param name="contextPath"/>
+ <xsl:param name="realPath" />
+ <xsl:param name="code" />
- <xsl:template match="/ex:exception-report">
+ <xsl:template match="/">
<html>
<head>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
+ <title>Ametys - Fatal error</title>
+
+ <link rel="icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
+ <link rel="shortcut icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
<link rel="stylesheet" type="text/css" href="{$contextPath}/kernel/resources/css/fatal.css"/>
</head>
<body>
- <div class="ametys-fatal-page">
-
- <div class="ametys-fatal-page-text">Too bad <span>:(</span></div>
-
- <div class="ametys-fatal-page-desc"><xsl:call-template name="message"/></div>
-
- <div class="ametys-fatal-page-details">
- <pre>
- <code>
- <xsl:call-template name="details"/>
- </code>
- </pre>
- </div>
- </div>
+ <table>
+ <tr class="main">
+ <td>
+ <div class="ametys-fatal-page-text">Too bad <span>:(</span></div>
+ <div class="ametys-fatal-page-subtext">An error occurred.<br/>Please contact the administrator of the application.</div>
+ </td>
+ </tr>
+ <tr class="secondary">
+ <td>
+ <div class="wrap">
+ <xsl:call-template name="stacktrace">
+ <xsl:with-param name="exception" select="/ex:exception-report"/>
+ <xsl:with-param name="realPath" select="$realPath"/>
+ </xsl:call-template>
+ </div>
+ </td>
+ </tr>
+ </table>
</body>
</html>
</xsl:template>
- <xsl:template name="message">
- <xsl:if test="@class"><xsl:value-of select="@class" /></xsl:if>
- <xsl:if test="string-length (ex:message) != 0">
- <xsl:if test="@class">:</xsl:if><xsl:value-of select="ex:message" />
- <xsl:if test="ex:location">
- <br />
- <span style="font-weight: normal">
- <xsl:apply-templates select="ex:location" />
- </span>
- </xsl:if>
- </xsl:if>
+ <xsl:template name="stacktrace">
+ <xsl:param name="exception"/>
+ <xsl:param name="realPath"/>
+
+ <xsl:variable name="backslashedRealpath" select="translate($realPath, '\', '/')" />
+
+ <div class="stacktrace">
+ <h1>
+ <xsl:if test="@class"><xsl:value-of select="$exception/@class" /></xsl:if>
+ <xsl:if test="string-length ($exception/ex:message) != 0">
+ <xsl:if test="@class">:</xsl:if><xsl:value-of select="$exception/ex:message" />
+ <xsl:if test="$exception/ex:location">
+ <br/>
+ <xsl:apply-templates select="$exception/ex:location">
+ <xsl:with-param name="backslashedRealpath" select="$backslashedRealpath"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:if>
+ </h1>
+ <pre><code><xsl:call-template name="escape-location"><xsl:with-param name="location" select="$exception/ex:stacktrace"/></xsl:call-template></code></pre>
+ </div>
</xsl:template>
- <xsl:template name="details"><xsl:value-of select="ex:stacktrace"/></xsl:template>
-
<xsl:template match="ex:location">
+ <xsl:param name="backslashedRealpath"/>
+
<xsl:if test="string-length(.) > 0">
<em>
<xsl:value-of select="." />
</em>
<xsl:text> - </xsl:text>
</xsl:if>
- <xsl:call-template name="print-location" />
+ <xsl:call-template name="escape-location"><xsl:with-param name="location" select="@uri"/><xsl:with-param name="backslashedRealpath" select="$backslashedRealpath"/></xsl:call-template>
</xsl:template>
+
+ <xsl:template name="escape-location">
+ <xsl:param name="location"/>
+ <xsl:param name="backslashedRealpath"/>
- <xsl:template name="print-location">
- <xsl:choose>
- <xsl:when test="contains(@uri, $backslashedRealpath)">
- <xsl:text>context:/</xsl:text>
- <xsl:value-of select="substring-after(@uri, $backslashedRealpath)" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@uri" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> - </xsl:text><xsl:value-of select="@line" /> : <xsl:value-of select="@column" />
+ <xsl:value-of select="stringutils:replace($location, concat('file:/', $backslashedRealpath), 'context:/')"/>
</xsl:template>
</xsl:stylesheet>
Index: main/kernel/resources/css/fatal.css
===================================================================
--- main/kernel/resources/css/fatal.css (revision 34071)
+++ main/kernel/resources/css/fatal.css (working copy)
@@ -14,11 +14,18 @@
* limitations under the License.
*/
-body {
+html {
background-color: #812281;
background-size: cover;
- font-family: 'Open Sans', 'Helvetica Neue', helvetica, arial, verdana, sans-serif;
+ font-family: 'Helvetica Neue', helvetica, arial, verdana, sans-serif;
+ font-size: 12px;
color: #efefef;
+ height: 100%;
+}
+
+body {
+ height: 100%;
+ margin: 0;
}
/* The animation code **/
@@ -40,7 +47,6 @@
-o-transform: rotate(0deg);
}
100% {
- margin: 0 20px;
transform: rotate(90deg);
-ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
@@ -49,49 +55,79 @@
}
}
-.ametys-fatal-page {
- padding: 30px 20px 20px 10%;
+table {
+ table-layout: fixed;
+ width: 100%;
+ height: 100%;
+ border-collapse: collapse;
}
-
-.ametys-fatal-page .ametys-fatal-page-text {
- font-size: 130px;
- line-height: 180px;
+table tr.main td {
+ padding: 3em 2em 2em 10%;
}
-.ametys-fatal-page .ametys-fatal-page-text span {
- -ms-transform: rotate(90deg);
+.ametys-fatal-page-text {
+ font-size: 11em;
+ line-height: 1.3em;
+}
+.ametys-fatal-page-text span {
+ -ms-transform: rotate(90deg);
-webkit-transform: rotate(90deg);
-moz-transform: rotate(90deg);
-o-transform: rotate(90deg);
- margin: 0 20px;
- display: inline-block;
- animation-name: smiley;
- animation-duration: 4s;
- animation-timing-function: ease;
+ margin: 0 0.25em;
+ display: inline-block;
+ animation-name: smiley;
+ animation-duration: 4s;
+ animation-timing-function: ease;
}
-.ametys-fatal-page .ametys-fatal-page-desc {
- line-height: 32px;
- font-size: 26px;
+.ametys-fatal-page-subtext
+{
+ font-size: 2em;
+ line-height: 1.5em;
}
-.ametys-fatal-page .ametys-fatal-page-message {
- overflow-x: hidden;
+table tr.secondary {
+ height: 100%;
+}
+table tr.secondary td {
+ padding: 0 1em 1em 10%;
}
-.ametys-fatal-page .ametys-fatal-page-details {
- padding: 4px;
- background: none;
- border: none;
+.wrap {
+ height: 100%;
+ overflow: auto;
}
-.ametys-fatal-page .ametys-fatal-page-details > .x-panel-header .x-title {
- font-size: 14px;
- color: #097adb;
- line-height: 32px;
+h1 {
+ font-size: 1em;
}
-.ametys-fatal-page .ametys-fatal-page-details {
- margin-top: 30px;
+.ametys-fatal-page-details {
+ padding: 0.3em;
+ background: none;
+ border: none;
+ margin-top: 0.5em;
}
+/**
+ * MOBILE
+ */
+
+@media screen and (max-width: 960px), screen and (max-height: 360px)) {
+ html {
+ font-size: 9px;
+ }
+ table tr.main td {
+ padding: 3em 2em 2em 2em;
+ }
+ table tr.secondary td {
+ padding: 0 1em 1em 2em;
+ }
+ .wrap {
+ height: auto;
+ }
+ .ametys-fatal-page-text {
+ font-size: 7em;
+ }
+}
Index: main/kernel/sitemap.xmap
===================================================================
--- main/kernel/sitemap.xmap (revision 34071)
+++ main/kernel/sitemap.xmap (working copy)
@@ -48,14 +48,14 @@
</map:readers>
<map:serializers default="xhtml">
- <map:serializer name="xhtml" src="org.ametys.core.cocoon.XHTMLSerializer" mime-type="text/html; charset=UTF-8" logger="sitemap.serializer.html" pool-max="32">
+ <map:serializer name="xhtml4" src="org.ametys.core.cocoon.XHTMLSerializer" mime-type="text/html; charset=UTF-8" logger="sitemap.serializer.html" pool-max="32">
<encoding>UTF-8</encoding>
<doctype-default>strict</doctype-default>
<omit-xml-declaration>yes</omit-xml-declaration>
<indent>false</indent>
</map:serializer>
- <map:serializer name="xhtml5" src="org.ametys.core.cocoon.XHTMLSerializer" mime-type="text/html; charset=UTF-8" logger="sitemap.serializer.html" pool-max="32">
+ <map:serializer name="xhtml" src="org.ametys.core.cocoon.XHTMLSerializer" mime-type="text/html; charset=UTF-8" logger="sitemap.serializer.html" pool-max="32">
<encoding>UTF-8</encoding>
<doctype-default>xhtml5</doctype-default>
<omit-xml-declaration>yes</omit-xml-declaration>
@@ -67,12 +67,12 @@
<indent>false</indent>
</map:serializer>
- <map:serializer logger="org.ametys.runtime.kernel.sitemap.serializer.xml" mime-type="text/xml" name="xml" pool-grow="4" pool-max="32" pool-min="16" src="org.apache.cocoon.serialization.XMLSerializer">
+ <map:serializer name="xml" logger="org.ametys.runtime.kernel.sitemap.serializer.xml" mime-type="text/xml" pool-grow="4" pool-max="32" pool-min="16" src="org.apache.cocoon.serialization.XMLSerializer">
<encoding>UTF-8</encoding>
<indent>no</indent>
</map:serializer>
- <map:serializer logger="org.ametys.runtime.kernel.sitemap.serializer.text" mime-type="text/plain; charset=UTF-8" name="text" src="org.apache.cocoon.serialization.TextSerializer">
+ <map:serializer name="text" logger="org.ametys.runtime.kernel.sitemap.serializer.text" mime-type="text/plain; charset=UTF-8" src="org.apache.cocoon.serialization.TextSerializer">
<encoding>UTF-8</encoding>
</map:serializer>
</map:serializers>
@@ -228,9 +228,7 @@
<map:generate type="exception" label="content"/>
<map:transform src="{xsl}">
<map:parameter name="realPath" value="{realpath:}"/>
- <map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="code" value="404"/>
- <map:parameter name="pageTitle" value="Ametys - Resource not found"/>
</map:transform>
<map:transform type="i18n">
<map:parameter name="locale" value="{locale:locale}"/>
@@ -243,9 +241,7 @@
<map:generate type="exception" label="content"/>
<map:transform src="{xsl}">
<map:parameter name="realPath" value="{realpath:}"/>
- <map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="code" value="403"/>
- <map:parameter name="pageTitle" value="Ametys - Access denied"/>
</map:transform>
<map:transform type="i18n">
<map:parameter name="locale" value="{locale:locale}"/>
@@ -259,9 +255,7 @@
<map:generate type="exception" label="content"/>
<map:transform src="{xsl}">
<map:parameter name="realPath" value="{realpath:}"/>
- <map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="code" value="401"/>
- <map:parameter name="pageTitle" value="Ametys - Authorization required"/>
</map:transform>
<map:transform type="i18n">
<map:parameter name="locale" value="{locale:locale}"/>
@@ -274,9 +268,7 @@
<map:generate type="exception" label="content"/>
<map:transform src="{xsl}">
<map:parameter name="realPath" value="{realpath:}"/>
- <map:parameter name="contextPath" value="{request:contextPath}"/>
<map:parameter name="code" value="500"/>
- <map:parameter name="pageTitle" value="Ametys - An error occured"/>
</map:transform>
<map:transform type="i18n">
<map:parameter name="locale" value="{locale:locale}"/>
Index: main/plugin-core-ui/i18n/messages_en.xml
===================================================================
--- main/plugin-core-ui/i18n/messages_en.xml (revision 34071)
+++ main/plugin-core-ui/i18n/messages_en.xml (working copy)
@@ -18,8 +18,86 @@
<message key="PLUGINS_CORE_UI_SHUTDOWN_DEFAULTTITLE">The application is stopped</message>
<message key="PLUGINS_CORE_UI_SHUTDOWN_DEFAULTTEXT">The application is now stop. You can close your browser or click on the following link to restart it now.</message>
+
+ <!-- +
+ | Workspace
+ + -->
+ <message key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS">This application can't work without javascript</message>
+ <message key="WORKSPACE_AMETYS_SPLASHSCREEN_LOADING">Loading. Please wait ... </message>
+ <message key="WORKSPACE_AMETYS_SPLASHSCREEN_APP_AMETYS_VERSION">powered by Ametys </message>
+
+ <!-- +
+ | Login screen
+ + -->
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_TITLE">Log in</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LABEL">Sign into your account</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LOGIN">User id</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PASSWORD">Password</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_SUBMIT">Login</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_FORGOT_PASSWORD">Forgot password?</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PERSIST">Remember me</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_AUTH_FAILURE">Invalid user id or password</message>
+
+ <!-- +
+ | Incomplete configuration
+ + -->
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_HEAD">Incomplete configuration</message>
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TITLE">Warning</message>
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TEXT">At first launch or after an update,<br/>it is necessary to configure the application.<br/>This message may also appear if<br/>your current configuration is incorrect.</message>
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_LINK">Configure the application</message>
<!-- +
+ | Safe mode
+ + -->
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_PAGE_TITLE">Safe mode</message>
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_TITLE">Unable to initialize the application</message>
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_TEXT">The application could not initialize correctly and started in safe mode.<br/>You should check application's logs and settings.</message>
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_LINK">Manage the application</message>
+
+ <!-- +
+ | Unsupported browser
+ + -->
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_HEAD">Browser not compatible</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE">Sorry…</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT1">This application does not support your browser<br/>or the version you are using{0}.</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT2">Here is the list of supported browsers:</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_ie">Microsoft Internet Explorer</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_ff">Mozilla Firefox</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_ch">Google Chrome</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_sa">Apple Safari</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_op">Opera</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC">Consult the user manual of your application to know the recommended browsers.</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_LINK">Documentation</message>
+
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_UNKNOWN">Unknown</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ALL">All versions</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_LOWER">Versions {0} and lower</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ABOVE">Versions {0} and above</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_BETWEEN">Versions {0} to {1}</message>
+
+ <!-- +
+ | Errors
+ + -->
+ <message key="PLUGINS_CORE_UI_ERROR_401_HEAD">Login required</message>
+ <message key="PLUGINS_CORE_UI_ERROR_401_TITLE">Who are you?</message>
+ <message key="PLUGINS_CORE_UI_ERROR_401_TEXT">The application failed to identify you.<br/>You can try again by refreshing this page<br/>or contact the application administrator if the problem persits.</message>
+ <message key="PLUGINS_CORE_UI_ERROR_401_LINK">Try again</message>
+
+ <message key="PLUGINS_CORE_UI_ERROR_403_HEAD">Access denied</message>
+ <message key="PLUGINS_CORE_UI_ERROR_403_TITLE">Stop!</message>
+ <message key="PLUGINS_CORE_UI_ERROR_403_TEXT">Your rights are insufficient to access this page.<br/>You can contact the application administrator to know more.</message>
+
+ <message key="PLUGINS_CORE_UI_ERROR_404_HEAD">Page not found</message>
+ <message key="PLUGINS_CORE_UI_ERROR_404_TITLE">Lost?!</message>
+ <message key="PLUGINS_CORE_UI_ERROR_404_TEXT">The requested page does not exist.</message>
+ <message key="PLUGINS_CORE_UI_ERROR_404_LINK">Return to the application</message>
+
+ <message key="PLUGINS_CORE_UI_ERROR_500_HEAD">Server error</message>
+ <message key="PLUGINS_CORE_UI_ERROR_500_TITLE">Oops...</message>
+ <message key="PLUGINS_CORE_UI_ERROR_500_TEXT">An error occurred. The page can not be displayed.<br/>You can try again later<br/>or contact the application administrator if the problem persits.</message>
+ <message key="PLUGINS_CORE_UI_ERROR_500_LINK">Technical details</message>
+
+ <!-- +
| Config
+ -->
<message key="PLUGINS_CORE_UI_DEBUG_UI_LABEL">User interfaces</message>
@@ -582,52 +660,4 @@
<message key="PLUGINS_CORE_UI_REQUESTSTRACKER_TOOL_DISPLAYMESSAGE_PARAMETERS">Parameters</message>
<message key="PLUGINS_CORE_UI_REQUESTSTRACKER_TOOL_DISPLAYMESSAGE_RESPONSE">Response</message>
- <!-- +
- | Workspace
- + -->
- <message key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS">This application can't work without javascript</message>
- <message key="WORKSPACE_AMETYS_SPLASHSCREEN_LOADING">Loading. Please wait ... </message>
- <message key="WORKSPACE_AMETYS_SPLASHSCREEN_APP_AMETYS_VERSION">powered by Ametys </message>
-
- <!-- +
- | Login screen
- + -->
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_TITLE">Log in</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LABEL">Sign into your account</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LOGIN">User id</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PASSWORD">Password</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_SUBMIT">Login</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_FORGOT_PASSWORD">Forgot password?</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PERSIST">Remember me</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_AUTH_FAILURE">Invalid user id or password</message>
-
- <!-- +
- | Incomplete configuration
- + -->
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_PAGE_TITLE">Configuration incomplete</message>
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TITLE">Unable to load configuration</message>
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TEXT">The application configuration is incomplete or incorrect.<br/>You must configure the application before using it.</message>
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_BTN">Configure the application</message>
-
- <!-- +
- | Safe mode
- + -->
- <message key="PLUGINS_CORE_UI_SAFE_MODE_PAGE_TITLE">Safe mode</message>
- <message key="PLUGINS_CORE_UI_SAFE_MODE_TITLE">Unable to initialize the application</message>
- <message key="PLUGINS_CORE_UI_SAFE_MODE_TEXT">The application could not initialize correctly and started in safe mode.<br/>You should check application's logs and settings.</message>
- <message key="PLUGINS_CORE_UI_SAFE_MODE_BTN">Manage the application</message>
-
- <!-- +
- | Unsupported browser
- + -->
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE">Browser not supported</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT1">This application does not support your Web browser or the version you are using{0}.</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT2">Here is the list of supported browsers:</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC">Consult the user manual of your application to know the recommanded browsers.</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC_BTN">Documentation</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_UNKNOWN">Unknown</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ALL">All versions</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_LOWER">Versions {0} and lower</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ABOVE">Versions {0} and above</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_BETWEEN">Versions {0} to {1}</message>
</catalogue>
Index: main/plugin-core-ui/i18n/messages_fr.xml
===================================================================
--- main/plugin-core-ui/i18n/messages_fr.xml (revision 34071)
+++ main/plugin-core-ui/i18n/messages_fr.xml (working copy)
@@ -16,9 +16,87 @@
-->
<catalogue xml:lang="fr">
- <message key="PLUGINS_CORE_UI_SHUTDOWN_DEFAULTTITLE">L'application est arrêtée</message>
+ <message key="PLUGINS_CORE_UI_SHUTDOWN_DEFAULTTITLE">L'application est arrêtée</message>
<message key="PLUGINS_CORE_UI_SHUTDOWN_DEFAULTTEXT">L'application est maintenant arrêtée. Vous pouvez fermer votre navigateur ou cliquer sur le lien suivant pour la redémarrer maintenant.</message>
+
+ <!-- +
+ | Workspace
+ + -->
+ <message key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS">Cette application ne peut pas fonctionner en l'absence de javascript</message>
+ <message key="WORKSPACE_AMETYS_SPLASHSCREEN_LOADING">Chargement en cours. Veuillez patienter ... </message>
+ <message key="WORKSPACE_AMETYS_SPLASHSCREEN_APP_AMETYS_VERSION">motorisé par Ametys</message>
+
+ <!-- +
+ | Login screen
+ + -->
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_TITLE">Connexion</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LABEL">Entrez vos identifiants</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LOGIN">Identifiant</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PASSWORD">Mot de passe</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_SUBMIT">Se connecter</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_FORGOT_PASSWORD">Mot de passe oublié ?</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PERSIST">Se souvenir de moi</message>
+ <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_AUTH_FAILURE">Identifiant ou mot de passe incorrect</message>
+
+ <!-- +
+ | Incomplete configuration
+ + -->
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_HEAD">Configuration incomplète</message>
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TITLE">Attention</message>
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TEXT">Lors du premier lancement ou suite à une mise à jour, il est nécessaire de configurer l'application.<br/><br/>Ce message peut aussi apparaître si votre configuration actuelle est incorrecte.</message>
+ <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_LINK">Configurer l'application</message>
+
+ <!-- +
+ | Safe mode
+ + -->
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_HEAD">Mode sans échec</message>
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_TITLE">Problème</message>
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_TEXT">L'application a été démarrée en mode sans échec suite à un problème d'initialisation.<br/><br/>Dans ce mode, vous avez uniquement accès à certains outils d'aministration afin de réparer le problème.<br/><br/>Vous pouvez commencer par consulter les journaux applicatifs et vérifier la configuration.</message>
+ <message key="PLUGINS_CORE_UI_SAFE_MODE_LINK">Administrer l'application</message>
+
+ <!-- +
+ | Unsupported browser
+ + -->
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_HEAD">Navigateur incompatible</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE">Désolé…</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT1">L'application n'est pas compatible avec votre navigateur<br/>ou la version que vous utilisez{0}.</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT2">Voici la liste des navigateurs compatibles :</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_ie">Microsoft Internet Explorer</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_ff">Mozilla Firefox</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_ch">Google Chrome</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_sa">Apple Safari</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_op">Opera</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC">Consultez le manuel utilisateur pour connaître les navigateurs recommandés.</message>
+ <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_LINK">Documentation</message>
+
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_UNKNOWN">Inconnu</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ALL">Toutes versions</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_LOWER">Versions {0} et inférieures</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ABOVE">Versions {0} et supérieures</message>
+ <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_BETWEEN">Versions {0} Ã {1}</message>
+
+ <!-- +
+ | Errors
+ + -->
+ <message key="PLUGINS_CORE_UI_ERROR_401_HEAD">Identification requise</message>
+ <message key="PLUGINS_CORE_UI_ERROR_401_TITLE">Qui êtes-vous ?</message>
+ <message key="PLUGINS_CORE_UI_ERROR_401_TEXT">L'application n'a pas réussi à vous identifier.<br/><br/>Vous pouvez essayer à nouveau en rafraichissant cette page ou contacter l'administrateur de l'application si le problème persiste.</message>
+ <message key="PLUGINS_CORE_UI_ERROR_401_LINK">Réessayer</message>
+ <message key="PLUGINS_CORE_UI_ERROR_403_HEAD">Accès refusé</message>
+ <message key="PLUGINS_CORE_UI_ERROR_403_TITLE">Stop !</message>
+ <message key="PLUGINS_CORE_UI_ERROR_403_TEXT">Vos droits sont insuffisants pour accéder à cette page.<br/><br/>Vous pouvez contacter l'admistrateur de l'application pour en savoir plus.</message>
+
+ <message key="PLUGINS_CORE_UI_ERROR_404_HEAD">Page introuvable</message>
+ <message key="PLUGINS_CORE_UI_ERROR_404_TITLE">Perdu ?!</message>
+ <message key="PLUGINS_CORE_UI_ERROR_404_TEXT">La page que vous avez demandé n'existe pas.</message>
+ <message key="PLUGINS_CORE_UI_ERROR_404_LINK">Revenir à l'application</message>
+
+ <message key="PLUGINS_CORE_UI_ERROR_500_HEAD">Erreur serveur</message>
+ <message key="PLUGINS_CORE_UI_ERROR_500_TITLE">Oups...</message>
+ <message key="PLUGINS_CORE_UI_ERROR_500_TEXT">Une erreur est survenue. Il est impossible d'afficher la page.<br/><br/>Vous pouvez réessayer ultérieurement ou contacter l'administrateur de l'application si le problème persiste.</message>
+ <message key="PLUGINS_CORE_UI_ERROR_500_LINK">Détails techniques</message>
+
<!-- +
| Config
+ -->
@@ -582,52 +660,4 @@
<message key="PLUGINS_CORE_UI_REQUESTSTRACKER_TOOL_DISPLAYMESSAGE_PARAMETERS">Paramètres</message>
<message key="PLUGINS_CORE_UI_REQUESTSTRACKER_TOOL_DISPLAYMESSAGE_RESPONSE">Réponse</message>
- <!-- +
- | Workspace
- + -->
- <message key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS">Cette application ne peut pas fonctionner en l'absence de javascript</message>
- <message key="WORKSPACE_AMETYS_SPLASHSCREEN_LOADING">Chargement en cours. Veuillez patienter ... </message>
- <message key="WORKSPACE_AMETYS_SPLASHSCREEN_APP_AMETYS_VERSION">motorisé par Ametys </message>
-
- <!-- +
- | Login screen
- + -->
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_TITLE">Connexion</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LABEL">Entrez vos identifiants</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LOGIN">Identifiant</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PASSWORD">Mot de passe</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_SUBMIT">Se connecter</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_FORGOT_PASSWORD">Mot de passe oublié ?</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PERSIST">Se souvenir de moi</message>
- <message key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_AUTH_FAILURE">Identifiant ou mot de passe incorrect</message>
-
- <!-- +
- | Incomplete configuration
- + -->
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_PAGE_TITLE">Configuration incomplète</message>
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TITLE">Impossible de charger la configuration</message>
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TEXT">La configuration de l'application est incomplète ou incorrecte.<br/>Vous devez configurer l'application avant de pouvoir l'utiliser.</message>
- <message key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_BTN">Configurer l'application</message>
-
- <!-- +
- | Safe mode
- + -->
- <message key="PLUGINS_CORE_UI_SAFE_MODE_PAGE_TITLE">Mode sans échec</message>
- <message key="PLUGINS_CORE_UI_SAFE_MODE_TITLE">Impossible d'initialiser l'application</message>
- <message key="PLUGINS_CORE_UI_SAFE_MODE_TEXT">L'application n'a pu s'initialiser correctement et a démarré en mode sans échec.<br/>Vous devriez vérifier les logs et le paramétrage de l'application.</message>
- <message key="PLUGINS_CORE_UI_SAFE_MODE_BTN">Administrer l'application</message>
-
- <!-- +
- | Unsupported browser
- + -->
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE">Navigateur internet non supporté</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT1">L'application n'est pas compatible avec votre navigateur internet ou la version que vous utilisez{0}.</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT2">Voici la liste des navigateurs compatibles :</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC">Consultez le manuel utilisateur pour connaître les navigateurs recommandés.</message>
- <message key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC_BTN">Documentation</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_UNKNOWN">Inconnu</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ALL">Toutes versions</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_LOWER">Versions {0} et inférieures</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ABOVE">Versions {0} et supérieures</message>
- <message key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_BETWEEN">Versions {0} Ã {1}</message>
</catalogue>
Index: main/plugin-core-ui/pages/common.xsl
===================================================================
--- main/plugin-core-ui/pages/common.xsl (revision 34071)
+++ main/plugin-core-ui/pages/common.xsl (working copy)
@@ -18,111 +18,116 @@
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
xmlns:ex="http://apache.org/cocoon/exception/1.0"
- xmlns:escape="org.apache.commons.lang.StringEscapeUtils"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
- <xsl:import href="plugin:core-ui://stylesheets/kernel.xsl"/>
-
- <xsl:param name="realpath" />
-
<xsl:variable name="contextPath" select="ametys:uriPrefix(false())"/>
- <xsl:variable name="workspaceURI" select="ametys:workspacePrefix()"/>
- <xsl:variable name="debug-mode" select="ametys:config('runtime.debug.ui')"/>
-
- <xsl:variable name="backslashedRealpath" select="translate($realpath, '\', '/')" />
<xsl:template match="/">
<html>
<head>
- <title>Ametys - <xsl:call-template name="description"/></title>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
+ <title>Ametys - <xsl:call-template name="head"/></title>
+
+ <link rel="icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
+ <link rel="shortcut icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
- <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/error.css"/>
+ <link rel="stylesheet" type="text/css">
+ <xsl:attribute name="href"><xsl:value-of select="$contextPath"/><xsl:call-template name="css-file"/></xsl:attribute>
+ </link>
</head>
<body>
- <noscript><xsl:comment><xsl:copy-of select="/"/></xsl:comment></noscript>
- <noscript><i18n:text i18n:key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS" i18n:catalogue="plugin.core-ui"/></noscript>
-
- <xsl:call-template name="kernel-base">
- <xsl:with-param name="theme">triton</xsl:with-param>
- </xsl:call-template>
-
- <script type="text/javascript" src="{$contextPath}/plugins/core-ui/resources/js/Ametys/error/ErrorPage.js"/>
-
- <script>
- Ext.onReady(function ()
- {
- Ext.application({
- requires: ['Ext.container.Viewport'],
- name: 'AmetysLogin',
-
- appFolder: 'ametys',
- enableQuickTips: false,
- launch: function() {
- Ext.create('Ext.container.Viewport', {
- layout: 'fit',
- items: Ext.create('Ametys.error.ErrorPage', {
- text: "<xsl:call-template name="text"/>",
- description: "<xsl:call-template name="description"/>",
- message: "<xsl:call-template name="message"/>",
- details: "<xsl:call-template name="details"/>"
- })
- });
- }
- })
- });
- </script>
+ <div class="bg">
+ <xsl:call-template name="body-start"/>
+ <table class="main">
+ <thead>
+ <tr><td> </td></tr>
+ </thead>
+ <tbody>
+ <tr class="main">
+ <td class="main">
+ <div class="wrap">
+ <xsl:call-template name="inside-wrap"/>
+ </div>
+ </td>
+ </tr>
+ <xsl:variable name="row-additionnal"><xsl:call-template name="row-additionnal"/></xsl:variable>
+ <xsl:if test="$row-additionnal != ''">
+ <tr class="additionnal">
+ <td>
+ <xsl:call-template name="row-additionnal"/>
+ </td>
+ </tr>
+ </xsl:if>
+ </tbody>
+ <tfoot>
+ <tr><td> </td></tr>
+ </tfoot>
+ </table>
+ <div class="head"><i18n:text i18n:catalogue='application' i18n:key='APPLICATION_PRODUCT_LABEL'/></div>
+ <div class="foot">
+ <p>
+ <i18n:text i18n:key="WORKSPACE_AMETYS_SPLASHSCREEN_APP_AMETYS_VERSION" i18n:catalogue="plugin.core-ui"/>
+ <xsl:variable name="Versions" select="ametys:versions()"/>
+ <xsl:if test="$Versions/Component[Name='Ametys' and Version]">
+  <xsl:value-of select="Component[Name='Ametys']/Version"/>
+ </xsl:if>
+ </p>
+ </div>
+ </div>
</body>
</html>
</xsl:template>
+
+ <xsl:template name="inside-wrap">
+ <h1>
+ <xsl:attribute name="class"><xsl:call-template name="title-class"/></xsl:attribute>
+ <xsl:call-template name="title"/>
+ </h1>
+ <p class="text">
+ <xsl:call-template name="text"/>
+ </p>
+ <xsl:call-template name="text-additionnal"/>
+ </xsl:template>
+ <xsl:template name="css-file">/plugins/core-ui/resources/css/special/common.css</xsl:template>
+ <xsl:template name="body-start"/>
+ <xsl:template name="title"/>
+ <xsl:template name="title-class"/>
<xsl:template name="text"/>
- <xsl:template name="description"/>
+ <xsl:template name="text-additionnal"/>
+ <xsl:template name="row-additionnal"/>
- <xsl:template name="message">
- <xsl:variable name="message">
- <xsl:if test="@class"><xsl:value-of select="/ex:exception-report/@class" /></xsl:if>
- <xsl:if test="string-length (/ex:exception-report/ex:message) != 0">
- <xsl:if test="@class">:</xsl:if><xsl:value-of select="/ex:exception-report/ex:message" />
- <xsl:if test="/ex:exception-report/ex:location">
- <xsl:text><br/></xsl:text><xsl:apply-templates select="/ex:exception-report/ex:location" />
- </xsl:if>
+ <xsl:template name="button">
+ <xsl:param name="text"/>
+ <xsl:param name="action"/>
+ <xsl:param name="href">javascript:void(0)</xsl:param>
+ <xsl:param name="condition"/>
+ <xsl:param name="type">load</xsl:param>
+
+ <script type="text/javascript">
+ <xsl:if test="$condition">
+ if (<xsl:copy-of select="$condition"/>)
+ {
</xsl:if>
- </xsl:variable>
- <xsl:value-of select="escape:escapeJavaScript(escape:escapeHtml($message))"/>
- </xsl:template>
-
-
- <xsl:template name="details"><xsl:value-of select="escape:escapeJavaScript(escape:escapeHtml(/ex:exception-report/ex:stacktrace))"/></xsl:template>
-
- <xsl:template match="ex:location">
- <xsl:if test="string-length(.) > 0">
- <em>
- <xsl:value-of select="." />
- </em>
- <xsl:text> - </xsl:text>
- </xsl:if>
- <xsl:call-template name="print-location" />
- </xsl:template>
+ document.write("<p class='additionnal'>\
+ <a href=\"<xsl:value-of select='$href'/>\" onclick=\"<xsl:if test="$type = 'toggle'">this.className = (this.className == '') ? 'toggled' : ''; </xsl:if><xsl:if test="$type = 'load'">this.parentNode.remove(this); document.getElementById('pulse').style.display = '';</xsl:if> <xsl:copy-of select='$action'/>\">\
+ <xsl:copy-of select="$text"/>\
+ </a>\
+ </p>\
+ <xsl:if test="$type = 'load'">\
+ <div class=\"la-ball-pulse la-dark la-2x\" id=\"pulse\" style=\"display: none\">\
+ <div></div>\
+ <div></div>\
+ <div></div>\
+ </div>\
+ </xsl:if>\
+ ");
+ <xsl:if test="$condition">
+ }
+ </xsl:if>
+ </script>
- <xsl:template name="print-location">
- <xsl:choose>
- <xsl:when test="contains(@uri, $backslashedRealpath)">
- <xsl:text>context:/</xsl:text>
- <xsl:value-of select="substring-after(@uri, $backslashedRealpath)" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@uri" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> - </xsl:text><xsl:value-of select="@line" /> : <xsl:value-of select="@column" />
</xsl:template>
- <!-- Do not load Ametys scripts -->
- <xsl:template name="ametys-scripts"/>
-
- <!-- Ignore browser compatibility -->
- <xsl:template name="kernel-browsers"/>
-
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
Index: main/plugin-core-ui/pages/error/401.xsl
===================================================================
--- main/plugin-core-ui/pages/error/401.xsl (revision 34071)
+++ main/plugin-core-ui/pages/error/401.xsl (working copy)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright 2012 Anyware Services
+ Copyright 2015 Anyware Services
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,8 +22,15 @@
<xsl:import href="common.xsl"/>
- <xsl:template name="text">401</xsl:template>
-
- <xsl:template name="description"><i18n:text i18n:key="KERNEL_ERROR_401" i18n:catalogue="kernel"/></xsl:template>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_401_HEAD" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_401_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title-class">long</xsl:template>
+ <xsl:template name="text"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_401_TEXT" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="text-additionnal">
+ <xsl:call-template name="button">
+ <xsl:with-param name="text"><i18n:text i18n:key='PLUGINS_CORE_UI_ERROR_401_LINK' i18n:catalogue='plugin.core-ui'/></xsl:with-param>
+ <xsl:with-param name="action">location.reload(true);</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/pages/error/403.xsl
===================================================================
--- main/plugin-core-ui/pages/error/403.xsl (revision 34071)
+++ main/plugin-core-ui/pages/error/403.xsl (working copy)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright 2012 Anyware Services
+ Copyright 2015 Anyware Services
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,8 +22,8 @@
<xsl:import href="common.xsl"/>
- <xsl:template name="text">403</xsl:template>
-
- <xsl:template name="description"><i18n:text i18n:key="KERNEL_ERROR_403" i18n:catalogue="kernel"/></xsl:template>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_403_HEAD" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_403_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="text"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_403_TEXT" i18n:catalogue="plugin.core-ui"/></xsl:template>
</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/pages/error/404.xsl
===================================================================
--- main/plugin-core-ui/pages/error/404.xsl (revision 34071)
+++ main/plugin-core-ui/pages/error/404.xsl (working copy)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright 2012 Anyware Services
+ Copyright 2015 Anyware Services
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,8 +22,16 @@
<xsl:import href="common.xsl"/>
- <xsl:template name="text">Hmm…</xsl:template>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_404_HEAD" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_404_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="text"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_404_TEXT" i18n:catalogue="plugin.core-ui"/></xsl:template>
- <xsl:template name="description"><i18n:text i18n:key="KERNEL_ERROR_404" i18n:catalogue="kernel"/></xsl:template>
+ <xsl:template name="text-additionnal">
+ <xsl:call-template name="button">
+ <xsl:with-param name="text"><i18n:text i18n:key='PLUGINS_CORE_UI_ERROR_404_LINK' i18n:catalogue='plugin.core-ui'/></xsl:with-param>
+ <xsl:with-param name="href" select="ametys:uriPrefix()"/>
+ <xsl:with-param name="condition">window.parent == window</xsl:with-param>
+ </xsl:call-template>
+ </xsl:template>
</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/pages/error/500.xsl
===================================================================
--- main/plugin-core-ui/pages/error/500.xsl (revision 34071)
+++ main/plugin-core-ui/pages/error/500.xsl (working copy)
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
- Copyright 2012 Anyware Services
+ Copyright 2015 Anyware Services
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -15,14 +15,36 @@
limitations under the License.
-->
<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
xmlns:ex="http://apache.org/cocoon/exception/1.0"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
+
+ <xsl:import href="common.xsl"/>
- <xsl:import href="common.xsl"/>
+ <xsl:import href="stacktrace.xsl"/>
+
+ <xsl:param name="realPath" />
- <xsl:template name="text">Oops :(</xsl:template>
- <xsl:template name="description"><i18n:text i18n:key="KERNEL_ERROR_500" i18n:catalogue="kernel"/></xsl:template>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_500_HEAD" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_500_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="text"><i18n:text i18n:key="PLUGINS_CORE_UI_ERROR_500_TEXT" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="text-additionnal">
+ <xsl:if test="not(ametys:config('runtime.debug.ui') = 0)">
+ <xsl:call-template name="button">
+ <xsl:with-param name="text"><i18n:text i18n:key='PLUGINS_CORE_UI_ERROR_500_LINK' i18n:catalogue='plugin.core-ui'/></xsl:with-param>
+ <xsl:with-param name="action">document.body.className = (document.body.className == '') ? 'stacktrace' : '';</xsl:with-param>
+ <xsl:with-param name="type">toggle</xsl:with-param>
+ </xsl:call-template>
+ </xsl:if>
+ </xsl:template>
+
+ <xsl:template name="row-additionnal">
+ <xsl:call-template name="stacktrace">
+ <xsl:with-param name="exception" select="/ex:exception-report"/>
+ <xsl:with-param name="realPath" select="$realPath"/>
+ </xsl:call-template>
+ </xsl:template>
+
</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/pages/error/common.xsl
===================================================================
--- main/plugin-core-ui/pages/error/common.xsl (revision 34071)
+++ main/plugin-core-ui/pages/error/common.xsl (nonexistent)
@@ -1,128 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Copyright 2012 Anyware Services
-
- Licensed 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.
- -->
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
- xmlns:ex="http://apache.org/cocoon/exception/1.0"
- xmlns:escape="org.apache.commons.lang.StringEscapeUtils"
- xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
-
- <xsl:import href="plugin:core-ui://stylesheets/kernel.xsl"/>
-
- <xsl:param name="realpath" />
-
- <xsl:variable name="contextPath" select="ametys:uriPrefix(false())"/>
- <xsl:variable name="workspaceURI" select="ametys:workspacePrefix()"/>
- <xsl:variable name="debug-mode" select="ametys:config('runtime.debug.ui')"/>
-
- <xsl:variable name="backslashedRealpath" select="translate($realpath, '\', '/')" />
-
- <xsl:template match="/">
- <html>
- <head>
- <title>Ametys - <xsl:call-template name="description"/></title>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
-
- <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/error.css"/>
- </head>
- <body>
- <noscript><xsl:comment><xsl:copy-of select="/"/></xsl:comment></noscript>
- <noscript><i18n:text i18n:key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS" i18n:catalogue="plugin.core-ui"/></noscript>
-
- <xsl:call-template name="kernel-base">
- <xsl:with-param name="theme">triton</xsl:with-param>
- </xsl:call-template>
-
- <script type="text/javascript" src="{$contextPath}/plugins/core-ui/resources/js/Ametys/error/ErrorPage.js"/>
-
- <script>
- Ext.onReady(function ()
- {
- Ext.application({
- requires: ['Ext.container.Viewport'],
- name: 'AmetysLogin',
-
- appFolder: 'ametys',
- enableQuickTips: false,
- launch: function() {
- Ext.create('Ext.container.Viewport', {
- layout: 'fit',
- items: Ext.create('Ametys.error.ErrorPage', {
- text: "<xsl:call-template name="text"/>",
- description: "<xsl:call-template name="description"/>",
- message: "<xsl:call-template name="message"/>",
- details: "<xsl:call-template name="details"/>"
- })
- });
- }
- })
- });
- </script>
- </body>
- </html>
- </xsl:template>
-
- <xsl:template name="text"/>
- <xsl:template name="description"/>
-
- <xsl:template name="message">
- <xsl:variable name="message">
- <xsl:if test="@class"><xsl:value-of select="/ex:exception-report/@class" /></xsl:if>
- <xsl:if test="string-length (/ex:exception-report/ex:message) != 0">
- <xsl:if test="@class">:</xsl:if><xsl:value-of select="/ex:exception-report/ex:message" />
- <xsl:if test="/ex:exception-report/ex:location">
- <xsl:text><br/></xsl:text><xsl:apply-templates select="/ex:exception-report/ex:location" />
- </xsl:if>
- </xsl:if>
- </xsl:variable>
- <xsl:value-of select="escape:escapeJavaScript(escape:escapeHtml($message))"/>
- </xsl:template>
-
-
- <xsl:template name="details"><xsl:value-of select="escape:escapeJavaScript(escape:escapeHtml(/ex:exception-report/ex:stacktrace))"/></xsl:template>
-
- <xsl:template match="ex:location">
- <xsl:if test="string-length(.) > 0">
- <em>
- <xsl:value-of select="." />
- </em>
- <xsl:text> - </xsl:text>
- </xsl:if>
- <xsl:call-template name="print-location" />
- </xsl:template>
-
- <xsl:template name="print-location">
- <xsl:choose>
- <xsl:when test="contains(@uri, $backslashedRealpath)">
- <xsl:text>context:/</xsl:text>
- <xsl:value-of select="substring-after(@uri, $backslashedRealpath)" />
- </xsl:when>
- <xsl:otherwise>
- <xsl:value-of select="@uri" />
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text> - </xsl:text><xsl:value-of select="@line" /> : <xsl:value-of select="@column" />
- </xsl:template>
-
- <!-- Do not load Ametys scripts -->
- <xsl:template name="ametys-scripts"/>
-
- <!-- Ignore browser compatibility -->
- <xsl:template name="kernel-browsers"/>
-
-</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/pages/error/stacktrace.xsl
===================================================================
--- main/plugin-core-ui/pages/error/stacktrace.xsl (revision 0)
+++ main/plugin-core-ui/pages/error/stacktrace.xsl (revision 0)
@@ -0,0 +1,66 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Copyright 2012 Anyware Services
+
+ Licensed 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.
+ -->
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
+ xmlns:stringutils="org.apache.commons.lang.StringUtils"
+ xmlns:ex="http://apache.org/cocoon/exception/1.0"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
+
+ <xsl:template name="stacktrace">
+ <xsl:param name="exception"/>
+ <xsl:param name="realPath"/>
+
+ <xsl:variable name="backslashedRealpath" select="translate($realPath, '\', '/')" />
+
+ <div class="stacktrace">
+ <h1>
+ <xsl:if test="@class"><xsl:value-of select="$exception/@class" /></xsl:if>
+ <xsl:if test="string-length ($exception/ex:message) != 0">
+ <xsl:if test="@class">:</xsl:if><xsl:value-of select="$exception/ex:message" />
+ <xsl:if test="$exception/ex:location">
+ <br/>
+ <xsl:apply-templates select="$exception/ex:location">
+ <xsl:with-param name="backslashedRealpath" select="$backslashedRealpath"/>
+ </xsl:apply-templates>
+ </xsl:if>
+ </xsl:if>
+ </h1>
+ <pre><code><xsl:call-template name="escape-location"><xsl:with-param name="location" select="$exception/ex:stacktrace"/></xsl:call-template></code></pre>
+ </div>
+ </xsl:template>
+
+ <xsl:template match="ex:location">
+ <xsl:param name="backslashedRealpath"/>
+
+ <xsl:if test="string-length(.) > 0">
+ <em>
+ <xsl:value-of select="." />
+ </em>
+ <xsl:text> - </xsl:text>
+ </xsl:if>
+ <xsl:call-template name="escape-location"><xsl:with-param name="location" select="@uri"/><xsl:with-param name="backslashedRealpath" select="$backslashedRealpath"/></xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="escape-location">
+ <xsl:param name="location"/>
+ <xsl:param name="backslashedRealpath"/>
+
+ <xsl:value-of select="stringutils:replace($location, concat('file:/', $backslashedRealpath), 'context:/')"/>
+ </xsl:template>
+
+</xsl:stylesheet>
Index: main/plugin-core-ui/pages/public/browser-unsupported.xsl
===================================================================
--- main/plugin-core-ui/pages/public/browser-unsupported.xsl (revision 34071)
+++ main/plugin-core-ui/pages/public/browser-unsupported.xsl (working copy)
@@ -20,159 +20,159 @@
xmlns:escape="org.apache.commons.lang.StringEscapeUtils"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
- <xsl:param name="doc"/>
- <xsl:param name="browser"/><!-- current browser -->
- <xsl:param name="browserversion"/><!-- current version -->
- <xsl:param name="supported"/><!-- the json list of supported browsers -->
+ <xsl:param name="doc" select="ametys:requestParameter('doc')"/><!-- absolute link to online doc -->
+ <xsl:param name="browser" select="ametys:requestParameter('browser')"/><!-- current browser -->
+ <xsl:param name="browserversion" select="ametys:requestParameter('browserversion')"/><!-- current version -->
+ <xsl:param name="supported" select="ametys:requestParameter('supported')"/><!-- the json list of supported browsers -->
<xsl:variable name="contextPath" select="ametys:uriPrefix(false())"/>
- <xsl:variable name="workspaceURI" select="ametys:workspacePrefix()"/>
- <xsl:variable name="debug-mode" select="ametys:config('runtime.debug.ui')"/>
<xsl:template match="/">
<html>
<head>
- <title>Ametys - <i18n:text i18n:key='PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE' i18n:catalogue='plugin.core-ui'/></title>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
+ <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"/>
+ <title>Ametys - <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_HEAD" i18n:catalogue="plugin.core-ui"/></title>
+
+ <link rel="icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
+ <link rel="shortcut icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
- <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/unsupported-browser.css"/>
+ <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/special/browsers.css"/>
</head>
<body>
- <div class="unsupported-browser-header"><i18n:text i18n:catalogue='application' i18n:key='APPLICATION_PRODUCT_LABEL'/></div>
- <table class="unsupported-browser-inner-container" width="900px" height="100%" align="center">
- <tr>
- <td valign="middle">
- <div class="text-container">
- <div class="unsupported-browser-text"><i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE" i18n:catalogue='plugin.core-ui'/></div>
-
- <div class="unsupported-browser-desc">
- <xsl:call-template name="description"/>
- </div>
-
- <xsl:call-template name="showBrowsers"/>
-
- <div class="unsupported-browser-redirect-text">
- <xsl:choose>
- <xsl:when test="$doc != ''">
- <a href="{$doc}" target="_blank">
- <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC" i18n:catalogue='plugin.core-ui'/>
- </a>
- </xsl:when>
- <xsl:otherwise>
- <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC" i18n:catalogue='plugin.core-ui'/>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- </div>
- </td>
- </tr>
- </table>
+ <table class="main">
+ <thead>
+ <tr><td><i18n:text i18n:catalogue='application' i18n:key='APPLICATION_PRODUCT_LABEL'/></td></tr>
+ </thead>
+ <tbody>
+ <tr class="main">
+ <td class="main">
+ <div class="wrap">
+ <h1 class="long">
+ <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TITLE" i18n:catalogue="plugin.core-ui"/>
+ </h1>
+ <p class="text">
+ <i18n:translate>
+ <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT1" i18n:catalogue='plugin.core-ui'/>
+ <i18n:param><xsl:call-template name="browserName"/></i18n:param>
+ </i18n:translate>
+ <br/>
+
+ <xsl:if test="$supported">
+ <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT2" i18n:catalogue='plugin.core-ui'/>
+ </xsl:if>
+ </p>
+ <xsl:if test="$supported">
+ <div class="browsers">
+ <xsl:call-template name="showBrowsers"/>
+ <div class="browsers-end"></div>
+ </div>
+ </xsl:if>
+
+ <p class="bottomtext">
+ <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC" i18n:catalogue='plugin.core-ui'/>
+ </p>
+ <xsl:if test="$doc != ''">
+ <xsl:call-template name="button">
+ <xsl:with-param name="text"><i18n:text i18n:key='PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_DOC_BTN' i18n:catalogue='plugin.core-ui'/></xsl:with-param>
+ <xsl:with-param name="href" select="$doc"/>
+ </xsl:call-template>
+ </xsl:if>
+ </div>
+ </td>
+ </tr>
+ </tbody>
+ <tfoot>
+ <tr>
+ <td>
+ <p>
+ <i18n:text i18n:key="WORKSPACE_AMETYS_SPLASHSCREEN_APP_AMETYS_VERSION" i18n:catalogue="plugin.core-ui"/>
+ <xsl:variable name="Versions" select="ametys:versions()"/>
+ <xsl:if test="$Versions/Component[Name='Ametys' and Version]">
+  <xsl:value-of select="Component[Name='Ametys']/Version"/>
+ </xsl:if>
+ </p>
+ </td>
+ </tr>
+ </tfoot>
+ </table>
</body>
</html>
</xsl:template>
- <xsl:template name="description">
- <i18n:translate>
- <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT1" i18n:catalogue='plugin.core-ui'/>
- <i18n:param><xsl:call-template name="browserName"/></i18n:param>
- </i18n:translate>
- <br/>
- <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_TEXT2" i18n:catalogue='plugin.core-ui'/>
+ <xsl:template name="button">
+ <xsl:param name="text"/>
+ <xsl:param name="href">javascript:void(0)</xsl:param>
+
+ <p class="additionnal">
+ <a href="{$href}"><xsl:copy-of select="$text"/> ></a>
+ </p>
</xsl:template>
<xsl:template name="browserName">
- <xsl:choose>
- <xsl:when test="$browser = 'ie'"><xsl:text> </xsl:text>(Microsoft Internet Explorer<xsl:text> </xsl:text><xsl:value-of select="$browserversion"/>)</xsl:when>
- <xsl:when test="$browser = 'ff'"><xsl:text> </xsl:text>(Mozilla Firefox<xsl:text> </xsl:text><xsl:value-of select="$browserversion"/>)</xsl:when>
- <xsl:when test="$browser = 'ch'"><xsl:text> </xsl:text>(Google Chrome<xsl:text> </xsl:text><xsl:value-of select="$browserversion"/>)</xsl:when>
- <xsl:when test="$browser = 'sa'"><xsl:text> </xsl:text>(Apple Safari<xsl:text> </xsl:text><xsl:value-of select="$browserversion"/>)</xsl:when>
- <xsl:when test="$browser = 'op'"><xsl:text> </xsl:text>(Opera<xsl:text> </xsl:text><xsl:value-of select="$browserversion"/>)</xsl:when>
- </xsl:choose>
+ <xsl:if test="string-length($browser) > 0">
+ <xsl:text> (</xsl:text>
+ <i18n:text i18n:catalogue='plugin.core-ui'>PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_<xsl:value-of select="$browser"/></i18n:text>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="$browserversion"/>
+ <xsl:text>)</xsl:text>
+ </xsl:if>
</xsl:template>
<xsl:template name="showBrowsers">
- <div class="browsers">
- <xsl:call-template name="parseBrowser">
- <xsl:with-param name="browserCode" select="'ie'"/>
- <xsl:with-param name="browserName" select="'Internet Explorer'"/>
- <xsl:with-param name="browserIcon" select="'ie_48.png'"/>
- <xsl:with-param name="supported" select="$supported"/>
- </xsl:call-template>
- <xsl:call-template name="parseBrowser">
- <xsl:with-param name="browserCode" select="'ff'"/>
- <xsl:with-param name="browserName" select="'Mozilla Firefox'"/>
- <xsl:with-param name="browserIcon" select="'firefox_48.png'"/>
- <xsl:with-param name="supported" select="$supported"/>
- </xsl:call-template>
- <xsl:call-template name="parseBrowser">
- <xsl:with-param name="browserCode" select="'ch'"/>
- <xsl:with-param name="browserName" select="'Google Chrome'"/>
- <xsl:with-param name="browserIcon" select="'chrome_48.png'"/>
- <xsl:with-param name="supported" select="$supported"/>
- </xsl:call-template>
- <xsl:call-template name="parseBrowser">
- <xsl:with-param name="browserCode" select="'sa'"/>
- <xsl:with-param name="browserName" select="'Apple Safari'"/>
- <xsl:with-param name="browserIcon" select="'safari_48.png'"/>
- <xsl:with-param name="supported" select="$supported"/>
- </xsl:call-template>
- <xsl:call-template name="parseBrowser">
- <xsl:with-param name="browserCode" select="'op'"/>
- <xsl:with-param name="browserName" select="'Opera'"/>
- <xsl:with-param name="browserIcon" select="'opera_48.png'"/>
- <xsl:with-param name="supported" select="$supported"/>
- </xsl:call-template>
- <div class="browsers-end"/>
- </div>
- </xsl:template>
-
- <xsl:template name="parseBrowser">
- <xsl:param name="browserCode"/>
- <xsl:param name="browserName"/>
- <xsl:param name="browserIcon"/>
- <xsl:param name="supported"/>
-
- <xsl:variable name="browserCodeWithQuots" select="substring-after($supported, $browserCode)"/>
- <xsl:if test="$browserCodeWithQuots != ''">
- <xsl:variable name="c">'</xsl:variable>
-
-
- <xsl:variable name="v" select="substring-before(substring-after(substring-after($browserCodeWithQuots, ':'), $c), $c)"/>
- <div class="browser">
- <div class="browser-name">
- <img src="{$contextPath}/plugins/core-ui/resources/img/browsers/{$browserIcon}" alt=""/>
- <br/><xsl:value-of select="$browserName"/>
- </div>
- <div class="browser-version">
- <xsl:choose>
- <xsl:when test="$v = '0-0'">
- <i18n:key i18n:text="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ALL" i18n:catalogue='plugin.core-ui'/>
- </xsl:when>
- <xsl:when test="substring-after($v, '0-') != ''">
- <i18n:translate>
- <i18n:text i18n:key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_LOWER" i18n:catalogue='plugin.core-ui'/>
- <i18n:param><xsl:value-of select="substring-after($v, '0-')"/></i18n:param>
- </i18n:translate>
- </xsl:when>
- <xsl:when test="substring-before($v, '-0') != ''">
- <i18n:translate>
- <i18n:text i18n:key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ABOVE" i18n:catalogue='plugin.core-ui'/>
- <i18n:param><xsl:value-of select="substring-before($v, '-0')"/></i18n:param>
- </i18n:translate>
- </xsl:when>
- <xsl:otherwise>
- <i18n:translate >
- <i18n:text i18n:key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_BETWEEN" i18n:catalogue='plugin.core-ui'/>
- <i18n:param><xsl:value-of select="substring-before($v, '-')"/></i18n:param>
- <i18n:param><xsl:value-of select="substring-after($v, '-')"/></i18n:param>
- </i18n:translate>
- </xsl:otherwise>
- </xsl:choose>
- </div>
- <div class="browser-end"></div>
+ <xsl:param name="supported" select="$supported"/>
+
+ <xsl:variable name="browserRaw">
+ <xsl:choose>
+ <xsl:when test="contains($supported, ',')"><xsl:value-of select="substring-before($supported, ',')"/></xsl:when>
+ <xsl:otherwise><xsl:value-of select="$supported"/></xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:variable name="separator">'</xsl:variable>
+ <xsl:variable name="browserCode" select="substring-before(substring-after($browserRaw, $separator), $separator)"/>
+ <xsl:variable name="browserMin" select="substring-before(substring-after(substring-after(substring-after($browserRaw, $separator), $separator), $separator), '-')"/>
+ <xsl:variable name="browserMax" select="substring-before(substring-after(substring-after(substring-after(substring-after($browserRaw, $separator), $separator), $separator), '-'), $separator)"/>
+
+ <div class="browser">
+ <div class="browser-name">
+ <img src="{$contextPath}/plugins/core-ui/resources/img/special/browsers/{$browserCode}_48.png" alt=""/>
+ <br/>
+ <i18n:text i18n:key="PLUGINS_CORE_UI_UNSUPPORTED_BROWSER_NAME_{$browserCode}" i18n:catalogue='plugin.core-ui'/>
+ </div>
+ <div class="browser-version">
+ <xsl:choose>
+ <xsl:when test="$browserMin = '0' and $browserMax = '0'">
+ <i18n:key i18n:text="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ALL" i18n:catalogue='plugin.core-ui'/>
+ </xsl:when>
+ <xsl:when test="$browserMin = '0'">
+ <i18n:translate>
+ <i18n:text i18n:key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_LOWER" i18n:catalogue='plugin.core-ui'/>
+ <i18n:param><xsl:value-of select="$browserMax"/></i18n:param>
+ </i18n:translate>
+ </xsl:when>
+ <xsl:when test="$browserMax = '0'">
+ <i18n:translate>
+ <i18n:text i18n:key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_ABOVE" i18n:catalogue='plugin.core-ui'/>
+ <i18n:param><xsl:value-of select="$browserMin"/></i18n:param>
+ </i18n:translate>
+ </xsl:when>
+ <xsl:otherwise>
+ <i18n:translate >
+ <i18n:text i18n:key="PLUGINS_CORE_UI_SUPPORTED_BROWSER_VERSIONS_BETWEEN" i18n:catalogue='plugin.core-ui'/>
+ <i18n:param><xsl:value-of select="$browserMin"/></i18n:param>
+ <i18n:param><xsl:value-of select="$browserMax"/></i18n:param>
+ </i18n:translate>
+ </xsl:otherwise>
+ </xsl:choose>
</div>
- </xsl:if>
+ </div>
+
+ <xsl:if test="contains($supported, ',')">
+ <xsl:call-template name="showBrowsers">
+ <xsl:with-param name="supported" select="substring-after($supported, ',')"/>
+ </xsl:call-template>
+ </xsl:if>
</xsl:template>
-
+
</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/pages/public/load-config.xsl
===================================================================
--- main/plugin-core-ui/pages/public/load-config.xsl (revision 34071)
+++ main/plugin-core-ui/pages/public/load-config.xsl (working copy)
@@ -19,67 +19,24 @@
xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
- <xsl:import href="plugin:core-ui://stylesheets/kernel.xsl"/>
-
- <xsl:param name="redirect"/>
+ <xsl:import href="../common.xsl"/>
- <xsl:variable name="contextPath" select="ametys:uriPrefix(false())"/>
- <xsl:variable name="workspaceURI" select="ametys:workspacePrefix()"/>
- <xsl:variable name="debug-mode" select="ametys:config('runtime.debug.ui')"/>
+ <xsl:template name="css-file">/plugins/core-ui/resources/css/special/config.css</xsl:template>
- <xsl:param name="authFailure">false</xsl:param>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_HEAD" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title"><i18n:text i18n:key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title-class">long</xsl:template>
+ <xsl:template name="text"><i18n:text i18n:key="PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TEXT" i18n:catalogue="plugin.core-ui"/></xsl:template>
- <xsl:template match="/">
- <html>
- <head>
- <title>Ametys - <i18n:text i18n:key='PLUGINS_CORE_UI_INCOMPLETE_CONFIG_PAGE_TITLE' i18n:catalogue='plugin.core-ui'/></title>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
-
- <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/public.css"/>
- </head>
- <body>
- <noscript><i18n:text i18n:key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS" i18n:catalogue="plugin.core-ui"/></noscript>
-
- <xsl:call-template name="kernel-base">
- <xsl:with-param name="theme">triton</xsl:with-param>
- </xsl:call-template>
-
- <script type="text/javascript" src="{$contextPath}/plugins/core-ui/resources/js/Ametys/public/RedirectActionScreen.js"></script>
-
- <script>
- Ext.onReady(function ()
- {
- Ext.application({
- requires: ['Ext.container.Viewport'],
- name: 'AmetysLogin',
-
- appFolder: 'ametys',
- enableQuickTips: false,
- launch: function() {
- Ext.create('Ext.container.Viewport', {
- layout: 'fit',
- items: Ext.create('Ametys.public.RedirectActionScreen', {
- text: "<i18n:text i18n:key='PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TITLE' i18n:catalogue='plugin.core-ui'/>",
- description: "<i18n:text i18n:key='PLUGINS_CORE_UI_INCOMPLETE_CONFIG_TEXT' i18n:catalogue='plugin.core-ui'/>",
+ <xsl:template name="text-additionnal">
+ <xsl:call-template name="button">
+ <xsl:with-param name="text"><i18n:text i18n:key='PLUGINS_CORE_UI_INCOMPLETE_CONFIG_LINK' i18n:catalogue='plugin.core-ui'/></xsl:with-param>
+ <xsl:with-param name="href" select="concat(ametys:uriPrefix(), '/index.html')"/>
+ </xsl:call-template>
+ </xsl:template>
- image: "<xsl:value-of select="$contextPath"/>/plugins/core-ui/resources/img/public/load_config.png",
-
- redirectUrl: "<xsl:value-of select="concat($contextPath, $workspaceURI, '/index.html')"/>",
- btnText: "<i18n:text i18n:key='PLUGINS_CORE_UI_INCOMPLETE_CONFIG_BTN' i18n:catalogue='plugin.core-ui'/>"
- })
- });
- }
- })
- });
- </script>
- </body>
- </html>
+ <xsl:template name="body-start">
+ <div class="code"><div></div></div>
</xsl:template>
-
- <!-- Do not load Ametys scripts -->
- <xsl:template name="ametys-scripts"/>
-
- <!-- Ignore browser compatibility -->
- <xsl:template name="kernel-browsers"/>
-</xsl:stylesheet>
\ No newline at end of file
+
+</xsl:stylesheet>
Index: main/plugin-core-ui/pages/public/login.xsl
===================================================================
--- main/plugin-core-ui/pages/public/login.xsl (revision 34071)
+++ main/plugin-core-ui/pages/public/login.xsl (working copy)
@@ -17,74 +17,92 @@
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
+ xmlns:math="java.lang.Math"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
- <xsl:import href="plugin:core-ui://stylesheets/kernel.xsl"/>
+ <xsl:import href="../common.xsl"/>
+ <xsl:import href="plugin:core://stylesheets/helper/common.xsl"/>
- <xsl:variable name="contextPath" select="ametys:uriPrefix(false())"/>
- <xsl:variable name="workspaceURI" select="ametys:workspacePrefix()"/>
- <xsl:variable name="debug-mode" select="ametys:config('runtime.debug.ui')"/>
+ <xsl:param name="login-failed"/><!-- true to display a login failed message -->
+ <xsl:param name="tooManyAttempts"/><!-- true when authentication failed due to too many attempts with that login -->
+ <xsl:param name="cookieFailure"/><!-- true when the remember me function failed to authenticate -->
- <xsl:param name="authFailure">false</xsl:param>
+ <xsl:variable name="uniqueId" select="substring-after(math:random(), '.')"/>
- <xsl:template match="/LoginForm">
- <html>
- <head>
- <title>Ametys - <i18n:text i18n:key='PLUGINS_CORE_UI_LOGIN_SCREEN_TITLE' i18n:catalogue='plugin.core-ui'/></title>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
-
- <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/login.css"/>
- </head>
- <body>
- <noscript><i18n:text i18n:key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS" i18n:catalogue="plugin.core-ui"/></noscript>
-
- <xsl:call-template name="kernel-base">
- <xsl:with-param name="theme">triton</xsl:with-param>
- </xsl:call-template>
-
- <script type="text/javascript" src="{$contextPath}/plugins/core-ui/resources/js/Ametys/public/LoginScreen.js"/>
-
- <xsl:call-template name="twitter-scripts"/>
-
- <script>
- Ext.onReady(function ()
- {
- Ext.application({
- requires: ['Ext.container.Viewport'],
- name: 'AmetysLogin',
-
- appFolder: 'ametys',
- enableQuickTips: false,
- launch: function() {
- Ext.create('Ext.container.Viewport', {
- layout: 'fit',
- items: Ext.create('Ametys.public.LoginScreen', {
- loginFieldName: 'Username',
- pwdFieldName: 'Password',
-
- authFailure: <xsl:value-of select="$authFailure"/>,
- rememberMe: <xsl:value-of select="rememberMe"/>,
- forgotPassword: false
- })
- });
- }
- })
- });
- </script>
- </body>
- </html>
- </xsl:template>
+ <xsl:template name="css-file">/plugins/core-ui/resources/css/special/login.css</xsl:template>
- <xsl:template name="twitter-scripts">
- <script>
- !function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");
- </script>
- </xsl:template>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_LOGIN_SCREEN_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
- <!-- Do not load Ametys scripts -->
- <xsl:template name="ametys-scripts"/>
+ <xsl:template name="inside-wrap">
+ <xsl:variable name="autocomplete">
+ <xsl:choose>
+ <xsl:when test="/LoginForm/autocomplete = 'true'">on</xsl:when>
+ <xsl:otherwise>off</xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <div class="connection">
+ <form method="post" action="">
+ <div>
+ <table class="input text login">
+ <tr>
+ <td class="input"><input type="text" name="Username" id="Username" autocomplete="{$autocomplete}" placeholder="plugin.core-ui:PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_LOGIN" i18n:attr="placeholder"/></td>
+ <td class="image"></td>
+ </tr>
+ </table>
+
+ <table class="input text password">
+ <tr>
+ <td class="input"><input type="password" name="Password" id="Password" autocomplete="{$autocomplete}" placeholder="plugin.core-ui:PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PASSWORD" i18n:attr="placeholder"/></td>
+ <td class="image"></td>
+ </tr>
+ </table>
+
+ <xsl:if test="useCaptcha = 'true'">
+ <div class="input">
+ <label for="Captcha"><i18n:text i18n:key="WORKSPACE_CMS_LOGIN_CAPTCHA" i18n:catalogue="workspace.cms"/></label>
+
+ <xsl:call-template name="captcha">
+ <xsl:with-param name="key-name" select="'CaptchaKey'"/>
+
+ <xsl:with-param name="value-name" select="'Captcha'"/>
+ <xsl:with-param name="value-id" select="concat('captcha-', $uniqueId)"/>
+ <xsl:with-param name="value-class">captcha</xsl:with-param>
+
+ <xsl:with-param name="image-alt"/>
+ <xsl:with-param name="image-alt-i18n" select="false()"/>
+ <xsl:with-param name="image-class">captcha-image</xsl:with-param>
+
+ <xsl:with-param name="image-height">50</xsl:with-param>
+ <xsl:with-param name="image-width">160</xsl:with-param>
+
+ <xsl:with-param name="contextPath" select="$contextPath"/>
+ </xsl:call-template>
+ </div>
+ <br style="clear: left"/>
+ </xsl:if>
+
+ <xsl:if test="$login-failed = 'true'">
+ <span class="error">
+ <xsl:choose>
+ <xsl:when test="$tooManyAttempts = 'true'"><i18n:text i18n:key="WORKSPACE_CMS_LOGIN_FAILED_MANY_TIME" i18n:catalogue="workspace.cms"/></xsl:when>
+ <xsl:when test="/LoginForm/useCaptcha = 'true'"><i18n:text i18n:key="WORKSPACE_CMS_LOGIN_FAILED_WITH_CAPTCHA" i18n:catalogue="workspace.cms"/></xsl:when>
+ <xsl:when test="$cookieFailure != 'true'"><i18n:text i18n:key="WORKSPACE_CMS_LOGIN_FAILED" i18n:catalogue="workspace.cms"/></xsl:when>
+ </xsl:choose>
+ </span>
+ <br/><br/>
+ </xsl:if>
+
+ <xsl:if test="/LoginForm/rememberMe = 'true'">
+ <div class="input checkbox rememberMe">
+ <input type="checkbox" name="rememberMe" id="rememberMe" value="true"/><label for="rememberMe"><i18n:text i18n:key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_PERSIST" i18n:catalogue="plugin.core-ui"/></label>
+ </div>
+ </xsl:if>
+
+ <button type="submit"><i18n:text i18n:key="PLUGINS_CORE_UI_LOGIN_SCREEN_FORM_SUBMIT" i18n:catalogue="plugin.core-ui"/></button>
+ </div>
+ </form>
+ </div>
+ </xsl:template>
- <!-- Ignore browser compatibility -->
- <xsl:template name="kernel-browsers"/>
-</xsl:stylesheet>
\ No newline at end of file
+</xsl:stylesheet>
Index: main/plugin-core-ui/pages/public/safe-mode.xsl
===================================================================
--- main/plugin-core-ui/pages/public/safe-mode.xsl (revision 34071)
+++ main/plugin-core-ui/pages/public/safe-mode.xsl (working copy)
@@ -19,67 +19,24 @@
xmlns:ametys="org.ametys.core.util.AmetysXSLTHelper"
xmlns:i18n="http://apache.org/cocoon/i18n/2.1">
- <xsl:import href="plugin:core-ui://stylesheets/kernel.xsl"/>
-
- <xsl:param name="redirect"/>
+ <xsl:import href="../common.xsl"/>
- <xsl:variable name="contextPath" select="ametys:uriPrefix(false())"/>
- <xsl:variable name="workspaceURI" select="ametys:workspacePrefix()"/>
- <xsl:variable name="debug-mode" select="ametys:config('runtime.debug.ui')"/>
+ <xsl:template name="css-file">/plugins/core-ui/resources/css/special/safemode.css</xsl:template>
- <xsl:param name="authFailure">false</xsl:param>
+ <xsl:template name="head"><i18n:text i18n:key="PLUGINS_CORE_UI_SAFE_MODE_HEAD" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title"><i18n:text i18n:key="PLUGINS_CORE_UI_SAFE_MODE_TITLE" i18n:catalogue="plugin.core-ui"/></xsl:template>
+ <xsl:template name="title-class">long</xsl:template>
+ <xsl:template name="text"><i18n:text i18n:key="PLUGINS_CORE_UI_SAFE_MODE_TEXT" i18n:catalogue="plugin.core-ui"/></xsl:template>
- <xsl:template match="/">
- <html>
- <head>
- <title>Ametys - <i18n:text i18n:key='PLUGINS_CORE_UI_SAFE_MODE_PAGE_TITLE' i18n:catalogue='plugin.core-ui'/></title>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
- <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
-
- <link rel="stylesheet" type="text/css" href="{$contextPath}/plugins/core-ui/resources/css/public.css"/>
- </head>
- <body>
- <noscript><i18n:text i18n:key="WORKSPACE_AMETYS_MAIN_ERROR_NOJS" i18n:catalogue="plugin.core-ui"/></noscript>
-
- <xsl:call-template name="kernel-base">
- <xsl:with-param name="theme">triton</xsl:with-param>
- </xsl:call-template>
-
- <script type="text/javascript" src="{$contextPath}/plugins/core-ui/resources/js/Ametys/public/RedirectActionScreen.js"></script>
-
- <script>
- Ext.onReady(function ()
- {
- Ext.application({
- requires: ['Ext.container.Viewport'],
- name: 'AmetysLogin',
-
- appFolder: 'ametys',
- enableQuickTips: false,
- launch: function() {
- Ext.create('Ext.container.Viewport', {
- layout: 'fit',
- items: Ext.create('Ametys.public.RedirectActionScreen', {
- text: "<i18n:text i18n:key='PLUGINS_CORE_UI_SAFE_MODE_TITLE' i18n:catalogue='plugin.core-ui'/>",
- description: "<i18n:text i18n:key='PLUGINS_CORE_UI_SAFE_MODE_TEXT' i18n:catalogue='plugin.core-ui'/>",
+ <xsl:template name="text-additionnal">
+ <xsl:call-template name="button">
+ <xsl:with-param name="text"><i18n:text i18n:key='PLUGINS_CORE_UI_SAFE_MODE_LINK' i18n:catalogue='plugin.core-ui'/></xsl:with-param>
+ <xsl:with-param name="href" select="concat(ametys:uriPrefix(), '/index.html')"/>
+ </xsl:call-template>
+ </xsl:template>
- image: "<xsl:value-of select="$contextPath"/>/plugins/core-ui/resources/img/public/load_config.png",
-
- redirectUrl: "<xsl:value-of select="concat($contextPath, $workspaceURI, '/index.html')"/>",
- btnText: "<i18n:text i18n:key='PLUGINS_CORE_UI_SAFE_MODE_BTN' i18n:catalogue='plugin.core-ui'/>"
- })
- });
- }
- })
- });
- </script>
- </body>
- </html>
+ <xsl:template name="body-start">
+ <div class="code"><div></div></div>
</xsl:template>
-
- <!-- Do not load Ametys scripts -->
- <xsl:template name="ametys-scripts"/>
-
- <!-- Ignore browser compatibility -->
- <xsl:template name="kernel-browsers"/>
+
</xsl:stylesheet>
\ No newline at end of file
Index: main/plugin-core-ui/resources/css/error.css
===================================================================
--- main/plugin-core-ui/resources/css/error.css (revision 34071)
+++ main/plugin-core-ui/resources/css/error.css (nonexistent)
@@ -1,61 +0,0 @@
-/*
- * Copyright 2010 Anyware Services
- *
- * Licensed 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.
- */
-
-.ametys-error-page > .x-panel-header-default {
-}
-
-.ametys-error-page > .x-panel-header-default .x-panel-header-title-default {
-}
-
-.ametys-error-page > .x-panel-body {
- background-image: url('../img/error_bg.jpg');
- background-color: rgba(95,162,221,0.1);
- background-size: cover;
- font-family: 'Open Sans', 'Helvetica Neue', helvetica, arial, verdana, sans-serif;
- color: #111;
-}
-
-.ametys-error-page .ametys-error-page-text {
- font-size: 150px;
- line-height: 180px;
-}
-
-.ametys-error-page .ametys-error-page-desc {
- line-height: 24px;
- text-align: center;
- font-size: 18px;
-}
-
-.ametys-error-page .ametys-error-page-message {
- overflow-x: hidden;
-}
-
-.ametys-error-page .ametys-error-page-details > .x-panel-header {
- padding: 4px;
- background: none;
- border: none;
-}
-
-.ametys-error-page .ametys-error-page-details > .x-panel-header .x-title {
- font-size: 14px;
- color: #097adb;
- line-height: 32px;
-}
-
-.ametys-error-page .ametys-error-page-details > .x-panel-body {
- background: rgba(255,255,255,0.4);
-}
-
Index: main/plugin-core-ui/resources/css/login.css
===================================================================
--- main/plugin-core-ui/resources/css/login.css (revision 34071)
+++ main/plugin-core-ui/resources/css/login.css (nonexistent)
@@ -1,69 +0,0 @@
-/*
- * Copyright 2010 Anyware Services
- *
- * Licensed 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.
- */
-.ametys-auth-screen > .x-panel-body {
- background-color: #e9e9e9;
- background-image: url('../img/bg.jpg');
- background-size: cover;
- background-repeat: repeat;
-}
-
-.ametys-auth-screen .ametys-news-dialog > .x-panel-body,
-.ametys-auth-screen .ametys-auth-dialog > .x-panel-body {
- background: rgba(255,255,255,0.85)
-}
-
-.ametys-auth-screen .ametys-auth-dialog label {
- font-size: 14px;
- line-height: 14px;
-}
-
-.ametys-auth-screen .ametys-auth-dialog .link-forgot-password {
- line-height: 32px;
- color: #35baf6;
- text-decoration: none;
- margin-left: 5px;
-}
-
-.ametys-auth-screen .ametys-auth-dialog .link-forgot-password:hover {
- text-decoration: underline;
-}
-
-.ametys-auth-screen .ametys-auth-dialog .ametys-auth-textbox {
- background-color: #FFF
-}
-
-.ametys-auth-screen .ametys-auth-dialog .ametys-auth-error-text {
- color: #cf4c35;
-}
-
-.ametys-auth-screen .ametys-auth-dialog .x-form-trigger {
- text-align: right;
- width: 40px;
- background-repeat: no-repeat;
- background-position: 0 9px;
-}
-
-.ametys-auth-screen .ametys-auth-dialog .x-form-trigger::before {
- content: "";
-}
-
-.ametys-auth-screen .ametys-auth-dialog .auth-login-trigger {
- background-image: url('../img/login/login.png');
-}
-
-.ametys-auth-screen .ametys-auth-dialog .auth-password-trigger {
- background-image: url('../img/login/password.png');
-}
Index: main/plugin-core-ui/resources/css/public.css
===================================================================
--- main/plugin-core-ui/resources/css/public.css (revision 34071)
+++ main/plugin-core-ui/resources/css/public.css (nonexistent)
@@ -1,39 +0,0 @@
-/*
- * Copyright 2010 Anyware Services
- *
- * Licensed 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.
- */
-
-.ametys-public-page > .x-panel-body {
- background-color: #e9e9e9;
- background-image: url('../img/bg.jpg');
- background-size: cover;
- background-repeat: repeat;
-}
-
-.ametys-public-page .ametys-public-page-inner-container > .x-panel-body {
- background: rgba(255,255,255,0.85);
-}
-
-.ametys-public-page .ametys-public-page-text {
- font-size: 40px;
- line-height: 50px;
-}
-
-.ametys-public-page .ametys-public-page-desc,
-.ametys-public-page .ametys-public-page-redirect-text {
- line-height: 30px;
- text-align: center;
- font-size: 18px;
-}
-
Index: main/plugin-core-ui/resources/css/special/browsers.css
===================================================================
--- main/plugin-core-ui/resources/css/special/browsers.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/browsers.css (revision 0)
@@ -0,0 +1,123 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+html {
+ height: 100%;
+ font-family: 'Helvetica Neue', helvetica, arial, verdana, sans-serif;
+ margin: 0;
+ padding: 0;
+ font-size: 16px;
+}
+body {
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ text-align: center;
+}
+
+table
+{
+ background-image: url('../../img/special/browsers/bg.jpg');
+ width: 100%;
+ height: 100%;
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-size: cover;
+ background-color: #eff6fc;
+ border-collapse: collapse;
+}
+
+table thead td {
+ background-image: url('../../img/special/logo.png');
+ background-repeat: no-repeat;
+ background-position: 1.5em center;
+ background-color: #7f7f7f;
+ color: #F0F0F0;
+
+ padding: 24px;
+ font-weight: 100;
+}
+
+table tfoot td {
+ text-align: right;
+ color: #F0F0F0;
+
+ background-color: #7f7f7f;
+}
+table tfoot td p {
+ font-size: 11px;
+ font-weight: 100;
+ padding: 11px;
+ margin: 0;
+}
+
+table tbody td {
+ text-align: center;
+}
+table tbody td h1 {
+ font-size: 128px;
+ font-weight: normal;
+ margin: 12px;
+}
+table tbody td p.text {
+ font-size: 27px;
+}
+
+
+.browsers {
+ margin: 1.3em auto 0 auto;
+ width: 1075px;
+}
+
+.browsers .browser {
+ margin: 5px;
+ width: 204px;
+ font-size: 14px;
+ line-height: 16px;
+ font-weight: normal;
+ float: left;
+}
+
+.browser-version {
+ color: #1F1F1F;
+ font-size: 12px;
+}
+
+.browsers-end {
+ clear: both;
+}
+
+table.main > tbody > tr > td > div.wrap > p.bottomtext {
+ font-size: 1em;
+ position: relative;
+ top: 1em;
+}
+
+p.additionnal {
+ text-align: right;
+ margin-right: 10%;
+}
+
+a {
+ background-color: #7d3d92;
+ border: 1px solid #7d3d92;
+ color: #F0F0F0;
+ text-decoration: none;
+ text-shadow: none;
+ padding: 6px 13px;
+ font-size: 13px;
+ font-weight: normal;
+}
\ No newline at end of file
Index: main/plugin-core-ui/resources/css/special/code.css
===================================================================
--- main/plugin-core-ui/resources/css/special/code.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/code.css (revision 0)
@@ -0,0 +1,95 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+div.code {
+ position: absolute;
+ font-size: 45em;
+ font-weight: 700;
+ line-height: 1em;
+
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+
+ display: inline-block;
+
+ -moz-transform-style: preserve-3d;
+ -webkit-transform-style: preserve-3d;
+ -o-transform-style: preserve-3d;
+ -ms-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+
+ -moz-perspective: 1em;
+ -webkit-perspective: 1em;
+ perspective: 1em;
+
+ -webkit-animation-name: code;
+ -moz-animation-name: code;
+ -o-animation-name: code;
+ animation-name: code;
+
+ top: 0;
+}
+div.code > div {
+ -ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=3)";
+}
+div.code > div {
+ opacity: 0.03;
+ position: absolute;
+ -moz-transform: rotateY(28deg) rotateX(14deg) rotateZ(-8deg);
+ -webkit-transform: rotateY(28deg) rotateX(14deg) rotateZ(-8deg);
+ -o-transform: rotateY(28deg) rotateX(14deg) rotateZ(-8deg);
+ -ms-transform: rotateY(28deg) rotateX(14deg) rotateZ(-8deg);
+ transform: rotateY(40deg) rotateX(2deg) rotateZ(-14deg);
+ left: 0.25em;
+ top: -0.05em;
+}
+
+/**
+ * ANIMATIONS
+ */
+@keyframes code {
+ 0% {
+ perspective: 1.2em;
+ }
+ 100% {
+ perspective: 1em;
+ }
+}
+
+div.code {
+ -webkit-animation-duration: 1.5s;
+ -moz-animation-duration: 1.5s;
+ -o-animation-duration: 1.5s;
+ animation-duration: 1.5s;
+ -webkit-animation-timing-function: ease;
+ -moz-animation-timing-function: ease;
+ -o-animation-timing-function: ease;
+ animation-timing-function: ease;
+}
+
+/**
+ * MOBILE
+ */
+@media screen and (max-width: 960px), screen and (max-height: 360px)) {
+ div.code {
+ font-size: 25em;
+ }
+ div.code > div {
+ left: 0;
+ top: 10%;
+ }
+}
Index: main/plugin-core-ui/resources/css/special/common.css
===================================================================
--- main/plugin-core-ui/resources/css/special/common.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/common.css (revision 0)
@@ -0,0 +1,403 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+@import 'fonts.css';
+
+html {
+ height: 100%;
+ font-family: 'Open Sans', 'Helvetica Neue', helvetica, arial, verdana, sans-serif;
+ margin: 0;
+ padding: 0;
+ font-size: 16px;
+}
+body {
+ -webkit-animation-name: opacity;
+ -moz-animation-name: opacity;
+ -o-animation-name: opacity;
+ animation-name: opacity;
+ height: 100%;
+ margin: 0;
+ padding: 0;
+ overflow: hidden;
+}
+
+div.head {
+ position: absolute;
+ width: 100%;
+ box-sizing: border-box;
+
+ text-align: center;
+
+ background-image: url('../../img/special/logo.png');
+ background-repeat: no-repeat;
+ background-position: 1.5em center;
+ background-color: #7f7f7f;
+ background-color: rgba(0,0,0,0.5);
+ color: #F0F0F0;
+
+ -webkit-animation-name: wakeup;
+ -moz-animation-name: wakeup;
+ -o-animation-name: wakeup;
+ animation-name: wakeup;
+}
+div.head, table.main thead tr td {
+ padding: 1.5em;
+ font-weight: 100;
+}
+
+div.bg
+{
+ width: 100%;
+ height: 100%;
+ background-repeat: no-repeat;
+ background-position: center center;
+ background-color: #eff6fc;
+ -webkit-background-size: cover;
+ -moz-background-size: cover;
+ -o-background-size: cover;
+ background-size: cover;
+}
+
+table.main {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ table-layout: fixed;
+ border-collapse: collapse;
+}
+
+table.main > tbody {
+ text-align: center;
+}
+
+table.main > tbody > tr > td {
+ text-align: center;
+}
+table.main > tbody > tr > td > div.wrap {
+ display: inline-block;
+ box-sizing: border-box;
+ width: 55em;
+ max-width: 100%;
+ max-height: 100%;
+ overflow: auto;
+ padding: 1em;
+}
+table.main > tbody > tr > td > div.wrap > h1 {
+ font-size: 9em;
+ line-height: 1em;
+ font-weight: normal;
+ margin: 0 0 0.1em 0;
+ overflow: hidden;
+}
+table.main > tbody > tr > td > div.wrap > h1.long {
+ font-size: 7.5em;
+}
+table.main > tbody > tr > td > div.wrap > p, .la-ball-pulse {
+ font-size: 1.7em;
+ font-weight: normal;
+ margin: 0.1em;
+ overflow: hidden;
+}
+table.main > tbody > tr > td > div.wrap > p.additionnal, .la-ball-pulse {
+ text-align: right;
+ margin-top: 0.75em;
+}
+.la-ball-pulse {
+ color: #7d3d92 !important;
+ margin-left: auto;
+}
+table.main > tbody > tr > td > div.wrap > p.additionnal a {
+ background-color: #7d3d92;
+ border: 1px solid #7d3d92;
+ color: #F0F0F0;
+ text-decoration: none;
+ text-shadow: none;
+ padding: 0.5em 1em;
+ font-size: .5em;
+ font-weight: normal;
+ display: inline-block;
+}
+table.main > tbody > tr > td > div.wrap > p.additionnal a:after {
+ content: "\f105";
+ font-family: FontAwesome;
+ padding-left: 1em;
+}
+
+table.main > tbody > tr > td > div.wrap > p.additionnal a.toggled:after {
+ display: none;
+}
+table.main > tbody > tr > td > div.wrap > p.additionnal a.toggled:before {
+ content: "\f104";
+ font-family: FontAwesome;
+ padding-right: 1em;
+}
+table.main > tbody > tr > td > div.wrap > p.additionnal a.toggled {
+ background-color: #61336f;
+ border-color: #61336f;
+}
+
+table.main > tbody > tr > td > div.wrap > p.additionnal a:hover {
+ background-color: #9d57b3;
+ border-color: #9d57b3;
+}
+table.main > tbody > tr > td > div.wrap > p.additionnal a.toggled:hover {
+ background-color: #7d3d92;
+ border-color: #7d3d92;
+}
+
+table.main > tbody > tr > td > div.wrap > p.additionnal a:active,
+table.main > tbody > tr > td > div.wrap > p.additionnal a.toggled:active {
+ background-color: #613171;
+ border-color: #613171;
+}
+
+
+
+table.main > tbody > tr > td > div.wrap > p.additionnal a:focus {
+ -webkit-box-shadow: inset 0px 0px 0px 1px #F0F0F0;
+ -moz-box-shadow: inset 0px 0px 0px 1px #F0F0F0;
+ box-shadow: inset 0px 0px 0px 1px #F0F0F0;
+}
+
+table.main > tbody > tr > td > div.wrap > p.additionnal a.disabled,
+table.main > tbody > tr > td > div.wrap > p.additionnal a.disabled:hover,
+table.main > tbody > tr > td > div.wrap > p.additionnal a.disabled:active,
+table.main > tbody > tr > td > div.wrap > p.additionnal a.disabled:focus {
+ background-color: #7f7f7f;
+ border: 1px solid #7f7f7f;
+ -webkit-box-shadow: none;
+ -moz-box-shadow: none;
+ box-shadow: none;
+}
+
+div.foot {
+ position: absolute;
+ width: 100%;
+ bottom: 0;
+
+ text-align: right;
+ color: #F0F0F0;
+
+ background-color: #7f7f7f;
+ background-color: rgba(0, 0, 0 ,0.5);
+
+ -webkit-animation-name: wakedown;
+ -moz-animation-name: wakedown;
+ -o-animation-name: wakedown;
+ animation-name: wakedown;
+}
+div.foot p {
+ display: inline-block;
+}
+div.foot p, table.main > tfoot > td > td {
+ font-size: 0.7em;
+ font-weight: 100;
+ padding: 1em;
+ margin: 0;
+}
+
+/**
+ * ANIMATIONS
+ */
+@keyframes wakeup {
+ 0% {
+ top: -5em;
+ }
+ 100% {
+ top: 0;
+ }
+}
+
+@keyframes wakedown {
+ 0% {
+ bottom: -4em;
+ }
+ 100% {
+ bottom: 0;
+ }
+}
+
+@keyframes opacity {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+body, div.head, div.foot {
+ -webkit-animation-duration: 1.5s;
+ -moz-animation-duration: 1.5s;
+ -o-animation-duration: 1.5s;
+ animation-duration: 1.5s;
+ -webkit-animation-timing-function: ease;
+ -moz-animation-timing-function: ease;
+ -o-animation-timing-function: ease;
+ animation-timing-function: ease;
+}
+
+/**
+ * MOBILE
+ */
+
+@media screen and (max-width: 960px), screen and (max-height: 360px)) {
+ html {
+ font-size: 12px;
+ }
+ table.main > tbody > tr > td > div.wrap > h1 {
+ font-size: 7em;
+ text-shadow: 0 0 4px #F0F0F0;
+ }
+ table.main > tbody > tr > td > div.wrap > h1.long {
+ font-size: 6em;
+ .longtext
+ }
+ table.main > tbody > tr > td > div.wrap > p {
+ text-shadow: 0 0 3px #F0F0F0;
+ }
+}
+
+/**
+ * WAIT
+ */
+
+/*!
+ * Load Awesome v1.1.0 (http://github.danielcardoso.net/load-awesome/)
+ * Copyright 2015 Daniel Cardoso <@DanielCardoso>
+ * Licensed under MIT
+ */
+.la-ball-pulse,
+.la-ball-pulse > div {
+ position: relative;
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.la-ball-pulse {
+ display: block;
+ /*font-size: 0;*/
+ color: #fff;
+}
+.la-ball-pulse.la-dark {
+ color: #333;
+}
+.la-ball-pulse > div {
+ display: inline-block;
+ float: none;
+ background-color: currentColor;
+ border: 0 solid currentColor;
+}
+.la-ball-pulse > div:nth-child(1) {
+ -webkit-animation-delay: -200ms;
+ -moz-animation-delay: -200ms;
+ -o-animation-delay: -200ms;
+ animation-delay: -200ms;
+}
+.la-ball-pulse > div:nth-child(2) {
+ -webkit-animation-delay: -100ms;
+ -moz-animation-delay: -100ms;
+ -o-animation-delay: -100ms;
+ animation-delay: -100ms;
+}
+.la-ball-pulse > div:nth-child(3) {
+ -webkit-animation-delay: 0ms;
+ -moz-animation-delay: 0ms;
+ -o-animation-delay: 0ms;
+ animation-delay: 0ms;
+}
+.la-ball-pulse > div {
+ width: 10px;
+ height: 10px;
+ margin: 4px;
+ border-radius: 100%;
+ -webkit-animation: ball-pulse 1s ease infinite;
+ -moz-animation: ball-pulse 1s ease infinite;
+ -o-animation: ball-pulse 1s ease infinite;
+ animation: ball-pulse 1s ease infinite;
+}
+.la-ball-pulse {
+ width: 4.25em;
+ height: 1.475em;
+}
+.la-ball-pulse > div {
+ width: 0.6em;
+ height: 0.6em;
+ margin: 0.3em;
+}
+/*
+ * Animation
+ */
+@-webkit-keyframes ball-pulse {
+ 0%,
+ 60%,
+ 100% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+ 30% {
+ opacity: .1;
+ -webkit-transform: scale(.01);
+ transform: scale(.01);
+ }
+}
+@-moz-keyframes ball-pulse {
+ 0%,
+ 60%,
+ 100% {
+ opacity: 1;
+ -moz-transform: scale(1);
+ transform: scale(1);
+ }
+ 30% {
+ opacity: .1;
+ -moz-transform: scale(.01);
+ transform: scale(.01);
+ }
+}
+@-o-keyframes ball-pulse {
+ 0%,
+ 60%,
+ 100% {
+ opacity: 1;
+ -o-transform: scale(1);
+ transform: scale(1);
+ }
+ 30% {
+ opacity: .1;
+ -o-transform: scale(.01);
+ transform: scale(.01);
+ }
+}
+@keyframes ball-pulse {
+ 0%,
+ 60%,
+ 100% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ -moz-transform: scale(1);
+ -o-transform: scale(1);
+ transform: scale(1);
+ }
+ 30% {
+ opacity: .1;
+ -webkit-transform: scale(.01);
+ -moz-transform: scale(.01);
+ -o-transform: scale(.01);
+ transform: scale(.01);
+ }
+}
\ No newline at end of file
Index: main/plugin-core-ui/resources/css/special/config.css
===================================================================
--- main/plugin-core-ui/resources/css/special/config.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/config.css (revision 0)
@@ -0,0 +1,37 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+@import 'common.css';
+@import 'code.css';
+
+div.bg
+{
+ background-image: url('../../img/special/public/bg.jpg');
+}
+
+div.wrap {
+ background-color: #CCCCCC;
+ background-color: rgba(255, 255, 255, 0.8);
+}
+
+div.code > div:before {
+ font-family: 'FontAwesome';
+ content: "\f085";
+}
+div.code > div {
+ opacity: 0.1;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
+}
Index: main/plugin-core-ui/resources/css/special/error.css
===================================================================
--- main/plugin-core-ui/resources/css/special/error.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/error.css (revision 0)
@@ -0,0 +1,98 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+@import 'common.css';
+@import 'code.css';
+
+
+div.bg
+{
+ background-image: url('../../img/special/errors/bg.jpg');
+}
+
+/**
+ * STACKTRACE
+ */
+table tr.additionnal {
+ display: none;
+}
+.stacktrace table tr.additionnal {
+ display: table-row;
+ height: 100%;
+
+ -webkit-animation-name: stacktrace-tr-additionnal;
+ -moz-animation-name: stacktrace-tr-additionnal;
+ -o-animation-name: stacktrace-tr-additionnal;
+ animation-name: stacktrace-tr-additionnal;
+}
+
+.stacktrace table tbody tr.main {
+ display: none;
+}
+.stacktrace table tbody p.additionnal {
+ margin-top: 0;
+}
+table.main > tbody > tr.additionnal > td {
+ padding: 0 1em;
+ text-align: left;
+}
+tr.additionnal h1 {
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+ margin: 0.1em;
+}
+div.stacktrace {
+ box-sizing: border-box;
+ margin: 0 auto;
+ padding: 1em;
+ height: 100%;
+ overflow: scroll;
+ background-color: #E5E5E5;
+ background-color: rgba(255,255,255,0.9);
+}
+
+/**
+ * ANIMATIONS
+ */
+@keyframes code {
+ 0% {
+ perspective: 1.2em;
+ }
+ 100% {
+ perspective: 1em;
+ }
+}
+
+@keyframes stacktrace-tr-additionnal {
+ 0% {
+ opacity: 0;
+ }
+ 100% {
+ opacity: 1;
+ }
+}
+
+.stacktrace table tr.additionnal {
+ -webkit-animation-duration: 1.5s;
+ -moz-animation-duration: 1.5s;
+ -o-animation-duration: 1.5s;
+ animation-duration: 1.5s;
+ -webkit-animation-timing-function: ease;
+ -moz-animation-timing-function: ease;
+ -o-animation-timing-function: ease;
+ animation-timing-function: ease;
+}
Index: main/plugin-core-ui/resources/css/special/fonts.css
===================================================================
--- main/plugin-core-ui/resources/css/special/fonts.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/fonts.css (revision 0)
@@ -0,0 +1,93 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-Light.ttf');
+ font-weight: 300;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-LightItalic.ttf');
+ font-weight: 300;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-Regular.ttf');
+ font-weight: 400;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-Italic.ttf');
+ font-weight: 400;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-Semibold.ttf');
+ font-weight: 600;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-SemiboldItalic.ttf');
+ font-weight: 600;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-Bold.ttf');
+ font-weight: 700;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-BoldItalic.ttf');
+ font-weight: 700;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-ExtraBold.ttf');
+ font-weight: 800;
+ font-style: normal;
+}
+
+@font-face {
+ font-family: 'Open Sans';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/fonts/OpenSans-ExtraBoldItalic.ttf');
+ font-weight: 800;
+ font-style: italic;
+}
+
+@font-face {
+ font-family: 'FontAwesome';
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.eot?v=4.4.0');
+ src: url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'), url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'), url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'), url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'), url('../../../../../plugins/extjs6/resources/classic/theme-triton/resources/font-awesome/fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');
+ font-weight: normal;
+ font-style: normal;
+}
Index: main/plugin-core-ui/resources/css/special/login.css
===================================================================
--- main/plugin-core-ui/resources/css/special/login.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/login.css (revision 0)
@@ -0,0 +1,121 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+@import 'common.css';
+
+div.bg {
+ background-image: url('../../img/special/public/bg.jpg');
+}
+
+div.connection {
+ background-color: #CCCCCC;
+ background-color: rgba(255, 255, 255, 0.8);
+ border: 1px solid #7d3d92;
+
+ padding: 1em;
+
+ max-width: 20em;
+
+ text-align: left;
+}
+
+table.input {
+ width: 100%;
+ border: 1px solid #7f7f7f;
+ border: 1px solid #7f7f7f;
+ background-color: #FFF;
+ border-collapse: collapse;
+ table-layout: fixed;
+ margin-bottom: 0.5em;
+}
+
+table.input td.input {
+ padding: 1em 0 1em 1em;
+}
+table.input td.input input {
+ border-style: none;
+ outline-style: none;
+ background-color: transparent;
+ width: 100%;
+}
+
+table.input td.image {
+ width: 2em;
+ padding: 0 1em;
+}
+table.input td.image:after {
+ font-family: "FontAwesome";
+ font-size: 2em;
+ color: #E4E4E4;
+ vertical-align: middle;
+}
+table.input.login td.image:after {
+ content: "\f007";
+}
+table.input.password td.image:after {
+ content: "\f023";
+}
+
+
+
+div.checkbox {
+ margin-bottom: 1em;
+}
+div.checkbox input {
+ width: 0.8em;
+ height: 0.8em;
+ vertical-align: middle;
+}
+div.checkbox label {
+ font-size: 0.8em;
+}
+
+button {
+ box-sizing: border-box;
+ width: 100%;
+ padding: 0.8em;
+ position: relative;
+ background-color: #7d3d92;
+ border: 1px solid #7d3d92;
+ color: #fff;
+ font-size: 1em;
+ outline-style: none;
+}
+
+button:after {
+ content: "\f105";
+ font-family: "FontAwesome";
+ font-size: 2em;
+ line-height: 1.39em;
+ position: absolute;
+ right: 0.5em;
+ top: 0;
+}
+
+button:hover {
+ background-color: #9d57b3;
+ border-color: #9d57b3;
+}
+button:active {
+ background-color: #613171;
+ border-color: #613171;
+}
+button:focus {
+ -webkit-box-shadow: inset 0px 0px 0px 1px #F0F0F0;
+ -moz-box-shadow: inset 0px 0px 0px 1px #F0F0F0;
+ box-shadow: inset 0px 0px 0px 1px #F0F0F0;
+}
+}
\ No newline at end of file
Index: main/plugin-core-ui/resources/css/special/safemode.css
===================================================================
--- main/plugin-core-ui/resources/css/special/safemode.css (revision 0)
+++ main/plugin-core-ui/resources/css/special/safemode.css (revision 0)
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2015 Anyware Services
+ *
+ * Licensed 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.
+ */
+
+@import 'common.css';
+@import 'code.css';
+
+div.bg
+{
+ background-image: url('../../img/special/errors/bg.jpg');
+}
+
+div.code > div:before {
+ font-family: 'FontAwesome';
+ content: "\f071";
+}
+div.code > div {
+ opacity: 0.03;
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=10)";
+}
Index: main/plugin-core-ui/resources/css/unsupported-browser.css
===================================================================
--- main/plugin-core-ui/resources/css/unsupported-browser.css (revision 34071)
+++ main/plugin-core-ui/resources/css/unsupported-browser.css (nonexistent)
@@ -1,104 +0,0 @@
-/*
- * Copyright 2010 Anyware Services
- *
- * Licensed 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.
- */
-
-html, body {
- margin: 0;
- height: 100%
-}
-
-body {
- background-color: #e9e9e9;
- background-image: url('../img/bg.jpg');
- background-size: cover;
- background-repeat: repeat;
- font-family: 'Open Sans', 'Helvetica Neue', helvetica, arial, verdana, sans-serif;
- color: #404040;
- font-weight: 300;
-}
-.unsupported-browser-header {
- background-color:#812281;
- color:#f0f0f0;
- text-align:center;
- padding: 10px 0;
- color: #F0F0F0;
- font-size: 16px;
- font-weight: 400;
- font-family: "Open Sans","Helvetica Neue",helvetica,arial,verdana,sans-serif;
- line-height: 20px;
-}
-
-
-table.unsupported-browser-inner-container .text-container {
- background: rgba(255,255,255,0.85);
- padding: 20px;
-}
-
-table.unsupported-browser-inner-container td {
- text-align: center;
-}
-
-.unsupported-browser-text {
- font-size: 40px;
- line-height: 50px;
-}
-
-.unsupported-browser-desc,
-.unsupported-browser-redirect-text {
- line-height: 30px;
- text-align: center;
- font-size: 16px;
-}
-
-.unsupported-browser-redirect-text a {
- color: #35baf6;
- text-decoration: none;
-}
-
-.unsupported-browser-redirect-text a:hover {
- text-decoration: underline;
-}
-
-.browsers {
- margin-top: 20px;
- margin-left: auto;
- margin-right: auto;
- display: inline-block;
-}
-
-.browsers .browser {
- margin: 5px;
- float: left;
- width: 130px;
- line-height: 22px;
-}
-
-.browsers .browser div.browser-end {
- clear: both;
-}
-
-
-.browsers .browser .browser-name {
- display: block;
- margin-left: auto;
- margin-right: auto;
-}
-
-.browsers .browser .browser-version {
- color: #999;
- font-size: 14px;
-}
-
-
Index: main/plugin-core-ui/resources/img/special/browsers/chrome_48.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: main\plugin-core-ui\resources\img\special\browsers\chrome_48.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
Index: main/plugin-core-ui/resources/img/special/browsers/firefox_48.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: main\plugin-core-ui\resources\img\special\browsers\firefox_48.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
Index: main/plugin-core-ui/resources/img/special/browsers/opera_48.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: main\plugin-core-ui\resources\img\special\browsers\opera_48.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
Index: main/plugin-core-ui/resources/img/special/browsers/safari_48.png
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = image/png
Property changes on: main\plugin-core-ui\resources\img\special\browsers\safari_48.png
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+image/png
Index: main/plugin-core-ui/resources/js/Ametys/form/widget/AbstractQueryableComboBox.js
===================================================================
--- main/plugin-core-ui/resources/js/Ametys/form/widget/AbstractQueryableComboBox.js (revision 34071)
+++ main/plugin-core-ui/resources/js/Ametys/form/widget/AbstractQueryableComboBox.js (working copy)
@@ -224,7 +224,7 @@
{
value = Ext.Array.from(value);
- this.combobox.value = this.combobox.multiSelect ? value : value[0];
+ //this.combobox.value = this.combobox.multiSelect ? value : value[0];
this.callParent([value]);
this.combobox.setValue(value);
},
Index: main/plugin-core-ui/resources/js/Ametys/public/RedirectActionScreen.js
===================================================================
--- main/plugin-core-ui/resources/js/Ametys/public/RedirectActionScreen.js (revision 34071)
+++ main/plugin-core-ui/resources/js/Ametys/public/RedirectActionScreen.js (nonexistent)
@@ -1,152 +0,0 @@
-/*
- * Copyright 2012 Anyware Services
- *
- * Licensed 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.
- */
-
-/**
- * This panel display a full screen for an action of redirection.
- * This is an example of use:
- *
- *
- * Ext.create('Ametys.public.RedirectActionScreen', {
- * text: "My action title",
- * description: "My action description",
- *
- * image: "/my/action/image.png",
- *
- * btnText: "Action",
- * redirectUrl: "/my/action/url",
- * redirectText: 'Go to ...'
- * });
- *
- */
-Ext.define('Ametys.public.RedirectActionScreen', {
- extend: 'Ext.panel.Panel',
-
- /**
- * @cfg {String} text The main text
- */
- text: '',
-
- /**
- * @cfg {String} btnText The text of button to redirect
- */
- btnText: '',
-
- /**
- * @cfg {String} redirectUrl The URL to redirect to.
- */
- redirectUrl: '#',
-
- /**
- * @cfg {String} [redirectText] The text to display above redirect button
- */
- redirectText: '',
-
- /**
- * @cfg {String} [description] The description
- */
- description: '',
-
- /**
- * @cfg {String} [image] The path to the image illustration in size 128x128 pixels.
- */
-
- cls : 'ametys-public-page',
-
- title: "<i18n:text i18n:catalogue='application' i18n:key='APPLICATION_PRODUCT_LABEL'/>",
- titleAlign : "center",
-
- maximized : true,
- frameHeader : false,
-
- layout : {
- type : "vbox",
- align: "center",
- pack: "center"
- },
-
- initComponent: function ()
- {
- this.items = [{
- xtype : "panel",
- bodyPadding: '30 20',
- width : "80%",
- cls : "ametys-public-page-inner-container",
- layout : {
- type : "vbox",
- align : "center",
- pack : "center"
- },
- items : [
- // Title
- {
- xtype : "label",
- cls : "ametys-public-page-text",
- text : this.text
- },
- // Description
- this.getDescription(),
- // Image
- {
- hidden: Ext.isEmpty(this.image),
- xtype: 'image',
- cls : "ametys-public-page-img",
- src: this.image,
- width: 128,
- height: 128,
- margin: '20 0 0 0'
- },
- // Redirect text
- {
- hidden: Ext.isEmpty(this.redirectText),
- xtype : "label",
- cls : "ametys-public-page-redirect-text",
- text : this.redirectText
- },
- // Redirection button
- {
- xtype : "button",
- scale : "large",
- margin: '20 0 0 0',
- cls : "ametys-public-page-btn",
- iconAlign : "right",
- iconCls : "x-fa fa-angle-right",
- text : this.btnText,
- handler: function (btn) {
- window.location.href = this.redirectUrl;
- },
- scope: this
- }
- ]
- }]
-
- this.callParent(arguments);
- },
-
- /**
- * Get the description's component
- * @return {Object} The component configuration
- */
- getDescription: function ()
- {
- return {
- hidden: Ext.isEmpty(this.description),
- xtype : "label",
- cls : "ametys-public-page-desc",
- html : '<div>' + this.description + '</div>'
- };
- }
-});
-
Index: main/plugin-core-ui/stylesheets/workspace.xsl
===================================================================
--- main/plugin-core-ui/stylesheets/workspace.xsl (revision 34071)
+++ main/plugin-core-ui/stylesheets/workspace.xsl (working copy)
@@ -57,12 +57,12 @@
<xsl:template match="workspace">
<html>
<head>
- <meta http-equiv="X-UA-Compatible" content="IE=10" />
+ <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/>
<xsl:call-template name="title"/>
- <link rel="icon" type="image/gif" href="{$contextPath}/plugins/core-ui/resources/img/runtime_favico.gif" />
- <link rel="shortcut icon" type="image/x-icon" href="{$contextPath}/plugins/core-ui/resources/img/runtime_favico.ico" />
+ <link rel="icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
+ <link rel="shortcut icon" type="image/x-icon" href="{$contextPath}/kernel/resources/img/favicon.ico" />
<xsl:if test="$splashscreen != 'no'">
<style type="text/css" media="screen">
Index: main/workspace-admin/sitemap.xmap
===================================================================
--- main/workspace-admin/sitemap.xmap (revision 34071)
+++ main/workspace-admin/sitemap.xmap (working copy)
@@ -106,40 +106,25 @@
<!-- unauthenticated pages -->
<map:match pattern="public/unsupported-browser.html">
<map:generate type="action-result"/>
- <map:transform src="plugin:core-ui://pages/public/{1}.xsl">
- <map:parameter name="contextPath" value="{request:contextPath}"/>
- <map:parameter name="workspaceName" value="{request-attr:workspaceName}"/>
- <map:parameter name="workspaceURI" value="{request-attr:workspaceURI}"/>
-
- <map:parameter name="redirect" value="{request-param:uri}"/>
- <map:parameter name="doc" value="{request-param:doc}"/>
-
- <map:parameter name="browser" value="{request-param:browser}"/>
- <map:parameter name="browserversion" value="{request-param:browserversion}"/>
- <map:parameter name="supported" value="{request-param:supported}"/>
- </map:transform>
+ <map:transform src="plugin:core-ui://pages/public/{1}.xsl"/>
<map:transform type="i18n">
<map:parameter name="locale" value="{locale:locale}"/>
<map:parameter name="workspace" value="{request-attr:workspaceName}"/>
</map:transform>
<!-- Do not minimize here. See RUNTIME-877 -->
<!-- No HTML5 here -->
- <map:serialize/>
+ <map:serialize type="xhtml4"/>
</map:match>
<map:match pattern="public/*.html">
<map:generate type="action-result"/>
- <map:transform src="plugin:core-ui://pages/public/{1}.xsl">
- <map:parameter name="contextPath" value="{request:contextPath}"/>
- <map:parameter name="workspaceName" value="{request-attr:workspaceName}"/>
- <map:parameter name="workspaceURI" value="{request-attr:workspaceURI}"/>
- </map:transform>
+ <map:transform src="plugin:core-ui://pages/public/{1}.xsl"/>
<map:transform type="i18n">
<map:parameter name="locale" value="{locale:locale}"/>
<map:parameter name="workspace" value="{request-attr:workspaceName}"/>
</map:transform>
<!-- Do not minimize here. See RUNTIME-877 -->
- <map:serialize type="xhtml5"/>
+ <map:serialize/>
</map:match>
<!-- ************** -->