Bestehende Codebasis als Ausgangsstand aufgenommen. - .gitignore: Kundendaten (uploads_*), Smarty-Compile-Cache (templates_c), Laufzeit-Temp und Datenbank-Dumps ausgeschlossen; Verzeichnisstruktur ueber .gitkeep erhalten - .gitattributes: Zeilenenden normalisiert (LF im Repo), Binaerformate markiert - db-backup.php: MySQL-Zugangsdaten kommen jetzt wie im Rest der Anwendung aus der externen Konfiguration statt hartkodiert aus der Datei; Passwort wird ueber eine temporaere Optionsdatei statt per Kommandozeile uebergeben, Fehler von mysqldump/gzip werden gemeldet, Aufraeumen aelterer Backups berechnet Jahr und Monat konsistent Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
248 lines
6.8 KiB
PHP
248 lines
6.8 KiB
PHP
<?php
|
|
ob_start();
|
|
session_start();
|
|
|
|
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
|
|
ini_set("display_errors", "1");
|
|
|
|
require_once("incs/constants.php");
|
|
require_once("update/database-update.php");
|
|
require_once("incs/settings.php");
|
|
require_once("incs/update.php");
|
|
require_once("incs/funcs.php");
|
|
|
|
if(isset($_GET["action"]))
|
|
$action = $_GET["action"];
|
|
else
|
|
$action = "";
|
|
$errors = array();
|
|
$warnings = array();
|
|
$messages = array();
|
|
|
|
$version = getthisversion();
|
|
|
|
if($version == -1)
|
|
{
|
|
$errors[] = "Versions-datei kann nicht beschrieben werden, bitte setzen Sie Schreibrechte für das Verzeichnis update/thisversion/";
|
|
}
|
|
|
|
|
|
$settings=readsettings();
|
|
|
|
if($settings != "valid")
|
|
{
|
|
$firma = "UNKONFIGURIERT";
|
|
$action = "setup";
|
|
}
|
|
|
|
if(!isset($_SESSION["login"]))
|
|
{
|
|
$_SESSION['login'] = "invalid";
|
|
}
|
|
|
|
|
|
if(!isset($_SESSION["zoom"]))
|
|
$_SESSION['zoom'] = 1;
|
|
|
|
if(!isset($_SESSION["globalNotes"]))
|
|
$_SESSION["globalNotes"]="";
|
|
if(!isset($_SESSION["privateNotes"]))
|
|
$_SESSION["privateNotes"]="";
|
|
|
|
|
|
$text_version = substr($version, 0, 1).".".substr($version, 1, 1).".".substr($version, 2, 1);
|
|
|
|
echo <<<ENDE
|
|
<!doctype html>
|
|
<html>
|
|
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
|
|
|
<title>Kundenverwaltung V$text_version --$firma--</title>
|
|
<meta name="description" content="Software zur Kunden- und Terminverwaltung der Firma $firma">
|
|
<meta name="keywords" content="Kundenverwaltung, wagner-markisen, verwaltung, termine, kunden, adressen">
|
|
<meta name="language" content="de">
|
|
|
|
<script type="text/javascript" src="./js/jquery.tools.min(1).js" language="javascript"></script>
|
|
|
|
|
|
<script type="text/javascript" src="js/bumpbox/mootools.js" language="javascript"></script>
|
|
<script type="text/javascript" src="js/bumpbox/bumpbox-2.1.js" language="javascript"></script>
|
|
<script type="text/javascript" src="js/bumpbox/assets.js" language="javascript"></script>
|
|
|
|
<script type="text/javascript" src="js/pwdmeter.js" language="javascript"></script>
|
|
<script type="text/javascript" src="js/interface.js" language="javascript"></script>
|
|
<script type="text/javascript" src="js/forms.js" language="javascript"></script>
|
|
|
|
|
|
<link rel="stylesheet" href="styles/default.css" type="text/css">
|
|
<link rel="stylesheet" href="styles/pwdmeter.css" type="text/css">
|
|
|
|
<link rel="shortcut icon" href="./pics/favicon.png">
|
|
|
|
<meta http-equiv="imagetoolbar" content="no">
|
|
</head>
|
|
ENDE;
|
|
echo "<body onload='zoom(".$_SESSION["zoom"].")'>";
|
|
|
|
if($settings == "valid" && $action != "setup")
|
|
{
|
|
if(!$dbconn = @mysqli_connect($mysql_server, $mysql_user, $mysql_pw))
|
|
$err = error("Verbindung zur Datenbank fehlgeschlagen!!");
|
|
if(!$geodbconn = @mysqli_connect($mysql_server, $mysql_user, $mysql_pw))
|
|
$err = error("Verbindung zur OpenGeoDB Datenbank fehlgeschlagen!!");
|
|
if(!@mysqli_select_db($geodbconn,$mysql_opengeodb))
|
|
$err = error("OpengeoDB nicht gefunden!! ($mysql_opengeodb)");
|
|
if(!@mysqli_select_db($dbconn,$mysql_db))
|
|
$err = error("Datenbank nicht gefunden!! ($mysql_db)");
|
|
$newversion = checknewversion($version);
|
|
$status = manageupdate($version, $newversion);
|
|
$version = $status[1];
|
|
}
|
|
|
|
if($_SESSION["login"] != "valid")
|
|
{
|
|
$_SESSION["nick"] = "Anmelden";
|
|
$termine = "Anmelden";
|
|
}
|
|
else
|
|
{
|
|
$qry = mysqli_query($dbconn,"SELECT id FROM termine WHERE done = 0 AND termtime+termdauer > NOW()");
|
|
$termine = mysqli_num_rows($qry);
|
|
}
|
|
|
|
echo "
|
|
<div id='notes'>
|
|
<div class='noteshead'>Persönliche Notizen:</div>
|
|
<textarea id='personalnotes' onkeyup='ajax_saveprivatenotes(this.value)'>".htmlspecialchars($_SESSION["privateNotes"])."</textarea>
|
|
<div class='noteshead'>Notizen für alle:</div>
|
|
<textarea id='globalnotes' onkeyup='ajax_saveglobalnotes(this.value)'>".htmlspecialchars($_SESSION["globalNotes"])."</textarea>
|
|
</div>
|
|
<div id='statusbar'><div class='stat'><b>Benutzer: </b>".$_SESSION["nick"]."</div><div class='stat'><b>Termine: </b>$termine</div>
|
|
<div class='dblstat'></div>
|
|
<div class='stat'><b>Datum: </b>".date("D, d.m.Y")."</div><div class='stat'><b>Zoom: </b><span id='zoomdisplay'>".($_SESSION["zoom"]*100)."%</span></div></div>";
|
|
echo <<<ENDE
|
|
<div id='schnellbar'>
|
|
<a href='?action=kunden'><img src='pics/icons/kunden.png' class='schnellicon' /></a>
|
|
<a href='?action=termine'><img src='pics/icons/termine.png' class='schnellicon' /></a>
|
|
<a href='?action=suchen'><img src='pics/icons/search.png' class='schnellicon' /></a>
|
|
<a href='#' onClick='zoom("out")' class='noloading'><img src='pics/icons/zoom-out.png' class='schnellicon' /></a>
|
|
<a href='#' onClick='zoom(1)' class='noloading'><img src='pics/icons/zoom-original.png' class='schnellicon' /></a>
|
|
<a href='#' onClick='zoom("in")' class='noloading'><img src='pics/icons/zoom-in.png' class='schnellicon' /></a>
|
|
<a href='?action=neu'><img src='pics/icons/newdoc.png' class='schnellicon' /></a>
|
|
<a href='?action=charts'><img src='pics/icons/chart.png' class='schnellicon' /></a>
|
|
<a href='?action=settings'><img src='pics/icons/einstellungen.png' class='schnellicon' /></a>
|
|
|
|
|
|
</div>
|
|
<div id='include_content'>
|
|
<center>
|
|
ENDE;
|
|
|
|
|
|
if($_SESSION["login"] == "valid")
|
|
{
|
|
switch($action)
|
|
{
|
|
case "setup":
|
|
include("./update/firststart.php");
|
|
break;
|
|
case "rebuild_settings":
|
|
include("./update/rebuild-settings.php");
|
|
break;
|
|
default:
|
|
include("./sites/start.php");
|
|
break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
switch($action)
|
|
{
|
|
case "setup":
|
|
include("./update/firststart.php");
|
|
break;
|
|
case "rebuild_settings":
|
|
include("./update/rebuild-settings.php");
|
|
break;
|
|
default:
|
|
include("./sites/start.php");
|
|
break;
|
|
}
|
|
}
|
|
|
|
echo <<<ENDE
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div id='loading'>
|
|
<p>Bitte warten, es wird geladen...</p>
|
|
</div>
|
|
|
|
<!-- external page is given in the href attribute (as it should be) -->
|
|
<a href="./sites/start.php" class="noloading" rel="#overlay" style="text-decoration:none">
|
|
|
|
<!-- remember that you can use any element inside the trigger -->
|
|
<button type="button">Show external page in overlay</button>
|
|
</a>
|
|
|
|
<!-- another link. uses the same overlay -->
|
|
<a href="external-content2.htm" class="noloading" rel="#overlay" style="text-decoration:none">
|
|
<button type="button">Show another page</button>
|
|
</a>
|
|
|
|
|
|
<!-- overlayed element -->
|
|
|
|
<div class="apple_overlay" id="overlay">
|
|
|
|
<!-- the external content is loaded inside this tag -->
|
|
<div class="contentWrap"></div>
|
|
|
|
</div>
|
|
|
|
<!-- make all links with the 'rel' attribute open overlays -->
|
|
<script>
|
|
|
|
$(function() {
|
|
|
|
// if the function argument is given to overlay,
|
|
// it is assumed to be the onBeforeLoad event listener
|
|
$("a[rel]").overlay({
|
|
|
|
mask: {
|
|
color: '#000',
|
|
loadSpeed: 200,
|
|
opacity: 0.6
|
|
},
|
|
closeOnClick: 'true',
|
|
closeOnEsc: 'true',
|
|
speed: 'slow',
|
|
|
|
onBeforeLoad: function() {
|
|
|
|
// grab wrapper element inside content
|
|
var wrap = this.getOverlay().find(".contentWrap");
|
|
|
|
// load the page specified in the trigger
|
|
wrap.load(this.getTrigger().attr("href"));
|
|
}
|
|
|
|
});
|
|
});
|
|
</script>
|
|
</center>
|
|
<div class='bottomspace'></div>
|
|
</div>
|
|
</body
|
|
</html>
|
|
ENDE;
|
|
ob_end_flush();
|
|
|
|
?>
|