CORE-POS/IS4C

View on GitHub
fannie/modules/plugins2.0/MenuScreens/MSEditor.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php

include(__DIR__ . '/../../../config.php');
if (!class_exists('FannieAPI')) {
    include(__DIR__ . '/../../../classlib2.0/FannieAPI.php');
}

if (!class_exists('MenuScreensModel')) {
    include(__DIR__ . '/models/MenuScreensModel.php');
}

class MSEditor extends FannieRESTfulPage
{
    protected $header = 'Menu Screen Editor';
    protected $title = 'Menu Screen Editor';

    public $description = '[Menu Screen Editor] creates baseline screens';

    protected function post_id_handler()
    {
        $model = new MenuScreensModel($this->connection);
        $model->name(FormLib::get('name'));
        $model->columnCount(FormLib::get('cols'));
        $model->layout(FormLib::get('layout'));
        if ($this->id) {
            $model->menuScreenID($this->id);
            $model->save();
        } else {
            $this->id = $model->save();
        }

        return 'MSEditor.php?id=' . $this->id;
    }

    protected function get_id_view()
    {
        $model = new MenuScreensModel($this->connection);
        $model->menuScreenID($this->id);
        $model->load();
        $ms = $model->toStdClass();

        $this->addCssFile('../DBA/node_modules/codemirror/lib/codemirror.css');
        $this->addScript('../DBA/node_modules/codemirror/lib/codemirror.js');
        $this->addScript('../DBA/node_modules/codemirror//addon/mode/multiplex.js');
        $this->addScript('../DBA/node_modules/codemirror/mode/htmlembedded/htmlembedded.js');
        $this->addScript('../DBA/node_modules/codemirror/mode/css/css.js');
        $this->addScript('../DBA/node_modules/codemirror/mode/xml/xml.js');
        $this->addScript('../DBA/node_modules/codemirror/mode/javascript/javascript.js');
        $this->addScript('../DBA/node_modules/codemirror/mode/htmlmixed/htmlmixed.js');
        $this->addOnloadCommand('CodeMirror.fromTextArea(document.getElementById("queryTA"), { lineNumbers: true, mode: "htmlembedded" });');

        return <<<HTML
<form method="post" action="MSEditor.php">
<div class="form-group">
    <label>Name</label>
    <input type="text" name="name" class="form-control" value="{$ms->name}" />
</div>
<div class="form-group">
    <label>Columns</label>
    <input type="number" class="form-control" min="1" max="5" step="1" name="cols" value="{$ms->columnCount}" />
</div>
<div class="form-group">
    <label>Layout</label>
    <textarea id="queryTA" class="form-control" name="layout" rows="10">{$ms->layout}</textarea>
</div>
<div class="form-group">
    <input type="hidden" name="id" value="{$this->id}" />
    <button type="submit" class="btn btn-default">Save Menu</button>
</div>
</form>
HTML;
    }

    protected function get_view()
    {
        $model = new MenuScreensModel($this->connection);
        $table = '';
        foreach ($model->find('name') as $obj) {
            $table .= sprintf('<tr><td>%s</td>
                <td><a href="MSEditor.php?id=%d">Edit Menu</td>
                <td><a href="MSItems.php?id=%d">Edit Menu Items</td>
                <td><a href="MSRender.php?id=%d">View Menu</td>
                </tr>',
                $obj->name(),
                $obj->menuScreenID(),
                $obj->menuScreenID(),
                $obj->menuScreenID()
            );
        }
        return <<<HTML
<table class="table">
{$table}
</table>
<p>
    <a href="MSEditor.php?id=0" class="btn btn-default">Create New Menu</a>
</p>
<p>
    <a href="MSDevices.php" class="btn btn-default">Devices</a>
</p>
HTML;
    }
}

FannieDispatch::conditionalExec();