Compare commits

...

7 Commits

Author SHA1 Message Date
Simon Vieille 0df8b97686 update PHP requirement
update app version
2024-07-10 19:51:51 +02:00
Simon Vieille 83cc15b1bb update changelog 2024-07-10 19:51:00 +02:00
Simon Vieille f2101f452d Merge pull request 'fix #354 and fix extra margin between the logo and the opener' (#355) from bugfix/issue354-opener into develop
Reviewed-on: https://gitnet.fr/deblan/side_menu/pulls/355
2024-07-10 19:50:18 +02:00
Simon Vieille 9ed36b6944 fix extra margin between the logo and the opener 2024-07-10 19:47:09 +02:00
Simon Vieille 827bbd7c70 fix #354: remove the opener when the menu is always displayed 2024-07-10 19:39:52 +02:00
Simon Vieille 73b21039b9 rewrite of the script to import config
allow mysql and sqlite
2024-07-10 19:29:51 +02:00
deblan b6275c8070 fix link to the documentation in forgejo issue template
Signed-off-by: deblan <contact@deblan.fr>
2024-07-09 16:43:04 +02:00
6 changed files with 80 additions and 17 deletions
+1 -1
View File
@@ -26,7 +26,7 @@ body:
id: configuration id: configuration
attributes: attributes:
label: Configuration label: Configuration
description: Export the configuration using the admin page and copy/paste here ([documentation](https://deblan.gitnet.page/side_menu_doc/tips/#export-the-configuration)). description: Export the configuration using the admin page and copy/paste here ([documentation](https://deblan.gitnet.page/side_menu_doc/docs/FAQ/export-config/)).
value: | value: |
``` ```
{ {
+5
View File
@@ -1,5 +1,10 @@
## [Unreleased] ## [Unreleased]
## 3.13.1
### Fixed
* fix #354: remove the opener when the menu is always displayed
* fix extra margin between the logo and the opener
## 3.13.0 ## 3.13.0
### Added ### Added
* show apps generated with Tables (fix #349) * show apps generated with Tables (fix #349)
+2 -2
View File
@@ -32,7 +32,7 @@ Notice
Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**. Because I believe in a free and decentralized Internet, [Gitnet](https://gitnet.fr) is **self-hosted at home**.
In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/). In case of downtime, you can download **Custom Menu** from [here](https://kim.deblan.fr/~side_menu/).
]]></description> ]]></description>
<version>3.13.0</version> <version>3.13.1</version>
<licence>agpl</licence> <licence>agpl</licence>
<author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author> <author mail="contact@deblan.fr" homepage="https://www.deblan.io/">Simon Vieille</author>
<namespace>SideMenu</namespace> <namespace>SideMenu</namespace>
@@ -55,7 +55,7 @@ In case of downtime, you can download **Custom Menu** from [here](https://kim.de
<screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png</screenshot> <screenshot>https://gitnet.fr/deblan/side_menu/raw/branch/master/screenshots/nc25_default_menu.png</screenshot>
<dependencies> <dependencies>
<nextcloud min-version="25" max-version="29"/> <nextcloud min-version="25" max-version="29"/>
<php min-version="7.4"/> <php min-version="8.0"/>
</dependencies> </dependencies>
<settings> <settings>
<admin>OCA\SideMenu\Settings\Admin</admin> <admin>OCA\SideMenu\Settings\Admin</admin>
+67 -13
View File
@@ -1,21 +1,75 @@
<?php <?php
/**
* Imports a json configuration into a sqlite database.
*
* Usage:
* php bin/import_config.php /path/to/config.json /path/to/owncloud.db
*/
$configFile = $argv[1]; function showUsageAndExit(int $code)
$databaseFile = $argv[2]; {
global $argv;
$content = file_get_contents($configFile); echo "${argv[0]} [--help] --config /path/to/config/config.php --file /path/to/config.json\n";
$config = json_decode($content, true);
$pdo = new \Pdo(sprintf('sqlite:%s', $databaseFile)); exit($code);
$stmt = $pdo->prepare('UPDATE oc_appconfig SET configvalue=:value WHERE configkey=:key and appid=:appId'); }
foreach ($config as $key => $value) { function value(string $shortName, string $longName, array $options, bool $required = true): ?string
{
$value = $options[$shortName] ?? $options[$longName] ?? null;
if (is_array($value)) {
echo "To much --{$longName}\n";
showUsageAndExit(1);
}
if (empty($value) && $required) {
echo "--{$longName} is missing\n";
showUsageAndExit(1);
}
return $value;
}
$options = getopt('t:f:c:h', [
'type:',
'file:',
'config:',
'help',
]);
$help = value('h', 'help', $options, false);
$config = value('c', 'config', $options);
$file = value('f', 'file', $options);
if (!is_readable($config) && !is_file($config)) {
echo "No such file: {$config}\n";
exit(1);
}
if (!is_readable($file) && !is_file($file)) {
echo "No such file: {$file}\n";
exit(1);
}
$appConfig = json_decode(file_get_contents($file), true);
require $config;
if ('mysql' === $CONFIG['dbtype']) {
$pdo = new \PDO(
'mysql:host='.$CONFIG['dbhost'].';dbname='.$CONFIG['dbname'],
$CONFIG['dbuser'],
$CONFIG['dbpassword']
);
} elseif ($CONFIG['dbtype']) {
$pdo = new \PDO(sprintf('sqlite:%s', $CONFIG['datadirectory'].'/owncloud.db'));
} else {
echo "dbtype is not valid\n";
exit(1);
}
$stmt = $pdo->prepare('UPDATE '.$CONFIG['dbtableprefix'].'appconfig SET configvalue=:value WHERE configkey=:key and appid=:appId');
foreach ($appConfig as $key => $value) {
$stmt->execute([ $stmt->execute([
'appId' => 'side_menu', 'appId' => 'side_menu',
'key' => $key, 'key' => $key,
+4
View File
@@ -89,6 +89,10 @@
.side-menu-opener span { .side-menu-opener span {
position: relative; position: relative;
left: 50px; left: 50px;
display: block;
width: 1px;
height: 1px;
overflow: hidden;
} }
.side-menu-opener:active, .side-menu-opener:focus { .side-menu-opener:active, .side-menu-opener:focus {
+1 -1
View File
@@ -23,7 +23,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
v-bind:label="settings.name" v-bind:label="settings.name"
v-bind:avatar="settings.avatar" /> v-bind:avatar="settings.avatar" />
<AppSearch v-model:search="search" /> <AppSearch v-model:search="search" />
<OpenerButton /> <OpenerButton v-if="!alwaysDisplayed" />
<Logo <Logo
v-if="!avatar && !alwaysDisplayed && logo" v-bind:classes="{'side-menu-logo': true, 'avatardiv': false}" v-if="!avatar && !alwaysDisplayed && logo" v-bind:classes="{'side-menu-logo': true, 'avatardiv': false}"
v-bind:image="logo" v-bind:image="logo"