diff options
author | Nick Bakkegaard <nickbakkegaard@gmail.com> | 2017-06-26 23:02:22 +0300 |
---|---|---|
committer | Nick Bakkegaard <nickbakkegaard@gmail.com> | 2017-06-26 23:28:47 +0300 |
commit | c6ebf1cbd25582d8389b0b900f7db74c0a5b7d34 (patch) | |
tree | 578495dbcc54bef7d0148cca6a41f645f89ca595 | |
parent | 2133b39bce917466f3ebad6d2b5b8344b8105942 (diff) |
basic implementation of hidden, still a lot to do though
-rw-r--r-- | appinfo/routes.php | 3 | ||||
-rw-r--r-- | controller/settingscontroller.php | 47 | ||||
-rw-r--r-- | js/apporder.js | 53 | ||||
-rw-r--r-- | templates/admin.php | 2 | ||||
-rw-r--r-- | util.php | 13 |
5 files changed, 107 insertions, 11 deletions
diff --git a/appinfo/routes.php b/appinfo/routes.php index c37beea..0b231a4 100644 --- a/appinfo/routes.php +++ b/appinfo/routes.php @@ -27,5 +27,8 @@ return [ ['name' => 'settings#getOrder', 'url' => '/getOrder', 'verb' => 'GET'], ['name' => 'settings#savePersonal', 'url' => '/savePersonal', 'verb' => 'POST'], ['name' => 'settings#saveDefaultOrder', 'url' => '/saveDefaultOrder', 'verb' => 'POST'], + ['name' => 'settings#getHidden', 'url' => '/getHidden', 'verb' => 'GET'], + ['name' => 'settings#savePersonalHidden', 'url' => '/savePersonalHidden', 'verb' => 'POST'], + ['name' => 'settings#saveDefaultHidden', 'url' => '/saveDefaultHidden', 'verb' => 'POST'], ] ]; diff --git a/controller/settingscontroller.php b/controller/settingscontroller.php index 2bfb59a..7f542b2 100644 --- a/controller/settingscontroller.php +++ b/controller/settingscontroller.php @@ -56,10 +56,11 @@ class SettingsController extends Controller { $navigation = $this->navigationManager->getAll(); $order = json_decode($this->appConfig->getAppValue('order')); $nav = $this->util->matchOrder($navigation, $order); + $hidden = json_decode($this->appConfig->getAppValue('hidden')); return new TemplateResponse( $this->appName, 'admin', - ["nav" => $nav, 'type' => 'admin'], + ["nav" => $nav, 'type' => 'admin', 'hidden' => $hidden], 'blank' ); } @@ -69,10 +70,11 @@ class SettingsController extends Controller { $navigation = $this->navigationManager->getAll(); $order = json_decode($this->appConfig->getUserValue('order', $this->userId)); $nav = $this->util->matchOrder($navigation, $order); + $hidden = json_decode($this->appConfig->getUserValue('hidden',$this->userId)); return new TemplateResponse( $this->appName, 'admin', - ["nav" => $nav, 'type' => 'personal'], + ["nav" => $nav, 'type' => 'personal', 'hidden' => $hidden], 'blank' ); } @@ -118,4 +120,45 @@ class SettingsController extends Controller { return $response; } + /** + * Save hidden for current user + * + * @NoAdminRequired + * @param $hidden string + * @return array response + */ + public function savePersonalHidden($hidden) { + $this->appConfig->setUserValue('hidden', $this->userId, $hidden); + $response = array( + 'status' => 'success', + 'data' => array('message' => 'User hidden saved successfully.'), + 'hidden' => $hidden + ); + return $response; + } + + /** + * Return hidden for current user + * + * @NoAdminRequired + * @return array response + */ + public function gethidden() { + $hidden = $this->util->getAppHidden(); + return array('status' => 'success', 'hidden' => $hidden); + } + + /** + * Admin: save default hidden + * + * @param $hidden + * @return array response + */ + public function saveDefaultHidden($hidden) { + if (!is_null($hidden)) { + $this->appConfig->setAppValue('hidden', $hidden); + } + return array('status' => 'success', 'hidden' => $hidden); + } + } diff --git a/js/apporder.js b/js/apporder.js index 23e7ec5..d69f9fa 100644 --- a/js/apporder.js +++ b/js/apporder.js @@ -6,10 +6,13 @@ $(function () { app_menu.hide(); - var mapMenu = function(parent, order) { + var mapMenu = function(parent, order, hidden) { available_apps = {}; parent.find('li').each(function () { var id = $(this).find('a').attr('href'); + if(hidden.includes(id)){ + $(this).hide(); + } available_apps[id] = $(this); }); $.each(order, function (order, value) { @@ -17,21 +20,32 @@ $(function () { }); }; - // restore existing order - $.get(OC.generateUrl('/apps/apporder/getOrder'), function (data) { - var json = data.order; + var order_request = $.get(OC.generateUrl('/apps/apporder/getOrder')); + var hidden_request = $.get(OC.generateUrl('/apps/apporder/getHidden')); + + // restore existing order + $.when(order_request, hidden_request).done(function (order_data, hidden_data) { + var order_json = order_data[0].order; + var hidden_json = hidden_data[0].hidden; var order = []; + var hidden = []; try { - order = JSON.parse(json).reverse(); + order = JSON.parse(order_json).reverse(); } catch (e) { order = []; } + try { + hidden = JSON.parse(hidden_json); + } catch (e) { + hidden = []; + } + if (order.length === 0) { app_menu.show(); return; } - mapMenu($('#appmenu'), order); - mapMenu($('#apps').find('ul'), order); + mapMenu($('#appmenu'), order, hidden); + mapMenu($('#apps').find('ul'), order, hidden); app_menu.show(); }); @@ -61,4 +75,29 @@ $(function () { }); } }); + + $(".apporderhidden").change(function(){ + var hiddenList = []; + var url; + var type = $("#appsorter").data("type"); + + if(type === 'admin') { + url = OC.generateUrl('/apps/apporder/saveDefaultHidden'); + } else { + url = OC.generateUrl('/apps/apporder/savePersonalHidden'); + } + + $(".apporderhidden").each(function(i, el){ + if(!el.checked){ + hiddenList.push($(el).siblings('a').attr('href')) + } + }); + + var json = JSON.stringify(hiddenList); + $.post(url, { + hidden: json + }, function (data) { + //$(event.srcElement).effect("highlight", {}, 1000); + }); + }); }); diff --git a/templates/admin.php b/templates/admin.php index a876018..c4f8c1a 100644 --- a/templates/admin.php +++ b/templates/admin.php @@ -5,7 +5,7 @@ <ul id="appsorter" data-type="<?php p($_['type']); ?>"> <?php foreach($_['nav'] as $entry) { ?> <li> -<input type="checkbox"> + <input class="apporderhidden" type="checkbox" <?php if(!in_array($entry['href'],$_['hidden'])) {print_unescaped("checked");}?> > <img class="app-icon svg" alt="" src="<?php print_unescaped($entry['icon']); ?>"> <a href="<?php print_unescaped($entry['href']); ?>"> <?php echo $entry['name']; ?> @@ -67,4 +67,15 @@ class Util { return $result; } -}
\ No newline at end of file + public function getAppHidden() { + $hidden_user = $this->appConfig->getUserValue('hidden', $this->userId); + $hidden_default = $this->appConfig->getAppValue('hidden'); + if ($hidden_user !== null && $hidden_user !== "") { + $hidden = $hidden_user; + } else { + $hidden = $hidden_default; + } + return $hidden; + } + +} |