From b2822f439699378ee8686182c064ff896cb458ef Mon Sep 17 00:00:00 2001 From: Aaron Parecki Date: Sat, 20 Feb 2016 10:39:35 -0800 Subject: [PATCH] add UI to create and edit sites * moves API key to settings screen * adds Superfeedr subscription URL in settings screen --- controllers/Controller.php | 62 ++++++++++++++++++++++++++++++++++++++ public/assets/styles.css | 7 +++++ public/index.php | 3 ++ views/dashboard.php | 10 ++---- views/footer-block.php | 1 + views/layout-loggedin.php | 2 +- views/new-site.php | 47 +++++++++++++++++++++++++++++ 7 files changed, 123 insertions(+), 9 deletions(-) create mode 100644 views/new-site.php diff --git a/controllers/Controller.php b/controllers/Controller.php index 1121359..864262e 100644 --- a/controllers/Controller.php +++ b/controllers/Controller.php @@ -129,6 +129,68 @@ class Controller { return $response; } + public function new_site(Request $request, Response $response) { + if(!$this->_is_logged_in($request, $response)) { + return $response; + } + + if(!$role=$this->_get_role($request, $response)) { + return $response; + } + + if($request->get('account')) { + // permissions are checked already by _get_role + $site = ORM::for_table('sites')->where_id_is($request->get('account'))->find_one(); + } else { + $site = null; + } + + $response->setContent(view('new-site', [ + 'title' => 'Create New Site', + 'user' => $this->_user(), + 'accounts' => $this->_accounts(), + 'role' => $role, + 'site' => $site + ])); + return $response; + } + + public function save_site(Request $request, Response $response) { + if(!$this->_is_logged_in($request, $response)) { + return $response; + } + + if(!$role=$this->_get_role($request, $response)) { + return $response; + } + + if($request->get('account')) { + // permissions are checked already by _get_role + $site = ORM::for_table('sites')->where_id_is($request->get('account'))->find_one(); + $site->name = $request->get('name'); + $site->url = $request->get('url'); + $site->save(); + } else { + $site = ORM::for_table('sites')->create(); + $site->created_by = session('user_id'); + $site->created_at = date('Y-m-d H:i:s'); + $site->name = $request->get('name'); + $site->url = $request->get('url'); + $site->save(); + + $role = ORM::for_table('roles')->create(); + $role->site_id = $site->id; + $role->user_id = session('user_id'); + $role->role = 'owner'; + $role->token = random_string(32); + $role->save(); + } + + $response->setStatusCode(302); + $response->headers->set('Location', '/dashboard?account='.$site->id); + return $response; + } + public function webmention_details(Request $request, Response $response, $args) { session_start(); diff --git a/public/assets/styles.css b/public/assets/styles.css index 33bf70a..26aaf84 100644 --- a/public/assets/styles.css +++ b/public/assets/styles.css @@ -9,3 +9,10 @@ background-color: rgba(248,246,255,1); font-size: 0.9em; } + +h2.site-name .edit-site { + visibility: hidden; +} +h2.site-name:hover .edit-site { + visibility: visible; +} \ No newline at end of file diff --git a/public/index.php b/public/index.php index dc41b28..1f26c39 100644 --- a/public/index.php +++ b/public/index.php @@ -24,6 +24,9 @@ $templates = new League\Plates\Engine(dirname(__FILE__).'/../views'); $router->addRoute('GET', '/', 'Controller::index'); $router->addRoute('GET', '/dashboard', 'Controller::dashboard'); +$router->addRoute('GET', '/site/new', 'Controller::new_site'); +$router->addRoute('GET', '/site/edit', 'Controller::new_site'); +$router->addRoute('POST', '/site/save', 'Controller::save_site'); $router->addRoute('GET', '/api', 'Controller::api'); $router->addRoute('GET', '/webmention/{code}/details', 'Controller::webmention_details'); $router->addRoute('GET', '/dashboard/send', 'Controller::dashboard_send'); diff --git a/views/dashboard.php b/views/dashboard.php index a659ea1..cb31405 100644 --- a/views/dashboard.php +++ b/views/dashboard.php @@ -2,6 +2,8 @@
+

name ?>

+