Hide hidden folders (fix #45)
parent
8ae5c0fc3e
commit
ec397f3ae6
82532
js/memories-main.js
82532
js/memories-main.js
File diff suppressed because one or more lines are too long
|
@ -64,17 +64,7 @@ See the Apache Version 2.0 License for specific language governing permissions
|
|||
and limitations under the License.
|
||||
***************************************************************************** */
|
||||
|
||||
/*! For license information please see NcActionButton.js.LICENSE.txt */
|
||||
|
||||
/*! For license information please see NcActions.js.LICENSE.txt */
|
||||
|
||||
/*! For license information please see NcAppContent.js.LICENSE.txt */
|
||||
|
||||
/*! For license information please see NcAppNavigation.js.LICENSE.txt */
|
||||
|
||||
/*! For license information please see NcAppNavigationItem.js.LICENSE.txt */
|
||||
|
||||
/*! For license information please see NcAppNavigationSettings.js.LICENSE.txt */
|
||||
/*! For license information please see ncvuecomponents.js.LICENSE.txt */
|
||||
|
||||
/*! Hammer.JS - v2.0.7 - 2016-04-22
|
||||
* http://hammerjs.github.io/
|
||||
|
@ -140,6 +130,52 @@ and limitations under the License.
|
|||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 Georg Ehrke
|
||||
*
|
||||
* @author Georg Ehrke <georg-nextcloud@ehrke.email>
|
||||
*
|
||||
* @author Richard Steinmetz <richard@steinmetz.cloud>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 Georg Ehrke
|
||||
*
|
||||
* @author Georg Ehrke <georg-nextcloud@ehrke.email>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2019 John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
|
@ -162,6 +198,28 @@ and limitations under the License.
|
|||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @copyright Copyright (c) 2021 Christoph Wurst
|
||||
*
|
||||
* @author Christoph Wurst <christoph@winzerhof-wurst.at>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* @license nested-property https://github.com/cosmosio/nested-property
|
||||
*
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -12,6 +12,8 @@ use OCP\IConfig;
|
|||
use OCP\IUserSession;
|
||||
use OCP\Util;
|
||||
|
||||
use OCA\Memories\AppInfo\Application;
|
||||
|
||||
class PageController extends Controller {
|
||||
protected $userId;
|
||||
protected $appName;
|
||||
|
@ -53,9 +55,11 @@ class PageController extends Controller {
|
|||
$this->eventDispatcher->dispatchTyped(new LoadSidebar());
|
||||
$this->eventDispatcher->dispatchTyped(new LoadViewer());
|
||||
|
||||
|
||||
$timelinePath = \OCA\Memories\Util::getPhotosPath($this->config, $user->getUid());
|
||||
$uid = $user->getUid();
|
||||
$timelinePath = \OCA\Memories\Util::getPhotosPath($this->config, $uid);
|
||||
$this->initialState->provideInitialState('timelinePath', $timelinePath);
|
||||
$this->initialState->provideInitialState('showHidden', $this->config->getUserValue(
|
||||
$uid, Application::APPNAME, 'showHidden', false));
|
||||
|
||||
$response = new TemplateResponse($this->appName, 'main');
|
||||
return $response;
|
||||
|
|
|
@ -51,11 +51,10 @@
|
|||
|
||||
<script lang="ts">
|
||||
import { Component, Mixins } from 'vue-property-decorator';
|
||||
import NcContent from '@nextcloud/vue/dist/Components/NcContent';
|
||||
import NcAppContent from '@nextcloud/vue/dist/Components/NcAppContent';
|
||||
import NcAppNavigation from '@nextcloud/vue/dist/Components/NcAppNavigation';
|
||||
import NcAppNavigationItem from '@nextcloud/vue/dist/Components/NcAppNavigationItem';
|
||||
import NcAppNavigationSettings from '@nextcloud/vue/dist/Components/NcAppNavigationSettings';
|
||||
import {
|
||||
NcContent, NcAppContent, NcAppNavigation,
|
||||
NcAppNavigationItem, NcAppNavigationSettings,
|
||||
} from '@nextcloud/vue';
|
||||
|
||||
import Timeline from './components/Timeline.vue'
|
||||
import Settings from './components/Settings.vue'
|
||||
|
|
|
@ -24,9 +24,14 @@
|
|||
<div>
|
||||
<label for="timeline-path">{{ t('memories', 'Timeline Path') }}</label>
|
||||
<input id="timeline-path"
|
||||
v-model="timelinePath"
|
||||
v-model="config_timelinePath"
|
||||
type="text">
|
||||
|
||||
<NcCheckboxRadioSwitch :checked.sync="config_showHidden"
|
||||
type="switch">
|
||||
{{ t('memories', 'Show hidden folders') }}
|
||||
</NcCheckboxRadioSwitch>
|
||||
|
||||
<button @click="updateAll()">
|
||||
{{ t('memories', 'Update') }}
|
||||
</button>
|
||||
|
@ -46,9 +51,16 @@ import GlobalMixin from '../mixins/GlobalMixin';
|
|||
import { showError } from '@nextcloud/dialogs'
|
||||
import UserConfig from '../mixins/UserConfig'
|
||||
|
||||
@Component
|
||||
import { NcCheckboxRadioSwitch } from '@nextcloud/vue'
|
||||
|
||||
@Component({
|
||||
components: {
|
||||
NcCheckboxRadioSwitch,
|
||||
},
|
||||
})
|
||||
export default class Settings extends Mixins(UserConfig, GlobalMixin) {
|
||||
async updateAll() {
|
||||
await this.updateSetting('showHidden');
|
||||
const res = await this.updateSetting('timelinePath');
|
||||
if (res.status === 200) {
|
||||
window.location.reload();
|
||||
|
|
|
@ -118,15 +118,14 @@ import { IDay, IFolder, IHeadRow, IPhoto, IRow, IRowType, ITick } from "../types
|
|||
import { generateUrl } from '@nextcloud/router'
|
||||
import { showError } from '@nextcloud/dialogs'
|
||||
import GlobalMixin from '../mixins/GlobalMixin';
|
||||
import NcActions from '@nextcloud/vue/dist/Components/NcActions';
|
||||
import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton';
|
||||
import NcButton from '@nextcloud/vue/dist/Components/NcButton';
|
||||
import { NcActions, NcActionButton, NcButton } from '@nextcloud/vue';
|
||||
|
||||
import * as dav from "../services/DavRequests";
|
||||
import * as utils from "../services/Utils";
|
||||
import axios from '@nextcloud/axios'
|
||||
import Folder from "./Folder.vue";
|
||||
import Photo from "./Photo.vue";
|
||||
import UserConfig from "../mixins/UserConfig";
|
||||
|
||||
import Star from 'vue-material-design-icons/Star.vue';
|
||||
import Download from 'vue-material-design-icons/Download.vue';
|
||||
|
@ -165,7 +164,7 @@ for (const [key, value] of Object.entries(API_ROUTES)) {
|
|||
CheckCircle,
|
||||
}
|
||||
})
|
||||
export default class Timeline extends Mixins(GlobalMixin) {
|
||||
export default class Timeline extends Mixins(GlobalMixin, UserConfig) {
|
||||
/** Loading days response */
|
||||
private loading = 0;
|
||||
/** Main list of rows */
|
||||
|
@ -779,9 +778,19 @@ export default class Timeline extends Mixins(GlobalMixin) {
|
|||
delete photo.isfolder;
|
||||
}
|
||||
|
||||
this.list[rowIdx].photos.push(photo);
|
||||
// Move to next index of photo
|
||||
dataIdx++;
|
||||
|
||||
// Hidden folders
|
||||
if (!this.config_showHidden &&
|
||||
(photo.flag & this.c.FLAG_IS_FOLDER) &&
|
||||
(<IFolder>photo).name.startsWith('.'))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
this.list[rowIdx].photos.push(photo);
|
||||
|
||||
// Add row to day
|
||||
head.day.rows.add(row);
|
||||
}
|
||||
|
|
|
@ -30,7 +30,8 @@ const eventName = 'memories:user-config-changed'
|
|||
|
||||
@Component
|
||||
export default class UserConfig extends Vue {
|
||||
timelinePath = loadState('memories', 'timelinePath') || '';
|
||||
config_timelinePath = loadState('memories', 'timelinePath') || '';
|
||||
config_showHidden = loadState('memories', 'showHidden') === "true";
|
||||
|
||||
created() {
|
||||
subscribe(eventName, this.updateLocalSetting)
|
||||
|
@ -45,7 +46,7 @@ export default class UserConfig extends Vue {
|
|||
}
|
||||
|
||||
async updateSetting(setting: string) {
|
||||
const value = this[setting]
|
||||
const value = this['config_' + setting]
|
||||
// Long time save setting
|
||||
const res = await axios.put(generateUrl('apps/memories/api/config/' + setting), {
|
||||
value: value.toString(),
|
||||
|
|
Loading…
Reference in New Issue