未验证 提交 3472e10e 编写于 作者: D Daniel Beck 提交者: GitHub

Remove 'auto refresh' feature (#4503)

* Remove 'auto refresh' feature

* Remove obsolete CSS
上级 5729fb71
......@@ -28,7 +28,6 @@ package hudson;
import hudson.model.Slave;
import hudson.security.*;
import java.util.function.Predicate;
import jenkins.telemetry.impl.AutoRefresh;
import jenkins.util.SystemProperties;
import hudson.cli.CLICommand;
import hudson.console.ConsoleAnnotationDescriptor;
......@@ -646,54 +645,17 @@ public class Functions {
private static final SimpleFormatter formatter = new SimpleFormatter();
/**
* Used by {@code layout.jelly} to control the auto refresh behavior.
* No longer used.
*
* @param noAutoRefresh
* On certain pages, like a page with forms, will have annoying interference
* with auto refresh. On those pages, disable auto-refresh.
* @deprecated auto refresh has been removed
*/
@Deprecated
public static void configureAutoRefresh(HttpServletRequest request, HttpServletResponse response, boolean noAutoRefresh) {
if(noAutoRefresh)
return;
String param = request.getParameter("auto_refresh");
boolean refresh = isAutoRefresh(request);
if (param != null) {
refresh = Boolean.parseBoolean(param);
Cookie c = new Cookie("hudson_auto_refresh", Boolean.toString(refresh));
// Need to set path or it will not stick from e.g. a project page to the dashboard.
// Using request.getContextPath() might work but it seems simpler to just use the hudson_ prefix
// to avoid conflicts with any other web apps that might be on the same machine.
c.setPath("/");
c.setMaxAge(60*60*24*30); // persist it roughly for a month
c.setHttpOnly(true);
response.addCookie(c);
}
if (refresh) {
response.addHeader("Refresh", SystemProperties.getString("hudson.Functions.autoRefreshSeconds", "10"));
}
try {
ExtensionList.lookupSingleton(AutoRefresh.class).recordRequest(request, refresh);
} catch (Exception e) {
LOGGER.log(Level.WARNING, "Failed to record auto refresh status in telemetry", e);
}
/* feature has been removed */
}
@Deprecated
public static boolean isAutoRefresh(HttpServletRequest request) {
String param = request.getParameter("auto_refresh");
if (param != null) {
return Boolean.parseBoolean(param);
}
Cookie[] cookies = request.getCookies();
if(cookies==null)
return false; // when API design messes it up, we all suffer
for (Cookie c : cookies) {
if (c.getName().equals("hudson_auto_refresh")) {
return Boolean.parseBoolean(c.getValue());
}
}
return false;
}
......
......@@ -384,12 +384,15 @@ public abstract class View extends AbstractModelObject implements AccessControll
}
/**
* Enables or disables automatic refreshes of the view.
* By default, automatic refreshes are enabled.
* Used to enable or disable automatic refreshes of the view.
*
* @since 1.557
*
* @deprecated Auto-refresh has been removed
*/
@Deprecated
public boolean isAutomaticRefreshEnabled() {
return true;
return false;
}
/**
......
/*
* The MIT License
*
* Copyright (c) 2019, Daniel Beck
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
package jenkins.telemetry.impl;
import hudson.Extension;
import jenkins.telemetry.Telemetry;
import net.sf.json.JSONObject;
import org.kohsuke.accmod.Restricted;
import org.kohsuke.accmod.restrictions.NoExternalUse;
import javax.annotation.Nonnull;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.time.LocalDate;
import java.util.HashSet;
import java.util.Set;
@Extension
@Restricted(NoExternalUse.class)
public class AutoRefresh extends Telemetry {
private static final Set<String> sessionsWithAutoRefresh = new HashSet<>();
private static final Set<String> sessionsWithoutAutoRefresh = new HashSet<>();
@Nonnull
@Override
public String getDisplayName() {
return Messages.AutoRefresh_DisplayName();
}
@Nonnull
@Override
public LocalDate getStart() {
return LocalDate.of(2019, 10, 20);
}
@Nonnull
@Override
public LocalDate getEnd() {
return LocalDate.of(2019, 12, 31);
}
@Override
public JSONObject createContent() {
int sessionsWithAutoRefreshCount, sessionsWithoutAutoRefreshCount;
synchronized (sessionsWithAutoRefresh) {
sessionsWithAutoRefreshCount = sessionsWithAutoRefresh.size();
sessionsWithAutoRefresh.clear();
}
synchronized (sessionsWithoutAutoRefresh) {
sessionsWithoutAutoRefreshCount = sessionsWithoutAutoRefresh.size();
sessionsWithoutAutoRefresh.clear();
}
if (sessionsWithAutoRefreshCount == 0 && sessionsWithoutAutoRefreshCount == 0) {
return null;
}
JSONObject payload = new JSONObject();
payload.put("enabled", sessionsWithAutoRefreshCount);
payload.put("disabled", sessionsWithoutAutoRefreshCount);
return payload;
}
public void recordRequest(HttpServletRequest request, boolean enabled) {
if (Telemetry.isDisabled()) {
return;
}
if (!isActivePeriod()) {
return;
}
HttpSession session = request.getSession(false);
if (session != null) {
String sessionId = session.getId();
if (enabled) {
synchronized (sessionsWithAutoRefresh) {
sessionsWithAutoRefresh.add(sessionId);
}
} else {
synchronized (sessionsWithoutAutoRefresh) {
sessionsWithoutAutoRefresh.add(sessionId);
}
}
}
}
}
......@@ -26,7 +26,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<l:layout permission="${app.ADMINISTER}" norefresh="true" type="one-column" title="${%about(app.VERSION)}">
<l:layout permission="${app.ADMINISTER}" type="one-column" title="${%about(app.VERSION)}">
<l:main-panel>
<div class="container-fluid">
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}" norefresh="true">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<local:tabBar page="advanced" xmlns:local="/hudson/PluginManager" />
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}" forcedUpdateCheck="true" norefresh="true">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}" forcedUpdateCheck="true">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<table style="width:100%; height:100%;">
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}" norefresh="true">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<st:adjunct includes="hudson.PluginManager._table"/>
......
......@@ -31,7 +31,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}" norefresh="true">
<l:layout title="${%Update Center}" permission="${app.ADMINISTER}">
<l:header>
<script type="text/javascript">
<![CDATA[
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout norefresh="true" permission="${app.READ}">
<l:layout permission="${app.READ}">
<st:include page="sidepanel.jelly" it="${app}"/>
<l:main-panel>
<h1>
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout norefresh="true" permission="${app.READ}">
<l:layout permission="${app.READ}">
<st:include page="sidepanel.jelly" it="${app}"/>
<l:main-panel>
<h1>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true">
<l:layout>
<st:include page="sidepanel.jelly" />
<l:main-panel>
<f:form method="post" name="config" action="configSubmit">
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true">
<l:layout>
<st:include page="sidepanel.jelly" />
<l:main-panel>
......
......@@ -30,7 +30,7 @@ THE SOFTWARE.
<l:layout title="${it.fullDisplayName} ${%Changes}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<t:buildCaption autorefresh="true">${%Changes}</t:buildCaption>
<t:buildCaption>${%Changes}</t:buildCaption>
<j:choose>
<j:when test="${it.hasChangeSetComputed()}">
<st:include page="index.jelly" it="${it.changeSet}" />
......
......@@ -47,7 +47,7 @@ THE SOFTWARE.
</div>
</div>
<t:buildCaption autorefresh="true">
<t:buildCaption>
${%Build} ${it.displayName}
(<i:formatDate value="${it.timestamp.time}" type="both" dateStyle="medium" timeStyle="medium"/>)
</t:buildCaption>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${it.displayName}" norefresh="true">
<l:layout title="${it.displayName}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<form action="submitDescription" method="post">
......
......@@ -26,7 +26,7 @@ THE SOFTWARE.
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<st:statusCode value="400" /><!-- clearly indicate that this page is an error page -->
<st:setHeader name="X-Error" value="${message}"/>
<l:layout title="Jenkins" norefresh="true">
<l:layout title="Jenkins">
<l:header />
<l:side-panel />
<l:main-panel>
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout"
xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${it.CONFIGURE}" title="${%title(it.displayName)}">
<l:layout permission="${it.CONFIGURE}" title="${%title(it.displayName)}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<f:form method="post" action="configSubmit" name="config">
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${%title(it.displayName)}" norefresh="true">
<l:layout title="${%title(it.displayName)}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<l:hasPermission permission="${it.DISCONNECT}">
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${%title(it.displayName)}" norefresh="true">
<l:layout title="${%title(it.displayName)}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<l:hasPermission permission="${it.DISCONNECT}">
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout"
xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${it.CREATE}">
<l:layout permission="${it.CREATE}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<f:form method="post" action="doCreateItem" name="config">
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout permission="${app.ADMINISTER}" title="${%Node Monitoring Configuration}" norefresh="true">
<l:layout permission="${app.ADMINISTER}" title="${%Node Monitoring Configuration}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<!-- to make the form field binding work -->
......
......@@ -32,7 +32,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<j:getStatic var="createPermission" className="hudson.model.Computer" field="CREATE"/>
<l:layout norefresh="true" permission="${createPermission}">
<l:layout permission="${createPermission}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<j:invokeStatic var="slaves" className="hudson.slaves.NodeDescriptor" method="allInstantiable" />
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout norefresh="true" type="one-column" permission="${it.EXTENDED_READ}" title="${%Config(it.displayName)}">
<l:layout type="one-column" permission="${it.EXTENDED_READ}" title="${%Config(it.displayName)}">
<l:js src="jsbundles/config-scrollspy.js" />
<l:css src="jsbundles/config-scrollspy.css" />
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${app.primaryView.CREATE}">
<l:layout permission="${app.primaryView.CREATE}">
<st:include page="sidepanel.jelly" it="${it.user}"/>
<l:main-panel>
......
......@@ -35,7 +35,7 @@ THE SOFTWARE.
405 is "Method Not Allowed" and this fits here because we need POST.
-->
<st:statusCode value="405" />
<l:layout title="${it.displayName}" norefresh="true">
<l:layout title="${it.displayName}">
<st:include page="sidepanel.jelly" it="${it.job}"/>
<l:main-panel>
<div class="behavior-loading">${%LOADING}</div>
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${it.displayName} Config" norefresh="true">
<l:layout title="${it.displayName} Config">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<div class="behavior-loading">${%LOADING}</div>
......
......@@ -26,7 +26,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout"
xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${it.fullDisplayName}" norefresh="true">
<l:layout title="${it.fullDisplayName}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<j:set var="msg" value="${it.whyKeepLog}"/>
......
......@@ -29,7 +29,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<st:compress xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${it.fullDisplayName} Console" norefresh="true">
<l:layout title="${it.fullDisplayName} Console">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<t:buildCaption>
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${it.fullDisplayName}" norefresh="true">
<l:layout title="${it.fullDisplayName}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<table>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout norefresh="true" permission="${app.ADMINISTER}" title="${%title(it.fullName)}">
<l:layout permission="${app.ADMINISTER}" title="${%title(it.fullName)}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<f:form method="post" action="configSubmit" name="config">
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout norefresh="true" title="${%Edit View}" permission="${it.CONFIGURE}">
<l:layout title="${%Edit View}" permission="${it.CONFIGURE}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<!-- to make the form field binding work -->
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<st:compress xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${(it.class.name=='hudson.model.AllView' and it.ownerItemGroup == app) ? '%Dashboard' : it.displayName}${not empty it.ownerItemGroup.fullDisplayName?' ['+it.ownerItemGroup.fullDisplayName+']':''}" norefresh="${!it.automaticRefreshEnabled}">
<l:layout title="${(it.class.name=='hudson.model.AllView' and it.ownerItemGroup == app) ? '%Dashboard' : it.displayName}${not empty it.ownerItemGroup.fullDisplayName?' ['+it.ownerItemGroup.fullDisplayName+']':''}">
<j:set var="view" value="${it}"/> <!-- expose view to the scripts we include from owner -->
<st:include page="sidepanel.jelly" />
<l:main-panel>
......
......@@ -26,7 +26,7 @@ THE SOFTWARE.
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<j:getStatic var="permission" className="hudson.model.Item" field="CREATE"/>
<l:layout norefresh="true" type="one-column" permission="${permission}" title="${%NewJob(it.newPronoun)}">
<l:layout type="one-column" permission="${permission}" title="${%NewJob(it.newPronoun)}">
<l:js src="jsbundles/add-item.js" />
<l:css src="jsbundles/add-item.css" />
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout"
xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${app.ADMINISTER}" title="${%title(it.displayName)}">
<l:layout permission="${app.ADMINISTER}" title="${%title(it.displayName)}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<f:form method="post" action="configSubmit" name="config">
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true">
<l:layout>
<st:include it="${it.run}" page="sidepanel.jelly" />
<l:main-panel>
<h1>Build ${it.run.displayName}</h1>
......
......@@ -11,7 +11,7 @@ def f=namespace(lib.FormTagLib)
def l=namespace(lib.LayoutTagLib)
def st=namespace("jelly:stapler")
l.layout(norefresh:true, permission:app.ADMINISTER, title:my.displayName, cssclass:request.getParameter('decorate')) {
l.layout(permission:app.ADMINISTER, title:my.displayName, cssclass:request.getParameter('decorate')) {
l.main_panel {
h1 {
l.icon(class: 'icon-secure icon-xlg')
......
......@@ -43,7 +43,7 @@ THE SOFTWARE.
The wrapper for the data provided by the user and the error message(s) if any. Is null on first form display.
</st:attribute>
</st:documentation>
<l:layout norefresh="true" title="${title}">
<l:layout title="${title}">
<st:adjunct includes="hudson.security.HudsonPrivateSecurityRealm._entryFormPage.resources" />
<l:hasPermission permission="${app.READ}" it="${host}">
<st:include page="sidepanel.jelly" it="${host}" />
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout">
<l:layout norefresh="true">
<l:layout>
<l:hasPermission permission="${app.READ}" it="${app}">
<st:include page="sidepanel.jelly" it="${app}" />
</l:hasPermission>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<st:compress xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form" xmlns:i="jelly:fmt">
<l:layout title="${it.run.parent.displayName} #${it.run.number} ${%Polling Log}" norefresh="true">
<l:layout title="${it.run.parent.displayName} #${it.run.number} ${%Polling Log}">
<st:include it="${it.run}" page="sidepanel.jelly" />
<l:main-panel>
<h1>${%Polling Log}</h1>
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<l:layout norefresh="true" type="full-screen" title="${app.instance.displayName}">
<l:layout type="full-screen" title="${app.instance.displayName}">
<l:main-panel>
<st:include page="client-scripts" />
<form action="${app.instance.securityRealm.authenticationGatewayUrl}" method="POST">
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" type="full-screen" title="${it.displayName}">
<l:layout type="full-screen" title="${it.displayName}">
<l:main-panel>
<div class="plugin-setup-wizard-container"></div>
<st:include page="wizard-ui"/>
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" type="full-screen" title="${it.displayName}">
<l:layout type="full-screen" title="${it.displayName}">
<l:main-panel>
<style type="text/css">
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:s="/lib/form">
<l:layout norefresh="true" type="full-screen" title="${it.displayName}">
<l:layout type="full-screen" title="${it.displayName}">
<l:main-panel>
<link rel="stylesheet" href="${resURL}/css/google-fonts/roboto/css/roboto.css" type="text/css" />
<style type="text/css">
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout"
xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${it.CONFIGURE}" title="${it.displayName}">
<l:layout permission="${it.CONFIGURE}" title="${it.displayName}">
<st:include page="sidepanel.jelly"/>
<l:main-panel>
<f:form method="post" action="configSubmit" name="config">
......
......@@ -24,7 +24,7 @@ THE SOFTWARE.
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true">
<l:layout>
<!-- don't include sidepanel.jelly, which could reveal information -->
<l:header title="${%Jenkins Login}" />
<l:side-panel />
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permissions="${app.MANAGE_AND_SYSTEM_READ}" title="${%Configure System}">
<l:layout permissions="${app.MANAGE_AND_SYSTEM_READ}" title="${%Configure System}">
<st:include page="sidepanel.jelly" />
<f:breadcrumb-config-outline />
<l:main-panel>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" title="${%Check File Fingerprint}">
<l:layout title="${%Check File Fingerprint}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<h1>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${app.primaryView.CREATE}" title="${%New View}">
<l:layout permission="${app.primaryView.CREATE}" title="${%New View}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
......
......@@ -28,7 +28,7 @@ THE SOFTWARE.
This is the page designated by web.xml and UncaughtExceptionHandler to process an exception thrown by us.
-->
<st:statusCode value="500" />
<l:layout title="Jenkins" norefresh="true">
<l:layout title="Jenkins">
<l:header />
<l:side-panel>
<l:task href="https://jenkins.io/" icon="icon-next icon-md" title="${%Jenkins project}"/>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
<l:layout norefresh="true" title="${%Project Relationship}">
<l:layout title="${%Project Relationship}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
<h1><l:icon class="icon-search icon-xlg"/>${%Project Relationship}</h1>
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core">
This trial collects information about the "Auto Refresh" feature to determine whether the feature is used enough to not remove it in a future release of Jenkins.
We collect the number of HTTP sessions that have the feature (typically controlled via a cookie) enabled or disabled.
</j:jelly>
AutoRefresh.DisplayName = Use of auto refresh feature
\ No newline at end of file
......@@ -7,7 +7,7 @@ def f=namespace(lib.FormTagLib)
def l=namespace(lib.LayoutTagLib)
def st=namespace("jelly:stapler")
l.layout(norefresh:true, permission:app.ADMINISTER, title:my.displayName) {
l.layout(permission:app.ADMINISTER, title:my.displayName) {
l.side_panel {
l.tasks {
l.task(icon:"icon-up icon-md", href:rootURL+'/', title:_("Back to Dashboard"))
......
......@@ -24,7 +24,6 @@ THE SOFTWARE.
<!--
displays a caption for build/externalRun.
<%@attribute name="autorefresh" required="false" description="Whether to reload this component automatically using AJAX" %>
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form">
......@@ -47,7 +46,7 @@ THE SOFTWARE.
<l:icon alt="${it.iconColor.description}" class="${it.buildStatusIconClassName} icon-xlg" tooltip="${it.iconColor.description}"/>
<script>
(function(autorefresh){
(function(){
function updateBuildCaptionIcon(){
new Ajax.Request("statusIcon",{
method: "get",
......@@ -67,13 +66,10 @@ THE SOFTWARE.
}
window.addEventListener("load", function(){
if (autorefresh) {
updateBuildCaptionIcon()
}
Event.observe(window, "jenkins:consoleFinished", updateBuildCaptionIcon);
});
})(${autorefresh});
})();
</script>
<d:invokeBody />
</h1>
......
......@@ -40,7 +40,7 @@ THE SOFTWARE.
</div>
<l:hasPermission permission="${permission}">
<div align="right"><a id="description-link" href="editDescription" onclick="${h.isAutoRefresh(request) ? null : 'return replaceDescription();'}">
<div align="right"><a id="description-link" href="editDescription" onclick="return replaceDescription();">
<l:icon class="icon-notepad icon-sm"/>
<j:choose>
<j:when test="${empty(it.description)}">
......
......@@ -155,7 +155,7 @@ THE SOFTWARE.
</j:forEach>
</l:pane>
<!-- schedule updates only for the full page reload -->
<j:if test="${ajax==null and !h.isAutoRefresh(request) and h.hasPermission(app.READ)}">
<j:if test="${ajax==null and h.hasPermission(app.READ)}">
<script defer="defer">
refreshPart('executors',"${rootURL}/${h.hasView(it,'ajaxExecutors')?it.url:''}ajaxExecutors");
</script>
......
......@@ -101,7 +101,7 @@ THE SOFTWARE.
</j:choose>
</l:pane>
<!-- schedule updates only for the full page reload -->
<j:if test="${ajax==null and !h.isAutoRefresh(request) and h.hasPermission(app.READ)}">
<j:if test="${ajax==null and h.hasPermission(app.READ)}">
<script defer="defer">
refreshPart('buildQueue',"${rootURL}/${h.hasView(it,'ajaxBuildQueue')?it.url:''}ajaxBuildQueue");
</script>
......
......@@ -27,7 +27,7 @@ THE SOFTWARE.
-->
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define" xmlns:l="/lib/layout" xmlns:f="/lib/form">
<l:layout norefresh="true" permission="${h.ADMINISTER}">
<l:layout permission="${h.ADMINISTER}">
<st:include page="sidepanel.jelly" />
<l:main-panel>
......
......@@ -66,19 +66,6 @@ THE SOFTWARE.
<d:invokeBody />
</ul>
<j:if test="${norefresh==null or norefresh==false}">
<div id="right-top-nav">
<j:choose>
<j:when test="${h.isAutoRefresh(request)}">
<a href="?auto_refresh=false" class="breadcrumbs__auto-refresh">${%DISABLE AUTO REFRESH}</a>
</j:when>
<j:otherwise>
<a href="?auto_refresh=true" class="breadcrumbs__auto-refresh">${%ENABLE AUTO REFRESH}</a>
</j:otherwise>
</j:choose>
</div>
</j:if>
<div id="breadcrumb-menu-target"/><!-- this is where the menu gets rendered -->
</div>
</div>
......
# This file is under the MIT License by authors
ENABLE\ AUTO\ REFRESH=\u062A\u0645\u0643\u064A\u0646 \u0627\u0644\u062A\u062D\u062F\u064A\u062B \u0627\u0644\u062A\u0644\u0642\u0627\u0626\u064A
# The MIT License
#
# Bulgarian translation: Copyright (c) 2015, 2016, Alexander Shopov <ash@kambanaria.org>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
DISABLE\ AUTO\ REFRESH=\
\u0411\u0435\u0437 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435
ENABLE\ AUTO\ REFRESH=\
\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0440\u0435\u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=DESHABILITAR REFRESC AUTOM\u00C0TIC
ENABLE\ AUTO\ REFRESH=HABILITAR REFRESC AUTOM\u00C0TIC
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=Vypnout automatick\u00E9 obnovov\u00E1n\u00ED str\u00E1nky
ENABLE\ AUTO\ REFRESH=POVOLIT AUTO REFRESH
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=Autoopdater ikke siden
ENABLE\ AUTO\ REFRESH=automatisk genopfriskning
# The MIT License
#
# Copyright (c) 2004-, Kohsuke Kawaguchi, Sun Microsystems, Inc., and a number of other of contributers
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
DISABLE\ AUTO\ REFRESH=AUTO-AKTUALISIERUNG AUSSCHALTEN
ENABLE\ AUTO\ REFRESH=AUTO-AKTUALISIERUNG EINSCHALTEN
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=\u0386\u03C0\u03B5\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7\u03C2 \u03B1\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7\u03C2
ENABLE\ AUTO\ REFRESH=\u0395\u03BD\u03B5\u03C1\u03B3\u03BF\u03C0\u03BF\u03AF\u03B7\u03C3\u03B7 \u03B1\u03C5\u03C4\u03CC\u03BC\u03B1\u03C4\u03B7\u03C2 \u03B1\u03BD\u03B1\u03BD\u03AD\u03C9\u03C3\u03B7\u03C2
# The MIT License
#
# Copyright (c) 2004-, Kohsuke Kawaguchi, Sun Microsystems, Inc., and a number of other of contributers
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
DISABLE\ AUTO\ REFRESH=DESHABILITAR REFRESCO AUTOM\u00C1TICO
ENABLE\ AUTO\ REFRESH=ACTIVAR AUTO REFRESCO
# This file is under the MIT License by authors
ENABLE\ AUTO\ REFRESH=Habilitar Auto Refresco
# This file is under the MIT License by authors
ENABLE\ AUTO\ REFRESH=LUBA AUTOMAATNE V\u00C4RSKENDAMINE
DISABLE\ AUTO\ REFRESH=KEELA AUTOMAATNE V\u00C4RSKENDAMINE
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=POISTA AUTOMAATTINEN P\u00C4IVITYS K\u00C4YT\u00D6ST\u00C4
ENABLE\ AUTO\ REFRESH=Salli n\u00E4kym\u00E4n virkist\u00E4minen
# The MIT License
#
# Copyright (c) 2004-, Kohsuke Kawaguchi, Sun Microsystems, Inc., and a number of other of contributers
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
DISABLE\ AUTO\ REFRESH=D\u00E9sactiver le rafra\u00EEchissement automatique
ENABLE\ AUTO\ REFRESH=Rafra\u00EEchissement automatique
# This file is under the MIT License by authors
ENABLE\ AUTO\ REFRESH=\u05D0\u05E4\u05E9\u05E8 \u05E8\u05E2\u05E0\u05D5\u05DF \u05D0\u05D5\u05D8\u05D5\u05DE\u05D8\u05D9
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=Automatikus oldalfriss\u00EDt\u00E9s letilt\u00E1sa
ENABLE\ AUTO\ REFRESH=AUTOMATIKUS FRISS\u00CDT\u00C9S ENGED\u00C9LYEZ\u00C9SE
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=DISABILITA AGGIORNAMENTO AUTOMATICO
ENABLE\ AUTO\ REFRESH=ABILITA AGGIORNAMENTO AUTOMATICO
# The MIT License
#
# Copyright (c) 2012, Seiji Sogabe
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
ENABLE\ AUTO\ REFRESH=\u81EA\u52D5\u30EA\u30ED\u30FC\u30C9\u3092on
DISABLE\ AUTO\ REFRESH=\u81EA\u52D5\u30EA\u30ED\u30FC\u30C9\u3092off
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=\uC790\uB3D9 \uC7AC\uC2DC\uC791 \uBE44 \uD65C\uC131\uD654
ENABLE\ AUTO\ REFRESH=\uC790\uB3D9\uC73C\uB85C \uC0C8\uB85C\uACE0\uCE68
# This file is under the MIT License by authors
# /jenkins-core/src/main/resources/lib/layout/breadcrumbBar_lt.properties
DISABLE\ AUTO\ REFRESH=I\u0160JUNGTI automatin\u012F puslapio atnaujinim\u0105
ENABLE\ AUTO\ REFRESH=\u012EJUNGTI automatin\u012F puslapio atnaujinim\u0105
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=ATSP\u0112JOT AUTOM\u0100TISKO ATSVAIDZIN\u0100S\u0100NU
ENABLE\ AUTO\ REFRESH=Ieslegt automatisku atjauno\u0161anu
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=DEAKTIVER AUTOOPPDATERING
ENABLE\ AUTO\ REFRESH=Sl\u00E5 p\u00E5 auto oppdatering
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=ZET AUTOMATISCH VERNIEUWEN UIT
ENABLE\ AUTO\ REFRESH=ZET AUTOMATISCH VERNIEUWEN AAN
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=WY\u0141\u0104CZ AUTO OD\u015AWIE\u017BANIE
ENABLE\ AUTO\ REFRESH=W\u0141\u0104CZ AUTOMATYCZNE OD\u015AWIE\u017BANIE
# The MIT License
#
# Copyright (c) 2004-, Kohsuke Kawaguchi, Sun Microsystems, Inc., and a number of other of contributers
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
ENABLE\ AUTO\ REFRESH=Ativar atualiza\u00E7\u00E3o autom\u00E1tica
DISABLE\ AUTO\ REFRESH=Desativar atualiza\u00E7\u00E3o autom\u00E1tica
# This file is under the MIT License by authors
# Translated by Fernando Boaglio
DISABLE\ AUTO\ REFRESH=DESABILITAR ATUALIZA\u00c7\u00c3O AUTOM\u00c1TICA
ENABLE\ AUTO\ REFRESH=HABILITAR ATUALIZA\u00C7\u00C3O AUTOM\u00C1TICA
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=Desativar refrescamento autom\u00E1tico
ENABLE\ AUTO\ REFRESH=ATIVAR AUTO-ATUALIZA\u00C7\u00C3O
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=DEZACTIVEAZ\u0102 RE\u00CENC\u0102RCAREA AUTOMAT\u0102
ENABLE\ AUTO\ REFRESH=ACTIVEAZA ACTUALIZAREA AUTOMATA
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=\u041e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446
ENABLE\ AUTO\ REFRESH=\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0430\u0432\u0442\u043e\u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=VYPN\u00DA\u0164 AUTOMATICK\u00C9 OBNOVENIE
ENABLE\ AUTO\ REFRESH=POVOLI\u0164 AUTOMATICK\u00DA OBNOVU
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=ONEMOGO\u010CI SAMODEJNO OSVE\u017DEVANJE
ENABLE\ AUTO\ REFRESH=Onemogo\u010Di avtomatsko osve\u017Eevanje
# This file is under the MIT License by authors
ENABLE\ AUTO\ REFRESH=\u0421\u0430 \u0430\u0443\u0442\u043E\u043C\u0430\u0442\u0441\u043A\u0438\u043C \u043E\u0441\u0432\u0435\u0436\u0438\u0432\u0430\u045A\u0435\u043C
DISABLE\ AUTO\ REFRESH=\u0411\u0435\u0437 \u0430\u0443\u0442\u043E\u043C\u0430\u0442\u0441\u043A\u043E\u0433 \u043E\u0441\u0432\u0435\u0436\u0438\u0432\u0430\u045A\u0435\u043C
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=Autouppdatera ej sidan
ENABLE\ AUTO\ REFRESH=AKTIVERA AUTOUPPDATERING
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=Otomatik Yenilemeyi Kapat
ENABLE\ AUTO\ REFRESH=Otomatik Yenilemeyi A\u00E7
# This file is under the MIT License by authors
DISABLE\ AUTO\ REFRESH=\u0412\u0418\u041A\u041B\u042E\u0427\u0418\u0422\u0418 \u0410\u0412\u0422\u041E\u041E\u041D\u041E\u0412\u041B\u0415\u041D\u041D\u042F
ENABLE\ AUTO\ REFRESH=\u0423\u0432\u0456\u043C\u043A\u043D\u0443\u0442\u0438 \u0430\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0447\u043D\u0435 \u043E\u043D\u043E\u0432\u043B\u0435\u043D\u043D\u044F
# The MIT License
#
# Copyright (c) 2013, Chunghwa Telecom Co., Ltd., Pei-Tang Huang
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.
ENABLE\ AUTO\ REFRESH=\u958B\u555F\u81EA\u52D5\u66F4\u65B0\u9801\u9762
DISABLE\ AUTO\ REFRESH=\u53D6\u6D88\u81EA\u52D5\u66F4\u65B0\u9801\u9762
......@@ -49,8 +49,7 @@
min-height: 2.5rem;
}
#breadcrumbs LI A,
.breadcrumbs__auto-refresh {
#breadcrumbs LI A {
display: inline-block;
display: inline-flex;
align-items: center;
......@@ -63,8 +62,7 @@
}
#breadcrumbs LI A, #breadcrumbs LI A:link, #breadcrumbs LI A:visited,
.breadcrumbs__auto-refresh:link, .breadcrumbs__auto-refresh:visited {
#breadcrumbs LI A, #breadcrumbs LI A:link, #breadcrumbs LI A:visited {
/* is this still needed? */
max-width: 1330px;
......@@ -79,15 +77,14 @@
color: #4d545d;
}
#breadcrumbs LI A:hover, #breadcrumbs LI A:focus,
.breadcrumbs__auto-refresh:hover, .breadcrumbs__auto-refresh:focus {
#breadcrumbs LI A:hover, #breadcrumbs LI A:focus {
/* TODO: change hover state
add it in the LI element so that it applies to the menuSeparator */
text-decoration: underline;
outline-color: #3FB3F7;
}
#breadcrumbs LI A:active, .breadcrumbs__auto-refresh:active {
#breadcrumbs LI A:active {
background-color: #C8CEC2;
}
......@@ -95,11 +92,6 @@
cursor: pointer;
}
.breadcrumbs__auto-refresh {
text-transform: lowercase;
margin-left: 1.5rem;
}
#breadcrumbs LI.children, #breadcrumbs LI.separator {/* '>' separator between two items */
width: 1.25rem;
height: 100%;
......
......@@ -37,8 +37,7 @@ THE SOFTWARE.
Title of the HTML page. Rendered into &lt;title> tag.
</st:attribute>
<st:attribute name="norefresh">
If non-null and not "false", auto refresh is disabled on this page.
This is necessary for pages that include forms.
Deprecated: Used to disable auto refresh for a page. The feature has been removed.
</st:attribute>
<st:attribute name="css" deprecated="true">
specify path that starts from "/" for loading additional CSS stylesheet.
......@@ -69,7 +68,6 @@ THE SOFTWARE.
-->
<j:set var="isMSIE" value="${userAgent.contains('MSIE')}"/>
<j:set var="_" value="${request.getSession()}"/>
<j:set var="_" value="${h.configureAutoRefresh(request, response, attrs.norefresh!=null and !attrs.norefresh.equals(false))}"/>
<j:set var="extensionsAvailable" value="${h.extensionsAvailable}"/>
<j:if test="${request.servletPath=='/' || request.servletPath==''}">
${h.advertiseHeaders(response)}
......
......@@ -34,8 +34,7 @@ THE SOFTWARE.
Title of the HTML page. Rendered into &lt;title> tag.
</st:attribute>
<st:attribute name="norefresh">
If non-null and not "false", auto refresh is disabled on this page.
This is necessary for pages that include forms.
Deprecated: Used to disable auto refresh for a page. The feature has been removed.
</st:attribute>
<st:attribute name="css" deprecated="true">
specify path that starts from "/" for loading additional CSS stylesheet.
......@@ -85,7 +84,6 @@ THE SOFTWARE.
<j:set var="isMSIE" value="${userAgent.contains('MSIE')}"/>
<j:set var="_" value="${request.getSession()}"/>
<j:set var="_" value="${h.configureAutoRefresh(request, response, attrs.norefresh!=null and !attrs.norefresh.equals(false))}"/>
<j:set var="extensionsAvailable" value="${h.extensionsAvailable}"/>
<j:if test="${request.servletPath=='/' || request.servletPath==''}">
${h.advertiseHeaders(response)}
......
<?jelly escape-by-default='true'?>
<j:jelly xmlns:j="jelly:core" xmlns:l="/lib/layout">
<l:layout norefresh="true">
<l:layout>
descriptors found: ${h.filterDescriptors(it, no_descriptors_here).size()}.
</l:layout>
</j:jelly>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册