<?php

include_once('includes/config.inc.php');
include_once('includes/session.inc.php');
include_once('includes/misc.inc.php');

if (isset($_GET['logout']) or isset($_POST['logout'])) {
    logout();
    header("Location: index.php");
}

if (!is_logged_in() and $_POST['formname'] == "loginform") {
    if (try_login() === TRUE) {
        set_logged_in($_POST['username']);
    } else { 
        $errormsg = "Error while trying to authenticate you\n";
    }
}

?>
<html>
    <head>
        <link href="jquery/css/ui-lightness/jquery-ui-1.10.4.min.css" rel="stylesheet" type="text/css" />
        <link href="jtable/themes/metro/lightgray/jtable.css" rel="stylesheet" type="text/css" />
        <link href="css/base.css" rel="stylesheet" type="text/css" />
        <script src="jquery/js/jquery-1.10.2.js" type="text/javascript"></script>
        <script src="jquery/js/jquery-ui-1.10.4.min.js" type="text/javascript"></script>
        <script src="jtable/jquery.jtable.min.js" type="text/javascript"></script>
    </head>

<?
if (!is_logged_in()) {
    ?>
<body onload="document.getElementById('username').focus()">
<div class="loginblock">
  <div class="logo">
    <img src="https://www.tuxis.nl/uploads/images/nsedit.png" alt="Logo" />
  </div>
  <div class="login">
    <? if (isset($errormsg)) {
        echo '<span style="color: red">'.$errormsg.'</span><br />';
       }
    ?>
    <form action="index.php" method="post">
        <table>
            <tr>
                <td class="label">Gebruikersnaam:</td>
                <td><input id="username" type="text" name="username"/></td>
            </tr>
            <tr>
                <td class="label">Wachtwoord:</td>
                <td><input type="password" name="password"/></td>
            </tr>
            <tr>
				<td></td>
                <td><input type="submit" name="submit" value="Inloggen"/></td>
            </tr>
        </table>
        <input type="hidden" name="formname" value="loginform"/>
    </form>
  </div>
 </div>
</body>
</html>

<?
    exit(0);
}

if (is_adminuser()) {
    foreach (get_all_users() as $user) {
        $userlist[] = "'".$user['emailaddress']."':'".$user['emailaddress']."'";
    }

    $ulist = ',';
    $ulist .= join(',', $userlist);
}

foreach ($templates as $template) {
    if (is_adminuser() or (isset($template['owner']) && $template['owner'] == get_sess_user()) or ($template['owner'] == 'public')) {
        $templatelist[] = "'".$template['name']."':'".$template['name']."'";
    }
}

if (isset($templatelist)) {
    $tmpllist = ',';
    $tmpllist .= join(',', $templatelist);
}

