diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7ed448a..24d5413 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,11 @@
## [Unreleased]
+## 2.0.1
+### Fixed
+- fix #78: Top menu is broken - invisible apps are shown
+- fix #77: Update personal settings - HTTP error 412 (Precondition Failed)
+- fix js error on the personal settings page (undefined sortable)
+
## 2.0.0
### Fixed
- fix #66: removing usage of setInterval
diff --git a/appinfo/info.xml b/appinfo/info.xml
index dec246d..d48d084 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -26,7 +26,7 @@ If you like this application and if you want to support the development:
* [Donate with liberapay](https://liberapay.com/deblan)
* [Leave a comment](https://apps.nextcloud.com/apps/side_menu#comments)
]]>
- 2.0.0
+ 2.0.1
agpl
Simon Vieille
SideMenu
diff --git a/lib/Controller/PersonalSettingController.php b/lib/Controller/PersonalSettingController.php
index 99bc65a..90fb758 100644
--- a/lib/Controller/PersonalSettingController.php
+++ b/lib/Controller/PersonalSettingController.php
@@ -54,6 +54,7 @@ class PersonalSettingController extends Controller
/**
* @NoAdminRequired
+ * @NoCSRFRequired
*
* @param mixed $name
* @param mixed $value
diff --git a/src/admin.js b/src/admin.js
index 3058e24..2d63eca 100644
--- a/src/admin.js
+++ b/src/admin.js
@@ -21,16 +21,17 @@ const selector = '#side-menu-message'
const userConfig = (name, value, callbacks) => {
const url = OC.generateUrl('/apps/side_menu/personalSetting/valueSet')
- const formData = new FormData()
- formData.append('name', name)
- formData.append('value', value)
+ const formData = []
+
+ formData.push('name=' + encodeURIComponent(name))
+ formData.push('value=' + encodeURIComponent(value))
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
},
- body: formData
+ body: formData.join('&')
})
.then(callbacks.success)
.catch(callbacks.error)
@@ -190,13 +191,16 @@ document.addEventListener('DOMContentLoaded', () => {
placeholderClass: 'side-menu-setting-list-drop'
})
- sortable('#categories-list .side-menu-setting-list')[0].addEventListener('sortstop', (e) => {
- let value = []
+ try {
+ sortable('#categories-list .side-menu-setting-list')[0].addEventListener('sortstop', (e) => {
+ let value = []
- for (let item of document.querySelectorAll('#categories-list .side-menu-setting-list-item')) {
- value.push(item.getAttribute('data-id'))
- }
+ for (let item of document.querySelectorAll('#categories-list .side-menu-setting-list-item')) {
+ value.push(item.getAttribute('data-id'))
+ }
- document.querySelector('input[name="categories-order"]').value = JSON.stringify(value)
- })
+ document.querySelector('input[name="categories-order"]').value = JSON.stringify(value)
+ })
+ } catch (e) {
+ }
})
diff --git a/templates/js/_topMenuApps.js b/templates/js/_topMenuApps.js
index dee32c8..043eb58 100644
--- a/templates/js/_topMenuApps.js
+++ b/templates/js/_topMenuApps.js
@@ -103,7 +103,6 @@ const updateTopMenu = function() {
let k = 0
let notInHeader = 0
-
for (let app of appShown) {
const name = app.getAttribute('data-id')
const li = querySelector('#apps li[data-id=' + name + '].app-external-site')
@@ -199,8 +198,8 @@ const updateTopMenu = function() {
menuCache = menu.innerHTML + menu.nextSibling.innerHTML
}
-for (let timeout of [300, 500, 700, 900, 1100]) {
- setTimeout(updateTopMenu, timeout)
+for (let i = 0; i < 3000; i+= 100) {
+ setTimeout(updateTopMenu, i)
}
let resizeTimeout = null;
diff --git a/templates/settings/admin-form.php b/templates/settings/admin-form.php
index 2aa15fb..9b53d7d 100644
--- a/templates/settings/admin-form.php
+++ b/templates/settings/admin-form.php
@@ -40,7 +40,6 @@ $choicesSizes = [
];
?>
-