update to latest toastr

This commit is contained in:
Oliver Gorwits
2012-12-03 20:00:50 +00:00
parent 8b13e1bdfa
commit 21fbe2a061
4 changed files with 369 additions and 313 deletions

View File

@@ -1,30 +0,0 @@
@media all and (max-width: 240px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 108px;
}
}
@media all and (min-width: 241px) and (max-width: 320px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 128px;
}
}
@media all and (min-width: 321px) and (max-width: 480px) {
#toast-container > div {
padding: 8px 8px 8px 50px;
width: 192px;
}
}
@media all and (min-width: 481px) and (max-width: 768px) {
#toast-container > div {
padding: 15px 15px 15px 50px;
width: 300px;
}
}
@media all and (min-width: 769px) {
#toast-container > div {
padding: 15px 15px 15px 50px;
width: 300px;
}
}

View File

@@ -1,41 +1,52 @@
.toast-title { .toast-title
{
font-weight: bold; font-weight: bold;
} }
.toast-message { .toast-message
{
-ms-word-wrap: break-word;
word-wrap: break-word;
} }
.toast-message a, .toast-message a,
.toast-message label { .toast-message label
{
color: #FFF; color: #FFF;
} }
.toast-message a:hover { .toast-message a:hover
{
color: #CCC; color: #CCC;
text-decoration: none; text-decoration: none;
} }
.toast-top-left { .toast-top-left
{
left: 12px;
top: 12px; top: 12px;
left: 12px;
} }
.toast-bottom-right { .toast-bottom-right
{
bottom: 12px;
right: 12px; right: 12px;
bottom: 12px;
} }
.toast-bottom-left { .toast-bottom-left
{
bottom: 12px;
left: 12px; left: 12px;
bottom: 12px;
} }
#toast-container { #toast-container
{
position: fixed; position: fixed;
z-index: 9999; z-index: 9999;
} }
#toast-container > div { #toast-container > div
{
background-position: 15px center; background-position: 15px center;
background-repeat: no-repeat; background-repeat: no-repeat;
-moz-border-radius: 3px 3px 3px 3px; -moz-border-radius: 3px 3px 3px 3px;
@@ -43,67 +54,121 @@
border-radius: 3px 3px 3px 3px; border-radius: 3px 3px 3px 3px;
-moz-box-shadow: 0 0 12px #999999; -moz-box-shadow: 0 0 12px #999999;
-webkit-box-shadow: 0 0 12px #999999; -webkit-box-shadow: 0 0 12px #999999;
-o-box-shadow: 0 0 12px #999999;
box-shadow: 0 0 12px #999999; box-shadow: 0 0 12px #999999;
color: #FFFFFF; color: #FFFFFF;
margin: 0 0 6px;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)";
filter: alpha(opacity=80); filter: alpha(opacity=80);
-moz-opacity: 0.8; margin: 0 0 6px;
opacity: 0.8; opacity: 0.8;
padding: 15px 15px 15px 50px; padding: 15px 15px 15px 50px;
width: 300px; width: 300px;
} }
.toast { .toast
{
background-color: #030303; background-color: #030303;
} }
.toast-success { .toast-success
{
background-color: #51A351; background-color: #51A351;
} }
.toast-error { .toast-error
{
background-color: #BD362F; background-color: #BD362F;
} }
.toast-info { .toast-info
{
background-color: #2F96B4; background-color: #2F96B4;
} }
.toast-warning { .toast-warning
{
background-color: #F89406; background-color: #F89406;
} }
.toast-top-right { .toast-top-right
top: 12px; {
right: 12px; right: 12px;
top: 12px;
} }
#toast-container > :hover { #toast-container > :hover
{
-moz-box-shadow: 0 0 12px #000000; -moz-box-shadow: 0 0 12px #000000;
-webkit-box-shadow: 0 0 12px #000000; -webkit-box-shadow: 0 0 12px #000000;
-o-box-shadow: 0 0 12px #000000;
box-shadow: 0 0 12px #000000; box-shadow: 0 0 12px #000000;
cursor: pointer;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100); filter: alpha(opacity=100);
-moz-opacity: 1;
opacity: 1; opacity: 1;
cursor: pointer;
} }
#toast-container > .toast-info { #toast-container > .toast-info
{
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=") !important;
} }
#toast-container > .toast-error { #toast-container > .toast-error
{
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important;
} }
#toast-container > .toast-success { #toast-container > .toast-success
{
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==") !important;
} }
#toast-container > .toast-warning { #toast-container > .toast-warning
{
background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important; background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=") !important;
} }
/*Responsive Design*/
@media all and (max-width: 240px)
{
#toast-container > div
{
padding: 8px 8px 8px 50px;
width: 108px;
}
}
@media all and (min-width: 241px) and (max-width: 320px)
{
#toast-container > div
{
padding: 8px 8px 8px 50px;
width: 128px;
}
}
@media all and (min-width: 321px) and (max-width: 480px)
{
#toast-container > div
{
padding: 8px 8px 8px 50px;
width: 192px;
}
}
@media all and (min-width: 481px) and (max-width: 768px)
{
#toast-container > div
{
padding: 15px 15px 15px 50px;
width: 300px;
}
}
@media all and (min-width: 769px)
{
#toast-container > div
{
padding: 15px 15px 15px 50px;
width: 300px;
}
}