?>
    <body>
        <div id="wrap">
            <div id="menu" class="jtable-main-container">
                <div class="jtable-title">
                    <div class="jtable-title-text">
                        Menu
                    </div>
                </div>
                <ul>
                    <li><a href="#" id="zoneadmin">Zones</a></li>
                    <? if (is_adminuser()) { ?>
                    <li><a href="#" id="useradmin">Users</a></li>
                    <? } ?>
                    <li><a href="index.php?logout=1">Logout</a></li>
                </ul>
            </div>
            <div id="zones">
                <div class="tables" id="MasterZones"></div>
                <div class="tables" id="SlaveZones"></div>
            </div>
            <? if (is_adminuser()) { ?>
            <div id="users">
                <div class="tables" id="Users"></div>
            </div>
            <? } ?>
        </div>
        <script type="text/javascript">
            $(document).ready(function () {
                <? if (is_adminuser()) { ?>
                $('#Users').hide();
                $('#useradmin').click(function () {
                    $('#Users').show();
                    $('#MasterZones').hide();
                    $('#SlaveZones').hide();
                });
                $('#zoneadmin').click(function () {
                    $('#Users').hide();
                    $('#MasterZones').show();
                    $('#SlaveZones').show();
                });
                $('#Users').jtable({
                    title: 'Users',
                    paging: true,
                    pageSize: 20,
                    sorting: false,
                    actions: {
                        listAction:   'users.php?action=list',
                        createAction: 'users.php?action=create',
                        deleteAction: 'users.php?action=delete',
                        updateAction: 'users.php?action=update'
                    },
                    messages: {
                        addNewRecord: 'Add new user',
                    },
                    fields: {
                        id: {
                            key: true,
                            type: 'hidden'
                        },
                        emailaddress: {
                            title: 'User',
                        },
                        password: {
                            title: 'Password',
                            type: 'password',
                            list: false,
                        },
                        isadmin: {
                            title: 'Admin',
                            type: 'checkbox',
                            values: { '0' : 'No', '1' : 'Yes' }
                        }
                    }
                });
                $('#Users').jtable('load');
                <? } ?>
                $('#SlaveZones').jtable({
                    title: 'Slave Zones',
                    paging: true,
                    pageSize: 20,
                    sorting: false,
                    messages: {
                        addNewRecord: 'Add new slave zone',
                        noDataAvailable: 'No slave zones configured',
                    },
                    openChildAsAccordion: true,
                    actions: {
                        listAction:   'zones.php?action=listslaves',
                        createAction: 'zones.php?action=create',
                        deleteAction: 'zones.php?action=delete'
                    },
                    fields: {
                        id: {
                            key: true,
                            type: 'hidden'
                        },
                        name: {
                            title: 'Domain',
                        },
                        <? if (is_adminuser()) { ?>
                        owner: {
                            title: 'Owner',
                            options: {'admin':'admin'<? echo $ulist; ?>},
                            defaultValue: 'admin',
                        },
                        <? } ?>
                        kind: {
                            create: true,
                            type: 'hidden',
                            list:   false,
                            defaultValue: 'Slave'
                        },
                        serial: {
                            title: 'Serial',
                            create: false,
                        },
                        records: {
                            width: '5%',
                            title: 'Records',
                            paging: true,
                            pageSize: 20,
                            edit: false,
                            create: false,
                            display: function(zone) {
                                var $img = $('<img class="list" src="jtable/themes/metro/list.png" title="Records" />');
                                $img.click(function() {
                                    $('#MasterZones').jtable('openChildTable',
                                    $img.closest('tr'), {
                                        title: 'Records in '+zone.record.name,
                                        openChildAsAccordion: true,
                                        actions: {
                                            listAction: 'zones.php?action=listrecords&zoneurl='+zone.record.url,
                                        },
                                        fields: {
                                            name: {
                                                title: 'Label',
                                            },
                                            type: {
                                                title: 'Type'
                                            },
                                            prio: {
                                                title: 'Prio'
                                            },
                                            content: {
                                                title: 'Content',
                                            },
                                            ttl: {
                                                title: 'TTL',
                                            },
                                        }
                                    }, function (data) {
                                                data.childTable.jtable('load');
                                    })
                                });
                                return $img;
                            }
                        },
                    }
                });
                $('#SlaveZones').jtable('load');
                $('#MasterZones').jtable({
                    title: 'Master/Native Zones',
                    paging: true,
                    pageSize: 20,
                    messages: {
                        addNewRecord: 'Add new zone',
                        noDataAvailable: 'No zones configured',
                    },
                    sorting: false,
                    openChildAsAccordion: true,
                    actions: {
                        listAction:   'zones.php?action=list',
                        createAction: 'zones.php?action=create',
                        deleteAction: 'zones.php?action=delete',
                        <? if (is_adminuser()) { ?>
                        updateAction: 'zones.php?action=update'
                        <? } ?>
                    },
                    fields: {
                        id: {
                            key: true,
                            type: 'hidden'
                        },
                        name: {
                            title: 'Domain',
                        },
                        <? if (is_adminuser()) { ?>
                        owner: {
                            title: 'Owner',
                            options: {'admin':'admin'<? echo $ulist; ?>},
                            defaultValue: 'admin',
                        },
                        <? } ?>
                        kind: {
                            title: 'Type',
                            options: { 'Native':'Native', 'Master':'Master'},
                            defaultValue: '<? echo $defaults['defaulttype']; ?>',
                            edit: false,
                        },
                        template: {
                            title: 'Template',
                            options: {'None':'None'<? echo $tmpllist; ?>},
                            list: false,
                            create: true,
                            edit: false,
                        },
                        nameserver1: {
                            title: 'Pri. Nameserver',
                            create: true,
                            list: false,
                            edit: false,
                            defaultValue: '<? echo $defaults['primaryns']; ?>',
                        },
                        nameserver2: {
                            title: 'Sec. Nameserver',
                            create: true,
                            list: false,
                            edit: false,
                            defaultValue: '<? echo $defaults['secondaryns']; ?>',
                        },
                        serial: {
                            title: 'Serial',
                            create: false,
                            edit: false,
                        },
                        records: {
                            width: '5%',
                            title: 'Records',
                            edit: false,
                            create: false,
                            display: function(zone) {
                                var $img = $('<img class="list" src="jtable/themes/metro/list.png" title="Records" />');
                                $img.click(function() {
                                    $('#MasterZones').jtable('openChildTable',
                                    $img.closest('tr'), {
                                        title: 'Records in '+zone.record.name,
                                        messages: {
                                            addNewRecord: 'Add to '+zone.record.name,
                                            noDataAvailable: 'No records for '+zone.record.name,
                                        },
                                        paging: true,
                                        pageSize: 20,
                                        openChildAsAccordion: true,
                                        actions: {
                                            listAction: 'zones.php?action=listrecords&zoneurl='+zone.record.url,
                                            createAction: 'zones.php?action=createrecord&zoneurl='+zone.record.url,
                                            deleteAction: 'zones.php?action=deleterecord&zoneurl='+zone.record.url,
                                            updateAction: 'zones.php?action=editrecord&zoneurl='+zone.record.url,
                                        },
                                        fields: {
                                            domid: {
                                                create: true,
                                                type: 'hidden',
                                                defaultValue: zone.record.id,
                                            },
                                            id: {
                                                key: true,
                                                create: false,
                                                edit: false,
                                                list: false,
                                            },
                                            domain: {
                                                create: true,
                                                type: 'hidden',
                                                defaultValue: zone.record.name,
                                            },
                                            name: {
                                                title: 'Label',
                                                create: true,
                                            },
                                            type: {
                                                options: {'AAAA':'AAAA','A':'A','CNAME':'CNAME','MX':'MX','SRV':'SRV','TXT':'TXT','NS':'NS','SOA':'SOA'},
                                                create: true,
                                            },
                                            priority: {
                                                title: 'Prio',
                                                create: true,
                                                defaultValue: '<? echo $defaults['priority']; ?>',
                                            },
                                            content: {
                                                title: 'Content',
                                                create: true,
                                            },
                                            ttl: {
                                                title: 'TTL',
                                                create: true,
                                                defaultValue: '<? echo $defaults['ttl']; ?>',
                                            },
                                        }
                                    }, function (data) {
                                                data.childTable.jtable('load');
                                    })
                                });
                                return $img;
                            }
                        },
                    }
                });
                $('#MasterZones').jtable('load');
            });
        </script>
    </body>
</html>