Initialer Commit: Kundenverwaltung (PHP/Smarty)
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>
This commit is contained in:
+248
@@ -0,0 +1,248 @@
|
||||
<?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();
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user