public function handle() { $action = $this->url->get("action", "default"); $whoops = new \Whoops\Run(); if ($this->url->get("ajax", false)) { $whoops->pushHandler(new \Whoops\Handler\JsonResponseHandler()); } else { $whoops->pushHandler(new \Whoops\Handler\PrettyPageHandler()); } $whoops->register(); $result = null; if (method_exists($this, "handle_" . $action)) { $result = call_user_func(array($this, "handle_" . $action)); } else { throw new Exception("Unknown action"); } $output = ""; if (is_string($result)) { $newResult = array('type' => 'transclude', 'content' => $result); $result = $newResult; } switch ($result['type']) { case "template": $output = $this->twig->renderTemplateToString($result['template'], $result['data']); break; case "json": $this->app->setJsonResponse(true); $data = $result['data']; $data['flashbag'] = FlashBag::getFlashes(); $output = json_encode($data); break; case "redirect": $this->app->_requestRedirect($result['url']); return; break; case "transclude": $pageMap = []; /** @var BasePage $pageItem */ foreach ($this->app->getPages() as $pageItem) { $pageMap[] = array('id' => $pageItem->getId(), 'name' => $pageItem->getName()); } ValueBag::set("flashbag", FlashBag::getFlashes()); $data = array('valueBag' => json_encode(ValueBag::getValues()), 'staticRoot' => $this->app->getStaticRoot(), 'pageMap' => $pageMap, 'defaultUrl' => $this->routeGen->defaultRoute(), 'title' => $this->app->getAppName(), 'userParams' => $this->app->getUserParams(), 'pageTitle' => ''); if ($this->page !== null) { $data['page'] = $this->page; $data['currentId'] = $this->page->getId(); $data['pageTitle'] = $this->page->getName(); } else { $data['currentId'] = -1; } $data['page_content'] = $result['content']; $data['dev'] = false; // change to true to load unminified js $output = $this->twig->renderTemplateToString("main_page.twig", $data); break; default: throw new Exception("Unknown result type"); } return $output; }
<?php use CrudKit\CrudKitApp; use CrudKit\Data\DummyDataProvider; use CrudKit\Data\SQLiteDataProvider; use CrudKit\Pages\BasePage; use CrudKit\Pages\BasicDataPage; require "../vendor/autoload.php"; $crud = new CrudKitApp(); $crud->setStaticRoot("/src/static"); $page4 = new BasicDataPage('dummy4'); $page4->setName("SQLITE PAGE"); $sqliteProvider = new SQLiteDataProvider("fixtures/chinook.sqlite"); $sqliteProvider->setTable("Customer"); $sqliteProvider->setPrimaryColumn("a0", "CustomerId"); $sqliteProvider->addColumn("a1", "FirstName", "First Name"); $sqliteProvider->addColumn("a2", "LastName", "Last Name"); $sqliteProvider->addColumn("a3", "City", "City"); $sqliteProvider->addColumn("a4", "Country", "Country"); $sqliteProvider->addColumn("a5", "Email", "Email"); $sqliteProvider->setSummaryColumns(array("a1", "a2")); $sqliteProvider->manyToOne("a6", "SupportRepId", "Employee", "EmployeeId", "FirstName", "Support Rep"); $page4->setDataProvider($sqliteProvider); $crud->addPage($page4); $page5 = new BasicDataPage('dummy5'); $page5->setName("Employees"); $empProvider = new SQLiteDataProvider("fixtures/chinook.sqlite"); $empProvider->setTable("Employee"); $empProvider->setPrimaryColumn("b0", "EmployeeId"); $empProvider->addColumn("b1", "FirstName", "First Name"); $empProvider->addColumn("b2", "LastName", "Last Name");
<?php // Require CrudKit application require "crudkit/crudkit.php"; use CrudKit\CrudKitApp; use CrudKit\Pages\HtmlPage; // Create a new CrudKitApp object $app = new CrudKitApp(); // Create a new Page, of type "HtmlPage" which allows you to display arbitrary HTML inside $page = new HtmlPage("mypage1"); // Every page needs to have a unique ID $page->setName("My First Page"); // setName is available for all pages. $page->setInnerHtml("This is page # <b>1</b>"); // You can set the HTML of this page, a feature supported by HtmlPage $app->addPage($page); $page2 = new HtmlPage("mypage2"); $page2->setName("My Second Page"); $page2->setInnerHtml("This is page # <b>2</b>"); $app->addPage($page2); // Render the app. This will display the HTML $app->render();
<?php // Require CrudKit application require "crudkit/crudkit.php"; use CrudKit\CrudKitApp; use CrudKit\Pages\SQLiteTablePage; use CrudKit\Pages\BasicLoginPage; // Create a new CrudKitApp object $app = new CrudKitApp(); $app->setAppName("Admin Panel"); $login = new BasicLoginPage(); if ($login->userTriedLogin()) { $username = $login->getUserName(); $password = $login->getPassword(); // TODO: you should use a better way to validate the password. Even if if ($username === 'admin' && $password === 'demo') { $login->success(); } else { if ($username === 'user' && $password === 'demo') { $app->setReadOnly(true); $login->success(); } else { $login->fail("Please check your password"); } } } $app->useLogin($login); $page = new SQLiteTablePage("sqlite2", "fixtures/chinook.sqlite"); $page->setName("Customer Management")->setTableName("Customer")->setRowsPerPage(20)->setPrimaryColumn("CustomerId")->addColumn("FirstName", "First Name", array('required' => true))->addColumn("LastName", "Last Name")->addColumn("City", "City", array('required' => true))->addColumn("Country", "Country")->addColumn("Email", "E-mail")->setSummaryColumns(array("FirstName", "Country")); $app->addPage($page); $invoice = new SQLiteTablePage("sqlite1", "fixtures/chinook.sqlite");
public function testHelloWorld() { $crud = new CrudKitApp(); $crud->addPage(new BasePage()); $this->assertEquals($crud->say(), "Hello World"); }
<?php // Require CrudKit application require "crudkit/crudkit.php"; use CrudKit\CrudKitApp; use CrudKit\Pages\MySQLTablePage; // Create a new CrudKitApp object $app = new CrudKitApp(); $invoice = new MySQLTablePage("mysql2", "user2", "hunter2", "Chinook", array('charset' => "UTF8")); $invoice->setName("Invoice")->setPrimaryColumnWithId("a0", "InvoiceId")->setTableName("Invoice")->addColumnWithId("a1", "BillingCity", "City")->addColumnWithId("a2", "BillingCountry", "Country")->addColumnWithId("a3", "Total", "Total")->addColumnWithId("a4", "InvoiceDate", "Date", array())->setSummaryColumns(["a1", "a2", "a3", "a4"]); $app->addPage($invoice); $page = new MySQLTablePage("mysql1", "user2", "hunter2", "Chinook", array('charset' => "UTF8")); $page->setName("Customer Management")->setTableName("Customer")->setPrimaryColumn("CustomerId")->addColumn("FirstName", "First Name")->addColumn("LastName", "Last Name")->addColumn("City", "City")->addColumn("Country", "Country")->addColumn("Email", "E-mail")->setSummaryColumns(array("FirstName", "Country")); $app->addPage($page); // Render the app. This will display the HTML $app->render();
<?php require "vendor/autoload.php"; use CrudKit\CrudKitApp; use CrudKit\Pages\SQLiteTablePage; use CrudKit\Pages\BasicLoginPage; // Create a new CrudKitApp object $app = new CrudKitApp(); $app->setStaticRoot("static/crudkit/"); $app->setAppName("Admin Panel"); // // HANDLE LOGIN // $login = new BasicLoginPage(); $login->setWelcomeMessage("Use credentials admin/demo or user/demo"); if ($login->userTriedLogin()) { $username = $login->getUserName(); $password = $login->getPassword(); // TODO: you should use your own authentication scheme here if ($username === 'admin' && $password === 'demo') { $login->success(); } else { if ($username === 'user' && $password === 'demo') { $login->success(); } else { $login->fail("Please check your password (admin/demo) or (user/demo)"); } } } $app->useLogin($login); //