Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/juliushaertl/apporder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Bakkegaard <nickbakkegaard@gmail.com>2017-06-26 23:02:22 +0300
committerNick Bakkegaard <nickbakkegaard@gmail.com>2017-06-26 23:28:47 +0300
commitc6ebf1cbd25582d8389b0b900f7db74c0a5b7d34 (patch)
tree578495dbcc54bef7d0148cca6a41f645f89ca595
parent2133b39bce917466f3ebad6d2b5b8344b8105942 (diff)
basic implementation of hidden, still a lot to do though
-rw-r--r--appinfo/routes.php3
-rw-r--r--controller/settingscontroller.php47
-rw-r--r--js/apporder.js53
-rw-r--r--templates/admin.php2
-rw-r--r--util.php13
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']; ?>
diff --git a/util.php b/util.php
index af6a159..7d84bf3 100644
--- a/util.php
+++ b/util.php
@@ -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;
+ }
+
+}