View File

@@ -4,8 +4,9 @@
// Modified to support css styling instead of inline styling // Modified to support css styling instead of inline styling
// Inspired by https://github.com/Srirangan/notifer.js/ // Inspired by https://github.com/Srirangan/notifer.js/
;(function(window, $) { ; (function (define) {
window.toastr = (function() { define(['jquery'], function ($) {
var toastr = (function () {
var var
defaults = { defaults = {
tapToDismiss: true, tapToDismiss: true,
@@ -28,146 +29,167 @@
messageClass: 'toast-message' messageClass: 'toast-message'
}, },
error = function (message, title, optionsOverride) {
error = function(message, title) {
return notify({ return notify({
iconClass: getOptions().iconClasses.error, iconClass: getOptions().iconClasses.error,
message: message, message: message,
optionsOverride: optionsOverride,
title: title title: title
}) });
}, },
getContainer = function (options) { getContainer = function (options) {
var $container = $('#' + options.containerId) var $container = $('#' + options.containerId);
if ($container.length) {
if ($container.length) return $container;
return $container }
$container = $('<div/>') $container = $('<div/>')
.attr('id', options.containerId) .attr('id', options.containerId)
.addClass(options.positionClass) .addClass(options.positionClass);
$container.appendTo($('body'));
$container.appendTo($('body')) return $container;
return $container
}, },
getOptions = function () { getOptions = function () {
return $.extend({}, defaults, toastr.options) return $.extend({}, defaults, toastr.options);
}, },
info = function(message, title) { info = function (message, title, optionsOverride) {
return notify({ return notify({
iconClass: getOptions().iconClasses.info, iconClass: getOptions().iconClasses.info,
message: message, message: message,
optionsOverride: optionsOverride,
title: title title: title
}) });
}, },
notify = function (map) { notify = function (map) {
var var
options = getOptions(), options = getOptions(),
iconClass = map.iconClass || options.iconClass, iconClass = map.iconClass || options.iconClass;
if (typeof (map.optionsOverride) !== 'undefined') {
options = $.extend(options, map.optionsOverride);
iconClass = map.optionsOverride.iconClass || iconClass;
}
var
intervalId = null, intervalId = null,
$container = getContainer(options), $container = getContainer(options),
$toastElement = $('<div/>'), $toastElement = $('<div/>'),
$titleElement = $('<div/>'), $titleElement = $('<div/>'),
$messageElement = $('<div/>'), $messageElement = $('<div/>'),
response = { options: options, map: map } response = { options: options, map: map };
if (map.iconClass) { if (map.iconClass) {
$toastElement.addClass(options.toastClass).addClass(iconClass) $toastElement.addClass(options.toastClass).addClass(iconClass);
} }
if (map.title) { if (map.title) {
$titleElement.append(map.title).addClass(options.titleClass) $titleElement.append(map.title).addClass(options.titleClass);
$toastElement.append($titleElement) $toastElement.append($titleElement);
} }
if (map.message) { if (map.message) {
$messageElement.append(map.message).addClass(options.messageClass) $messageElement.append(map.message).addClass(options.messageClass);
$toastElement.append($messageElement) $toastElement.append($messageElement);
} }
var fadeAway = function () { var fadeAway = function () {
if ($(':focus', $toastElement).length > 0) if ($(':focus', $toastElement).length > 0) {
return return;
var fade = function() {
return $toastElement.fadeOut(options.fadeOut)
} }
var fade = function (callback) {
$.when(fade()).done(function() { return $toastElement.fadeOut(options.fadeOut, callback);
};
var removeToast = function () {
if ($toastElement.is(':visible')) { if ($toastElement.is(':visible')) {
return return;
} }
$toastElement.remove() $toastElement.remove();
if ($container.children().length === 0) if ($container.children().length === 0) {
$container.remove() $container.remove();
})
} }
};
fade(removeToast);
};
var delayedFadeAway = function () { var delayedFadeAway = function () {
if (options.timeOut > 0 || options.extendedTimeOut > 0) { if (options.timeOut > 0 || options.extendedTimeOut > 0) {
intervalId = setTimeout(fadeAway, options.extendedTimeOut) intervalId = setTimeout(fadeAway, options.extendedTimeOut);
} }
} };
var stickAround = function () { var stickAround = function () {
clearTimeout(intervalId) clearTimeout(intervalId);
$toastElement.stop(true, true) $toastElement.stop(true, true).fadeIn(options.fadeIn);
.fadeIn(options.fadeIn) };
} $toastElement.hide();
$container.prepend($toastElement);
$toastElement.hide() $toastElement.fadeIn(options.fadeIn);
$container.prepend($toastElement)
$toastElement.fadeIn(options.fadeIn)
if (options.timeOut > 0) { if (options.timeOut > 0) {
intervalId = setTimeout(fadeAway, options.timeOut) intervalId = setTimeout(fadeAway, options.timeOut);
} }
$toastElement.hover(stickAround, delayedFadeAway) $toastElement.hover(stickAround, delayedFadeAway);
if (!options.onclick && options.tapToDismiss) { if (!options.onclick && options.tapToDismiss) {
$toastElement.click(fadeAway) $toastElement.click(fadeAway);
} }
if (options.onclick) { if (options.onclick) {
$toastElement.click(function () { $toastElement.click(function () {
options.onclick() && fadeAway() options.onclick() && fadeAway();
}) });
} }
if (options.debug) { if (options.debug && console) {
console.log(response) console.log(response);
} }
return $toastElement;
return $toastElement
}, },
success = function(message, title) { success = function (message, title, optionsOverride) {
return notify({ return notify({
iconClass: getOptions().iconClasses.success, iconClass: getOptions().iconClasses.success,
message: message, message: message,
optionsOverride: optionsOverride,
title: title title: title
}) });
}, },
warning = function(message, title) { warning = function (message, title, optionsOverride) {
return notify({ return notify({
iconClass: getOptions().iconClasses.warning, iconClass: getOptions().iconClasses.warning,
message: message, message: message,
optionsOverride: optionsOverride,
title: title title: title
}) });
} },
clear = function () {
var options = getOptions();
var $container = $('#' + options.containerId);
if ($container.length) {
$container.fadeOut(options.fadeOut, function () {
$container.remove();
});
}
};
return { return {
clear: clear,
error: error, error: error,
info: info, info: info,
options: {}, options: {},
success: success, success: success,
version: '1.1.1',
warning: warning warning: warning
};
})();
return toastr;
});
}(typeof define === 'function' && define.amd ? define : function (deps, factory) {
if (typeof module !== 'undefined' && module.exports) { //Node
module.exports = factory(require(deps[0]));
} else {
window['toastr'] = factory(window['jQuery']);
} }
})() }));
} (window, jQuery));

View File

@@ -28,7 +28,6 @@
<script type="text/javascript" src="[% uri_base %]/javascripts/netdisco_portcontrol.js"></script> <script type="text/javascript" src="[% uri_base %]/javascripts/netdisco_portcontrol.js"></script>
<link rel="stylesheet" href="[% uri_base %]/css/toastr.css"/> <link rel="stylesheet" href="[% uri_base %]/css/toastr.css"/>
<link rel="stylesheet" href="[% uri_base %]/css/toastr-responsive.css"/>
[% END %] [% END %]
<link rel="stylesheet" href="[% uri_base %]/css/bootstrap.min.css"/> <link rel="stylesheet" href="[% uri_base %]/css/bootstrap.min.css"/>