Compare commits
18 Commits
11_0_0-69_
...
11_0_0-85_
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a31806f205 | ||
b44f1c5000 | |||
2538ac9ea0 | |||
dbfeaa18a3 | |||
ced08b28d4 | |||
c74a71dee1 | |||
96b002e7a9 | |||
f30b4ab2b5 | |||
fa286e966d | |||
9bb2128891 | |||
accf96df0d | |||
1c601f0ace | |||
cffbe53fb4 | |||
aad1a458f4 | |||
252bf20410 | |||
ebbe7af9a7 | |||
36de44fcef | |||
750ab7dd11 |
12
createlinks
12
createlinks
@@ -8,12 +8,12 @@ use esmith::Build::CreateLinks qw(:all);
|
||||
my $mngrdir = '/usr/share/smanager';
|
||||
|
||||
# templates to expand
|
||||
for ( qw( sme_core.css sme_main.css sme_menu.css styles.css ) )
|
||||
{
|
||||
templates2events("$mngrdir/themes/default/public/css/$_", qw(
|
||||
bootstrap-console-save smeserver-manager-update
|
||||
));
|
||||
}
|
||||
#for ( qw( sme_core.css sme_main.css sme_menu.css styles.css ) )
|
||||
#{
|
||||
# templates2events("$mngrdir/themes/default/public/css/$_", qw(
|
||||
# bootstrap-console-save smeserver-manager-update
|
||||
# ));
|
||||
#}
|
||||
|
||||
templates2events("$mngrdir/conf/srvmngr.conf",
|
||||
qw( smeserver-manager-update smanager-theme-change smanager-modify bootstrap-console-save ));
|
||||
|
@@ -1,250 +0,0 @@
|
||||
{
|
||||
$OUT = <<'EOF';
|
||||
|
||||
/* from e-smith-manager to smanager (smeserver_manager2) */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* copyright (C) 1999-2003 Mitel Networks Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Technical support for this program is available from Mitel Networks
|
||||
* Please visit our web site www.mitel.com for details.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* This is the stylesheet used as the basis for older broswers.
|
||||
|
||||
Note that you CANNOT simly add styles here and hope they work. ONLY CSS
|
||||
level 1 styles should be in this file. Everyting else goes into the other 3
|
||||
files.
|
||||
|
||||
These basic styles ensire that browsers that don't understand the @import
|
||||
method will still be usable. All modern browsers will use the styles in
|
||||
sme_main.css, sme_menu.css or sme_header.css depending on the frame in which
|
||||
the page is found.
|
||||
*/
|
||||
|
||||
/* Default HTML styles */
|
||||
body {
|
||||
background: #ffffff;
|
||||
color: #000000;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
table, tr, td, div, p, form {
|
||||
color: #000000;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.notsmall {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
h1, .h1 {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333333;
|
||||
font-size: 18px;
|
||||
margin-bottom: 4px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
h2, .h2 {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333333;
|
||||
font-size: 14px;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
h3, .h3 {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
color: #333333;
|
||||
font-size: 12px;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
h4, .h4 {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-style: italic;
|
||||
color: #333333;
|
||||
font-size: 12px;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
ol, ul, li {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
color: black;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: circle;
|
||||
}
|
||||
|
||||
/* Core styles for use with sme_header.css*/
|
||||
body.header {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #cccccc;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
}
|
||||
|
||||
.hilightbar {
|
||||
background-color: #ffc50a;
|
||||
font-size: 4px;
|
||||
}
|
||||
|
||||
.infobar {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #cccccc;
|
||||
}
|
||||
|
||||
.darkergrey {
|
||||
color: #666666;
|
||||
}
|
||||
|
||||
td.darkgrey {
|
||||
background-color: #888888;
|
||||
}
|
||||
|
||||
a.update {
|
||||
color: red;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #cccccc;
|
||||
}
|
||||
|
||||
/* Core styles for use with sme_menu.css */
|
||||
|
||||
body.menu {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
|
||||
td.section {
|
||||
padding-bottom: 2px;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
.section {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
|
||||
a.item {
|
||||
color: #00008b;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
a.sl {
|
||||
color: green;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
a.alert {
|
||||
color: red;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
/* Core styles for use with sme_main.css */
|
||||
body.main {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #ffffff;
|
||||
color: #000000;
|
||||
}
|
||||
|
||||
td.sme-noborders-label {
|
||||
font-weight: bold;
|
||||
width: 33%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
hr.sectionbar {
|
||||
color: #666666;
|
||||
background-color: #666666;
|
||||
height: 1px;
|
||||
width: 80%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
hr.sme-copyrightbar {
|
||||
color: #dddddd;
|
||||
background-color: #dddddd;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.sme-copyright {
|
||||
color: #777777;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/*These style definitions were found int he old css file (manager.css)
|
||||
but don't seem to ever be referenced in the code. They're here
|
||||
for reference.
|
||||
|
||||
.centerit {
|
||||
text-align: center;
|
||||
}
|
||||
.highlight {
|
||||
background: #ffc61e;
|
||||
}
|
||||
.subheading {
|
||||
background: #ffffff;
|
||||
color: #1e385b;
|
||||
}
|
||||
*/
|
||||
|
||||
EOF
|
||||
}
|
@@ -1,96 +0,0 @@
|
||||
{
|
||||
$OUT =<<'HERE';
|
||||
|
||||
/* from e-smith-manager to smanager (smeserver_manager2) */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* copyright (C) 1999-2003 Mitel Networks Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Technical support for this program is available from Mitel Networks
|
||||
* Please visit our web site www.mitel.com for details.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*contribs.org styling
|
||||
*/
|
||||
body.header {
|
||||
background: #bee6a2;
|
||||
}
|
||||
.hilightbar {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.infobar {
|
||||
background-color: #98d36e;
|
||||
}
|
||||
a.update {
|
||||
font-size: 11px;
|
||||
background: #98d36e;
|
||||
}
|
||||
|
||||
/* Core styles for use with sme_menu.css */
|
||||
body.menu {
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
td.section {
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
a.item {
|
||||
background: #e8f3e1;
|
||||
}
|
||||
a.sl {
|
||||
background: #e8f3e1;
|
||||
}
|
||||
a.alert {
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
/* Core Styles for use with sme_main.css */
|
||||
hr.sectionbar {
|
||||
color: #8ebe43;
|
||||
background-color: #8ebe43;
|
||||
}
|
||||
hr.sme-copyrightbar {
|
||||
color: #8ebe43;
|
||||
background-color: #8ebe43;
|
||||
}
|
||||
|
||||
/* flag container*/
|
||||
#flag-container span {
|
||||
font-size: 24px;
|
||||
display: flex; /* Allows for easy centering */
|
||||
justify-content: center; /* Center horizontally */
|
||||
align-items: center; /* Center vertically */
|
||||
width: 100%; /* Full width of parent */
|
||||
height: 24px; /* Set a fixed height */
|
||||
border: 1px solid #ccc; /* Light gray border */
|
||||
border-radius: 5px; /* Rounded corners */
|
||||
cursor: default; /* Prevent text cursor */
|
||||
|
||||
}
|
||||
|
||||
.fallback-box {
|
||||
display: inline-block; /* Make it inline-block to fit around the content */
|
||||
border: 2px solid gray; /* Change the border color as desired */
|
||||
padding: 10px; /* Add some padding */
|
||||
border-radius: 10px; /* Round the corners of the box */
|
||||
font-size: 60px; /* Adjust size if needed */
|
||||
margin-top: 10px; /* Add some margin */
|
||||
text-align: center; /* Center text inside the box */
|
||||
}
|
||||
|
||||
HERE
|
||||
}
|
@@ -1 +0,0 @@
|
||||
/* DO NOT MODIFY THIS FILE! It is updated automatically */
|
@@ -1,440 +0,0 @@
|
||||
{
|
||||
$OUT = <<'EOF';
|
||||
|
||||
/* from e-smith-manager to smanager (smeserver_manager2) */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* copyright (C) 1999-2003 Mitel Networks Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Technical support for this program is available from Mitel Networks
|
||||
* Please visit our web site www.mitel.com for details.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* This is the stylesheet used in the main panels only.
|
||||
|
||||
This file inherits the styles use in sme_core in the "header" section, and
|
||||
as noted in the code below. Note that some of the styles here are empty.
|
||||
This is because the style definition has moved safely to sme_core.css
|
||||
and the placeholder is left here for reference or future use.
|
||||
|
||||
There are a lot of styles in here, so read carefully. Each one is documented.
|
||||
|
||||
Styles that were in the old stylesheets, but are not used in the UI are at the
|
||||
bottom, commented out. These can be removed at the end of the 6.0 cycle */
|
||||
|
||||
/* general page properties */
|
||||
body, body.main {
|
||||
margin-top: 5px;
|
||||
margin-right: 20px;
|
||||
margin-bottom: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
|
||||
|
||||
/* Table properties ****************************************/
|
||||
/* There are THREE types of tables
|
||||
1. *.sme-layout* is used for layout purposes. It is the "master
|
||||
container" on a page. It controls the top-level table
|
||||
inside of which everything else is put.
|
||||
2. *.sme-noborders* is used for layout, and defines a borderless table and
|
||||
cells used within it.
|
||||
2. *.sme-border* is used for tabular data, and defines a header row and borders
|
||||
for tables that need borders
|
||||
|
||||
*/
|
||||
|
||||
/*First, some defaults */
|
||||
td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
sme-layout* : Used for top-level layout
|
||||
*/
|
||||
|
||||
table.sme-layout {
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
tr.sme-layout {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
td.sme-layout {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
/*This special style is actually used only for the button row along the bottom of each page*/
|
||||
th.sme-layout {
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #e8f3e1;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
text-align: right;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
/*
|
||||
sme-noborders* : Used for mid-level layout
|
||||
*/
|
||||
table.sme-noborders {
|
||||
padding: 0px;
|
||||
margin-top: 0px;
|
||||
margin-bottom: 20px;
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
td.sme-noborders-label {
|
||||
font-weight: bold;
|
||||
/*width: 250px;*/
|
||||
text-align: right;
|
||||
/*vertical-align: top;*/
|
||||
background-color: #e8f3e1;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
td.sme-noborders-content {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
td.sme-noborders-info, div.sme-noborders-info {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
/* Used for a left-most column of radio buttons (see date/time panel) */
|
||||
td.sme-radiobutton {
|
||||
width: 30px;
|
||||
}
|
||||
/*
|
||||
sme-border* : Used for tabular data
|
||||
*/
|
||||
table.sme-border {
|
||||
border-collapse: collapse;
|
||||
border: 2px solid #cccccc;
|
||||
empty-cells: show;
|
||||
margin: 5px 5px 5px 2px;
|
||||
}
|
||||
td.sme-border,
|
||||
td.sme-border-warning,
|
||||
td.sme-border-right,
|
||||
td.sme-border-center {
|
||||
border: 1px solid #cccccc;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
color: #000000;
|
||||
text-align: left;
|
||||
padding-left: 2px;
|
||||
padding-right: 2px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
td.sme-border-warning {
|
||||
color: red;
|
||||
}
|
||||
td.sme-border-right {text-align: right;}
|
||||
td.sme-border-center {text-align: center;}
|
||||
th.sme-border {
|
||||
border: 1px solid #cccccc;
|
||||
background-color: #bee6a2;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
padding-left: 2px;
|
||||
padding-right: 2px;
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
/*border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #F2F0EE #75736E #75736E #F2F0EE ;*/
|
||||
}
|
||||
td.sme-border a, td.sme-border-right a, td.sme-border-center a {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
/* misc layout stuff*/
|
||||
/* these two are for any error messages that pop up*/
|
||||
div.error, div.sme-error, span.error, span.sme-error {
|
||||
color: red;
|
||||
background-color: #ffffff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: red ;
|
||||
padding: 2px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
|
||||
}
|
||||
|
||||
div.error-noborders, div.sme-error-noborders,
|
||||
span.error-noborders, span.sme-error-noborders
|
||||
{
|
||||
color: red;
|
||||
background-color: #ffffff;
|
||||
border-width: 0px;
|
||||
}
|
||||
|
||||
div.error h2, span.error h2,
|
||||
div.error p, span.error p
|
||||
{
|
||||
color: red;
|
||||
}
|
||||
/* These are for the special case of a link being inside an error message */
|
||||
div.sme-error a, div.error a, span.error a, span.sme-error a,
|
||||
div.error-noborders a, div.sme-error-noborders a,
|
||||
span.error-noborders a, span.sme-error-noborders a
|
||||
{
|
||||
color: #ff0000;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* For when a link is the error message */
|
||||
a.error:link, a.error:visited, a.error:hover, a.error:active {
|
||||
color: #ff0000;
|
||||
font-weight: normal;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* these two are for any success messages that pop up*/
|
||||
div.success, span.success {
|
||||
color: #006400;
|
||||
background-color: #ffffff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #006400 ;
|
||||
padding: 2px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
|
||||
}
|
||||
|
||||
/* These two are for the special case of a link being inside a success message */
|
||||
div.success a, span.success a
|
||||
{
|
||||
color: #006400;
|
||||
font-weight: bold;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
div.success h2, span.success h2,
|
||||
div.success p, span.success p
|
||||
{
|
||||
color: green;
|
||||
}
|
||||
|
||||
/*These two define the copyright footer styles, one for the line and one for the text*/
|
||||
hr.sme-copyrightbar {
|
||||
}
|
||||
.sme-copyright {
|
||||
}
|
||||
|
||||
/* These ones define styles for the links that are made to look like
|
||||
standard form submit buttons */
|
||||
a.button-like:link,
|
||||
a.button-like:visited,
|
||||
a.button-like:hover,
|
||||
a.button-like:active,
|
||||
a.button-like-small:link,
|
||||
a.button-like-small:visited,
|
||||
a.button-like-small:hover,
|
||||
a.button-like-small:active {
|
||||
font-family: sans-serif;
|
||||
font-size: 13px;
|
||||
color: black;
|
||||
background: #D4D0C8;
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
border-color: #F2F0EE #75736E #75736E #F2F0EE ;
|
||||
margin-top: 10px;
|
||||
margin-right: 2px;
|
||||
margin-bottom: 10px;
|
||||
margin-left: 2px;
|
||||
border-style: solid;
|
||||
border-top-width: 2px;
|
||||
border-right-width: 2px;
|
||||
border-bottom-width: 2px;
|
||||
border-left-width: 2px;
|
||||
padding-top: 2px;
|
||||
padding-bottom: 2px;
|
||||
padding-left: 6px;
|
||||
padding-right: 6px;
|
||||
}
|
||||
a.button-like-small:link,
|
||||
a.button-like-small:visited,
|
||||
a.button-like-small:hover,
|
||||
a.button-like-small:active {
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
font-size: 10px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
}
|
||||
a.button-like:active,
|
||||
a.button-like-small:active {
|
||||
border-color: #75736E #F2F0EE #F2F0EE #75736E ;
|
||||
}
|
||||
|
||||
/* EXPERIMENTAL SECTION */
|
||||
/* These are styles used to experiment with. */
|
||||
|
||||
/* class for links, similar to the class in sme_menu.css, but for a red button */
|
||||
a.button-like-red:link,
|
||||
a.button-like-red:visited,
|
||||
a.button-like-red:hover,
|
||||
a.button-like-red:active {
|
||||
border-left: #F1726C 2px solid;
|
||||
border-right: #B42025 2px solid;
|
||||
border-top: #F1726C 2px solid;
|
||||
border-bottom: #B42025 2px solid;
|
||||
}
|
||||
a.button-like-red:active {
|
||||
border-color: #75736E #F2F0EE #F2F0EE #75736E ;
|
||||
}
|
||||
|
||||
/*These are style definitions found in the UI but not defined in any file I
|
||||
could locate. They're listed here for historical purposes, but have been
|
||||
removed from the UI
|
||||
|
||||
pagedescription (used in the first paragraph of text on a page) [HTML.pm]
|
||||
label (used in forms) [HTML.pm]
|
||||
field (used in forms) [HTML.pm]
|
||||
fielddescription (used ???)[HTML.pm]
|
||||
buttons (used in forms) [HTML.pm]
|
||||
*/
|
||||
/*td.sme-submitbutton {
|
||||
text-align: right;
|
||||
}
|
||||
*/
|
||||
|
||||
/*These style definitions were found int he old css file (manager.css)
|
||||
but don't seem to ever be referenced in the code. They're here
|
||||
for reference.
|
||||
|
||||
.banner {
|
||||
background: #000000;
|
||||
color: #ffffff;
|
||||
}
|
||||
.banner-right {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
background: #e17200;
|
||||
color: #ffffff;
|
||||
}
|
||||
.border {
|
||||
background: #000000;
|
||||
color: #000000;
|
||||
border-color: #000000;
|
||||
}
|
||||
.sidebar {
|
||||
width: 200px;
|
||||
background: #ffffff;
|
||||
font-size: smaller;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-weight: normal;
|
||||
}
|
||||
.sidebar-title {
|
||||
background: #1e385b;
|
||||
color: #ffffff;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
.newsitem {
|
||||
background: #ffffff;
|
||||
color: #000000;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
margin-left: 5px;
|
||||
margin-right: 5px;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
.newsitem-title {
|
||||
background: #cccccc;
|
||||
color: #ffffff;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
.newsitem-footer {
|
||||
background: #cccccc;
|
||||
color: #000000;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: smaller;
|
||||
text-align: right;
|
||||
}
|
||||
.newsitem-detail {
|
||||
font-size: smaller;
|
||||
font-weight: normal;
|
||||
}
|
||||
.formlabel {
|
||||
background: #c0c0c0;
|
||||
color: #000000;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: small;
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
}
|
||||
.welcome-link {
|
||||
background: #ffffff;
|
||||
color: #1e385b;
|
||||
}
|
||||
.littlelink {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
}
|
||||
#textlayer {
|
||||
position: absolute;
|
||||
visibility: inherit;
|
||||
top: 160px;
|
||||
left: 50px;
|
||||
z-index: 2;
|
||||
}
|
||||
#para {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
}
|
||||
#title {
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-weight: bold;
|
||||
padding: 7px 7px 7px 7px;
|
||||
color: #ffffff;
|
||||
}
|
||||
*/
|
||||
|
||||
EOF
|
||||
}
|
@@ -1,50 +0,0 @@
|
||||
{
|
||||
$OUT =<<'HERE';
|
||||
|
||||
/* from e-smith-manager to smanager (smeserver_manager2) */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* copyright (C) 1999-2003 Mitel Networks Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Technical support for this program is available from Mitel Networks
|
||||
* Please visit our web site www.mitel.com for details.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
/*contribs.org styling */
|
||||
|
||||
/* This special style is actually used only for the button row along the bottom of each page */
|
||||
th.sme-layout {
|
||||
border: 1px solid #8ebe43;
|
||||
background-color: #bee6a2;
|
||||
}
|
||||
table.sme-border {
|
||||
border: 2px solid #dddddd;
|
||||
}
|
||||
td.sme-border-warning,
|
||||
td.sme-border-right,
|
||||
td.sme-border-center {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
td.sme-border-right {text-align: right;}
|
||||
td.sme-border-center {text-align: center;}
|
||||
th.sme-border {
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
HERE
|
||||
}
|
||||
|
@@ -1 +0,0 @@
|
||||
/* DO NOT MODIFY THIS FILE! It is updated automatically */
|
@@ -1,229 +0,0 @@
|
||||
{
|
||||
$OUT = <<'EOF';
|
||||
|
||||
/* from e-smith-manager to smanager (smeserver_manager2) */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* copyright (C) 1999-2003 Mitel Networks Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Technical support for this program is available from Mitel Networks
|
||||
* Please visit our web site www.mitel.com for details.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* This is the stylesheet used in the navigation panel only
|
||||
|
||||
This file inherits the styles use in sme_core in the "navigation" section,
|
||||
and as noted in the code below. Note that some of the styles here are empty.
|
||||
This is because the style definition has moved safely to sme_core.css and
|
||||
the placeholder is left here for reference or future use.
|
||||
|
||||
There are a lot of styles in here, so read carefully. Each one is
|
||||
documented.
|
||||
|
||||
Styles that were in the old stylesheets, but are not used in the UI are at
|
||||
the bottom, commented out. These can be removed at the end of the 6.0
|
||||
cycle */
|
||||
|
||||
/* Sets the general page properties */
|
||||
body, body.menu {
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
/* This is the section heading style */
|
||||
.section {
|
||||
}
|
||||
|
||||
td.menu-cell {
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 0px;
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
All the a links use pseudoclasses to control the two visual link styles.
|
||||
For example:
|
||||
a.item:link the general link item
|
||||
a.item-current:link: the active link item
|
||||
|
||||
The switch from item to item-current is done with a javascript script in the head of the
|
||||
navigation page, using the onClick event.
|
||||
|
||||
We are making heavy use of the cascade with these.
|
||||
*/
|
||||
|
||||
/* a:link controls the look of a link when the mouse is nowhere near it */
|
||||
a.item:link, a.item-current:link,
|
||||
a.warn:link, a.warn-current:link {
|
||||
display: block;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
background: #e8f3e1;
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
border-color: #e8f3e1;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
border-style: solid;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-top: 0px;
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
/* a:visited controls the look of a visited link (one that has been clicked) */
|
||||
a.item:visited, a.item-current:visited,
|
||||
a.warn:visited, a.warn-current:visited {
|
||||
display: block;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
background: #e8f3e1;
|
||||
text-decoration: none;
|
||||
border-color: #e8f3e1;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
border-style: solid;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* a:hover controls the look of a link under the curser*/
|
||||
a.item:hover, a.item-current:hover,
|
||||
a.warn:hover, a.warn-current:hover {
|
||||
display: block;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
background: #cccccc;
|
||||
border-color: #888888;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
border-style: solid;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* a:active controls the look of a link as it is selected*/
|
||||
a.item:active, a.item-current:active,
|
||||
a.warn:active, a.warn-current:active {
|
||||
display: block;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
background: black;
|
||||
text-decoration: none ;
|
||||
border-color: #000000;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
border-style: solid;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/*
|
||||
These styles are to ensure that a selected link appears selected, even if the link
|
||||
opens in another frame. This uses a javascript chunk in the head of the navigation
|
||||
frame to change the style using the onClick event.
|
||||
*/
|
||||
a.item-current:link, a.warn-current:link,
|
||||
a.item-current:visited, a.warn-current:visited,
|
||||
a.item-current:active, a.warn-current:active,
|
||||
a.item-current:hover, a.warn-current:hover {
|
||||
display: block;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
background: #ffffff;
|
||||
border-color: #888888;
|
||||
margin-top: 0px;
|
||||
margin-right: 0px;
|
||||
margin-bottom: 0px;
|
||||
margin-left: 0px;
|
||||
border-style: solid;
|
||||
border-top-width: 1px;
|
||||
border-right-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
border-left-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
/* these two add a border on the styles defined directly above when
|
||||
the mouse is hovering over them */
|
||||
a.item-current:hover, a.warn-current:hover {
|
||||
border-color: #888888;
|
||||
}
|
||||
|
||||
/* These redefine a few elements to make room for the icon to the left of the warn class*/
|
||||
a.warn:link, a.warn-current:link,
|
||||
a.warn:visited, a.warn-current:visited,
|
||||
a.warn:active, a.warn-current:active,
|
||||
a.warn:hover, a.warn-current:hover {
|
||||
background-image: url(/server-common/warn.gif);
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px;
|
||||
padding-left: 25px;
|
||||
}
|
||||
/*end*/
|
||||
|
||||
EOF
|
||||
}
|
@@ -1 +0,0 @@
|
||||
/* DO NOT MODIFY THIS FILE! It is updated automatically */
|
@@ -1,293 +0,0 @@
|
||||
{
|
||||
$OUT = <<'EOF';
|
||||
|
||||
/* smeserver_manager2 */
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* copyright (C) 1999-2003 Mitel Networks Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*
|
||||
* Technical support for this program is available from Mitel Networks
|
||||
* Please visit our web site www.mitel.com for details.
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* This is the basic stylesheet originally used in the mojo version.
|
||||
*/
|
||||
|
||||
body{
|
||||
background-color: #FFF;
|
||||
}
|
||||
|
||||
#container{
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#navigation{
|
||||
width: 190px;
|
||||
position: absolute;
|
||||
margin-left: 0px;
|
||||
padding: 5px;
|
||||
background-color: #E8F3E1;
|
||||
/* height: 600px; */
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
#main{
|
||||
margin-left: 195px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#central{
|
||||
margin-left: 0px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#footer{
|
||||
margin-left: 0px;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#header {
|
||||
background: #bee6a2;
|
||||
}
|
||||
|
||||
#header h1, a:link, a:visited {
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
/* contribs.org styling */
|
||||
}
|
||||
|
||||
a:link { color: #006921; text-decoration: none; }
|
||||
a:visited { color: #063; text-decoration: none; }
|
||||
a:hover { color: #F00; text-decoration: none; }
|
||||
a:active { color: #606060; text-decoration: none; }
|
||||
|
||||
.sme-error {
|
||||
color: red;
|
||||
display:block;
|
||||
background-color: #ffffff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: red ;
|
||||
padding: 2px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
margin-top:0px;
|
||||
margin-bottom:0px;
|
||||
}
|
||||
|
||||
.sme-warning {
|
||||
color: orange;
|
||||
display:block;
|
||||
background-color: #ffffff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: orange ;
|
||||
padding: 4px;
|
||||
margin-left: 20px;
|
||||
margin-right: 20px;
|
||||
margin-top:2px;
|
||||
margin-bottom:2px;
|
||||
}
|
||||
|
||||
#footer img {
|
||||
float: right;
|
||||
position: fixed;
|
||||
margin-left: 40%;
|
||||
}
|
||||
|
||||
label.field-with-error {
|
||||
color: #dd7e5e
|
||||
}
|
||||
|
||||
input.field-with-error {
|
||||
background-color: #fd9e7e
|
||||
}
|
||||
|
||||
span.label {
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1; /*lightgreen;*/
|
||||
width: 30%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.label {
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1; /*lightgreen;*/
|
||||
width: 30%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
span.label2 {
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1; /*lightgreen;*/
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
span.data {
|
||||
padding: 2px;
|
||||
font-weight: bold;
|
||||
margin-left: 0%;
|
||||
/* background-color: lightblue;*/
|
||||
}
|
||||
|
||||
span.data2 {
|
||||
padding: 2px;
|
||||
/* background-color: lightblue; */
|
||||
}
|
||||
|
||||
input.action {
|
||||
margin-left: 0px;
|
||||
background-color: #bee6a2; /*lightgreen;*/
|
||||
color: darkgreen;
|
||||
border-radius: 8px;
|
||||
border: 2px solid #4CAF50; /* Green */
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
input.action:hover {background-color: #3e8e41; color:white;}
|
||||
|
||||
input.action:active {
|
||||
background-color: #3e8e41;
|
||||
transform: translate(-2px,2px);
|
||||
}
|
||||
|
||||
.center {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
input.action2 {
|
||||
margin-left: 0px;
|
||||
color: black;
|
||||
background-color: #d4d0c8;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
|
||||
#modul.desc {
|
||||
padding: 3px;
|
||||
background-color: grey;
|
||||
}
|
||||
|
||||
[type = 'text'] {
|
||||
margin-left: 0px;
|
||||
/*background-color: lightblue;*/
|
||||
}
|
||||
|
||||
.a, .return {
|
||||
color: #661866;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.section {
|
||||
}
|
||||
.a, .item {
|
||||
line-height: 12px;
|
||||
}
|
||||
|
||||
a.section-title {
|
||||
display: inline-block;
|
||||
color: #6CA345; /*#888;*/
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
line-height: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.menu-title {
|
||||
display: inline-block;
|
||||
color: #1A6D1A; /*#666;*/
|
||||
padding-left: 1px;
|
||||
padding-right: 1px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
|
||||
#module {
|
||||
/* height: 600px; */
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
|
||||
#h2l1 {
|
||||
height: 40px;
|
||||
width: 100%;
|
||||
}
|
||||
#h2e11 {
|
||||
width: 50%;
|
||||
float: left;
|
||||
}
|
||||
#h2e12 {
|
||||
background-color: #C0E7A6;
|
||||
float: left;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
#h2l2 {
|
||||
/* background-color: #A8F9E7;*/
|
||||
border-top: solid white 3px;
|
||||
border-bottom: solid white 2px;
|
||||
height: 14px;
|
||||
width: 100%;
|
||||
padding: 1px;
|
||||
}
|
||||
|
||||
#h2e21 {
|
||||
float: left;
|
||||
width: 70%;
|
||||
}
|
||||
|
||||
#h2e22,#h2e23,#h2e12 {
|
||||
float: left;
|
||||
width: 14em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.toggle-password {
|
||||
margin-left: -30px;
|
||||
}
|
||||
|
||||
.tg-icon {
|
||||
position: relative;
|
||||
top: 5px;
|
||||
left: 2px;
|
||||
}
|
||||
|
||||
.roundcube div {
|
||||
height:462px;
|
||||
width:85%;
|
||||
margin-bottom:1%;
|
||||
}
|
||||
|
||||
.roundcube object {
|
||||
margin-top:1%;
|
||||
height:95%;
|
||||
width:100%;
|
||||
}
|
||||
|
||||
|
||||
/*end*/
|
||||
EOF
|
||||
}
|
@@ -1 +0,0 @@
|
||||
/* DO NOT MODIFY THIS FILE! It is updated automatically */
|
@@ -30,8 +30,11 @@ use SrvMngr::Plugin::WithoutCache;
|
||||
|
||||
use esmith::I18N;
|
||||
|
||||
# Import the function(s) you need
|
||||
use SrvMngr_Auth qw(check_admin_access);
|
||||
|
||||
#this is overwrittrn with the "release" by the spec file - release can be "99.el8.sme"
|
||||
our $VERSION = '51.el8.sme';
|
||||
our $VERSION = '78.el8.sme';
|
||||
#Extract the release value
|
||||
if ($VERSION =~ /^(\d+)/) {
|
||||
$VERSION = $1; # $1 contains the matched numeric digits
|
||||
@@ -46,7 +49,7 @@ our @EXPORT_OK = qw(
|
||||
getNavigation ip_number validate_password is_normal_password email_simple
|
||||
mac_address_or_blank mac_address ip_number_or_blank
|
||||
lang_space get_routes_list subnet_mask get_reg_mask
|
||||
gen_locale_date_string get_public_ip_address
|
||||
gen_locale_date_string get_public_ip_address simpleNavMerge
|
||||
);
|
||||
|
||||
has home => sub {
|
||||
@@ -301,10 +304,11 @@ sub setup_routing {
|
||||
$if_logged_in->get('/userpassword')->to('userpassword#main')->name('passwd');
|
||||
$if_logged_in->post('/userpassword')->to('userpassword#change_password')->name('passwd2');
|
||||
|
||||
my $if_admin = $r->under( sub {
|
||||
my $c =shift;
|
||||
return $c->is_admin || $c->auth_fail($c->l("acs_ADMIN"));
|
||||
});
|
||||
my $if_admin = $r->under( sub {
|
||||
my $c = shift;
|
||||
# Call the imported function directly
|
||||
return check_admin_access($c) || $c->auth_fail($c->l("acs_ADMIN"));
|
||||
});
|
||||
|
||||
$if_admin->get('/backup')->to('backup#main')->name('backup');
|
||||
$if_admin->post('/backup')->to('backup#do_display')->name('backupd');
|
||||
@@ -549,9 +553,10 @@ sub getNavigation {
|
||||
|
||||
use esmith::NavigationDB;
|
||||
|
||||
my $c = shift;
|
||||
my $class = shift; #not the controller as it is called as an external, not part of the controller.
|
||||
my $lang = shift || 'en-us';
|
||||
my $menu = shift || 'N';
|
||||
my $username = shift || ''; #Username when logged in as a user not admin
|
||||
|
||||
# my $lang = $c->session->{lang} || 'en-us';
|
||||
|
||||
@@ -560,13 +565,33 @@ sub getNavigation {
|
||||
|
||||
my @files = ();
|
||||
my %files_hash = ();
|
||||
|
||||
# Added: Store allowed admin panels for non-admin users
|
||||
my @allowed_admin_panels = ();
|
||||
my $is_admin = 1; # Default to admin (full access)
|
||||
|
||||
# Added: Check if user is non-admin and get their allowed panels
|
||||
if ($username ne '') {
|
||||
# Get the AccountsDB to check user permissions
|
||||
my $accountsdb = esmith::AccountsDB->open_ro() or
|
||||
die "Couldn't open AccountsDB\n";
|
||||
|
||||
# Check if user has AdminPanels property
|
||||
my $user_rec = $accountsdb->get($username);
|
||||
if (defined $user_rec && $user_rec->prop('AdminPanels')) {
|
||||
$is_admin = 0; # User is non-admin with specific panel access
|
||||
# Get comma-separated list of allowed admin panels
|
||||
my $admin_panels = $user_rec->prop('AdminPanels');
|
||||
@allowed_admin_panels = split(/,/, $admin_panels);
|
||||
}
|
||||
}
|
||||
|
||||
#-----------------------------------------------------
|
||||
# Determine the directory where the functions are kept
|
||||
#-----------------------------------------------------
|
||||
my $navigation_ctlr_ignore =
|
||||
"(\.\.?|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm|Legacypanel\.pm(-.*)?)";
|
||||
# "(\.\.?|Initial\.pm|Manual\.pm|Swttheme\.pm|Request\.pm|Modules\.pm(-.*)?)";
|
||||
"(\.\.?|.*\-Custom\.pm|Swttheme\.pm|Login\.pm|Request\.pm|Modules\.pm|Legacypanel\.pm(-.*)?)";
|
||||
# "(\.\.?|Initial\.pm|.*Manual\.pm|Swttheme\.pm|Request\.pm|Modules\.pm(-.*)?)";
|
||||
my $navigation_cgi_ignore =
|
||||
"(\.\.?|navigation|noframes|online-manual|(internal|pleasewait)(-.*)?)";
|
||||
|
||||
@@ -638,70 +663,110 @@ sub getNavigation {
|
||||
}
|
||||
|
||||
foreach my $file (keys %files_hash)
|
||||
{
|
||||
#my $heading = 'Unknown';
|
||||
my $heading = 'Legacy';
|
||||
|
||||
my $description = $file;
|
||||
my $headingWeight = 99999;
|
||||
my $descriptionWeight = 99999;
|
||||
my $urlpath = '';
|
||||
my $menucat = 'A'; # admin menu (default)
|
||||
{
|
||||
#my $heading = 'Unknown';
|
||||
my $heading = 'Legacy';
|
||||
|
||||
my $description = $file;
|
||||
my $headingWeight = 99999;
|
||||
my $descriptionWeight = 99999;
|
||||
my $urlpath = '';
|
||||
my $menucat = 'A'; # admin menu (default)
|
||||
|
||||
my $rec = $navdb->get($file);
|
||||
my $rec = $navdb->get($file);
|
||||
|
||||
if (defined $rec)
|
||||
{
|
||||
$heading = $rec->prop('Heading');
|
||||
$description = $rec->prop('Description');
|
||||
$headingWeight = $rec->prop('HeadingWeight') || 99999; #Stop noise in logs if file in dir does not have nav header.
|
||||
$descriptionWeight = $rec->prop('DescriptionWeight');
|
||||
$urlpath = $rec->prop('UrlPath') || '';
|
||||
$menucat = $rec->prop('MenuCat') || 'A'; # admin menu (default)
|
||||
}
|
||||
next if $menu ne $menucat;
|
||||
if (defined $rec)
|
||||
{
|
||||
$heading = $rec->prop('Heading');
|
||||
$description = $rec->prop('Description');
|
||||
$headingWeight = $rec->prop('HeadingWeight') || 99999; #Stop noise in logs if file in dir does not have nav header.
|
||||
$descriptionWeight = $rec->prop('DescriptionWeight');
|
||||
$urlpath = $rec->prop('UrlPath') || '';
|
||||
$menucat = $rec->prop('MenuCat') || 'A'; # admin menu (default)
|
||||
}
|
||||
|
||||
# Added: Check if this is an admin menu item and if user has access
|
||||
if ($menucat eq 'A' && !$is_admin) {
|
||||
# Skip this admin panel if user doesn't have access to it
|
||||
my $has_access = 0;
|
||||
my $file_no_ext = $file;
|
||||
$file_no_ext =~ s/\.pm$//; # Remove .pm extension if present
|
||||
foreach my $allowed_panel (@allowed_admin_panels) {
|
||||
if ($file_no_ext eq lc($allowed_panel)) {
|
||||
#die("Here!!$file $file_no_ext $allowed_panel ");
|
||||
$has_access = 1;
|
||||
last;
|
||||
}
|
||||
}
|
||||
next if !$has_access;
|
||||
}
|
||||
|
||||
#--------------------------------------------------
|
||||
# add heading, description and weight information to data structure
|
||||
#--------------------------------------------------
|
||||
next if $menu ne $menucat;
|
||||
|
||||
unless (exists $nav {$heading})
|
||||
{
|
||||
$nav {$heading} = { COUNT => 0, WEIGHT => 0, DESCRIPTIONS => [] };
|
||||
}
|
||||
#--------------------------------------------------
|
||||
# add heading, description and weight information to data structure
|
||||
#--------------------------------------------------
|
||||
|
||||
$nav {$heading} {'COUNT'} ++;
|
||||
$nav {$heading} {'WEIGHT'} += $headingWeight;
|
||||
unless (exists $nav {$heading})
|
||||
{
|
||||
$nav {$heading} = { COUNT => 0, WEIGHT => 0, DESCRIPTIONS => [] };
|
||||
}
|
||||
|
||||
# Check for manager panel, and assign the appropriate
|
||||
# cgi-bin prefix for the links.
|
||||
# Grab the last 2 directories by splitting for '/'s and
|
||||
# then concatenating the last 2
|
||||
# probably a better way, but I don't know it.
|
||||
$nav {$heading} {'COUNT'} ++;
|
||||
$nav {$heading} {'WEIGHT'} += $headingWeight;
|
||||
|
||||
my $path;
|
||||
if ( $files_hash{$file} eq 'ctrl') {
|
||||
$path = "2";
|
||||
} elsif ( $files_hash{$file} eq 'cgim') {
|
||||
$path = "/cgi-bin";
|
||||
} else {
|
||||
my @filename = split /\//, $files_hash{$file};
|
||||
$path = "/$filename[scalar @filename - 2]/$filename[scalar @filename - 1]";
|
||||
};
|
||||
# Check for manager panel, and assign the appropriate
|
||||
# cgi-bin prefix for the links.
|
||||
# Grab the last 2 directories by splitting for '/'s and
|
||||
# then concatenating the last 2
|
||||
# probably a better way, but I don't know it.
|
||||
|
||||
push @{ $nav {$heading} {'DESCRIPTIONS'} },
|
||||
{ DESCRIPTION => $description,
|
||||
WEIGHT => $descriptionWeight,
|
||||
FILENAME => $urlpath ? $urlpath : "$path/$file",
|
||||
CGIPATH => $path,
|
||||
MENUCAT => $menucat
|
||||
my $path;
|
||||
if ( $files_hash{$file} eq 'ctrl') {
|
||||
$path = "2";
|
||||
} elsif ( $files_hash{$file} eq 'cgim') {
|
||||
$path = "/cgi-bin";
|
||||
} else {
|
||||
my @filename = split /\//, $files_hash{$file};
|
||||
$path = "/$filename[scalar @filename - 2]/$filename[scalar @filename - 1]";
|
||||
};
|
||||
|
||||
push @{ $nav {$heading} {'DESCRIPTIONS'} },
|
||||
{ DESCRIPTION => $description,
|
||||
WEIGHT => $descriptionWeight,
|
||||
FILENAME => $urlpath ? $urlpath : "$path/$file",
|
||||
CGIPATH => $path,
|
||||
MENUCAT => $menucat
|
||||
};
|
||||
}
|
||||
|
||||
return \%nav;
|
||||
|
||||
}
|
||||
|
||||
sub simpleNavMerge {
|
||||
#Used to merge two nav structures - used for the user and selected admin menu.
|
||||
my ($class,$nav1, $nav2) = @_;
|
||||
my %result = %$nav1; # Start with a copy of first nav
|
||||
|
||||
# Merge in second nav
|
||||
foreach my $heading (keys %$nav2) {
|
||||
if (exists $result{$heading}) {
|
||||
# Add counts and weights
|
||||
$result{$heading}{COUNT} += $nav2->{$heading}{COUNT};
|
||||
$result{$heading}{WEIGHT} += $nav2->{$heading}{WEIGHT};
|
||||
# Append descriptions
|
||||
push @{$result{$heading}{DESCRIPTIONS}}, @{$nav2->{$heading}{DESCRIPTIONS}};
|
||||
} else {
|
||||
# Just copy the heading
|
||||
$result{$heading} = $nav2->{$heading};
|
||||
}
|
||||
}
|
||||
|
||||
return \%result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub _lang_space {
|
||||
|
||||
|
@@ -12,13 +12,15 @@ use warnings;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
use Locale::gettext;
|
||||
use SrvMngr::I18N;
|
||||
use esmith::ConfigDB::UTF8;
|
||||
use SrvMngr qw(theme_list init_session);
|
||||
|
||||
our $db = esmith::ConfigDB->open() || die "Couldn't open config db";
|
||||
our $db;
|
||||
|
||||
sub main {
|
||||
my $c = shift;
|
||||
$c->app->log->info($c->log_req);
|
||||
$db = esmith::ConfigDB::UTF8->open() || die "Couldn't open config db";
|
||||
my %dir_datas = ();
|
||||
my $title = $c->l('dir_FORM_TITLE');
|
||||
my $modul = $c->render_to_string(inline => $c->l('dir_DESCRIPTION'));
|
||||
|
@@ -2,7 +2,7 @@ package SrvMngr::Controller::Ibays;
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Network
|
||||
# description : Shared areas (was ibays)
|
||||
# description : Ibays
|
||||
# navigation : 6000 100
|
||||
#
|
||||
#
|
||||
|
@@ -3,7 +3,7 @@ package SrvMngr::Controller::Login;
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Support
|
||||
# description : Login
|
||||
# navigation : 0000 001
|
||||
# navigation : 0 200
|
||||
# menu : N
|
||||
#
|
||||
# routes : end
|
||||
|
@@ -3,7 +3,7 @@ package SrvMngr::Controller::Manual;
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Support
|
||||
# description : Online manual
|
||||
# navigation : 0000 100
|
||||
# navigation : 0 300
|
||||
# menu : N
|
||||
#
|
||||
# routes : end
|
||||
|
@@ -142,6 +142,10 @@ sub do_display {
|
||||
if ($trt eq 'LIST') {
|
||||
|
||||
#List all the port forwards
|
||||
# Open them again as maybe written to above
|
||||
$tcp_db = esmith::ConfigDB->open('portforward_tcp') || die "Can't open portforward_tcp database: $!\n";
|
||||
$udp_db = esmith::ConfigDB->open('portforward_udp') || die "Can't open portforward_udp database: $!\n";
|
||||
|
||||
my @tcpforwards = $tcp_db->get_all;
|
||||
my @udpforwards = $udp_db->get_all;
|
||||
my $empty = 1 if not @tcpforwards and not @udpforwards;
|
||||
@@ -211,6 +215,7 @@ sub add_portforward {
|
||||
|
||||
sub get_destination_host {
|
||||
my $q = shift;
|
||||
$cdb = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
|
||||
my $dhost = $q->param("dhost");
|
||||
my $localip = $cdb->get_prop('InternalInterface', 'IPAddress');
|
||||
my $external_ip = $cdb->get_prop('ExternalInterface', 'IPAddress') || $localip;
|
||||
@@ -357,6 +362,7 @@ sub isValidPort() {
|
||||
|
||||
sub validate_destination_host {
|
||||
my $c = shift;
|
||||
$cdb = esmith::ConfigDB->open || die "Can't open configuration database: $!\n";
|
||||
my $dhost = $c->param('dhost');
|
||||
$dhost =~ s/^\s+|\s+$//g;
|
||||
my $localip = $cdb->get_prop('InternalInterface', 'IPAddress');
|
||||
@@ -395,4 +401,4 @@ sub validate_allowed_hosts {
|
||||
} ## end foreach (split(/[\s,]+/, $ahost...))
|
||||
return %valid_ahost_list;
|
||||
} ## end sub validate_allowed_hosts
|
||||
1;
|
||||
1;
|
@@ -3,7 +3,7 @@ package SrvMngr::Controller::Printers;
|
||||
#----------------------------------------------------------------------
|
||||
# heading : System
|
||||
# description : Printers
|
||||
# navigation : 4000 800
|
||||
# navigation : 4000 900
|
||||
#
|
||||
#
|
||||
# routes : end
|
||||
|
@@ -3,7 +3,7 @@ package SrvMngr::Controller::Proxy;
|
||||
#----------------------------------------------------------------------
|
||||
# heading : System
|
||||
# description : Proxy settings
|
||||
# navigation : 4000 710
|
||||
# navigation : 4000 800
|
||||
#----------------------------------------------------------------------
|
||||
#
|
||||
# routes : end
|
||||
|
@@ -30,7 +30,7 @@ our @EXPORT = qw( networkAccess_list passwordLogin_list get_ssh_permit_root_logi
|
||||
);
|
||||
|
||||
# get_pptp_sessions
|
||||
our $db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my $db; # = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
|
||||
sub main {
|
||||
my $c = shift;
|
||||
@@ -134,7 +134,7 @@ sub networkAccess_list {
|
||||
return [
|
||||
[ $c->l('rma_NO_ACCESS') => 'off' ],
|
||||
[ $c->l('NETWORKS_ALLOW_LOCAL') => 'private' ],
|
||||
[ $c->l('NETWORKS_ALLOW_PUBLIC') => 'normal' ]
|
||||
[ $c->l('NETWORKS_ALLOW_PUBLIC') => 'public' ]
|
||||
];
|
||||
} ## end sub networkAccess_list
|
||||
|
||||
@@ -144,6 +144,7 @@ sub passwordLogin_list {
|
||||
}
|
||||
|
||||
sub get_prop {
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my ($c, $item, $prop) = @_;
|
||||
warn "You must specify a record key" unless $item;
|
||||
warn "You must specify a property name" unless $prop;
|
||||
@@ -154,6 +155,8 @@ sub get_prop {
|
||||
sub get_value {
|
||||
my $c = shift;
|
||||
my $item = shift;
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
return ($db->get($item)->value());
|
||||
} ## end sub get_value
|
||||
|
||||
@@ -179,8 +182,8 @@ sub get_ssh_password_auth {
|
||||
}
|
||||
|
||||
sub get_ssh_access {
|
||||
my $status = get_prop('', 'sshd', 'status');
|
||||
|
||||
my $c = shift;
|
||||
my $status = $c->get_prop('sshd', 'status');
|
||||
if (defined($status) && ($status eq 'enabled')) {
|
||||
my $access = get_prop('', 'sshd', 'access');
|
||||
$access = ($access eq 'public') ? 'public' : 'private';
|
||||
@@ -202,6 +205,7 @@ sub get_ftp_password_login_access {
|
||||
} ## end sub get_ftp_password_login_access
|
||||
|
||||
sub get_telnet_mode {
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my $telnet = $db->get('telnet');
|
||||
return ('off') unless $telnet;
|
||||
my $status = $telnet->prop('status') || 'disabled';
|
||||
@@ -211,8 +215,8 @@ sub get_telnet_mode {
|
||||
} ## end sub get_telnet_mode
|
||||
|
||||
sub get_ipsecrw_sessions {
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my $status = $db->get('ipsec')->prop('RoadWarriorStatus');
|
||||
|
||||
if (defined($status) && ($status eq 'enabled')) {
|
||||
return ($db->get('ipsec')->prop('RoadWarriorSessions') || '0');
|
||||
} else {
|
||||
@@ -221,6 +225,7 @@ sub get_ipsecrw_sessions {
|
||||
} ## end sub get_ipsecrw_sessions
|
||||
|
||||
sub get_ipsecrw_status {
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
return undef unless ($db->get('ipsec'));
|
||||
return $db->get('ipsec')->prop('RoadWarriorStatus');
|
||||
}
|
||||
@@ -228,6 +233,7 @@ sub get_ipsecrw_status {
|
||||
sub pptp_and_dhcp_range {
|
||||
my $c = shift;
|
||||
my $val = shift || 0;
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my $dhcp_status = $db->get_prop('dhcpd', 'status') || 'disabled';
|
||||
my $dhcp_end = $db->get_prop('dhcpd', 'end') || '';
|
||||
my $dhcp_start = $db->get_prop('dhcpd', 'start') || '';
|
||||
@@ -245,6 +251,7 @@ sub pptp_and_dhcp_range {
|
||||
|
||||
sub _get_valid_from {
|
||||
my $c = shift;
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my $rec = $db->get('httpd-admin');
|
||||
return undef unless ($rec);
|
||||
my @vals = (split ',', ($rec->prop('ValidFrom') || ''));
|
||||
@@ -287,12 +294,12 @@ sub validate_network_and_mask {
|
||||
|
||||
sub change_settings {
|
||||
my ($c, %rma_datas) = @_;
|
||||
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
#------------------------------------------------------------
|
||||
# good; go ahead and change the access.
|
||||
#------------------------------------------------------------
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
my $rec = $db->get('telnet');
|
||||
|
||||
if ($rec) {
|
||||
if ($rma_datas{telnetAccess} eq "off") {
|
||||
$rec->set_prop('status', 'disabled');
|
||||
@@ -363,7 +370,7 @@ sub change_settings {
|
||||
sub set_ipsecrw_sessions {
|
||||
my $c = shift;
|
||||
my $sessions = shift;
|
||||
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
if (defined $sessions) {
|
||||
$db->get('ipsec')->set_prop('RoadWarriorSessions', $sessions);
|
||||
|
||||
@@ -378,6 +385,7 @@ sub add_new_valid_from {
|
||||
my $c = shift;
|
||||
my $net = shift;
|
||||
my $mask = shift;
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
|
||||
# we transform bit mask to regular mask
|
||||
$mask = get_reg_mask($net, $mask);
|
||||
@@ -400,6 +408,7 @@ sub remove_valid_from {
|
||||
my $c = shift;
|
||||
my $remove_nets = shift;
|
||||
my @remove = split /,/, $remove_nets;
|
||||
$db = esmith::ConfigDB->open || warn "Couldn't open configuration database";
|
||||
|
||||
# my @remove = $c->param('Remove_nets');
|
||||
my @vals = $c->_get_valid_from();
|
||||
@@ -430,4 +439,4 @@ sub remove_valid_from {
|
||||
$db->get('httpd-admin')->set_prop('ValidFrom', $prop);
|
||||
return 1;
|
||||
} ## end sub remove_valid_from
|
||||
1;
|
||||
1;
|
@@ -1,16 +1,11 @@
|
||||
package SrvMngr::Controller::Review;
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Support
|
||||
# heading : Investigation
|
||||
# description : Review configuration
|
||||
# navigation : 000 500
|
||||
# menu : N
|
||||
# navigation : 7000 600
|
||||
# routes : end
|
||||
#----------------------------------------------------------------------
|
||||
# heading-o : Configuration
|
||||
# description-o : Review configuration
|
||||
# navigation-o : 6000 6800
|
||||
#----------------------------------------------------------------------
|
||||
use strict;
|
||||
use warnings;
|
||||
use Mojo::Base 'Mojolicious::Controller';
|
||||
@@ -313,4 +308,4 @@ sub get_public_ip_address
|
||||
}
|
||||
|
||||
|
||||
1;
|
||||
1;
|
@@ -1,9 +1,9 @@
|
||||
package SrvMngr::Controller::Roundcubepanel;
|
||||
|
||||
#----------------------------------------------------------------------
|
||||
# heading : System
|
||||
# heading : Network
|
||||
# description : Webmail
|
||||
# navigation : 99999 9999
|
||||
# navigation : 6000 900
|
||||
#----------------------------------------------------------------------
|
||||
#----------------------------------------------------------------------
|
||||
# name : roundcubepanel, method : get, url : /roundcubepanel, ctlact : Roundcubepanel#main
|
||||
|
@@ -3,7 +3,7 @@ package SrvMngr::Controller::Support;
|
||||
#----------------------------------------------------------------------
|
||||
# heading : Support
|
||||
# description : Support and licensing
|
||||
# navigation : 0000 200
|
||||
# navigation : 0 400
|
||||
# menu : N
|
||||
#
|
||||
# routes : end
|
||||
|
@@ -31,7 +31,8 @@ sub main {
|
||||
my %log_datas = ();
|
||||
my $title = $c->l('log_FORM_TITLE');
|
||||
my $notif = '';
|
||||
$log_datas{default_op} = ($cdb->get('viewlogfiles')->prop('DefaultOperation')) || 'view';
|
||||
my $viewlog = $cdb->get('viewlogfiles');
|
||||
$log_datas{default_op} = ($viewlog ? $viewlog->prop('DefaultOperation') : undef) || 'view';
|
||||
$c->stash(title => $title, notif => $notif, log_datas => \%log_datas);
|
||||
$c->render(template => 'viewlogfiles');
|
||||
} ## end sub main
|
||||
|
100
root/usr/share/smanager/lib/SrvMngr_Auth.pm
Normal file
100
root/usr/share/smanager/lib/SrvMngr_Auth.pm
Normal file
@@ -0,0 +1,100 @@
|
||||
# Optimized SrvMngr_Auth module using stash caching and Exporter
|
||||
|
||||
package SrvMngr_Auth;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
use Exporter qw(import); # Import the Exporter module
|
||||
use esmith::AccountsDB;
|
||||
|
||||
# Define functions to be exported upon request
|
||||
our @EXPORT_OK = qw(check_admin_access load_user_auth_info has_panel_access get_panel_from_path);
|
||||
|
||||
# Helper function to extract panel name from path
|
||||
sub get_panel_from_path {
|
||||
my ($path) = @_;
|
||||
|
||||
if ($path =~ m{^/([^/]+)}) {
|
||||
return $1;
|
||||
}
|
||||
|
||||
return ''; # Return empty string if no panel found
|
||||
}
|
||||
|
||||
# Load user authentication info and cache it in the stash
|
||||
sub load_user_auth_info {
|
||||
my ($c) = @_;
|
||||
|
||||
# Check if auth info is already cached in the stash
|
||||
return if exists $c->stash->{auth_info};
|
||||
|
||||
my %auth_info = (
|
||||
username => '', # Initialize username
|
||||
is_admin => 0,
|
||||
allowed_panels => [],
|
||||
);
|
||||
|
||||
# Get username from session
|
||||
$auth_info{username} = $c->session->{username} || ''; # Provide default empty string
|
||||
|
||||
# Check if user is admin
|
||||
$auth_info{is_admin} = $c->is_admin || 0;
|
||||
|
||||
# If not admin, get allowed panels
|
||||
if (!$auth_info{is_admin} && $auth_info{username}) {
|
||||
my $accountsdb = esmith::AccountsDB->open_ro();
|
||||
if ($accountsdb) {
|
||||
my $user_rec = $accountsdb->get($auth_info{username});
|
||||
# Check if the property exists before trying to get its value
|
||||
if (defined $user_rec && $user_rec->prop('AdminPanels')) {
|
||||
# Get comma-separated list of allowed admin panels
|
||||
my $admin_panels = $user_rec->prop('AdminPanels');
|
||||
$auth_info{allowed_panels} = [split(/,/, $admin_panels)];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Store the calculated info in the stash
|
||||
$c->stash(auth_info => \%auth_info);
|
||||
}
|
||||
|
||||
# Check if a user has access to a specific panel (uses cached info)
|
||||
sub has_panel_access {
|
||||
my ($c, $panel) = @_;
|
||||
|
||||
# Ensure auth info is loaded
|
||||
load_user_auth_info($c);
|
||||
|
||||
my $auth_info = $c->stash->{auth_info};
|
||||
|
||||
# Check if requested panel is in allowed panels
|
||||
foreach my $allowed_panel (@{$auth_info->{allowed_panels}}) {
|
||||
return 1 if lc($panel) eq lc($allowed_panel)
|
||||
|| lc(substr($panel, 0, length($allowed_panel))) eq lc($allowed_panel);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
# Main function to check admin access (uses cached info)
|
||||
sub check_admin_access {
|
||||
my ($c) = @_;
|
||||
|
||||
# Ensure auth info is loaded
|
||||
load_user_auth_info($c);
|
||||
|
||||
my $auth_info = $c->stash->{auth_info};
|
||||
|
||||
# First check if user is admin
|
||||
return 1 if $auth_info->{is_admin};
|
||||
|
||||
# If not admin, check if they have access to the specific panel
|
||||
my $current_path = $c->req->url->path;
|
||||
my $requested_panel = $current_path;
|
||||
return 0 unless $requested_panel;
|
||||
|
||||
# Check if user has access to this panel using the cached info
|
||||
return has_panel_access($c, $requested_panel);
|
||||
}
|
||||
|
||||
1; # Return true value for module loading
|
@@ -0,0 +1,505 @@
|
||||
{
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
a.alert {
|
||||
color: red;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
a.item {
|
||||
color: #00008b;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
a.item-current:hover, a.warn-current:hover {
|
||||
border-color: #888;
|
||||
}
|
||||
|
||||
a.item-current:link, a.warn-current:link,
|
||||
a.item-current:visited, a.warn-current:visited,
|
||||
a.item-current:active, a.warn-current:active,
|
||||
a.item-current:hover, a.warn-current:hover {
|
||||
display: block;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
background: #fff;
|
||||
border-color: #888;
|
||||
margin: 0;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
a.item:active, a.item-current:active,
|
||||
a.warn:active, a.warn-current:active {
|
||||
display: block;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
color: white;
|
||||
background: black;
|
||||
text-decoration: none;
|
||||
border-color: #000;
|
||||
margin: 0;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
a.item:hover, a.item-current:hover,
|
||||
a.warn:hover, a.warn-current:hover {
|
||||
display: block;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
text-decoration: none;
|
||||
background: #ccc;
|
||||
border-color: #888;
|
||||
margin: 0;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
a.item:link, a.item-current:link,
|
||||
a.warn:link, a.warn-current:link {
|
||||
display: block;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
background: #e8f3e1;
|
||||
text-decoration: none;
|
||||
text-align: left;
|
||||
border-color: #e8f3e1;
|
||||
margin: 0;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding: 0 10px 2px;
|
||||
}
|
||||
|
||||
a.item:visited, a.item-current:visited,
|
||||
a.warn:visited, a.warn-current:visited {
|
||||
display: block;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
color: black;
|
||||
background: #e8f3e1;
|
||||
text-decoration: none;
|
||||
border-color: #e8f3e1;
|
||||
margin: 0;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-bottom: 2px;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
a.section-title {
|
||||
display: inline-block;
|
||||
color: #6CA345;
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
line-height: 18px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
a.sl {
|
||||
color: green;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #e8f3e1;
|
||||
}
|
||||
|
||||
a.update {
|
||||
color: red;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background: #98d36e;
|
||||
}
|
||||
|
||||
a.warn:link, a.warn-current:link,
|
||||
a.warn:visited, a.warn-current:visited,
|
||||
a.warn:active, a.warn-current:active,
|
||||
a.warn:hover, a.warn-current:hover {
|
||||
background-image: url("/server-common/warn.gif");
|
||||
background-repeat: no-repeat;
|
||||
background-position: 10px;
|
||||
padding-left: 25px;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #606060;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #F00;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:link {
|
||||
color: #006921;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #063;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #FFF;
|
||||
color: #000;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
body, body.main {
|
||||
margin: 5px 20px 5px 5px;
|
||||
}
|
||||
|
||||
body, body.menu {
|
||||
margin: 0 0 0 2px;
|
||||
}
|
||||
|
||||
body.header {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #bee6a2;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
body.main {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
body.menu {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
|
||||
div.error, div.sme-error, span.error, span.sme-error {
|
||||
color: red;
|
||||
background-color: #f9f9f9;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: red;
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
|
||||
}
|
||||
|
||||
form {
|
||||
margin-top: 2px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
h1, .h1 {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
color: #333;
|
||||
font-size: 18px;
|
||||
margin-bottom: 4px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
h2, .h2 {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
color: #333;
|
||||
font-size: 14px;
|
||||
margin-bottom: 3px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
h3, .h3 {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
color: #333;
|
||||
font-size: 12px;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 12px;
|
||||
}
|
||||
|
||||
h4, .h4 {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-style: italic;
|
||||
color: #333;
|
||||
font-size: 12px;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
hr.sectionbar {
|
||||
color: #8ebe43;
|
||||
background-color: #8ebe43;
|
||||
height: 1px;
|
||||
width: 80%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
hr.sme-copyrightbar {
|
||||
color: #8ebe43;
|
||||
background-color: #8ebe43;
|
||||
height: 1px;
|
||||
width: 100%;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
input.action {
|
||||
margin-left: 0;
|
||||
background-color: #bee6a2;
|
||||
color: darkgreen;
|
||||
border-radius: 8px;
|
||||
border: 2px solid #4CAF50;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
input.action2 {
|
||||
margin-left: 0;
|
||||
color: black;
|
||||
background-color: #d4d0c8;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
input.action:active {
|
||||
background-color: #3e8e41;
|
||||
transform: translate(-2px,2px);
|
||||
}
|
||||
|
||||
input.action:hover {
|
||||
background-color: #3e8e41;
|
||||
color: white;
|
||||
}
|
||||
|
||||
input.field-with-error {
|
||||
background-color: #fd9e7e;
|
||||
}
|
||||
|
||||
label.field-with-error {
|
||||
color: #dd7e5e;
|
||||
}
|
||||
|
||||
ol, ul, li {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
color: black;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 8px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
span {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
span.data {
|
||||
padding: 2px;
|
||||
font-weight: bold;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
span.data2 {
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
span.label {
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1;
|
||||
width: 30%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
span.label2 {
|
||||
display: inline-block;
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
table, tr, td, div, p, form {
|
||||
color: #000;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
table.sme-border {
|
||||
border-collapse: collapse;
|
||||
border: 2px solid #cccccc;
|
||||
empty-cells: show;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
table.sme-layout {
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
table.sme-noborders {
|
||||
padding: 0;
|
||||
margin: 0 0 20px;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
td {
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
td.darkgrey {
|
||||
background-color: #888;
|
||||
}
|
||||
|
||||
td.label {
|
||||
font-weight: bold;
|
||||
background-color: #e8f3e1;
|
||||
width: 30%;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.menu-cell {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
td.section {
|
||||
padding-bottom: 2px;
|
||||
padding-top: 8px;
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
|
||||
td.sme-border a, td.sme-border-right a, td.sme-border-center a {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
td.sme-border, td.sme-border-warning, td.sme-border-right, td.sme-border-center {
|
||||
border: 1px solid #cccccc;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
color: #000;
|
||||
text-align: left;
|
||||
padding: 3px 2px;
|
||||
}
|
||||
|
||||
td.sme-border-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
td.sme-border-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
td.sme-border-warning {
|
||||
color: red;
|
||||
}
|
||||
|
||||
/* sme-layout* : Used for top-level layout */
|
||||
table.sme-layout {
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 2px;
|
||||
margin-top: 2px;
|
||||
}
|
||||
tr.sme-layout {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
td.sme-layout {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
|
||||
td.sme-noborders-content {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
td.sme-noborders-info, div.sme-noborders-info {
|
||||
text-align: left;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
td.sme-noborders-label {
|
||||
font-weight: bold;
|
||||
text-align: right;
|
||||
background-color: #e8f3e1;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
td.sme-radiobutton {
|
||||
width: 30px;
|
||||
}
|
||||
|
||||
th.sme-border {
|
||||
border: 1px;
|
||||
background-color: #bee6a2;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
th.sme-layout {
|
||||
border: 1px;
|
||||
background-color: #e8f3e1;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 9pt;
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
text-align: right;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
tr.sme-layout {
|
||||
border: 1px;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: circle;
|
||||
}
|
||||
|
||||
div.success, span.success {
|
||||
color: #006400;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #006400 ;
|
||||
padding: 10px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
div.roundcube #roundcube{
|
||||
width:100%;
|
||||
height:600px;
|
||||
}
|
283
root/usr/share/smanager/themes/default/public/css/new_sme.css
Normal file
283
root/usr/share/smanager/themes/default/public/css/new_sme.css
Normal file
@@ -0,0 +1,283 @@
|
||||
/* css/sme-password.css */
|
||||
.input-container {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
.sme-password {
|
||||
padding-right: 5px; /* Ensure space for the toggle icon */
|
||||
}
|
||||
.toggle-password {
|
||||
position: absolute;
|
||||
right: 4px; /* Position it towards the right */
|
||||
top: 50%; /* Center vertically */
|
||||
transform: translateY(-50%); /* Adjust for exact centering */
|
||||
cursor: pointer;
|
||||
width: 20px; /* Set the width of the icon */
|
||||
height: 20px; /* Set the height of the icon */
|
||||
}
|
||||
|
||||
.module {
|
||||
padding: 20px;
|
||||
border: 1px ;
|
||||
border-radius: 10px;
|
||||
background-color: #f9f9f9;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
margin-left: 10px !important;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.sme-copyright {
|
||||
color: #777;
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.logo {
|
||||
height: 142%;
|
||||
width: auto;
|
||||
margin-left: -16px;
|
||||
}
|
||||
|
||||
.gradient-panel {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
background: linear-gradient(to right, white ,#c0e7a5 );
|
||||
display: flex;
|
||||
align-items: center;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sme-error {
|
||||
color: #d9534f;
|
||||
display: block;
|
||||
background-color: #fff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: red;
|
||||
padding: 2px;
|
||||
font-weight: bold;
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.login-button {
|
||||
position: absolute;
|
||||
left: 7%;
|
||||
transform: translateX(-50%);
|
||||
background-color: #4caf50b8;
|
||||
color: white !important;
|
||||
border: none;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
cursor: pointer;
|
||||
border-radius: 4px;
|
||||
margin-left: 77%;
|
||||
}
|
||||
|
||||
.sme-warning {
|
||||
color: orange;
|
||||
display: block;
|
||||
background-color: #fff;
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: orange;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.infobar {
|
||||
font-family: Verdana, Tahoma, sans-serif;
|
||||
font-size: 11px;
|
||||
background-color: #98d36e;
|
||||
}
|
||||
|
||||
.module-content {
|
||||
font-family: Georgia, Garamond, serif;
|
||||
font-size: 13px;
|
||||
line-height: 1.2;
|
||||
color: #555;
|
||||
}
|
||||
|
||||
#help-button {
|
||||
text-decoration: none;
|
||||
font-size: 20px;
|
||||
padding: 8px;
|
||||
background-color: #98d36e;
|
||||
border-radius: 4px;
|
||||
color: #000;
|
||||
}
|
||||
|
||||
/*
|
||||
#module {
|
||||
padding: 20px;
|
||||
border: 1px;
|
||||
border-radius: 10px;
|
||||
background-color: #f9f9f9;
|
||||
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
*/
|
||||
|
||||
#container {
|
||||
max-width: 100%;
|
||||
position: relative;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#header2 {
|
||||
width:96%;
|
||||
margin-left: 1px;
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
#main {
|
||||
margin-left: 200px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#central {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#footer {
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
#header {
|
||||
width: 100%;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
#navigation {
|
||||
width: 190px;
|
||||
position: absolute;
|
||||
padding: 5px;
|
||||
background-color: #E8F3E1;
|
||||
overflow: auto;
|
||||
margin-top:20px;
|
||||
}
|
||||
|
||||
#footer img {
|
||||
float: right;
|
||||
position: fixed;
|
||||
/*margin-left: 40%;*/
|
||||
}
|
||||
|
||||
.flag-style {
|
||||
position: absolute;
|
||||
transform: translateY(-50%);
|
||||
left: 95%;
|
||||
/*right: 20px;
|
||||
*/
|
||||
width: 24px;
|
||||
height: 14px;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
|
||||
/* flag container*/
|
||||
#flag-container span {
|
||||
font-size: 24px;
|
||||
display: flex; /* Allows for easy centering */
|
||||
justify-content: center; /* Center horizontally */
|
||||
align-items: center; /* Center vertically */
|
||||
width: 100%; /* Full width of parent */
|
||||
height: 24px; /* Set a fixed height */
|
||||
border: 1px solid #ccc; /* Light gray border */
|
||||
border-radius: 5px; /* Rounded corners */
|
||||
cursor: default; /* Prevent text cursor */
|
||||
|
||||
}
|
||||
|
||||
.fallback-box {
|
||||
display: inline-block; /* Make it inline-block to fit around the content */
|
||||
border: 2px solid gray; /* Change the border color as desired */
|
||||
padding: 10px; /* Add some padding */
|
||||
border-radius: 10px; /* Round the corners of the box */
|
||||
font-size: 60px; /* Adjust size if needed */
|
||||
margin-top: 10px; /* Add some margin */
|
||||
text-align: center; /* Center text inside the box */
|
||||
}
|
||||
|
||||
table.sme-border {
|
||||
border-collapse: collapse;
|
||||
border: 2px solid #cccccc;
|
||||
empty-cells: show;
|
||||
margin: 5px 5px 5px 2px;
|
||||
}
|
||||
td.sme-border, td.sme-border-warning, td.sme-border-right, td.sme-border-center {
|
||||
border: 1px solid #cccccc;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: normal;
|
||||
color: #000000;
|
||||
text-align: left;
|
||||
padding-left: 2px;
|
||||
padding-right: 2px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
}
|
||||
td.sme-border-warning {
|
||||
color: red;
|
||||
}
|
||||
td.sme-border-right {
|
||||
text-align: right;
|
||||
}
|
||||
td.sme-border-center {
|
||||
text-align: center;
|
||||
}
|
||||
th.sme-border {
|
||||
border: 1px solid #cccccc;
|
||||
background-color: #bee6a2;
|
||||
font-family: Verdana, Arial, Helvetica, sans-serif;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
color: #000000;
|
||||
text-align: center;
|
||||
vertical-align: bottom;
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
padding-top: 3px;
|
||||
padding-bottom: 3px;
|
||||
/*border-width: 1px;
|
||||
border-style: solid;
|
||||
border-color: #F2F0EE #75736E #75736E #F2F0EE ;
|
||||
*/
|
||||
}
|
||||
td.sme-border a, td.sme-border-right a, td.sme-border-center a {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
th.sme-layout {
|
||||
border: 1px solid #8ebe43;
|
||||
background-color: #bee6a2;
|
||||
}
|
||||
table.sme-border {
|
||||
border: 2px solid #dddddd;
|
||||
}
|
||||
td.sme-border-warning,
|
||||
td.sme-border-right,
|
||||
td.sme-border-center {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
||||
td.sme-border-right {text-align: right;}
|
||||
td.sme-border-center {text-align: center;}
|
||||
th.sme-border {
|
||||
border: 1px solid #dddddd;
|
||||
background-color: #e8f3e1;
|
||||
}
|
||||
|
||||
.no-visited-state {
|
||||
color: inherit;
|
||||
/* Or specify the desired color */
|
||||
text-decoration: none;
|
||||
/* Or any other style you want to reset */
|
||||
}
|
||||
|
||||
.no-visited-state:visited {
|
||||
color: inherit;
|
||||
/* Or specify the desired color */
|
||||
text-decoration: none;
|
||||
/* Or any other style you want to reset */
|
||||
}
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
@@ -33,7 +33,7 @@
|
||||
%= select_field 'EmailUnknownUser' => $c->get_emailunknownuser_opt(), class => 'input'
|
||||
</span></p>
|
||||
|
||||
<hr class='menubar' />
|
||||
<!--<hr class='menubar' />-->
|
||||
<h2>
|
||||
%=l 'mai_TITLE_DELEGATE'
|
||||
</h2>
|
||||
@@ -47,7 +47,7 @@
|
||||
%= text_field 'DelegateMailServer', class => 'input'
|
||||
</span></p>
|
||||
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
||||
<h2>
|
||||
%=l 'mai_TITLE_SMARTHOST'
|
||||
</h2>
|
||||
@@ -89,4 +89,4 @@
|
||||
% end
|
||||
|
||||
</div>
|
||||
%end
|
||||
%end
|
@@ -92,7 +92,7 @@
|
||||
%= select_field 'uSMTPAuth' => $c->get_smtp_ssl_auth_opt(), class => 'input'
|
||||
</span></p>
|
||||
|
||||
<hr class="sectionbar" />
|
||||
<!--<hr class="sectionbar" />-->
|
||||
<h2>
|
||||
%=l 'mai_TITLE_SECONDARY'
|
||||
</h2>
|
||||
|
@@ -47,9 +47,10 @@
|
||||
</div>
|
||||
|
||||
%= hidden_field 'trt' => 'ACC'
|
||||
% end
|
||||
% end
|
||||
<br>
|
||||
|
||||
<hr class="sectionbar" />
|
||||
<!--<hr class="sectionbar" />-->
|
||||
|
||||
%= form_for 'emailsettings' => (method => 'POST') => begin
|
||||
<p><span class=label>
|
||||
@@ -76,9 +77,10 @@
|
||||
</div>
|
||||
|
||||
%= hidden_field 'trt' => 'FIL'
|
||||
% end
|
||||
% end
|
||||
<br>
|
||||
|
||||
<hr class="sectionbar" />
|
||||
<!--<hr class="sectionbar" />-->
|
||||
|
||||
%= form_for 'emailsettings' => (method => 'POST') => begin
|
||||
<p><span class=label>
|
||||
@@ -118,8 +120,9 @@
|
||||
|
||||
%= hidden_field 'trt' => 'REC'
|
||||
% end
|
||||
<br>
|
||||
|
||||
<hr class="sectionbar" />
|
||||
<!--<hr class="sectionbar" />-->
|
||||
|
||||
%= form_for 'emailsettings' => (method => 'POST') => begin
|
||||
<p><span class=label>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
% content_for 'module' => begin
|
||||
|
||||
<div id="central" class="sme-error">
|
||||
<div id="central" class="sme-error module">
|
||||
<p><br>dev<br> Oups !!!
|
||||
The page you were requesting
|
||||
"<%= $self->req->url->path || '/' %>"
|
||||
@@ -14,4 +14,4 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -8,7 +8,7 @@
|
||||
</p>
|
||||
% }
|
||||
|
||||
<div id='central' class='central initial-panel'>
|
||||
<div id='central' class='central initial-panel module'>
|
||||
|
||||
% if ( stash 'error' ) {
|
||||
<br><div class=sme-error>
|
||||
|
@@ -7,11 +7,18 @@
|
||||
<title><%= $title %></title>
|
||||
<link rel="made" href="mailto:bugs%40koozali.org">
|
||||
<meta name="copyright" content="(head.tmpl)Copyright 2003-2004 Mitel Corporation">
|
||||
%= stylesheet '/css/sme_core.css'
|
||||
%= stylesheet '/css/sme_main.css'
|
||||
%= stylesheet '/css/sme_menu.css'
|
||||
%= stylesheet '/css/styles.css'
|
||||
%= stylesheet '/css/sme-password.css'
|
||||
|
||||
%= stylesheet '/css/new_sme.css'
|
||||
%= stylesheet '/css/new-sme-main.css'
|
||||
|
||||
|
||||
%# Replaced by consolidated (and rationlised) CSS files as above March 2025
|
||||
%#= stylesheet '/css/sme_core.css'
|
||||
%#= stylesheet '/css/sme_main.css'
|
||||
%#= stylesheet '/css/sme_menu.css'
|
||||
%#= stylesheet '/css/styles.css'
|
||||
%#= stylesheet '/css/sme-password.css'
|
||||
|
||||
%= content_for 'head_contrib'
|
||||
% if (config 'hasJquery') {
|
||||
%= include 'partials/_js_imports'
|
||||
@@ -70,7 +77,7 @@
|
||||
%= content 'js_toggleMenu'
|
||||
% }
|
||||
|
||||
<div id="navigation" class="col-md-3">
|
||||
<div id="navigation" class="col-md-3 module">
|
||||
%= include 'partials/_nav_menu'
|
||||
% if ( $c->is_logged_in ) {
|
||||
%= include 'partials/_user_menu'
|
||||
@@ -84,17 +91,17 @@
|
||||
%= include 'partials/_info'
|
||||
|
||||
% if (flash 'success') {
|
||||
<br><div class=success>
|
||||
<br><div class="success module">
|
||||
%= $c->render_to_string(inline => flash 'success')
|
||||
</div>
|
||||
% }
|
||||
% if ( flash 'warning' ) {
|
||||
<br><div class=sme-warning>
|
||||
<br><div class="sme-warning module">
|
||||
%= $c->render_to_string(inline => flash 'warning')
|
||||
</div>
|
||||
%}
|
||||
% if ( flash 'error' ) {
|
||||
<br><div class=sme-error>
|
||||
<br><div class="sme-error module">
|
||||
%= $c->render_to_string(inline => flash 'error')
|
||||
</div>
|
||||
%}
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
% content_for 'module' => begin
|
||||
|
||||
<div id="central" class="sme-error">
|
||||
<div id="central" class="sme-error module">
|
||||
<p><br>dev<br> Oups !!!
|
||||
The page you were requesting
|
||||
"<%= $self->req->url->path || '/' %>"
|
||||
@@ -12,4 +12,4 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -1,5 +1,5 @@
|
||||
% layout 'defaultlight', title => 'Sme server 2 - Error P';
|
||||
<div id='central' class='central not_found-panel'>
|
||||
<div id='central' class='central not_found-panel module'>
|
||||
<p><br><br>
|
||||
The page you were requesting
|
||||
"<%= $self->req->url->path || '/' %>"
|
||||
@@ -7,4 +7,4 @@
|
||||
<br><br>
|
||||
%= link_to Welcome => '/'
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
@@ -85,7 +85,8 @@
|
||||
|
||||
%= form_for '/domains' => (method => 'POST') => begin
|
||||
|
||||
<HR class="sectionbar">
|
||||
<!-- <HR class="sectionbar">-->
|
||||
<br>
|
||||
|
||||
% my $btn2 = l('dom_DOMAINS_PAGE_CORPORATE_DNS');
|
||||
|
||||
@@ -119,4 +120,4 @@
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -1,5 +1,5 @@
|
||||
<div id="footer">
|
||||
<HR class="sme-copyrightbar">
|
||||
<div id="footer" class="module">
|
||||
<!--<HR class="sme-copyrightbar">-->
|
||||
<a href="https://mojolicious.org" target="_blank"><img src="images/sme-mojo-logo-white.png" style="position:relative;"></a>
|
||||
<font class="sme-copyright">
|
||||
% if ( $c->is_logged_in && $c->is_admin) {
|
||||
|
@@ -1,128 +1,12 @@
|
||||
<style>
|
||||
#h2l1 {
|
||||
display: flex; /* Use flexbox layout */
|
||||
justify-content: space-between; /* Space between child elements */
|
||||
align-items: center; /* Center items vertically */
|
||||
}
|
||||
|
||||
#h2e11 {
|
||||
flex: 1; /* Allow the first div to take available space on the left */
|
||||
}
|
||||
|
||||
#h2e12 {
|
||||
display: flex; /* Make this div a flex container */
|
||||
align-items: center; /* Vertically center content in this div */
|
||||
margin-left: 20px; /* Add margin to the left of this div */
|
||||
}
|
||||
|
||||
#flag-container {
|
||||
display: flex; /* Make this div a flex container */
|
||||
align-items: center; /* Vertically center content in this div */
|
||||
margin-left: 20px; /* Add margin to the left of the flag container */
|
||||
padding-right: 20px; /* Add padding to the right side of the flag container */
|
||||
}
|
||||
|
||||
.flag-icon {
|
||||
width: 43px;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
#legacy-button button {
|
||||
background-color: #98d36e; /* Button background color */
|
||||
font-weight: lighter; /* Lighter text for the button */
|
||||
color: #063; /* Button text color */
|
||||
padding: 5px 10px; /* Padding for the button */
|
||||
border: none; /* Remove default button border */
|
||||
border-radius: 4px; /* Rounded corners for button */
|
||||
cursor: pointer; /* Change cursor on hover */
|
||||
}
|
||||
|
||||
#legacy-button button:hover {
|
||||
background-color: #82c961; /* Change color on hover */
|
||||
}
|
||||
|
||||
.infobar {
|
||||
display: flex; /* Use flexbox for alignment */
|
||||
justify-content: space-between; /* Space between child elements */
|
||||
align-items: center; /* Center items vertically */
|
||||
padding: 10px; /* Adjust padding as desired */
|
||||
}
|
||||
|
||||
#h2e21 {
|
||||
flex: 1; /* Allow the first div to take available space on the left */
|
||||
}
|
||||
|
||||
#h2e22 {
|
||||
display: flex; /* Make this div a flex container */
|
||||
justify-content: center; /* Center the help button */
|
||||
align-items: center; /* Center vertically */
|
||||
flex: none; /* Prevent this div from growing */
|
||||
position: relative; /* Relative position for centering */
|
||||
width: 100px; /* Set a width for the help button container */
|
||||
}
|
||||
|
||||
#h2e23 {
|
||||
margin-left: auto; /* Push the third div to the right */
|
||||
}
|
||||
|
||||
.login-button {
|
||||
background-color: #98d36e; /* Button background color */
|
||||
font-weight: bold; /* Bold text */
|
||||
color: #ffffff; /* Button text color */
|
||||
padding: 8px 12px; /* Adjust padding for button height */
|
||||
border: none; /* Remove default border */
|
||||
border-radius: 4px; /* Rounded corners */
|
||||
cursor: pointer; /* Change cursor on hover */
|
||||
}
|
||||
|
||||
.login-button:hover {
|
||||
background-color: #82c961; /* Change color on hover */
|
||||
}
|
||||
|
||||
#help-button {
|
||||
text-decoration: none; /* Remove underline from link */
|
||||
font-size: 20px; /* Adjust font size as needed */
|
||||
padding: 8px 12px; /* Add padding to the help link */
|
||||
background-color: #98d36e; /* Background for visibility */
|
||||
border-radius: 4px; /* Rounded corners */
|
||||
color: #000; /* Button text color */
|
||||
}
|
||||
|
||||
#help-button:hover {
|
||||
background-color: #82c961; /* Change background on hover */
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="header2" class="hd2">
|
||||
<div id="h2l1">
|
||||
<div id="h2e11">
|
||||
<a target='_blank' href="http://www.koozali.org"><img src="images/smeserver_logo.jpg" height="40" alt="SME Server"></a>
|
||||
</div>
|
||||
|
||||
<div id="h2e22">
|
||||
<button type='button'class="login-button"><a id="help-button" target="_parent" href="manual">?</a></button>
|
||||
</div>
|
||||
|
||||
<div id="h2e12">
|
||||
<button type='button' class="login-button"><a id="legacy-button" href="/server-manager" target='_blank'>Legacy SM</a></button>
|
||||
</div>
|
||||
<div id="h2e23">
|
||||
% if ( not defined $c->session->{username} ) {
|
||||
<button type='button' class="login-button"><a target="_parent" href="login">Login</a></button>
|
||||
% } else {
|
||||
<button type='button' class="login-button"><a target="_parent" href="logout"><%= $c->session->{username} %> Logout</a></button>
|
||||
% }
|
||||
</div>
|
||||
<div id="flag-container">
|
||||
<!-- The flag icon will be inserted here -->
|
||||
</div>
|
||||
</div>
|
||||
<div id="h2l2" class="infobar">
|
||||
<div id="h2e21">
|
||||
<b>
|
||||
<%= session 'SystemName' %>@<%= session 'DomainName' %></b>
|
||||
</div>
|
||||
|
||||
|
||||
<div id="header2" class="hd2 module gradient-panel">
|
||||
<img src="images/KoozaliServerManager.png" alt="Koozali Logo" class="logo" >
|
||||
% if ( not defined $c->session->{username} ) {
|
||||
<button type='button' class="login-button"><a class = "no-visited-state" target="_parent" href="login">Login</a></button>
|
||||
% } else {
|
||||
<button type='button' class="login-button"><a class = "no-visited-state" target="_parent" href="logout">Logout <%= $c->session->{username} %></a></button>
|
||||
% }
|
||||
<div id="flag-container" class = "flag-style">
|
||||
<!-- The flag icon will be inserted here -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
@@ -1,16 +1,16 @@
|
||||
<% use POSIX qw(strftime); %>
|
||||
<div id="info">
|
||||
<% if (! $c->session->{PwdSet} ) { %>
|
||||
<div class="sme-error"><h5>
|
||||
<div class="sme-error module"><h5>
|
||||
Warning: you have not yet changed the default system password.</h5></div>
|
||||
<% } %>
|
||||
<% if ( $c->is_unsafe ) { %>
|
||||
<div class="sme-error"><h5>
|
||||
<div class="sme-error module"><h5>
|
||||
Warning: a reconfigure and reboot is required before proceeding! Failure to do so now
|
||||
may leave your system in an unknown state!</h5></div>
|
||||
<% } %>
|
||||
<% if ( $c->session->{Access} eq 'public' && ((config->{debug} ne '0') || (config->{mode} ne 'production')) ) { %>
|
||||
<div class="sme-error"><h5>
|
||||
<div class="sme-error module"><h5>
|
||||
Warning: Development or debug mode enabled AND public access is offered !
|
||||
</h5></div>
|
||||
<% } %>
|
||||
|
@@ -4,7 +4,7 @@
|
||||
% my %ret;
|
||||
% unless (length($retref)) {%ret = (ret=>"");}
|
||||
% else {%ret = %$retref;}
|
||||
|
||||
|
||||
% my @vars = split(",",$ret{vars});
|
||||
% my $var1 = @vars[0];
|
||||
% my $var2 = @vars[1];
|
||||
@@ -13,30 +13,31 @@
|
||||
% my $var5 = @vars[4];
|
||||
% my $var6 = @vars[5];
|
||||
|
||||
<br>
|
||||
%if ($ret{'ret'} eq "") {
|
||||
|
||||
|
||||
%} elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<div class='success'>
|
||||
<h2> Operation Status Report</h2>
|
||||
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
|
||||
<!--<h2> Operation Status Report</h2>-->
|
||||
%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6));
|
||||
</div>
|
||||
%} else {
|
||||
%} else {
|
||||
<div class='sme-error'>
|
||||
<h2> Operation Status Report - Error</h2>
|
||||
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
|
||||
<!--<h2> Operation Status Report - Error</h2>-->
|
||||
%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6));
|
||||
</div>
|
||||
%}
|
||||
<br />
|
||||
% my $btn = l('ADD');
|
||||
% my $network_db = esmith::NetworksDB->open();
|
||||
|
||||
% my $network_db = esmith::NetworksDB::UTF8->open() || die "Couldn't open NetworksDB db";
|
||||
|
||||
% if (config->{debug} == 1) {
|
||||
<p>
|
||||
%= dumper $c->current_route
|
||||
%= dumper $c->stash("ret")
|
||||
</p>
|
||||
% }
|
||||
|
||||
|
||||
%= form_for '/localnetworksb' => (method => 'POST') => begin
|
||||
<h2>
|
||||
%=l "ln_ADD_TITLE"
|
||||
@@ -66,5 +67,4 @@
|
||||
</p>
|
||||
%end
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
@@ -26,13 +26,15 @@
|
||||
%if ($ret{ret} eq "") {
|
||||
%=l "ln_FIRSTPAGE_DESC"
|
||||
%} elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<br>
|
||||
<div class='success'>
|
||||
<h2> Operation Status Report</h2>
|
||||
<!--<h2> Operation Status Report</h2>-->
|
||||
%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7));
|
||||
</div>
|
||||
%} else {
|
||||
<br>
|
||||
<div class='sme-error'>
|
||||
<h2> Operation Status Report - Error</h2>
|
||||
<!--<h2> Operation Status Report - Error</h2>-->
|
||||
%= $c->render_to_string(inline => l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6,$var7));
|
||||
</div>
|
||||
%}
|
||||
@@ -103,4 +105,4 @@
|
||||
</table>
|
||||
%= hidden_field 'trt' => $ln_datas->{trt}
|
||||
%}
|
||||
</div>
|
||||
</div>
|
@@ -13,16 +13,17 @@
|
||||
% my $var5 = @vars[4];
|
||||
% my $var6 = @vars[5];
|
||||
|
||||
<br>
|
||||
%if ($ret{'ret'} eq "") {
|
||||
|
||||
%} elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<div class='success'>
|
||||
<h2> Operation Status Report</h2>
|
||||
<!--<h2> Operation Status Report</h2>-->
|
||||
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
|
||||
</div>
|
||||
%} else {
|
||||
<div class='sme-error'>
|
||||
<h2> Operation Status Report - Error</h2>
|
||||
<!--<h2> Operation Status Report - Error</h2>-->
|
||||
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
|
||||
</div>
|
||||
%}
|
||||
@@ -84,4 +85,4 @@
|
||||
|
||||
%end
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -21,13 +21,15 @@
|
||||
%if ($ret{ret} eq "") {
|
||||
%= $c->render_to_string(inline => l('pf_FIRST_PAGE_DESCRIPTION'));
|
||||
%} elsif (index($ret{ret},"SUCCESS") != -1) {
|
||||
<br>
|
||||
<div class='success'>
|
||||
<h2> Operation Status Report</h2>
|
||||
<!--<h2> Operation Status Report</h2>-->
|
||||
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
|
||||
</div>
|
||||
%} else {
|
||||
<br>
|
||||
<div class='sme-error'>
|
||||
<h2> Operation Status Report - Error</h2>
|
||||
<!--<h2> Operation Status Report - Error</h2>-->
|
||||
%= $c->l($ret{ret},$var1,$var2,$var3,$var4,$var5,$var6);
|
||||
</div>
|
||||
%}
|
||||
@@ -113,4 +115,4 @@
|
||||
</table>
|
||||
%= hidden_field 'trt' => $pf_datas->{trt}
|
||||
|
||||
</div>
|
||||
</div>
|
@@ -11,4 +11,4 @@
|
||||
</span>
|
||||
</p>
|
||||
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
@@ -1,5 +1,7 @@
|
||||
% use SrvMngr qw( getNavigation );
|
||||
% my %nav = %{SrvMngr->getNavigation( $c->languages(), 'U' )};
|
||||
% use SrvMngr qw( getNavigation simpleNavMerge );
|
||||
% my %nav1 = %{SrvMngr->getNavigation( $c->languages(), 'U' )};
|
||||
% my %nav2 = %{SrvMngr->getNavigation( $c->languages(), 'A', session('username') )};
|
||||
% my %nav = $c->session->{is_admin} ? %nav1 : %{SrvMngr->simpleNavMerge(\%nav1, \%nav2)};
|
||||
|
||||
<div id='usermenu'>
|
||||
<a href='#' id='toguser' class='section section-title'>Current User (<%= session 'username' %>)</a>
|
||||
@@ -7,26 +9,24 @@
|
||||
% my $cc = 300;
|
||||
% foreach my $h (sort { ($nav{$a}{'WEIGHT'}/$nav{$a}{'COUNT'})
|
||||
% <=> ($nav{$b}{'WEIGHT'}/$nav{$b}{'COUNT'}) } keys %nav) {
|
||||
<!-- div class='section'><%= $h %></div -->
|
||||
% my ($classNew, $target, $href) = '';
|
||||
% foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav{$h}{'DESCRIPTIONS'}}) {
|
||||
|
||||
% next if ($_->{'MENUCAT'} ne 'U' ); # menu User
|
||||
|
||||
% if ( $_->{'FILENAME'} =~ m/^2\// ) {
|
||||
% $target = '_self';
|
||||
% (my $file2 = $_->{'FILENAME'}) =~ s|^2/||;
|
||||
% $href = '/smanager/' . $file2;
|
||||
% } else {
|
||||
% $target = 'main';
|
||||
% $href = '/server-manager' . $_->{'FILENAME'};
|
||||
% }
|
||||
<div class='menu-cell'><a class='item<%= $classNew %>' target='<%= $target %>'
|
||||
id='sme<%= $cc %>' href='<%= $href %>'><%= $_->{'DESCRIPTION'} %></a></div>
|
||||
<!-- div class='section'><%= $h %></div -->
|
||||
% my ($classNew, $target, $href) = '';
|
||||
% foreach (sort { $a->{'WEIGHT'} <=> $b->{'WEIGHT'} } @{$nav{$h}{'DESCRIPTIONS'}}) {
|
||||
% next if ($_->{'MENUCAT'} ne 'A' && $_->{'MENUCAT'} ne 'U' ); # menu User
|
||||
% if ( $_->{'FILENAME'} =~ m/^2\// ) {
|
||||
% $target = '_self';
|
||||
% (my $file2 = $_->{'FILENAME'}) =~ s|^2/||;
|
||||
% $href = '/smanager/' . $file2;
|
||||
% } else {
|
||||
% $target = 'main';
|
||||
% $href = '/server-manager' . $_->{'FILENAME'};
|
||||
% }
|
||||
<div class='menu-cell'><a class='item<%= $classNew %>' target='<%= $target %>'
|
||||
id='sme<%= $cc %>' href='<%= $href %>'><%= $_->{'DESCRIPTION'} %></a></div>
|
||||
% $cc++;
|
||||
% }
|
||||
% }
|
||||
|
||||
% }
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -17,7 +17,7 @@
|
||||
</span>
|
||||
%}
|
||||
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
||||
|
||||
<% my $btn = l('SAVE'); %>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
</span>
|
||||
<br><br>
|
||||
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
||||
|
||||
%}
|
||||
|
||||
@@ -85,7 +85,7 @@
|
||||
%= t td => (class => 'sme-border') => $net
|
||||
%= t td => (class => 'sme-border') => $mask
|
||||
%= t td => (class => 'sme-border') => $numhosts
|
||||
<td class='sme-border'><input type='checkbox' name='Remote_nets' value='<%= $net.'/'.$mask %>'> </td>
|
||||
<td class='sme-border'><input type='checkbox' name='Remove_nets' value='<%= $net.'/'.$mask %>'> </td>
|
||||
</tr>
|
||||
% }
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
%= text_field 'ValidFromMask', class => 'input'
|
||||
</span>
|
||||
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
||||
|
||||
<h2>
|
||||
%=l 'rma_TITLE_SSH'
|
||||
@@ -154,7 +154,7 @@
|
||||
</span>
|
||||
<br>
|
||||
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
||||
|
||||
<h2>
|
||||
%=l 'rma_TITLE_FTP_ACCESS'
|
||||
@@ -183,7 +183,7 @@
|
||||
|
||||
% my $mode = $c->get_telnet_mode();
|
||||
% if ( $mode ne 'off') {
|
||||
<hr class='sectionbar' />
|
||||
<!--<hr class='sectionbar' />-->
|
||||
|
||||
<h2>
|
||||
%=l 'rma_TITLE_TELNET_ACCESS'
|
||||
|
@@ -1,7 +1,7 @@
|
||||
% layout 'default', title => 'Sme server 2 - Review';
|
||||
|
||||
% content_for 'module' => begin
|
||||
<div id='central' class='central review-panel'>
|
||||
<div id='central' class='central review-panel module'>
|
||||
<h1> <%= $title %> </h1>
|
||||
<%= $modul %><br><br>
|
||||
|
||||
@@ -134,4 +134,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -3,7 +3,7 @@
|
||||
% content_for 'module' => begin
|
||||
|
||||
|
||||
<div id='roundcube' class='roundcube roundcube-panel'>
|
||||
<div id='roundcube' class='roundcube roundcube-panel module'>
|
||||
% if (config->{debug} == 1) {
|
||||
<p>
|
||||
%= dumper $c->current_route
|
||||
@@ -37,4 +37,4 @@
|
||||
</div>
|
||||
|
||||
|
||||
%end
|
||||
%end
|
@@ -1,7 +1,7 @@
|
||||
% layout 'default', title => 'Sme server 2 - IndexT';
|
||||
|
||||
% content_for 'module' => begin
|
||||
<div id='central' class='central welcome-panel'>
|
||||
<div id='central' class='central welcome-panel module'>
|
||||
<p>Index on line - Welcome page<br>
|
||||
</p>
|
||||
<p>
|
||||
|
@@ -2,7 +2,7 @@
|
||||
|
||||
% content_for 'module' => begin
|
||||
|
||||
<div id="central" class="sme-error">
|
||||
<div id="central " class="sme-error module">
|
||||
<p><br>dev<br> What else !!!
|
||||
The page you were requesting
|
||||
"<%= $self->req->url->path || '/' %>"
|
||||
@@ -14,4 +14,4 @@
|
||||
</p>
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -55,7 +55,7 @@
|
||||
% end
|
||||
%}
|
||||
|
||||
<br><hr class=sectionbar /><br>
|
||||
<!--<br><hr class=sectionbar /><br>-->
|
||||
|
||||
%= form_for 'yum' => (method => 'POST') => begin
|
||||
|
||||
@@ -97,4 +97,4 @@
|
||||
|
||||
</div>
|
||||
|
||||
% end
|
||||
% end
|
@@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2
|
||||
%define name smeserver-manager
|
||||
Name: %{name}
|
||||
%define version 11.0.0
|
||||
%define release 69
|
||||
%define release 85
|
||||
Version: %{version}
|
||||
Release: %{release}%{?dist}
|
||||
License: GPL
|
||||
@@ -22,8 +22,9 @@ BuildRequires: smeserver-devtools
|
||||
#BuildRequires: perl(Net::Netmask) >= 1.9
|
||||
#</Build tests>
|
||||
|
||||
Requires: smeserver-lib >= 1.18.0-26
|
||||
Requires: smeserver-manager >= 2.4.0-22
|
||||
Requires: smeserver-lib >= 11.0.0-13
|
||||
# old manager is needed to handle access (ValidFrom)
|
||||
Requires: e-smith-manager >= 2.4.0-22
|
||||
Requires: smeserver-apache >= 2.6.0-19
|
||||
Requires: smeserver-php >= 3.0.0-43
|
||||
#Requires: smeserver-manager-locale >= 11.0.0
|
||||
@@ -37,7 +38,6 @@ Requires: perl(Mojo::JWT) >= 0.08-1
|
||||
#Requires: perl(Time::TAI64) >= 2.11
|
||||
Requires: mutt >= 1.5.21
|
||||
Requires: smeserver-manager-jsquery >= 1.0
|
||||
Requires: smeserver-lib >= 11.0
|
||||
Requires: smeserver-certificates >= 11.0
|
||||
#Requires: js-jquery > 2.2.4-3 (optional)
|
||||
|
||||
@@ -130,7 +130,7 @@ true
|
||||
%post
|
||||
if [ -f /usr/share/javascript/jquery/latest/jquery.min.js ]
|
||||
then
|
||||
[ -d %{dir_mngr}/themes/default/public/js ] ||
|
||||
[ -d %{dir_mngr}/themes/default/public/js ] ||
|
||||
mkdir %{dir_mngr}/themes/default/public/js
|
||||
[ -h %{dir_mngr}/themes/default/public/js/jquery.min.js ] ||
|
||||
ln -s /usr/share/javascript/jquery/latest/jquery.min.js %{dir_mngr}/themes/default/public/js/jquery.min.js
|
||||
@@ -143,13 +143,75 @@ true
|
||||
%defattr(-,root,root)
|
||||
|
||||
%changelog
|
||||
* Mon Jun 09 2025 John Crisp <jcrisp@safeandsoundit.co.uk> 11.0.0-85.sme
|
||||
- fix ln_add templates for UTF8
|
||||
- remove extraneous require line in spec file
|
||||
|
||||
* Mon Jun 09 2025 Jean-Philippe Pialasse <jpp@koozali.org> 11.0.0-84.sme
|
||||
- fix Directory caching issue [SME: 13026]
|
||||
- WIP use esmith::*DB::UTF8 to access db flat files [SME: 13027]
|
||||
|
||||
* Mon May 05 2025 Brian Read <brianr@koozali.org> 11.0.0-83.sme
|
||||
- Mod to SrvMngr-Auth to account for partials matching AdminPanels options
|
||||
|
||||
* Thu May 01 2025 Brian Read <brianr@koozali.org> 11.0.0-82.sme
|
||||
- Correct Weights for menus [SME: 12996]
|
||||
|
||||
* Wed Apr 30 2025 Brian Read <brianr@koozali.org> 11.0.0-80.sme
|
||||
- Remove expansion of css files from createlinks [SME: 12989]
|
||||
|
||||
* Wed Apr 30 2025 Brian Read <brianr@koozali.org> 11.0.0-79.sme
|
||||
- Add code in SrvMngr to take note of user panel setting
|
||||
|
||||
* Thu Apr 17 2025 Brian Read <brianr@koozali.org> 11.0.0-78.sme
|
||||
- typo in remoteaccess panel
|
||||
- Fix crash in veiwlogfiles if viewlogfiles key not in DB
|
||||
|
||||
* Sat Apr 12 2025 Brian Read <brianr@koozali.org> 11.0.0-77.sme
|
||||
- Sort out local and pulic access setting in remote panel [SME: 12988]
|
||||
- caching problem, plus confusion between normal and public setting in sshd / access in DB
|
||||
|
||||
* Fri Apr 11 2025 Brian Read <brianr@koozali.org> 11.0.0-76.sme
|
||||
- Restore css for roundcube embedded [SME: 12987]
|
||||
|
||||
* Wed Apr 09 2025 Brian Read <brianr@koozali.org> 11.0.0-75.sme
|
||||
- Move review configuration to behind login [SME: 12984]
|
||||
- Fix crash in port forwarding [SME: 12985]
|
||||
|
||||
* Wed Mar 26 2025 Brian Read <brianr@koozali.org> 11.0.0-74.sme
|
||||
- Fix error message and success message format in Local Networking panel [SME: 12969]
|
||||
|
||||
* Tue Mar 25 2025 Brian Read <brianr@koozali.org> 11.0.0-73.sme
|
||||
- Some changes to error message format in css.
|
||||
- Fix DB Cache problem with port forwarding panel [SME: 12970]
|
||||
- Fix error and success message display for port forwarding panel [SME: 12969]
|
||||
|
||||
* Mon Mar 24 2025 Brian Read <brianr@koozali.org> 11.0.0-72.sme
|
||||
- Remove css files from template structure [SME: 12967]
|
||||
- Rationalise and merge css files
|
||||
- Adjust some gaps around panels
|
||||
- Remove HR lines
|
||||
|
||||
* Thu Mar 20 2025 Brian Read <brianr@koozali.org> 11.0.0-71.sme
|
||||
- Sort out navigation menu error on startup [SME: 12946]
|
||||
- More places where floating panel needed
|
||||
- Adjust floating panel to make space around it the same
|
||||
- clean up some css
|
||||
|
||||
* Wed Mar 19 2025 Brian Read <brianr@koozali.org> 11.0.0-70.sme
|
||||
- Re-cast the default theme - use proper koozali logo image, unwind multiple divs
|
||||
- Enhance responsiveness
|
||||
- Revert Ibay menu name to Ibays
|
||||
- Remove legacy SM1 button on header
|
||||
- Remove "?" access to wiki help on header
|
||||
|
||||
* Mon Mar 17 2025 Brian Read <brianr@koozali.org> 11.0.0-69.sme
|
||||
- Add a total summary report across all existing logs [SME: 12951]
|
||||
|
||||
* Mon Mar 17 2025 Brian Read <brianr@koozali.org> 11.0.0-68.sme
|
||||
- re-write qmailanalog for postfix [SME: 12951]
|
||||
- Clean up backup.pm
|
||||
- Enhance module panel - used by mail log analysis and Licence display
|
||||
- Clean up backup.pm
|
||||
- Enhance module panel - used by mail log analysis and Licence display
|
||||
|
||||
* Tue Mar 11 2025 Brian Read <brianr@koozali.org> 11.0.0-66.sme
|
||||
- Move the button for each backup panel to the left to conform to all the other panels.
|
||||
@@ -205,7 +267,7 @@ true
|
||||
|
||||
* Sun Feb 09 2025 Brian Read <brianr@koozali.org> 11.0.0-50.sme
|
||||
- Move all routines from FormMagic still called by SM2 panels to SM2 [SME: 12906]
|
||||
- delete all references to FormMagic
|
||||
- delete all references to FormMagic
|
||||
|
||||
* Fri Feb 07 2025 Brian Read <brianr@koozali.org> 11.0.0-49.sme
|
||||
- Fix delete of ibay - typo in link
|
||||
@@ -217,7 +279,7 @@ true
|
||||
|
||||
* Tue Jan 28 2025 Brian Read <brianr@koozali.org> 11.0.0-47.sme
|
||||
- Temp (we hope) remove CSRF protection plugin [SME: ]
|
||||
- Fix comparison in footer with config->mode
|
||||
- Fix comparison in footer with config->mode
|
||||
|
||||
* Tue Jan 28 2025 Brian Read <brianr@koozali.org> 11.0.0-46.sme
|
||||
- Adjust conditions for showing "Reconfigure required" to only check UnSavedChanges DB entry [SME: 12891]
|
||||
@@ -275,7 +337,7 @@ true
|
||||
|
||||
* Wed Dec 18 2024 Brian Read <brianr@koozali.org> 11.0.0-32.sme
|
||||
- Fix for User and localnetwork panel [SME: 6278]
|
||||
- Fix menu entry for proxy to stop it moving
|
||||
- Fix menu entry for proxy to stop it moving
|
||||
|
||||
* Tue Dec 17 2024 Brian Read <brianr@koozali.org> 11.0.0-31.sme
|
||||
- Edit html to avoid w3c html validation warnings [SME: 6278]
|
||||
@@ -327,7 +389,7 @@ true
|
||||
|
||||
* Wed Aug 21 2024 Brian Read <brianr@koozali.org> 11.0.0-16.sme
|
||||
- Typo uc DNF changed to lc dnf in Yum.pm [SME: 127245]
|
||||
- Monitor dnf running using dnf status file
|
||||
- Monitor dnf running using dnf status file
|
||||
|
||||
* Wed Aug 21 2024 Brian Read <brianr@koozali.org> 11.0.0-15.sme
|
||||
- Migrate SM2 Software installer panel from use of yum to dnf [SME: 12718]
|
||||
@@ -458,7 +520,7 @@ true
|
||||
- untainting printer [SME: 12110]
|
||||
|
||||
* Fri Jan 21 2022 Michel Begue <mab974@misouk.com> 0.1.4-14.sme
|
||||
- Fix jquery map link missing
|
||||
- Fix jquery map link missing
|
||||
- Fix jquery link deleted during update
|
||||
- Remove generated file during remove
|
||||
|
||||
@@ -495,7 +557,7 @@ true
|
||||
* Mon Nov 15 2021 Michel Begue <mab974@misouk.com> 0.1.4-3.sme
|
||||
- Fix error message when linking, unlinking jquery in spec
|
||||
- Correct the 'review' panel presentation
|
||||
- Modify CSRFDefender plugin to take into account GET method
|
||||
- Modify CSRFDefender plugin to take into account GET method
|
||||
- Add TOKEN param where the GET method is used in templates
|
||||
- Remove smanager from local url address
|
||||
|
||||
@@ -730,7 +792,7 @@ true
|
||||
* Sun Feb 04 2018 Jean-Philipe Pialasse <tests@pialasse.com> 0.1.0-1.sme
|
||||
- first smeserver-manager package [SME: 10506]
|
||||
this is a sandbox to dev the next server-manager based on mojolicious
|
||||
this package is based on part of the old e-smith-manager and needs it
|
||||
this package is based on part of the old e-smith-manager and needs it
|
||||
to work until we moved the httpd-admin part.
|
||||
|
||||
* Sun Apr 16 2017 Jean-Philipe Pialasse <tests@pialasse.com> 2.8.0-26.sme
|
||||
@@ -762,7 +824,7 @@ true
|
||||
|
||||
* Tue Jul 19 2016 Jean-Philipe Pialasse <tests@pialasse.com> 2.8.0-12.sme
|
||||
- Update server-manager to Koozali branding [SME: 9676]
|
||||
- We thanks John Crisp for his wonderful work.
|
||||
- We thanks John Crisp for his wonderful work.
|
||||
|
||||
* Wed Jun 15 2016 Jean-Philipe Pialasse <tests@pialasse.com> 2.8.0-11.sme
|
||||
- change link for donation to koozali.org [SME: 9599]
|
||||
@@ -814,7 +876,7 @@ true
|
||||
[SME: 9163]
|
||||
|
||||
* Sun Mar 23 2014 Ian Wells <esmith@wellsi.com> 2.6.0-1.sme
|
||||
- Roll new stream to remove obsolete images [SME: 7962]
|
||||
- Roll new stream to remove obsolete images [SME: 7962]
|
||||
|
||||
* Sun Mar 23 2014 Ian Wells <esmith@wellsi.com> 2.4.0-9.sme
|
||||
- Remove references to obsolete images, by Stephane de Labrusse [SME: 7962]
|
||||
@@ -852,10 +914,10 @@ true
|
||||
* Wed Dec 9 2009 Charlie Brady <charlieb@budge.apana.org.au> 2.2.0-4.sme
|
||||
- Fix css validation errors. [SME: 5656]
|
||||
|
||||
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-4.sme
|
||||
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-4.sme
|
||||
- display reconfigure warning once if UnsavedChanges=yes [SME: 5475]
|
||||
|
||||
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-3.sme
|
||||
* Fri Sep 18 2009 Stephen Noble <support@dungog.net> 2.2.0-3.sme
|
||||
- display reconfigure warning if UnsavedChanges=yes [SME: 5475]
|
||||
|
||||
* Sun Apr 26 2009 Jonathan Martens <smeserver-contribs@snetram.nl> 2.2.0-2.sme
|
||||
@@ -896,13 +958,13 @@ true
|
||||
- Fix UTF-8 encoding in header and nav-conf [SME: 4072]
|
||||
|
||||
* Tue Jan 08 2008 Stephen Noble <support@dungog.net> 1.14.0-11
|
||||
- Fix to remove spaces and newlines in panel headers [SME: 3346]
|
||||
- Fix to remove spaces and newlines in panel headers [SME: 3346]
|
||||
|
||||
* Tue Jan 08 2008 Stephen Noble <support@dungog.net> 1.14.0-10
|
||||
- remove the FormMagick session files [SME: 3723]
|
||||
|
||||
* Tue Jan 08 2008 Stephen Noble <support@dungog.net> 1.14.0-9
|
||||
- Remove spaces and newlines in panel headers [SME: 3346]
|
||||
- Remove spaces and newlines in panel headers [SME: 3346]
|
||||
|
||||
* Sun Jul 01 2007 Shad L. Lords <slords@mail.com> 1.14.0-8
|
||||
- Make login/logout no quite so verbose. [SME: 2660]
|
||||
@@ -1195,10 +1257,10 @@ true
|
||||
|
||||
* Wed Jan 1 2003 Gordon Rowell <gordonr@e-smith.com>
|
||||
- [1.9.3-08]
|
||||
- Generate navigation.info files (config db format) for each supported
|
||||
- Generate navigation.info files (config db format) for each supported
|
||||
language in /etc/e-smith/locale/{language}/etc/e-smith/web/functions
|
||||
- Read the navigation.info file for the preferred language when
|
||||
displaying the navigation bar
|
||||
- Read the navigation.info file for the preferred language when
|
||||
displaying the navigation bar
|
||||
- TODO: Actually select the correct navigation.info file [gordonr 5493]
|
||||
|
||||
* Tue Dec 31 2002 Gordon Rowell <gordonr@e-smith.com>
|
||||
@@ -1239,7 +1301,7 @@ true
|
||||
* Fri Nov 22 2002 Gordon Rowell <gordonr@e-smith.com>
|
||||
- [1.9.1-02]
|
||||
- templated header.htm [miked 5826]
|
||||
- modified header.htm template to link to online-manual and blades
|
||||
- modified header.htm template to link to online-manual and blades
|
||||
[gordonr 5826]
|
||||
|
||||
* Thu Nov 21 2002 Mike Dickson <miked@e-smith.com>
|
||||
@@ -1286,7 +1348,7 @@ true
|
||||
* Thu May 16 2002 Tony Clayton <apc@e-smith.com>
|
||||
- [1.5.8-01]
|
||||
- Remove unnecessary <p> tags in navigation html [tonyc 3377]
|
||||
- Fix navigation panel to not import symbols from fm subclasses
|
||||
- Fix navigation panel to not import symbols from fm subclasses
|
||||
[tonyc 3109]
|
||||
|
||||
* Mon May 13 2002 Tony Clayton <apc@e-smith.com>
|
||||
@@ -1331,7 +1393,7 @@ true
|
||||
|
||||
* Thu Mar 14 2002 Gordon Rowell <gordonr@e-smith.com>
|
||||
- [1.4.3-01]
|
||||
- Fixed regexp for ignoring pleasewait(-.*?). Two each in
|
||||
- Fixed regexp for ignoring pleasewait(-.*?). Two each in
|
||||
pleasewait/noframes. Reduced to one in each [gordonr]
|
||||
|
||||
* Fri Mar 1 2002 Tony Clayton <tonyc@e-smith.com>
|
||||
@@ -1364,7 +1426,7 @@ true
|
||||
|
||||
* Wed Nov 21 2001 Charlie Brady <charlieb@e-smith.com>
|
||||
- [1.3.0-06]
|
||||
- Remove troublesome "Requires: e-smith-base".
|
||||
- Remove troublesome "Requires: e-smith-base".
|
||||
- Remove obsolete "Requires: e-smith".
|
||||
|
||||
* Thu Nov 1 2001 Gordon Rowell <gordonr@e-smith.com>
|
||||
@@ -1403,7 +1465,7 @@ true
|
||||
* Tue Jul 31 2001 Adrian Chung <adrianc@e-smith.com>
|
||||
- [1.1.0-03]
|
||||
- Adding SSL enabling templates for port 981.
|
||||
- Adding 01localAccessString fragment for use in SSL
|
||||
- Adding 01localAccessString fragment for use in SSL
|
||||
enabling templates.
|
||||
|
||||
* Fri Jul 27 2001 Charlie Brady <charlieb@e-smith.com>
|
||||
|
Reference in New Issue
Block a user