initial commit of file from CVS for smeserver-nag on Sat Sep 7 20:45:20 AEST 2024
This commit is contained in:
parent
92c36e6425
commit
c74b9035ea
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
*.rpm
|
||||||
|
*.log
|
||||||
|
*spec-20*
|
||||||
|
*.tar.gz
|
21
Makefile
Normal file
21
Makefile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Makefile for source rpm: smeserver-nag
|
||||||
|
# $Id: Makefile,v 1.1 2020/12/20 04:59:49 brianr Exp $
|
||||||
|
NAME := smeserver-nag
|
||||||
|
SPECFILE = $(firstword $(wildcard *.spec))
|
||||||
|
|
||||||
|
define find-makefile-common
|
||||||
|
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||||
|
endef
|
||||||
|
|
||||||
|
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||||
|
|
||||||
|
ifeq ($(MAKEFILE_COMMON),)
|
||||||
|
# attept a checkout
|
||||||
|
define checkout-makefile-common
|
||||||
|
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||||
|
endef
|
||||||
|
|
||||||
|
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(MAKEFILE_COMMON)
|
16
README.md
16
README.md
@ -1,3 +1,15 @@
|
|||||||
# smeserver-nag
|
# <img src="https://www.koozali.org/images/koozali/Logo/Png/Koozali_logo_2016.png" width="25%" vertical="auto" style="vertical-align:bottom"> smeserver-nag
|
||||||
|
|
||||||
SMEServer Koozali developed git repo for smeserver-nag smecontribs
|
SMEServer Koozali developed git repo for smeserver-nag smecontribs
|
||||||
|
|
||||||
|
## Wiki
|
||||||
|
<br />https://wiki.koozali.org/
|
||||||
|
|
||||||
|
## Bugzilla
|
||||||
|
Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-nag&product=SME%20Contribs&query_format=advanced&limit=0&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=CONFIRMED)
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
<br />*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.*
|
||||||
|
*Once it has been checked, then this comment will be deleted*
|
||||||
|
<br />
|
||||||
|
340
additional/COPYING
Normal file
340
additional/COPYING
Normal file
@ -0,0 +1,340 @@
|
|||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
Version 2, June 1991
|
||||||
|
|
||||||
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||||
|
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
|
Everyone is permitted to copy and distribute verbatim copies
|
||||||
|
of this license document, but changing it is not allowed.
|
||||||
|
|
||||||
|
Preamble
|
||||||
|
|
||||||
|
The licenses for most software are designed to take away your
|
||||||
|
freedom to share and change it. By contrast, the GNU General Public
|
||||||
|
License is intended to guarantee your freedom to share and change free
|
||||||
|
software--to make sure the software is free for all its users. This
|
||||||
|
General Public License applies to most of the Free Software
|
||||||
|
Foundation's software and to any other program whose authors commit to
|
||||||
|
using it. (Some other Free Software Foundation software is covered by
|
||||||
|
the GNU Library General Public License instead.) You can apply it to
|
||||||
|
your programs, too.
|
||||||
|
|
||||||
|
When we speak of free software, we are referring to freedom, not
|
||||||
|
price. Our General Public Licenses are designed to make sure that you
|
||||||
|
have the freedom to distribute copies of free software (and charge for
|
||||||
|
this service if you wish), that you receive source code or can get it
|
||||||
|
if you want it, that you can change the software or use pieces of it
|
||||||
|
in new free programs; and that you know you can do these things.
|
||||||
|
|
||||||
|
To protect your rights, we need to make restrictions that forbid
|
||||||
|
anyone to deny you these rights or to ask you to surrender the rights.
|
||||||
|
These restrictions translate to certain responsibilities for you if you
|
||||||
|
distribute copies of the software, or if you modify it.
|
||||||
|
|
||||||
|
For example, if you distribute copies of such a program, whether
|
||||||
|
gratis or for a fee, you must give the recipients all the rights that
|
||||||
|
you have. You must make sure that they, too, receive or can get the
|
||||||
|
source code. And you must show them these terms so they know their
|
||||||
|
rights.
|
||||||
|
|
||||||
|
We protect your rights with two steps: (1) copyright the software, and
|
||||||
|
(2) offer you this license which gives you legal permission to copy,
|
||||||
|
distribute and/or modify the software.
|
||||||
|
|
||||||
|
Also, for each author's protection and ours, we want to make certain
|
||||||
|
that everyone understands that there is no warranty for this free
|
||||||
|
software. If the software is modified by someone else and passed on, we
|
||||||
|
want its recipients to know that what they have is not the original, so
|
||||||
|
that any problems introduced by others will not reflect on the original
|
||||||
|
authors' reputations.
|
||||||
|
|
||||||
|
Finally, any free program is threatened constantly by software
|
||||||
|
patents. We wish to avoid the danger that redistributors of a free
|
||||||
|
program will individually obtain patent licenses, in effect making the
|
||||||
|
program proprietary. To prevent this, we have made it clear that any
|
||||||
|
patent must be licensed for everyone's free use or not licensed at all.
|
||||||
|
|
||||||
|
The precise terms and conditions for copying, distribution and
|
||||||
|
modification follow.
|
||||||
|
|
||||||
|
GNU GENERAL PUBLIC LICENSE
|
||||||
|
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||||
|
|
||||||
|
0. This License applies to any program or other work which contains
|
||||||
|
a notice placed by the copyright holder saying it may be distributed
|
||||||
|
under the terms of this General Public License. The "Program", below,
|
||||||
|
refers to any such program or work, and a "work based on the Program"
|
||||||
|
means either the Program or any derivative work under copyright law:
|
||||||
|
that is to say, a work containing the Program or a portion of it,
|
||||||
|
either verbatim or with modifications and/or translated into another
|
||||||
|
language. (Hereinafter, translation is included without limitation in
|
||||||
|
the term "modification".) Each licensee is addressed as "you".
|
||||||
|
|
||||||
|
Activities other than copying, distribution and modification are not
|
||||||
|
covered by this License; they are outside its scope. The act of
|
||||||
|
running the Program is not restricted, and the output from the Program
|
||||||
|
is covered only if its contents constitute a work based on the
|
||||||
|
Program (independent of having been made by running the Program).
|
||||||
|
Whether that is true depends on what the Program does.
|
||||||
|
|
||||||
|
1. You may copy and distribute verbatim copies of the Program's
|
||||||
|
source code as you receive it, in any medium, provided that you
|
||||||
|
conspicuously and appropriately publish on each copy an appropriate
|
||||||
|
copyright notice and disclaimer of warranty; keep intact all the
|
||||||
|
notices that refer to this License and to the absence of any warranty;
|
||||||
|
and give any other recipients of the Program a copy of this License
|
||||||
|
along with the Program.
|
||||||
|
|
||||||
|
You may charge a fee for the physical act of transferring a copy, and
|
||||||
|
you may at your option offer warranty protection in exchange for a fee.
|
||||||
|
|
||||||
|
2. You may modify your copy or copies of the Program or any portion
|
||||||
|
of it, thus forming a work based on the Program, and copy and
|
||||||
|
distribute such modifications or work under the terms of Section 1
|
||||||
|
above, provided that you also meet all of these conditions:
|
||||||
|
|
||||||
|
a) You must cause the modified files to carry prominent notices
|
||||||
|
stating that you changed the files and the date of any change.
|
||||||
|
|
||||||
|
b) You must cause any work that you distribute or publish, that in
|
||||||
|
whole or in part contains or is derived from the Program or any
|
||||||
|
part thereof, to be licensed as a whole at no charge to all third
|
||||||
|
parties under the terms of this License.
|
||||||
|
|
||||||
|
c) If the modified program normally reads commands interactively
|
||||||
|
when run, you must cause it, when started running for such
|
||||||
|
interactive use in the most ordinary way, to print or display an
|
||||||
|
announcement including an appropriate copyright notice and a
|
||||||
|
notice that there is no warranty (or else, saying that you provide
|
||||||
|
a warranty) and that users may redistribute the program under
|
||||||
|
these conditions, and telling the user how to view a copy of this
|
||||||
|
License. (Exception: if the Program itself is interactive but
|
||||||
|
does not normally print such an announcement, your work based on
|
||||||
|
the Program is not required to print an announcement.)
|
||||||
|
|
||||||
|
These requirements apply to the modified work as a whole. If
|
||||||
|
identifiable sections of that work are not derived from the Program,
|
||||||
|
and can be reasonably considered independent and separate works in
|
||||||
|
themselves, then this License, and its terms, do not apply to those
|
||||||
|
sections when you distribute them as separate works. But when you
|
||||||
|
distribute the same sections as part of a whole which is a work based
|
||||||
|
on the Program, the distribution of the whole must be on the terms of
|
||||||
|
this License, whose permissions for other licensees extend to the
|
||||||
|
entire whole, and thus to each and every part regardless of who wrote it.
|
||||||
|
|
||||||
|
Thus, it is not the intent of this section to claim rights or contest
|
||||||
|
your rights to work written entirely by you; rather, the intent is to
|
||||||
|
exercise the right to control the distribution of derivative or
|
||||||
|
collective works based on the Program.
|
||||||
|
|
||||||
|
In addition, mere aggregation of another work not based on the Program
|
||||||
|
with the Program (or with a work based on the Program) on a volume of
|
||||||
|
a storage or distribution medium does not bring the other work under
|
||||||
|
the scope of this License.
|
||||||
|
|
||||||
|
3. You may copy and distribute the Program (or a work based on it,
|
||||||
|
under Section 2) in object code or executable form under the terms of
|
||||||
|
Sections 1 and 2 above provided that you also do one of the following:
|
||||||
|
|
||||||
|
a) Accompany it with the complete corresponding machine-readable
|
||||||
|
source code, which must be distributed under the terms of Sections
|
||||||
|
1 and 2 above on a medium customarily used for software interchange; or,
|
||||||
|
|
||||||
|
b) Accompany it with a written offer, valid for at least three
|
||||||
|
years, to give any third party, for a charge no more than your
|
||||||
|
cost of physically performing source distribution, a complete
|
||||||
|
machine-readable copy of the corresponding source code, to be
|
||||||
|
distributed under the terms of Sections 1 and 2 above on a medium
|
||||||
|
customarily used for software interchange; or,
|
||||||
|
|
||||||
|
c) Accompany it with the information you received as to the offer
|
||||||
|
to distribute corresponding source code. (This alternative is
|
||||||
|
allowed only for noncommercial distribution and only if you
|
||||||
|
received the program in object code or executable form with such
|
||||||
|
an offer, in accord with Subsection b above.)
|
||||||
|
|
||||||
|
The source code for a work means the preferred form of the work for
|
||||||
|
making modifications to it. For an executable work, complete source
|
||||||
|
code means all the source code for all modules it contains, plus any
|
||||||
|
associated interface definition files, plus the scripts used to
|
||||||
|
control compilation and installation of the executable. However, as a
|
||||||
|
special exception, the source code distributed need not include
|
||||||
|
anything that is normally distributed (in either source or binary
|
||||||
|
form) with the major components (compiler, kernel, and so on) of the
|
||||||
|
operating system on which the executable runs, unless that component
|
||||||
|
itself accompanies the executable.
|
||||||
|
|
||||||
|
If distribution of executable or object code is made by offering
|
||||||
|
access to copy from a designated place, then offering equivalent
|
||||||
|
access to copy the source code from the same place counts as
|
||||||
|
distribution of the source code, even though third parties are not
|
||||||
|
compelled to copy the source along with the object code.
|
||||||
|
|
||||||
|
4. You may not copy, modify, sublicense, or distribute the Program
|
||||||
|
except as expressly provided under this License. Any attempt
|
||||||
|
otherwise to copy, modify, sublicense or distribute the Program is
|
||||||
|
void, and will automatically terminate your rights under this License.
|
||||||
|
However, parties who have received copies, or rights, from you under
|
||||||
|
this License will not have their licenses terminated so long as such
|
||||||
|
parties remain in full compliance.
|
||||||
|
|
||||||
|
5. You are not required to accept this License, since you have not
|
||||||
|
signed it. However, nothing else grants you permission to modify or
|
||||||
|
distribute the Program or its derivative works. These actions are
|
||||||
|
prohibited by law if you do not accept this License. Therefore, by
|
||||||
|
modifying or distributing the Program (or any work based on the
|
||||||
|
Program), you indicate your acceptance of this License to do so, and
|
||||||
|
all its terms and conditions for copying, distributing or modifying
|
||||||
|
the Program or works based on it.
|
||||||
|
|
||||||
|
6. Each time you redistribute the Program (or any work based on the
|
||||||
|
Program), the recipient automatically receives a license from the
|
||||||
|
original licensor to copy, distribute or modify the Program subject to
|
||||||
|
these terms and conditions. You may not impose any further
|
||||||
|
restrictions on the recipients' exercise of the rights granted herein.
|
||||||
|
You are not responsible for enforcing compliance by third parties to
|
||||||
|
this License.
|
||||||
|
|
||||||
|
7. If, as a consequence of a court judgment or allegation of patent
|
||||||
|
infringement or for any other reason (not limited to patent issues),
|
||||||
|
conditions are imposed on you (whether by court order, agreement or
|
||||||
|
otherwise) that contradict the conditions of this License, they do not
|
||||||
|
excuse you from the conditions of this License. If you cannot
|
||||||
|
distribute so as to satisfy simultaneously your obligations under this
|
||||||
|
License and any other pertinent obligations, then as a consequence you
|
||||||
|
may not distribute the Program at all. For example, if a patent
|
||||||
|
license would not permit royalty-free redistribution of the Program by
|
||||||
|
all those who receive copies directly or indirectly through you, then
|
||||||
|
the only way you could satisfy both it and this License would be to
|
||||||
|
refrain entirely from distribution of the Program.
|
||||||
|
|
||||||
|
If any portion of this section is held invalid or unenforceable under
|
||||||
|
any particular circumstance, the balance of the section is intended to
|
||||||
|
apply and the section as a whole is intended to apply in other
|
||||||
|
circumstances.
|
||||||
|
|
||||||
|
It is not the purpose of this section to induce you to infringe any
|
||||||
|
patents or other property right claims or to contest validity of any
|
||||||
|
such claims; this section has the sole purpose of protecting the
|
||||||
|
integrity of the free software distribution system, which is
|
||||||
|
implemented by public license practices. Many people have made
|
||||||
|
generous contributions to the wide range of software distributed
|
||||||
|
through that system in reliance on consistent application of that
|
||||||
|
system; it is up to the author/donor to decide if he or she is willing
|
||||||
|
to distribute software through any other system and a licensee cannot
|
||||||
|
impose that choice.
|
||||||
|
|
||||||
|
This section is intended to make thoroughly clear what is believed to
|
||||||
|
be a consequence of the rest of this License.
|
||||||
|
|
||||||
|
8. If the distribution and/or use of the Program is restricted in
|
||||||
|
certain countries either by patents or by copyrighted interfaces, the
|
||||||
|
original copyright holder who places the Program under this License
|
||||||
|
may add an explicit geographical distribution limitation excluding
|
||||||
|
those countries, so that distribution is permitted only in or among
|
||||||
|
countries not thus excluded. In such case, this License incorporates
|
||||||
|
the limitation as if written in the body of this License.
|
||||||
|
|
||||||
|
9. The Free Software Foundation may publish revised and/or new versions
|
||||||
|
of the General Public License from time to time. Such new versions will
|
||||||
|
be similar in spirit to the present version, but may differ in detail to
|
||||||
|
address new problems or concerns.
|
||||||
|
|
||||||
|
Each version is given a distinguishing version number. If the Program
|
||||||
|
specifies a version number of this License which applies to it and "any
|
||||||
|
later version", you have the option of following the terms and conditions
|
||||||
|
either of that version or of any later version published by the Free
|
||||||
|
Software Foundation. If the Program does not specify a version number of
|
||||||
|
this License, you may choose any version ever published by the Free Software
|
||||||
|
Foundation.
|
||||||
|
|
||||||
|
10. If you wish to incorporate parts of the Program into other free
|
||||||
|
programs whose distribution conditions are different, write to the author
|
||||||
|
to ask for permission. For software which is copyrighted by the Free
|
||||||
|
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||||
|
make exceptions for this. Our decision will be guided by the two goals
|
||||||
|
of preserving the free status of all derivatives of our free software and
|
||||||
|
of promoting the sharing and reuse of software generally.
|
||||||
|
|
||||||
|
NO WARRANTY
|
||||||
|
|
||||||
|
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||||
|
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||||
|
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||||
|
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||||
|
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||||
|
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||||
|
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||||
|
REPAIR OR CORRECTION.
|
||||||
|
|
||||||
|
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||||
|
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||||
|
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||||
|
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||||
|
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||||
|
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||||
|
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||||
|
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||||
|
POSSIBILITY OF SUCH DAMAGES.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
|
|
||||||
|
How to Apply These Terms to Your New Programs
|
||||||
|
|
||||||
|
If you develop a new program, and you want it to be of the greatest
|
||||||
|
possible use to the public, the best way to achieve this is to make it
|
||||||
|
free software which everyone can redistribute and change under these terms.
|
||||||
|
|
||||||
|
To do so, attach the following notices to the program. It is safest
|
||||||
|
to attach them to the start of each source file to most effectively
|
||||||
|
convey the exclusion of warranty; and each file should have at least
|
||||||
|
the "copyright" line and a pointer to where the full notice is found.
|
||||||
|
|
||||||
|
<one line to give the program's name and a brief idea of what it does.>
|
||||||
|
Copyright (C) 19yy <name of author>
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|
||||||
|
Also add information on how to contact you by electronic and paper mail.
|
||||||
|
|
||||||
|
If the program is interactive, make it output a short notice like this
|
||||||
|
when it starts in an interactive mode:
|
||||||
|
|
||||||
|
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||||
|
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||||
|
This is free software, and you are welcome to redistribute it
|
||||||
|
under certain conditions; type `show c' for details.
|
||||||
|
|
||||||
|
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||||
|
parts of the General Public License. Of course, the commands you use may
|
||||||
|
be called something other than `show w' and `show c'; they could even be
|
||||||
|
mouse-clicks or menu items--whatever suits your program.
|
||||||
|
|
||||||
|
You should also get your employer (if you work as a programmer) or your
|
||||||
|
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||||
|
necessary. Here is a sample; alter the names:
|
||||||
|
|
||||||
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||||
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||||
|
|
||||||
|
<signature of Ty Coon>, 1 April 1989
|
||||||
|
Ty Coon, President of Vice
|
||||||
|
|
||||||
|
This General Public License does not permit incorporating your program into
|
||||||
|
proprietary programs. If your program is a subroutine library, you may
|
||||||
|
consider it more useful to permit linking proprietary applications with the
|
||||||
|
library. If this is what you want to do, use the GNU Library General
|
||||||
|
Public License instead of this License.
|
1
contriborbase
Normal file
1
contriborbase
Normal file
@ -0,0 +1 @@
|
|||||||
|
contribs10
|
30
createlinks
Executable file
30
createlinks
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
use esmith::Build::CreateLinks qw(:all);
|
||||||
|
|
||||||
|
#conf-nag
|
||||||
|
|
||||||
|
foreach (qw(conf.php prefs.php))
|
||||||
|
{
|
||||||
|
templates2events("/home/httpd/html/horde/nag/config/$_",
|
||||||
|
qw(email-update bootstrap-console-save));
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (qw(conf.php prefs.php))
|
||||||
|
{
|
||||||
|
safe_symlink("/etc/e-smith/templates-default/template-begin-php",
|
||||||
|
"root/etc/e-smith/templates/home/httpd/html/horde/nag/config/$_/template-begin");
|
||||||
|
safe_symlink("/etc/e-smith/templates-default/template-end-php",
|
||||||
|
"root/etc/e-smith/templates/home/httpd/html/horde/nag/config/$_/template-end");
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (qw(
|
||||||
|
80mysql.create.nag
|
||||||
|
81nag_upgrade
|
||||||
|
))
|
||||||
|
{
|
||||||
|
templates2events(
|
||||||
|
"/etc/e-smith/sql/init/$_",
|
||||||
|
qw(post-install post-upgrade));
|
||||||
|
}
|
||||||
|
|
300
root/etc/e-smith/events/actions/nag_upgrade
Normal file
300
root/etc/e-smith/events/actions/nag_upgrade
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
# copyright (C) 2002-20085 Mitel Networks Corporation
|
||||||
|
# copyright (C) 2002-2008 SME Server, INC
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
#----------------------------------------------------------------------
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use DBI;
|
||||||
|
use esmith::ConfigDB;
|
||||||
|
use esmith::util;
|
||||||
|
|
||||||
|
# Exit early if there is nothing to do
|
||||||
|
die("horde db must exist") unless ( -d "/var/lib/mysql/horde/");
|
||||||
|
die("nag db must exist") unless ( -f "/var/lib/mysql/horde/nag_tasks.frm");
|
||||||
|
die("nag db must exist") unless ( -f "/var/lib/mysql/horde/nag_shares.frm");
|
||||||
|
|
||||||
|
# This is a translation of the script 'mysql_upgrade_1.1_to_1.2.sql
|
||||||
|
# that is safe to run multiple times, and which can be run on a 1.2
|
||||||
|
# installation without barfing.
|
||||||
|
|
||||||
|
my $conf = esmith::ConfigDB->open_ro
|
||||||
|
or die "Can't open configuration database: $!\n";
|
||||||
|
our $username = 'root';
|
||||||
|
our $password = esmith::util::LdapPassword();
|
||||||
|
our $nag_DATABASE = 'horde';
|
||||||
|
our $dbi_options = {RaiseError => 1, ChopBlanks => 1, AutoCommit => 1};
|
||||||
|
|
||||||
|
my $db_naghandle = DBI->connect
|
||||||
|
("DBI:mysql:$nag_DATABASE",
|
||||||
|
$username, $password, $dbi_options )
|
||||||
|
|| die ("Connection error: $DBI::errstr");
|
||||||
|
|
||||||
|
|
||||||
|
# These are all safe to run multiple times
|
||||||
|
|
||||||
|
my @statements = (
|
||||||
|
"ALTER TABLE nag_shares CHANGE share_owner share_owner VARCHAR(255)",
|
||||||
|
"ALTER TABLE nag_shares_users CHANGE user_uid user_uid VARCHAR(255)",
|
||||||
|
"ALTER TABLE nag_shares_groups CHANGE group_uid group_uid VARCHAR(255)",
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach my $statement (@statements)
|
||||||
|
{
|
||||||
|
$statement =
|
||||||
|
$db_naghandle->prepare("$statement")
|
||||||
|
or die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# We now need to create some columns, but we need to first check
|
||||||
|
# whether they exist already
|
||||||
|
my $sth = $db_naghandle->prepare("show columns from nag_tasks");
|
||||||
|
$sth->execute;
|
||||||
|
my $nag_tasks = $sth->fetchall_hashref('Field');
|
||||||
|
|
||||||
|
my $sth1 = $db_naghandle->prepare("show columns from nag_shares");
|
||||||
|
$sth1->execute;
|
||||||
|
my $nag_shares = $sth1->fetchall_hashref('Field');
|
||||||
|
|
||||||
|
my $sth2 = $db_naghandle->prepare("show columns from nag_shares_groups");
|
||||||
|
$sth2->execute;
|
||||||
|
my $nag_shares_groups = $sth2->fetchall_hashref('Field');
|
||||||
|
|
||||||
|
my $sth3 = $db_naghandle->prepare("show columns from nag_shares_users");
|
||||||
|
$sth3->execute;
|
||||||
|
my $nag_shares_users = $sth3->fetchall_hashref('Field');
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_estimate})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
'ALTER TABLE nag_tasks ADD task_estimate FLOAT';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_completed_date})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
'ALTER TABLE nag_tasks ADD task_completed_date INT';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_start})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
'ALTER TABLE nag_tasks ADD task_start INT';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_parent})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
"ALTER TABLE nag_tasks ADD task_parent VARCHAR(255) ".
|
||||||
|
"DEFAULT '' NOT NULL";
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_creator})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
"ALTER TABLE nag_tasks ADD task_creator VARCHAR(255) NOT NULL ";
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_assignee})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
"ALTER TABLE nag_tasks ADD task_assignee VARCHAR(255) ";
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
unless (defined $nag_tasks->{task_private})
|
||||||
|
{
|
||||||
|
# We need to be careful about this one as it will fail if the
|
||||||
|
# column exists, so we check the error.
|
||||||
|
my $statement =
|
||||||
|
"ALTER TABLE nag_tasks ADD task_private SMALLINT ".
|
||||||
|
"DEFAULT 0 NOT NULL";
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for task_owner if needed
|
||||||
|
unless ($nag_tasks->{task_owner}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_tasks ' .
|
||||||
|
'add index nag_tasklist_idx (task_owner)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for task_uid if needed
|
||||||
|
unless ($nag_tasks->{task_uid}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_tasks ' .
|
||||||
|
'add index nag_uid_idx (task_uid)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for task_start if needed
|
||||||
|
unless ($nag_tasks->{task_start}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_tasks ' .
|
||||||
|
'add index nag_start_idx (task_start)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for share_name if needed
|
||||||
|
unless ($nag_shares->{share_name}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares ' .
|
||||||
|
'add index nag_shares_share_name_idx (share_name)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for share_owner if needed
|
||||||
|
unless ($nag_shares->{share_owner}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares ' .
|
||||||
|
'add index nag_shares_share_owner_idx (share_owner)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for perm_creator if needed
|
||||||
|
unless ($nag_shares->{perm_creator}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares ' .
|
||||||
|
'add index nag_shares_perm_creator_idx (perm_creator)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for perm_default if needed
|
||||||
|
unless ($nag_shares->{perm_default}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares ' .
|
||||||
|
'add index nag_shares_perm_default_idx (perm_default)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for perm_guest if needed
|
||||||
|
unless ($nag_shares->{perm_guest}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares ' .
|
||||||
|
'add index nag_shares_perm_guest_idx (perm_guest)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for share_id if needed
|
||||||
|
unless ($nag_shares_groups->{share_id}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares_groups ' .
|
||||||
|
'add index nag_shares_groups_share_id_idx (share_id)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for group_uid if needed
|
||||||
|
unless ($nag_shares_groups->{group_uid}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares_groups ' .
|
||||||
|
'add index nag_shares_groups_group_uid_idx (group_uid)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for perm if needed
|
||||||
|
unless ($nag_shares_groups->{perm}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares_groups ' .
|
||||||
|
'add index nag_shares_groups_perm_idx (perm)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for share_id if needed
|
||||||
|
unless ($nag_shares_users->{share_id}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares_users ' .
|
||||||
|
'add index nag_shares_users_share_id_idx (share_id)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for user_uid if needed
|
||||||
|
unless ($nag_shares_users->{user_uid}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares_users ' .
|
||||||
|
'add index nag_shares_users_user_uid_idx (user_uid)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create an index for perm if needed
|
||||||
|
unless ($nag_shares_users->{perm}->{Key})
|
||||||
|
{
|
||||||
|
my $statement = 'alter table nag_shares_users ' .
|
||||||
|
'add index nag_shares_users_perm_idx (perm)';
|
||||||
|
$statement = $db_naghandle->prepare($statement) or
|
||||||
|
die "prepare: $$statement: $DBI::errstr";
|
||||||
|
$statement->execute or die "execute: $$statement: $DBI::errstr";
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1 @@
|
|||||||
|
PERMS=0540
|
@ -0,0 +1 @@
|
|||||||
|
PERMS=0540
|
@ -0,0 +1,2 @@
|
|||||||
|
GID="www"
|
||||||
|
PERMS=0640
|
@ -0,0 +1,2 @@
|
|||||||
|
GID="www"
|
||||||
|
PERMS=0640
|
@ -0,0 +1,2 @@
|
|||||||
|
GID="www"
|
||||||
|
PERMS=0640
|
@ -0,0 +1,4 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
# test -f /var/lib/mysql/horde/nag_tasks.frm && exit 0
|
||||||
|
exec mysql horde < /home/httpd/html/horde/smeserver/nag.sql
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
#! /bin/sh
|
||||||
|
exec /etc/e-smith/events/actions/nag_upgrade
|
||||||
|
|
@ -0,0 +1,30 @@
|
|||||||
|
{
|
||||||
|
my $status = $imp{status} || 'disabled';
|
||||||
|
|
||||||
|
if ($status eq 'enabled')
|
||||||
|
{
|
||||||
|
$OUT .= qq(
|
||||||
|
# Nag specific access configuration
|
||||||
|
|
||||||
|
<Directory /home/httpd/html/horde/nag/config>
|
||||||
|
order deny,allow
|
||||||
|
deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory /home/httpd/html/horde/nag/lib>
|
||||||
|
order deny,allow
|
||||||
|
deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory /home/httpd/html/horde/nag/locale>
|
||||||
|
order deny,allow
|
||||||
|
deny from all
|
||||||
|
</Directory>
|
||||||
|
|
||||||
|
<Directory /home/httpd/html/horde/nag/templates>
|
||||||
|
order deny,allow
|
||||||
|
deny from all
|
||||||
|
</Directory>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
my $NagMenu = $nag{MenuArray} || "enabled"; return "" unless ($NagMenu eq "enabled");
|
||||||
|
$apps{nag} = 1;
|
||||||
|
$OUT = '';
|
||||||
|
}
|
@ -0,0 +1,24 @@
|
|||||||
|
// 230AppRegistryNag
|
||||||
|
$this->applications['nag'] = array(
|
||||||
|
'fileroot' => dirname(__FILE__) . '/../nag',
|
||||||
|
'webroot' => $this->applications['horde']['webroot'] . '/nag',
|
||||||
|
'name' => _("Tasks"),
|
||||||
|
'status' => 'active',
|
||||||
|
'provides' => 'tasks',
|
||||||
|
'menu_parent' => 'organizing'
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->applications['nag-alarms'] = array(
|
||||||
|
'status' => 'block',
|
||||||
|
'app' => 'nag',
|
||||||
|
'blockname' => 'tree_alarms',
|
||||||
|
'menu_parent' => 'nag',
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->applications['nag-menu'] = array(
|
||||||
|
'status' => 'block',
|
||||||
|
'app' => 'nag',
|
||||||
|
'blockname' => 'tree_menu',
|
||||||
|
'menu_parent' => 'nag',
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
//00Header
|
||||||
|
/* CONFIG START. DO NOT CHANGE ANYTHING IN OR AFTER THIS LINE. */
|
||||||
|
// $Horde: nag/config/conf.xml,v 1.25.10.2 2007/12/20 14:23:06 jan Exp $
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
//100StorageSettings
|
||||||
|
$conf['storage']['params']['table'] = 'nag_tasks';
|
||||||
|
$conf['storage']['params']['driverconfig'] = 'horde';
|
||||||
|
$conf['storage']['driver'] = 'sql';
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
//110PrintSettings
|
||||||
|
$conf['menu']['print'] = true;
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
//115ImportExportSettings
|
||||||
|
$conf['menu']['import_export'] = true;
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
//120MenuSettings
|
||||||
|
include '/home/httpd/html/horde/conf.menu.apps.php';
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
// 999footer
|
||||||
|
/* CONFIG END. DO NOT CHANGE ANYTHING IN OR BEFORE THIS LINE. */
|
||||||
|
|
@ -0,0 +1,7 @@
|
|||||||
|
//00Header
|
||||||
|
/**
|
||||||
|
* $Horde: nag/config/prefs.php.dist,v 1.42.2.13 2010/04/20 08:24:21 jan Exp $
|
||||||
|
*
|
||||||
|
* See horde/config/prefs.php for documentation on the structure of this file.
|
||||||
|
*/
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
//100Constants
|
||||||
|
// Make sure that constants are defined.
|
||||||
|
require_once dirname(__FILE__) . '/../lib/Nag.php';
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
//110Display
|
||||||
|
$prefGroups['display'] = array(
|
||||||
|
'column' => _("General Options"),
|
||||||
|
'label' => _("Display Options"),
|
||||||
|
'desc' => _("Change your task sorting and display options."),
|
||||||
|
'members' => array('tasklist_columns', 'sortby', 'altsortby', 'sortdir'),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
//115Deletion
|
||||||
|
$prefGroups['deletion'] = array(
|
||||||
|
'column' => _("General Options"),
|
||||||
|
'label' => _("Delete Confirmation"),
|
||||||
|
'desc' => _("Delete button behaviour"),
|
||||||
|
'members' => array('delete_opt'),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
//120Tasks
|
||||||
|
$prefGroups['tasks'] = array(
|
||||||
|
'column' => _("General Options"),
|
||||||
|
'label' => _("Task Defaults"),
|
||||||
|
'desc' => _("Defaults for new tasks"),
|
||||||
|
'members' => array('default_due', 'default_due_days', 'defaultduetimeselect'),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
//130Share
|
||||||
|
$prefGroups['share'] = array(
|
||||||
|
'column' => _("Task List and Share Options"),
|
||||||
|
'label' => _("Default Task List"),
|
||||||
|
'desc' => _("Choose your default task list."),
|
||||||
|
'members' => array('tasklistselect'),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,8 @@
|
|||||||
|
//140Notification
|
||||||
|
$prefGroups['notification'] = array(
|
||||||
|
'column' => _("Task List and Share Options"),
|
||||||
|
'label' => _("Notifications"),
|
||||||
|
'desc' => _("Choose if you want to be notified of task changes and task alarms."),
|
||||||
|
'members' => array('task_notification', 'task_notification_exclude_self'),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,5 @@
|
|||||||
|
//150Globals
|
||||||
|
if (!empty($GLOBALS['conf']['alarms']['driver'])) \{
|
||||||
|
$prefGroups['notification']['members'][] = 'task_alarms';
|
||||||
|
\}
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
//160ShowExternal
|
||||||
|
$_show_external = array();
|
||||||
|
if ($GLOBALS['registry']->hasMethod('getListTypes', 'whups')) \{
|
||||||
|
$_show_external['whups'] = $GLOBALS['registry']->get('name', 'whups');
|
||||||
|
\}
|
||||||
|
if (count($_show_external)) \{
|
||||||
|
$prefGroups['external'] = array(
|
||||||
|
'column' => _("Task List and Share Options"),
|
||||||
|
'label' => _("External Data"),
|
||||||
|
'desc' => _("Show data from other applications or sources."),
|
||||||
|
'members' => array('show_external'),
|
||||||
|
);
|
||||||
|
\}
|
||||||
|
|
@ -0,0 +1,16 @@
|
|||||||
|
//170Tasklist_Columns
|
||||||
|
// columns in the list view
|
||||||
|
$_prefs['tasklist_columns'] = array(
|
||||||
|
'value' => 'a:3:\{i:0;s:8:"priority";i:1;s:3:"due";i:2;s:8:"category";\}',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'multienum',
|
||||||
|
'enum' => array('tasklist' => _("Task List"),
|
||||||
|
'priority' => _("Priority"),
|
||||||
|
'assignee' => _("Assignee"),
|
||||||
|
'due' => _("Due Date"),
|
||||||
|
'estimate' => _("Estimated Time"),
|
||||||
|
'category' => _("Category")),
|
||||||
|
'desc' => _("Select the columns that should be shown in the list view:")
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
//180ShowPanel
|
||||||
|
// show the task list options panel?
|
||||||
|
// a value of 0 = no, 1 = yes
|
||||||
|
$_prefs['show_panel'] = array(
|
||||||
|
'value' => 1,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'implicit',
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,18 @@
|
|||||||
|
//190SortBy
|
||||||
|
// user preferred sorting column
|
||||||
|
$_prefs['sortby'] = array(
|
||||||
|
'value' => NAG_SORT_PRIORITY,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'enum',
|
||||||
|
'enum' => array(NAG_SORT_PRIORITY => _("Priority"),
|
||||||
|
NAG_SORT_NAME => _("Task Name"),
|
||||||
|
NAG_SORT_CATEGORY => _("Category"),
|
||||||
|
NAG_SORT_DUE => _("Due Date"),
|
||||||
|
NAG_SORT_COMPLETION => _("Completed?"),
|
||||||
|
NAG_SORT_ESTIMATE => _("Estimated Time"),
|
||||||
|
NAG_SORT_ASSIGNEE => _("Assignee"),
|
||||||
|
NAG_SORT_OWNER => _("Task List")),
|
||||||
|
'desc' => _("Sort tasks by:"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,18 @@
|
|||||||
|
//200AltSortBy
|
||||||
|
// alternate sort column
|
||||||
|
$_prefs['altsortby'] = array(
|
||||||
|
'value' => NAG_SORT_CATEGORY,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'enum',
|
||||||
|
'enum' => array(NAG_SORT_PRIORITY => _("Priority"),
|
||||||
|
NAG_SORT_NAME => _("Task Name"),
|
||||||
|
NAG_SORT_CATEGORY => _("Category"),
|
||||||
|
NAG_SORT_DUE => _("Due Date"),
|
||||||
|
NAG_SORT_COMPLETION => _("Completed?"),
|
||||||
|
NAG_SORT_ESTIMATE => _("Estimated Time"),
|
||||||
|
NAG_SORT_ASSIGNEE => _("Assignee"),
|
||||||
|
NAG_SORT_OWNER => _("Task List")),
|
||||||
|
'desc' => _("Then:"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
//210SortDir
|
||||||
|
// user preferred sorting direction
|
||||||
|
$_prefs['sortdir'] = array(
|
||||||
|
'value' => NAG_SORT_ASCEND,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'enum',
|
||||||
|
'enum' => array(NAG_SORT_ASCEND => _("Ascending"),
|
||||||
|
NAG_SORT_DESCEND => _("Descending")),
|
||||||
|
'desc' => _("Sort direction:"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
//220DeleteOpt
|
||||||
|
// preference for delete confirmation dialog.
|
||||||
|
$_prefs['delete_opt'] = array(
|
||||||
|
'value' => 1,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'desc' => _("Do you want to confirm deleting entries?"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
//230DefaultDue
|
||||||
|
// default to tasks having a due date?
|
||||||
|
$_prefs['default_due'] = array(
|
||||||
|
'value' => 0,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'desc' => _("When creating a new task, should it default to having a due date?"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,10 @@
|
|||||||
|
//240DefaultDueDays
|
||||||
|
// default number of days out for due dates
|
||||||
|
$_prefs['default_due_days'] = array(
|
||||||
|
'value' => 1,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'number',
|
||||||
|
'desc' => _("When creating a new task, how many days in the future should the default due date be (0 means today)?"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
//250DefaultDueTime
|
||||||
|
// default due time
|
||||||
|
$_prefs['default_due_time'] = array(
|
||||||
|
'value' => 'now',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'implicit',
|
||||||
|
);
|
||||||
|
|
||||||
|
// default due time selection widget
|
||||||
|
$_prefs['defaultduetimeselect'] = array('type' => 'special');
|
||||||
|
|
@ -0,0 +1,14 @@
|
|||||||
|
//260TaskNotification
|
||||||
|
// new task notifications
|
||||||
|
$_prefs['task_notification'] = array(
|
||||||
|
'value' => '',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'enum',
|
||||||
|
'enum' => array('' => _("No"),
|
||||||
|
'owner' => _("On my task lists only"),
|
||||||
|
'show' => _("On all shown task lists"),
|
||||||
|
'read' => _("On all task lists I have read access to")),
|
||||||
|
'desc' => _("Choose if you want to be notified of new, edited, and deleted tasks by email:"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,18 @@
|
|||||||
|
//270TaskAlarms
|
||||||
|
$_prefs['task_notification_exclude_self'] = array(
|
||||||
|
'value' => 0,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'checkbox',
|
||||||
|
'desc' => _("Don't send me a notification if I've added, changed or deleted the task?")
|
||||||
|
);
|
||||||
|
|
||||||
|
// alarm methods
|
||||||
|
$_prefs['task_alarms'] = array(
|
||||||
|
'value' => 'a:1:\{s:6:"notify";a:0:\{\}\}',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'alarm',
|
||||||
|
'desc' => _("Choose how you want to receive reminders for tasks with alarms:"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
//280ShowExternal
|
||||||
|
// show data from other applications that can be listed as tasks?
|
||||||
|
if (count($_show_external)) \{
|
||||||
|
$_prefs['show_external'] = array(
|
||||||
|
'value' => 'a:0:\{\}',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'multienum',
|
||||||
|
'enum' => $_show_external,
|
||||||
|
'desc' => _("Show data from any of these other applications in your task list?"),
|
||||||
|
);
|
||||||
|
\}
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
//290ShowCompleted
|
||||||
|
// show complete/incomplete tasks?
|
||||||
|
$_prefs['show_completed'] = array(
|
||||||
|
'value' => 1,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'enum',
|
||||||
|
'enum' => array(1 => _("All tasks"),
|
||||||
|
0 => _("Incomplete tasks"),
|
||||||
|
2 => _("Complete tasks")),
|
||||||
|
'desc' => _("Show complete, incomplete, or all tasks in the task list?"),
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
//300TaskCategories
|
||||||
|
// user task categories
|
||||||
|
$_prefs['task_categories'] = array(
|
||||||
|
'value' => '',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'implicit'
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,13 @@
|
|||||||
|
//310TaskLists
|
||||||
|
// default task list selection widget
|
||||||
|
$_prefs['tasklistselect'] = array('type' => 'special');
|
||||||
|
|
||||||
|
// default tasklists
|
||||||
|
// Set locked to true if you don't want users to have multiple task lists.
|
||||||
|
$_prefs['default_tasklist'] = array(
|
||||||
|
'value' => Auth::getAuth() ? Auth::getAuth() : 0,
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => true,
|
||||||
|
'type' => 'implicit',
|
||||||
|
);
|
||||||
|
|
@ -0,0 +1,9 @@
|
|||||||
|
//320DisplayTaskLists
|
||||||
|
// store the task lists to display
|
||||||
|
$_prefs['display_tasklists'] = array(
|
||||||
|
'value' => 'a:0:\{\}',
|
||||||
|
'locked' => false,
|
||||||
|
'shared' => false,
|
||||||
|
'type' => 'implicit',
|
||||||
|
);
|
||||||
|
|
49
root/home/httpd/html/horde/smeserver/nag.sql
Normal file
49
root/home/httpd/html/horde/smeserver/nag.sql
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
-- $Horde: nag/scripts/sql/nag.sql,v 1.4.8.10 2009-10-22 14:24:20 jan Exp $
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS nag_tasks (
|
||||||
|
task_id VARCHAR(32) NOT NULL,
|
||||||
|
task_owner VARCHAR(255) NOT NULL,
|
||||||
|
task_creator VARCHAR(255) NOT NULL,
|
||||||
|
task_parent VARCHAR(255),
|
||||||
|
task_assignee VARCHAR(255),
|
||||||
|
task_name VARCHAR(255) NOT NULL,
|
||||||
|
task_uid VARCHAR(255) NOT NULL,
|
||||||
|
task_desc TEXT,
|
||||||
|
task_start INT,
|
||||||
|
task_due INT,
|
||||||
|
task_priority INT DEFAULT 0 NOT NULL,
|
||||||
|
task_estimate FLOAT,
|
||||||
|
task_category VARCHAR(80),
|
||||||
|
task_completed SMALLINT DEFAULT 0 NOT NULL,
|
||||||
|
task_completed_date INT,
|
||||||
|
task_alarm INT DEFAULT 0 NOT NULL,
|
||||||
|
task_private SMALLINT DEFAULT 0 NOT NULL,
|
||||||
|
--
|
||||||
|
PRIMARY KEY (task_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS nag_shares (
|
||||||
|
share_id INT NOT NULL,
|
||||||
|
share_name VARCHAR(255) NOT NULL,
|
||||||
|
share_owner VARCHAR(255) NOT NULL,
|
||||||
|
share_flags SMALLINT DEFAULT 0 NOT NULL,
|
||||||
|
perm_creator SMALLINT DEFAULT 0 NOT NULL,
|
||||||
|
perm_default SMALLINT DEFAULT 0 NOT NULL,
|
||||||
|
perm_guest SMALLINT DEFAULT 0 NOT NULL,
|
||||||
|
attribute_name VARCHAR(255) NOT NULL,
|
||||||
|
attribute_desc VARCHAR(255),
|
||||||
|
PRIMARY KEY (share_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS nag_shares_groups (
|
||||||
|
share_id INT NOT NULL,
|
||||||
|
group_uid VARCHAR(255) NOT NULL,
|
||||||
|
perm SMALLINT NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS nag_shares_users (
|
||||||
|
share_id INT NOT NULL,
|
||||||
|
user_uid VARCHAR(255) NOT NULL,
|
||||||
|
perm SMALLINT NOT NULL
|
||||||
|
);
|
||||||
|
|
91
smeserver-nag.spec
Normal file
91
smeserver-nag.spec
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
# $Id: smeserver-nag.spec,v 1.1 2020/12/20 04:59:56 brianr Exp $
|
||||||
|
# Authority: mrjhb3
|
||||||
|
# Name: John H. Bennett III
|
||||||
|
|
||||||
|
Summary: SME Server specific Nag configuration and templates.
|
||||||
|
%define name smeserver-nag
|
||||||
|
Name: %{name}
|
||||||
|
%define version 2.2
|
||||||
|
%define release 10
|
||||||
|
Version: %{version}
|
||||||
|
Release: %{release}%{?dist}
|
||||||
|
License: GPL
|
||||||
|
Group: Networking/Daemons
|
||||||
|
Source: %{name}-%{version}.tar.xz
|
||||||
|
BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot
|
||||||
|
BuildArchitectures: noarch
|
||||||
|
Requires: imp-h3 >= 4.2
|
||||||
|
Requires: e-smith-base >= 4.15.1
|
||||||
|
Requires: e-smith-apache >= 1.1.0-18
|
||||||
|
Requires: e-smith-lib >= 1.15.1-16
|
||||||
|
Requires: nag-h3 >= 2.2
|
||||||
|
BuildRequires: e-smith-devtools >= 1.13.1-03
|
||||||
|
AutoReqProv: no
|
||||||
|
Obsoletes: dcb-e-smith-nag
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Sat Sep 07 2024 cvs2git.sh aka Brian Read <brianr@koozali.org> 2.2-10.sme
|
||||||
|
- Roll up patches and move to git repo [SME: 12338]
|
||||||
|
|
||||||
|
* Sat Sep 07 2024 BogusDateBot
|
||||||
|
- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday,
|
||||||
|
by assuming the date is correct and changing the weekday.
|
||||||
|
|
||||||
|
* Wed Oct 18 2017 Jean-Philipe Pialasse <tests@pialasse.com> 2.2-9.sme
|
||||||
|
- import to SME9 [SME: 10441]
|
||||||
|
|
||||||
|
* Sat Nov 06 2010 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-8
|
||||||
|
- Updated templates to reflect Nag 2.3.6
|
||||||
|
|
||||||
|
* Mon May 10 2010 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-7
|
||||||
|
- Updated templates to reflect Nag 2.3.5
|
||||||
|
|
||||||
|
* Mon Dec 28 2009 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-6
|
||||||
|
- Updated templates to reflect Nag 2.3.4
|
||||||
|
|
||||||
|
* Sat Oct 10 2009 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-5
|
||||||
|
- Updated templates to reflect Nag 2.3.3
|
||||||
|
|
||||||
|
* Wed Jun 17 2009 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-4
|
||||||
|
- Updated templates to reflect Nag 2.3.2
|
||||||
|
|
||||||
|
* Tue Sep 30 2008 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-3
|
||||||
|
- Patch to add forgotten changes from nag upgrade sql script
|
||||||
|
|
||||||
|
* Mon Sep 29 2008 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-2
|
||||||
|
- Updated templates to reflect Nag 2.3
|
||||||
|
|
||||||
|
* Tue Jun 24 2008 John H. Bennett III <bennettj@johnbennettservices.com> 2.2-1
|
||||||
|
- Initial production build
|
||||||
|
- Jump in package name to reflect new version of Nag 2.2
|
||||||
|
|
||||||
|
* Sat May 24 2008 John H. Bennett III <bennettj@johnbennettservices.com> 0.2-1
|
||||||
|
- Updated to include changes in Nag 2.2 RC3
|
||||||
|
- Re-rolled tarball
|
||||||
|
|
||||||
|
* Sun Apr 6 2008 John H. Bennett III <bennettj@johnbennettservices.com> 0.1-1
|
||||||
|
- Initial build
|
||||||
|
- Jump in package name to reflect new version of Nag
|
||||||
|
|
||||||
|
%description
|
||||||
|
This package adds necessary templates and configuration items
|
||||||
|
so that Nag will work properly on SME Server
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%setup
|
||||||
|
|
||||||
|
|
||||||
|
%build
|
||||||
|
perl createlinks
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT)
|
||||||
|
/sbin/e-smith/genfilelist $RPM_BUILD_ROOT > %{name}-%{version}-filelist
|
||||||
|
echo "%doc COPYING" >> %{name}-%{version}-filelist
|
||||||
|
|
||||||
|
%clean
|
||||||
|
rm -rf $RPM_BUILD_ROOT
|
||||||
|
|
||||||
|
%files -f %{name}-%{version}-filelist
|
||||||
|
%defattr(-,root,root)
|
Loading…
Reference in New Issue
Block a user