[RELEASE] German Crimetime UserControlPanel

  • Einen schönen guten Abend Breadfish,


    hier möchte ich nun mein UCP veröffentlichen, welches bis vor wenigen Tagen für German CrimeTime(Nein nicht das CrimeTime von Shain & BlackAce) von mir entwicklet wurde. Eine Live Ansicht könnt ihr, sofern gewünscht einmal bei GCT sehen http://cp.cops-robbers.de/(Zugangsmöglichkeit nur mit Account auf dem Server) oder auch auf meiner Demo Site http://demo.lukas-kaemmerling.de/ucp/(User: Demo; Passwort: demo). Das Design des UCPs wurde dem Forumsstil nachempfunden, ist allerdings komplett selber geschrieben. Es wird Bootstrap genutzt. Die Grafiken wurden von .ReeduZ erstellt, er hat mir die nötige Befähigung zum mitveröffentlichen seiner Werke gegeben.


    Dieses User Control Panel befand sich zum Zeitpunkt der Stilllegung der Entwicklung in einer relativen frühen Phase. Es können, und werden noch Bugs auftreten & wahrscheinlich sind auch noch kleine Lücken drin, das kann man nunmal einfach nicht aussschließen ;)



    Die Datenbank liegt bei, ist allerdings bis auf einige DummyDaten komplett geleert. Im Ordner: core\config findet ihr eine system.config.php . Dort sind die MySQL Daten einzutragen.


    Kurze Auflistung der Feautres:
    - Keybinder API (Dokumentation [falls nicht gelöscht]: http://german-crimetime.de/boa…binder-api-dokumentation/ )
    - Dynamisches Profil System für Gruppen & User ( core/config/profil.config.php)
    - Mehrsprachen System (core/config/lang.config.php -> core/config/lang)
    - OOP & einfache Möglichkeit Userdaten zu verwalten (Jedes Objekt hat eine feste Struktur -> core/libs/data_models/)
    - View & Logik sind getrennt (Logik: core/libs/controller | core/libs/system )
    - Eigenes Framework welches Daten in den richtigen Context lädt & eine Trennung der Schichten zulässt.


    Nun das waren so im kurzen die Auflistung der Funktionen. Gibt natürlich auch noch die Standart Sachen, wie eigenen Nutzer bearbeiten, News schreiben, Wartungsmodus und co, das ist aber nicht erwähnenswert.



    Und da ja eig ein Pastebin dabei sein muss, ich allerdings nicht das ganze Projekt Patebinnen kann hier die index.php


    PHP
    <?phpsession_start();$start = microtime();header('Content-Type: text/html; charset=utf-8');error_reporting(0);require_once("core/GCTCore.class.php");$config = GCTCore::getConfig();$page = @$_GET['p'];if (empty($page)) {    $page = "home";}if (isset($_GET['lang'])) {    setcookie("lang", @$_GET['lang']);    $lang = @$_GET['lang'];} else {    $lang = $_COOKIE['lang'];}if (empty($lang)) {    $lang = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);}global $LANG;try{    GCTCore::initLanguageSystem($lang);} catch(Exception $ex){    SystemException::ShowException($ex);}GCTCore::LoadController("user", "user");?><!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title>GCT-UCP</title>        <link rel="stylesheet" type="text/css" href="bootstrap.min.css">        <link rel="stylesheet" type="text/css" href="gct-style.css">        <script>            (function(i, s, o, g, r, a, m) {                i['GoogleAnalyticsObject'] = r;                i[r] = i[r] || function() {                    (i[r].q = i[r].q || []).push(arguments)                }, i[r].l = 1 * new Date();                a = s.createElement(o),                        m = s.getElementsByTagName(o)[0];                a.async = 1;                a.src = g;                m.parentNode.insertBefore(a, m)            })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');            ga('create', 'UA*****-2', '*****e');            ga('send', 'pageview');        </script>    </head>    <body>        <div id="gct-header">            <div class="gct-menu">                <ul>                    <li><a href="?p=home"><?php echo GCTCore::GetLangVar($LANG['Index']['Mainmenu']['Home']); ?></a></li>                    <?php                    if (isset($_SESSION['user_id']) && $_SESSION['user_id'] != "0") {                        ?>                                         <li><a href="?p=user\profil"><?php echo GCTCore::GetLangVar($LANG['Index']['Mainmenu']['Profil']); ?></a></li>                        <?php                    }                    ?>                    <!--<li><a href="?p=member">Mitglieder</a></li>-->                    <li><a href="?p=server_stats"><?php echo GCTCore::GetLangVar($LANG['Index']['Mainmenu']['Stats']); ?></a></li>                </ul>            </div>            <div class="gct-usermenu">                <ul>                    <li class="pull-left"><div class="btn-group">                            <button type="button" class="btn btn-primary btn-xs"><?php echo GCTCore::GetLangVar($LANG['Index']['Mainmenu']['Speak']); ?></button>                            <button type="button" class="btn btn-primary dropdown-toggle btn-xs" data-toggle="dropdown">                                <span class="caret"></span>                                <span class="sr-only">Toggle Dropdown</span>                            </button>                            <ul class="dropdown-menu" role="menu">                                <?php                                for ($i = 0; $i < count($KONFIG['GCTCore']['Language']); $i++) {                                    ?>                                    <li><a href="?p=<?php echo $page; ?>&lang=<?php echo $KONFIG['GCTCore']['Language'][$i]['Filename']; ?>" class="pull-left"><?php echo GCTCore::GetIcon($KONFIG['GCTCore']['Language'][$i]['Icon'],"16","16") . $KONFIG['GCTCore']['Language'][$i]['Name']; ?></a></li>                                    <?php                                }                                ?>                            </ul>                        </div>                    </li>                    <?php                    if (isset($_SESSION['user_id']) && $_SESSION['user_id'] != "0") {                        $user_data = User::GetData($_SESSION['user_id']);                        ?>                        <li><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Greeting']); ?> <?php echo $user_data->username; ?></li>                        <li><a href="?p=logout"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Logout']); ?></a></li>                        <li><a href="?p=user\account\home"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['AccountChange']); ?></a></li>                        <li><a href="?p=user\ts3"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Teamspeak']); ?></a></li>                        <?php if ($user_data->api_access == "1") { ?>                            <li><a href="?p=api\home"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Api']); ?></a></li>                            <?php                        }                      /*  if ($user_data->leader == "1") { ?>                            <li><a href="?p=group\home">Leader Menü</a></li>                            <?php                        }*/                        if ($user_data->admin != 0) {                            ?>                            <?php if ($user_data->admin >= $KONFIG['GCTCore']['Rights']['Suppanel']) { ?> <li><a href="?p=suppanel\home"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Suppanel']); ?></a></li><?php } ?>                                                 <?php if ($user_data->admin >= $KONFIG['GCTCore']['Rights']['Adminpanel']) { ?><li><a href="?p=adminpanel\home"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Adminpanel']); ?></a></li><?php } ?>                            <?php if ($user_data->title == "Teamleiter") { ?><li><a href="?p=devpanel\home"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Devpanel']); ?></a></li><?php                            }                        }                    } else {                        ?>                        <li><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Greeting']); ?>  <?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Guest']); ?></li>                        <li><a href="?p=login"><?php echo GCTCore::GetLangVar($LANG['Index']['Usermenu']['Login']); ?> </a></li>                        <?php                    }                    ?>                                    </ul>            </div>        </div>        <div id="gct-content">            <div class="gct-container">                <?php                if ($config->maintancemode == 1) {                    ?>                    <div class="alert alert-warning">    <?php $replaces = array("arguments" => array("{maintancereason}"), "replaces" => array($config->maintancetext)); ?>                        <div class="pull-left"><?php echo GCTCore::GetIcon("noticeM"); ?></div><div class="center-block" style="padding-left:50px;"><?php echo GCTCore::GetLangVar($LANG['Index']['Maintance'],$replaces); ?></div>                    </div>                    <?php                }                if ($config->maintancemode == 0 OR isset($_SESSION['user_id'])) {                    $page = explode("",$page);                    ($page[1] !== null) ? ($page[2] !== null) ?$page = $page[0]."/".$page[1]."/".$page[2] :$page = $page[0]."/".$page[1] : $page = $page[0];                    if (isset($_SESSION['user_id']) && $_SESSION['user_id'] != "0" OR $page == "login" OR $page == "server_stats" OR $page == "home" OR $page == "losepw") {                        if (file_exists("page/" . $page . ".page.php")) {                            require("page/" . $page . ".page.php");                        } else {                            require("page/404.page.php");                        }                    } else {                        ?>                        <div class="alert alert-warning">                            <button type="button" class="close" data-dismiss="alert" aria-hidden="true">&times;</button>                            <div class="pull-left"> <?php echo GCTCore::GetIcon("noticeM"); ?></div>                            <div class="center-block"><?php echo GCTCore::GetLangVar($LANG['Index']['OnlyLogin']); ?></div>                        </div>                        <?php                        require("page/home.page.php");                    }                } else {                    require("page/login.page.php");                }                ?>                <div class="clearfix"></div>            </div>        </div>        <div style="clear:both;"></div>        <div id="footer">            <?php echo $KONFIG['GCTCore']['Copyright']['All']; ?> Design: <?php echo $KONFIG['GCTCore']['Copyright']['Design']; ?> Programmierung:<?php echo $KONFIG['GCTCore']['Copyright']['Code']; ?> Version : <?php echo $KONFIG['GCTUCP']['Version'] ?>         </div>        <script src="https://code.jquery.com/jquery-1.10.2.min.js" async defer></script>        <script src="http://statics.cops-robbers.de/js/bootstrap.min.js" async defer></script>    </body></html><?php$end = microtime();$input = "[".($end-$start)."ms] [".$page."]";LogMaker::WriteInLog("index", $input);?>


    Und zu guter letzt natürlich der Download des gesamten Paketes:
    Klick


    Und da es ja mein geschriebenes UCP ist, kann ich damit auch machen was ich will ;)


    Mit freundlichen Grüßen
    $this->getUser();
    Edit 1 & 2: Kleine Fehler behoben

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

    2 Mal editiert, zuletzt von Developer ()

  • Ich kann es nicht mehr gebrauchen & ich denke mal andere können es besser gebrauchen. Und da die Projektleitung sich auch der Aufforderung wiedersetzt hat, es komplett zu löschen dort, habe ich mich dazu entschieden es wenn schon für jeden zugänglich zu machen. Ist so oder so nichts besonderes.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Jetzt schon ;) die Parameter waren nur falschrum

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Auf meiner Demo Site?


    User: Demo
    Passwort: demo


    (Habs fix neu angelegt)

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Auf welcher Seite bist du denn? Auf Klick mit User:Demo & Passwort:demo funktioniert es doch ohne Probleme. Keine Leerzeichen davor machen :D

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Zitat

    getUser();" linkhref="'index.php?page=Thread&postID=1912164#post1912164'" class="wysiwygQuote container-4">Auf welcher Seite bist du denn? Auf Klick mit User:Demo & Passwort:demo funktioniert es doch ohne Probleme. Keine Leerzeichen davor machen :D


    Hab das 'D' immer groß geschrieben, funktioniert nun, danke!

  • Kannst von mir aus machen damit was du willst, nur nicht verkaufen, ohne meine Zustimmung veröffentlichen oder als sein eigenes ausgeben und natürlich beide Copyrights müssen drin bleiben.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • klar kannst du das. Deshalb ist es auch von einigen Seiten her sehr konfigurationsfreundlich bzw. dynamisch.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Welche Serverdaten bitte? Die Daten vom TS existieren nicht mehr, was ich vorher extra getestet habe. Und sonst sind auch keine Serverdaten enthalten? Also wovon redet ihr bitte?

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Die TS Daten haben so oder so nicht mehr funktioniert. Die IP- Okay gut die gabs/gibts noch aber sonst nichts? Von meiner Demo Aus ist war der TS so oder so nicht erreichbar, da ich dort alle großartigen Änderungen auskommertiert habe. Aber gut, habe soeben den Download aktuallisiert die TS Query daten wurden nun dann auch zensiert, obwohl sie nicht mal mehr funktioniert haben.


    Edit: @Slider: Will dafür jetzt nix extra den PostCount hunten, sie gingen vorher auch nicht. Hab se ja noch extra getestet vorher.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern

  • Um der ganzen Disskusion wieso weshalb und warum ein Ende zu bereiten bevor sie überhaupt anfängt. Das ist kein Thread um i etwas über Person X zu sagen! Es geht einzig und allein um das UserControlPanel. Wer seine Wut auf Person X,Y,Z hier aus lassen will, soll doch bitte erstmal an die Luft gehen und sich beruhigen. Danke.

    Mit freundlichen Grüßen
    Developer
    Go/Python Developer | ehm. Webdeveloper | Fachinformatiker Anwendungsentwicklung
    Arbeitet in einem cloudigen Umfeld bei einem der größten deutschen Rechenzentrumsbetreibern