mirror of
https://github.com/bpatrik/pigallery2.git
synced 2024-12-25 02:04:15 +02:00
migrating to bootstrap v4
This commit is contained in:
parent
b7d9b21e9e
commit
b3b3e63967
@ -21,6 +21,7 @@
|
||||
"styles": [
|
||||
"../node_modules/ng2-toastr/bundles/ng2-toastr.min.css",
|
||||
"../node_modules/bootstrap/dist/css/bootstrap.css",
|
||||
"../node_modules/open-iconic/font/css/open-iconic-bootstrap.css",
|
||||
"styles.css"
|
||||
],
|
||||
"scripts": [],
|
||||
|
@ -3,7 +3,6 @@
|
||||
[![Build Status](https://travis-ci.org/bpatrik/pigallery2.svg?branch=master)](https://travis-ci.org/bpatrik/pigallery2)
|
||||
[![Coverage Status](https://coveralls.io/repos/github/bpatrik/PiGallery2/badge.svg?branch=master)](https://coveralls.io/github/bpatrik/PiGallery2?branch=master)
|
||||
[![Heroku](https://heroku-badge.herokuapp.com/?app=pigallery2&style=flat)](https://pigallery2.herokuapp.com)
|
||||
[![Code Climate](https://codeclimate.com/github/bpatrik/pigallery2/badges/gpa.svg)](https://codeclimate.com/github/bpatrik/pigallery2)
|
||||
[![Dependency Status](https://david-dm.org/bpatrik/pigallery2.svg)](https://david-dm.org/bpatrik/pigallery2)
|
||||
[![devDependency Status](https://david-dm.org/bpatrik/pigallery2/dev-status.svg)](https://david-dm.org/bpatrik/pigallery2#info=devDependencies)
|
||||
|
||||
|
@ -18,7 +18,6 @@ export class GalleryMWs {
|
||||
|
||||
|
||||
public static async listDirectory(req: Request, res: Response, next: NextFunction) {
|
||||
console.log('listDirectory');
|
||||
const directoryName = req.params.directory || '/';
|
||||
const absoluteDirectoryName = path.join(ProjectPath.ImageFolder, directoryName);
|
||||
|
||||
@ -34,8 +33,6 @@ export class GalleryMWs {
|
||||
req.resultPipe = new ContentWrapper(null, null, true);
|
||||
return next();
|
||||
}
|
||||
console.log(req.session.user);
|
||||
console.log(directory);
|
||||
if (req.session.user.permissions &&
|
||||
req.session.user.permissions.length > 0 &&
|
||||
req.session.user.permissions[0] !== '/*') {
|
||||
|
@ -100,11 +100,6 @@ export class Server {
|
||||
keys: ['key1' + s4() + s4() + s4() + s4(), 'key2' + s4() + s4() + s4() + s4(), 'key3' + s4() + s4() + s4() + s4()]
|
||||
}));
|
||||
|
||||
/* this.app.use((req: Request, res: Response, next: NextFunction) => {
|
||||
res.setHeader('Accept-Ranges', 'none');
|
||||
res.setHeader('Connection', 'close');
|
||||
next();
|
||||
});*/
|
||||
|
||||
/**
|
||||
* Parse parameters in POST
|
||||
|
@ -44,5 +44,17 @@ export interface GPSMetadata {
|
||||
latitude?: number;
|
||||
longitude?: number;
|
||||
altitude?: number;
|
||||
|
||||
}
|
||||
|
||||
export module PhotoDTO {
|
||||
export const hasPositionData = (photo: PhotoDTO): boolean => {
|
||||
return !!photo.metadata.positionData &&
|
||||
!!(photo.metadata.positionData.city ||
|
||||
photo.metadata.positionData.state ||
|
||||
photo.metadata.positionData.country ||
|
||||
(photo.metadata.positionData.GPSData &&
|
||||
photo.metadata.positionData.GPSData.altitude &&
|
||||
photo.metadata.positionData.GPSData.latitude &&
|
||||
photo.metadata.positionData.GPSData.longitude));
|
||||
};
|
||||
}
|
||||
|
@ -1,11 +1,11 @@
|
||||
<app-frame>
|
||||
<div body class="container">
|
||||
|
||||
<div class="panel panel-default" *ngIf="notificationService.notifications.length>0">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" i18n>Server notifications</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="card mb-4" *ngIf="notificationService.notifications.length>0">
|
||||
<h5 class="card-header" i18n>
|
||||
Server notifications
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<ng-container *ngFor="let notification of notificationService.notifications">
|
||||
|
||||
<div class="alert alert-{{getCss(notification.type)}}" role="alert">
|
||||
@ -16,28 +16,26 @@
|
||||
</ng-container>
|
||||
</div>
|
||||
|
||||
<div class="panel-footer" i18n>
|
||||
<div class="card-footer" i18n>
|
||||
To dismiss these notifications, restart the server.
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-horizontal">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-10 col-xs-8 control-label" for="simplifiedMode" i18n>Mode</label>
|
||||
<div class="col-sm-2 col-xs-4">
|
||||
<bSwitch
|
||||
id="simplifiedMode"
|
||||
class="switch"
|
||||
name="simplifiedMode"
|
||||
[switch-off-color]="'warning'"
|
||||
[switch-on-color]="'primary'"
|
||||
[switch-inverse]="'inverse'"
|
||||
[switch-off-text]="text.Advanced"
|
||||
[switch-on-text]="text.Simplified"
|
||||
[switch-handle-width]="'100'"
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="simplifiedMode">
|
||||
</bSwitch>
|
||||
</div>
|
||||
<div class="form-group d-flex justify-content-end">
|
||||
<label class="control-label align-self-end mr-2" for="simplifiedMode" i18n>Mode</label>
|
||||
<bSwitch
|
||||
id="simplifiedMode"
|
||||
class="switch"
|
||||
name="simplifiedMode"
|
||||
[switch-off-color]="'warning'"
|
||||
[switch-on-color]="'primary'"
|
||||
[switch-inverse]="'inverse'"
|
||||
[switch-off-text]="text.Advanced"
|
||||
[switch-on-text]="text.Simplified"
|
||||
[switch-handle-width]="'100'"
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="simplifiedMode">
|
||||
</bSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<app-settings-basic [simplifiedMode]="simplifiedMode"></app-settings-basic>
|
||||
|
@ -47,6 +47,7 @@ import {InfoPanelLightboxComponent} from './gallery/lightbox/infopanel/info-pane
|
||||
import {MapSettingsComponent} from './settings/map/map.settings.component';
|
||||
import {TooltipModule} from 'ngx-bootstrap/tooltip';
|
||||
import {BsDropdownModule} from 'ngx-bootstrap/dropdown';
|
||||
import {CollapseModule} from 'ngx-bootstrap/collapse';
|
||||
import {ThumbnailSettingsComponent} from './settings/thumbnail/thumbanil.settings.component';
|
||||
import {SearchSettingsComponent} from './settings/search/search.settings.component';
|
||||
import {SettingsService} from './settings/settings.service';
|
||||
@ -90,6 +91,7 @@ export class CustomUrlSerializer implements UrlSerializer {
|
||||
}
|
||||
}
|
||||
|
||||
// use the require method provided by webpack
|
||||
declare const require;
|
||||
|
||||
export function translationsFactory(locale: string) {
|
||||
@ -109,6 +111,7 @@ export function translationsFactory(locale: string) {
|
||||
TooltipModule.forRoot(),
|
||||
ToastModule.forRoot(),
|
||||
ModalModule.forRoot(),
|
||||
CollapseModule.forRoot(),
|
||||
BsDropdownModule.forRoot(),
|
||||
AgmCoreModule.forRoot(),
|
||||
SlimLoadingBarModule.forRoot()
|
||||
@ -168,7 +171,13 @@ export function translationsFactory(locale: string) {
|
||||
useFactory: translationsFactory,
|
||||
deps: [LOCALE_ID]
|
||||
},
|
||||
I18n
|
||||
I18n,
|
||||
/*
|
||||
{provide: TRANSLATIONS, useValue: translationsFactory('en')},
|
||||
{provide: TRANSLATIONS_FORMAT, useValue: 'xlf'},
|
||||
{provide: LOCALE_ID, useValue: 'en'},
|
||||
{provide: MISSING_TRANSLATION_STRATEGY, useValue: MissingTranslationStrategy.Ignore},
|
||||
*/
|
||||
],
|
||||
bootstrap: [AppComponent]
|
||||
})
|
||||
|
@ -1,3 +1,7 @@
|
||||
nav {
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
@ -18,7 +22,7 @@ ng2-slim-loading-bar {
|
||||
.admin-link {
|
||||
padding-bottom: 0;
|
||||
padding-left: 0;
|
||||
font-size: 20px;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.divider-vertical:first-child {
|
||||
@ -26,10 +30,8 @@ ng2-slim-loading-bar {
|
||||
}
|
||||
|
||||
.navbar .divider-vertical {
|
||||
height: 30px;
|
||||
margin: 10px;
|
||||
border-right: 1px solid #ffffff;
|
||||
border-left: 1px solid #f2f2f2;
|
||||
margin: 5px 10px;
|
||||
border-left: 1px solid rgba(255, 255, 255, 0.5);
|
||||
}
|
||||
|
||||
.navbar-inverse .divider-vertical {
|
||||
@ -61,5 +63,9 @@ ng2-slim-loading-bar {
|
||||
|
||||
app-language {
|
||||
display: block;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.navbar-expand .navbar-nav .nav-link {
|
||||
padding-right: 1.0rem;
|
||||
padding-left: 1.0rem;
|
||||
}
|
||||
|
@ -1,55 +1,47 @@
|
||||
<ng2-slim-loading-bar [color]="'#337ab7'" [height]="'3px'"></ng2-slim-loading-bar>
|
||||
<nav class="navbar navbar-inverse navbar-static-top">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed"
|
||||
data-toggle="collapse" data-target="#navbar"
|
||||
aria-expanded="false" aria-controls="navbar"
|
||||
(click)="toggleState()">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" [routerLink]="['/gallery','/']"><img src="assets/icon_inv.png"
|
||||
style="max-height: 26px; display: inline;"/>
|
||||
{{title}}</a>
|
||||
</div>
|
||||
<div id="navbar" class="collapse navbar-collapse" [ngClass]="{ 'in': isIn }">
|
||||
<ul class="nav navbar-nav">$
|
||||
</ul>
|
||||
<nav class="navbar navbar-dark bg-dark navbar-expand-md">
|
||||
<a class="navbar-brand" [routerLink]="['/gallery','/']"
|
||||
[queryParams]="_shareService.isSharing() ? { sk: _shareService.getSharingKey() }:{}">
|
||||
<img src="assets/icon_inv.png" width="30" height="30" class="d-inline-block align-top" alt="">
|
||||
<strong>{{title}}</strong>
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav"
|
||||
aria-expanded="false" aria-label="Toggle navigation" (click)="toggleState()">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<ng-content select="[navbar]"></ng-content>
|
||||
<li class="divider-vertical">
|
||||
</li>
|
||||
<li *ngIf="authenticationRequired">
|
||||
<p class="navbar-text" *ngIf="user.value">
|
||||
<span class="glyphicon glyphicon-user" aria-hidden="true"></span> {{user.value.name}}</p>
|
||||
</li>
|
||||
<li *ngIf="isAdmin()">
|
||||
<a style="cursor: pointer"
|
||||
class="admin-link"
|
||||
[routerLink]="['/admin']">
|
||||
<span class="glyphicon glyphicon-wrench" aria-hidden="true"></span>
|
||||
<span *ngIf="notificationService.notifications.length>0" class="badge">{{notificationService.notifications.length}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<app-language class="navbar-btn" isDark="true"></app-language>
|
||||
</li>
|
||||
<li *ngIf="authenticationRequired">
|
||||
<button class="btn btn-default navbar-btn"
|
||||
style="cursor: pointer"
|
||||
(click)="logout()">
|
||||
<ng-container i18n>Logout</ng-container>
|
||||
<span class="glyphicon glyphicon-log-out" aria-hidden="true"></span>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="collapse navbar-collapse" id="navbarNav" [collapse]="collapsed">
|
||||
<ul class="navbar-nav navbar-right ml-auto">
|
||||
<ng-content select="[navbar]"></ng-content>
|
||||
<li class="nav-item divider-vertical">
|
||||
</li>
|
||||
<li class="nav-item mr-2 ml-2" *ngIf="authenticationRequired" style=" white-space: nowrap;">
|
||||
<span class="navbar-text" *ngIf="user.value">
|
||||
<span class="oi oi-person"></span> {{user.value.name}}</span>
|
||||
</li>
|
||||
<li class="nav-item" *ngIf="isAdmin()">
|
||||
<a style="cursor: pointer;"
|
||||
class="nav-link admin-link"
|
||||
[routerLink]="['/admin']">
|
||||
<span class="oi oi-wrench"></span>
|
||||
<span *ngIf="notificationService.notifications.length>0" class="badge">{{notificationService.notifications.length}}</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item ml-2">
|
||||
<app-language class="navbar-btn" isDark="true"></app-language>
|
||||
</li>
|
||||
<li class="nav-item ml-2" *ngIf="authenticationRequired">
|
||||
<button class="btn btn-default navbar-btn"
|
||||
style="cursor: pointer"
|
||||
(click)="logout()">
|
||||
<span class="oi oi-account-logout"></span>
|
||||
<ng-container i18n>Logout</ng-container>
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div><!--/.nav-collapse -->
|
||||
</div>
|
||||
</div><!--/.nav-collapse -->
|
||||
|
||||
</nav>
|
||||
<ng-content select="[body]"></ng-content>
|
||||
|
@ -5,6 +5,7 @@ import {UserDTO, UserRoles} from '../../../common/entities/UserDTO';
|
||||
import {Config} from '../../../common/config/public/Config';
|
||||
import {BehaviorSubject} from 'rxjs/BehaviorSubject';
|
||||
import {NotificationService} from '../model/notification.service';
|
||||
import {ShareService} from '../gallery/share.service';
|
||||
|
||||
@Component({
|
||||
selector: 'app-frame',
|
||||
@ -18,17 +19,18 @@ export class FrameComponent {
|
||||
user: BehaviorSubject<UserDTO>;
|
||||
authenticationRequired = false;
|
||||
public title: string;
|
||||
isIn = false;
|
||||
collapsed = true;
|
||||
|
||||
constructor(private _authService: AuthenticationService,
|
||||
public notificationService: NotificationService) {
|
||||
public notificationService: NotificationService,
|
||||
public _shareService: ShareService) {
|
||||
this.user = this._authService.user;
|
||||
this.authenticationRequired = Config.Client.authenticationRequired;
|
||||
this.title = Config.Client.applicationTitle;
|
||||
}
|
||||
|
||||
toggleState() { // click handler
|
||||
this.isIn = !this.isIn;
|
||||
this.collapsed = !this.collapsed;
|
||||
}
|
||||
|
||||
isAdmin() {
|
||||
|
@ -57,6 +57,10 @@ export class Photo extends IconPhoto {
|
||||
|
||||
}
|
||||
|
||||
hasPositionData(): boolean {
|
||||
return PhotoDTO.hasPositionData(this.photo);
|
||||
}
|
||||
|
||||
getThumbnailPath() {
|
||||
const size = this.getThumbnailSize();
|
||||
return Utils.concatUrls(Config.Client.urlBase,
|
||||
|
@ -9,9 +9,8 @@
|
||||
<div class="photo" *ngIf="thumbnail && thumbnail.Available"
|
||||
[style.background-image]="getSanitizedThUrl()"></div>
|
||||
|
||||
<span *ngIf="!thumbnail || !thumbnail.Available" class="glyphicon glyphicon-folder-open no-image"
|
||||
<span *ngIf="!thumbnail || !thumbnail.Available" class="oi oi-folder no-image"
|
||||
aria-hidden="true">
|
||||
|
||||
</span>
|
||||
</div>
|
||||
<!--Info box -->
|
||||
|
@ -3,25 +3,25 @@
|
||||
|
||||
<ng-container navbar>
|
||||
|
||||
<li *ngIf="countDown">
|
||||
<p class="navbar-text">
|
||||
<li class="nav-item" *ngIf="countDown">
|
||||
<span class="navbar-text">
|
||||
<ng-container i18n>Link availability</ng-container>
|
||||
: {{countDown.day}}
|
||||
<ng-container i18n>days</ng-container>
|
||||
,
|
||||
{{("0"+countDown.hour).slice(-2)}}:{{("0"+countDown.minute).slice(-2)}}:{{("0"+countDown.second).slice(-2)}}
|
||||
</p>
|
||||
</span>
|
||||
</li>
|
||||
<li *ngIf="showSearchBar">
|
||||
<li class="nav-item" *ngIf="showSearchBar">
|
||||
<app-gallery-search #search></app-gallery-search>
|
||||
</li>
|
||||
<li *ngIf="showShare">
|
||||
<li class="nav-item" *ngIf="showShare">
|
||||
<app-gallery-share></app-gallery-share>
|
||||
</li>
|
||||
</ng-container>
|
||||
|
||||
|
||||
<div body class="container" style="width: 100%; padding:0" *ngIf="_galleryService.content.value.directory">
|
||||
<div body class="container-fluid" style="width: 100%; padding:0" *ngIf="_galleryService.content.value.directory">
|
||||
<app-gallery-navbar [directory]="_galleryService.content.value.directory"></app-gallery-navbar>
|
||||
|
||||
<div class="directories">
|
||||
@ -34,7 +34,7 @@
|
||||
[lightbox]="lightbox"></app-gallery-grid>
|
||||
</div>
|
||||
|
||||
<div body class="container" style="width: 100%; padding:0" *ngIf="_galleryService.content.value.searchResult">
|
||||
<div body class="container-fluid" style="width: 100%; padding:0" *ngIf="_galleryService.content.value.searchResult">
|
||||
<div class="alert alert-info" role="alert"
|
||||
*ngIf="_galleryService.content.value.searchResult.resultOverflow == true" i18n>
|
||||
Too many results to show. Refine your search.
|
||||
@ -43,10 +43,10 @@
|
||||
<li class="active">
|
||||
<ng-container i18n>Searching for:</ng-container>
|
||||
<span [ngSwitch]="_galleryService.content.value.searchResult.searchType">
|
||||
<span *ngSwitchCase="0" class="glyphicon glyphicon-picture"></span>
|
||||
<span *ngSwitchCase="1" class="glyphicon glyphicon-folder-open"></span>
|
||||
<span *ngSwitchCase="2" class="glyphicon glyphicon-tag"></span>
|
||||
<span *ngSwitchCase="3" class="glyphicon glyphicon-map-marker"></span>
|
||||
<span *ngSwitchCase="SearchTypes.image" class="oi oi-image"></span>
|
||||
<span *ngSwitchCase="SearchTypes.directory" class="oi oi-folder"></span>
|
||||
<span *ngSwitchCase="SearchTypes.keyword" class="oi oi-tag"></span>
|
||||
<span *ngSwitchCase="SearchTypes.position" class="oi oi-map-marker"></span>
|
||||
</span>
|
||||
<strong>{{_galleryService.content.value.searchResult.searchText}}</strong>
|
||||
</li>
|
||||
|
@ -37,6 +37,7 @@ export class GalleryComponent implements OnInit, OnDestroy {
|
||||
};
|
||||
public countDown = null;
|
||||
public mapEnabled = true;
|
||||
SearchTypes: any = [];
|
||||
|
||||
constructor(public _galleryService: GalleryService,
|
||||
private _authService: AuthenticationService,
|
||||
@ -45,6 +46,7 @@ export class GalleryComponent implements OnInit, OnDestroy {
|
||||
private _route: ActivatedRoute,
|
||||
private _navigation: NavigationService) {
|
||||
this.mapEnabled = Config.Client.Map.enabled;
|
||||
this.SearchTypes = SearchTypes;
|
||||
|
||||
PageHelper.showScrollY();
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
<div class="static" *ngIf="animate == false">
|
||||
<span class="glyphicon"
|
||||
[ngClass]="error ? 'glyphicon-warning-sign' : 'glyphicon-picture'" aria-hidden="true">
|
||||
<span class="oi"
|
||||
[ngClass]="error ? 'oi-warning' : 'oi-image'" aria-hidden="true">
|
||||
</span>
|
||||
</div>
|
||||
<div class="sk-cube-grid animate" *ngIf="animate == true">
|
||||
|
@ -15,8 +15,8 @@
|
||||
[style.width.px]="container.nativeElement.offsetWidth">
|
||||
<div class="photo-name">{{gridPhoto.photo.name}}</div>
|
||||
|
||||
<div class="photo-position" *ngIf="gridPhoto.photo.metadata.positionData">
|
||||
<span class="glyphicon glyphicon-map-marker"></span>
|
||||
<div class="photo-position" *ngIf="gridPhoto.hasPositionData()">
|
||||
<span class="oi oi-map-marker"></span>
|
||||
<ng-template [ngIf]="getPositionText()">
|
||||
<a [routerLink]="['/search', getPositionText(), {type:SearchTypes[SearchTypes.position]}]"
|
||||
*ngIf="searchEnabled">
|
||||
|
@ -69,6 +69,7 @@ export class GalleryPhotoComponent implements IRenderable, OnInit, OnDestroy {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
getPositionText(): string {
|
||||
if (!this.gridPhoto) {
|
||||
return '';
|
||||
|
@ -21,6 +21,8 @@
|
||||
|
||||
.details-sub {
|
||||
color: #555;
|
||||
padding: 0;
|
||||
font-size: 0.875rem;
|
||||
}
|
||||
|
||||
.details-sub div {
|
||||
@ -39,7 +41,6 @@
|
||||
}
|
||||
|
||||
.close {
|
||||
margin-top: 5px;
|
||||
margin-right: 12px;
|
||||
font-size: 36px;
|
||||
margin: 0;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
@ -1,74 +1,75 @@
|
||||
<div class="content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" (click)="close()" aria-label="Close"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<h1 class="modal-title" i18n>Info</h1>
|
||||
<h2 class="modal-title" i18n>Info</h2>
|
||||
<button type="button" class="close" (click)="close()" aria-label="Close">
|
||||
<span class="oi oi-x" aria-hidden="true"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<span class="details-icon glyphicon glyphicon-picture"></span>
|
||||
<div class="col-2">
|
||||
<span class="details-icon oi oi-image"></span>
|
||||
</div>
|
||||
<div class="col-xs-10">
|
||||
<div class="col-10">
|
||||
<div class="details-main">
|
||||
{{photo.name}}
|
||||
</div>
|
||||
<div class="details-sub">
|
||||
<div class="col-xs-4">{{photo.metadata.size.width}} x {{photo.metadata.size.height}}</div>
|
||||
<div class="col-xs-4">{{calcMpx()}}MP</div>
|
||||
<div class="col-xs-4" *ngIf="photo.metadata.fileSize">{{calcFileSize()}}</div>
|
||||
<div class="details-sub row">
|
||||
<div class="col-4">{{photo.metadata.size.width}} x {{photo.metadata.size.height}}</div>
|
||||
<div class="col-4">{{calcMpx()}}MP</div>
|
||||
<div class="col-4" *ngIf="photo.metadata.fileSize">{{calcFileSize()}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<span class="details-icon glyphicon glyphicon-calendar"></span>
|
||||
<div class="col-2">
|
||||
<span class="details-icon oi oi-calendar"></span>
|
||||
</div>
|
||||
<div class="col-xs-10">
|
||||
<div class="col-10">
|
||||
<div class="details-main">
|
||||
{{getDate()}}
|
||||
<ng-container *ngIf="getYear() !== getCurrentYear()">
|
||||
,{{getYear()}}
|
||||
</ng-container>
|
||||
</div>
|
||||
<div class="details-sub">
|
||||
<div class="col-xs-12">{{getDay()}}, {{getTime()}}</div>
|
||||
<div class="details-sub row">
|
||||
<div class="col-12">{{getDay()}}, {{getTime()}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<span class="details-icon glyphicon glyphicon-camera"></span>
|
||||
<div class="col-2">
|
||||
<span class="details-icon oi oi-camera-slr"></span>
|
||||
</div>
|
||||
<div class="col-xs-10">
|
||||
<div class="col-10">
|
||||
<div class="details-main">
|
||||
{{photo.metadata.cameraData.model || photo.metadata.cameraData.make || "Camera"}}
|
||||
</div>
|
||||
<div class="details-sub">
|
||||
<div class="col-xs-3" *ngIf="photo.metadata.cameraData.ISO">ISO{{photo.metadata.cameraData.ISO}}</div>
|
||||
<div class="col-xs-3" *ngIf="photo.metadata.cameraData.fStop">f/{{photo.metadata.cameraData.fStop}}</div>
|
||||
<div class="col-xs-3" *ngIf="photo.metadata.cameraData.exposure">
|
||||
<div class="details-sub row">
|
||||
<div class="col-3" *ngIf="photo.metadata.cameraData.ISO">ISO{{photo.metadata.cameraData.ISO}}</div>
|
||||
<div class="col-3" *ngIf="photo.metadata.cameraData.fStop">f/{{photo.metadata.cameraData.fStop}}</div>
|
||||
<div class="col-3" *ngIf="photo.metadata.cameraData.exposure">
|
||||
{{toFraction(photo.metadata.cameraData.exposure)}}s
|
||||
</div>
|
||||
<div class="col-xs-3" *ngIf="photo.metadata.cameraData.focalLength">
|
||||
<div class="col-3" *ngIf="photo.metadata.cameraData.focalLength">
|
||||
{{photo.metadata.cameraData.focalLength}}mm
|
||||
</div>
|
||||
<div class="col-xs-12" *ngIf="photo.metadata.cameraData.lens">{{photo.metadata.cameraData.lens}}</div>
|
||||
<div class="col-12" *ngIf="photo.metadata.cameraData.lens">{{photo.metadata.cameraData.lens}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<span class="details-icon glyphicon glyphicon-map-marker"></span>
|
||||
<div class="row" *ngIf="hasPositionData()">
|
||||
<div class="col-2">
|
||||
<span class="details-icon oi oi-map-marker"></span>
|
||||
</div>
|
||||
<div class="col-xs-10">
|
||||
<div class="col-10">
|
||||
<div class="details-main">
|
||||
{{getPositionText() || "Position"}}
|
||||
</div>
|
||||
<div class="details-sub" *ngIf="hasGPS()">
|
||||
<div class="col-xs-12">
|
||||
<div class="details-sub row" *ngIf="hasGPS()">
|
||||
<div class="col-12">
|
||||
{{photo.metadata.positionData.GPSData.latitude.toFixed(3)}},
|
||||
{{photo.metadata.positionData.GPSData.longitude.toFixed(3)}}
|
||||
</div>
|
||||
|
@ -64,6 +64,10 @@ export class InfoPanelLightboxComponent {
|
||||
return '1/' + (1 / f);
|
||||
}
|
||||
|
||||
hasPositionData(): boolean {
|
||||
return PhotoDTO.hasPositionData(this.photo);
|
||||
}
|
||||
|
||||
hasGPS() {
|
||||
return this.photo.metadata.positionData && this.photo.metadata.positionData.GPSData &&
|
||||
this.photo.metadata.positionData.GPSData.latitude && this.photo.metadata.positionData.GPSData.longitude;
|
||||
@ -74,12 +78,12 @@ export class InfoPanelLightboxComponent {
|
||||
return '';
|
||||
}
|
||||
let str = this.photo.metadata.positionData.city ||
|
||||
this.photo.metadata.positionData.state;
|
||||
this.photo.metadata.positionData.state || '';
|
||||
|
||||
if (str.length !== 0) {
|
||||
str += ', ';
|
||||
}
|
||||
str += this.photo.metadata.positionData.country;
|
||||
str += this.photo.metadata.positionData.country || '';
|
||||
|
||||
return str;
|
||||
}
|
||||
|
@ -22,6 +22,9 @@ app-gallery-lightbox-photo {
|
||||
height: 100%; /* Full height */
|
||||
background-color: black;
|
||||
transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-moz-transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.navigation-arrow {
|
||||
@ -48,6 +51,9 @@ app-gallery-lightbox-photo {
|
||||
position: fixed;
|
||||
color: white;
|
||||
transition: width 0.3s ease-in-out, opacity 1s;
|
||||
-webkit-transition: width 0.3s ease-in-out, opacity 1s;
|
||||
-o-transition: width 0.3s ease-in-out, opacity 1s;
|
||||
-moz-transition: width 0.3s ease-in-out, opacity 1s;
|
||||
}
|
||||
|
||||
#controllers-container.dim-controls {
|
||||
@ -127,4 +133,7 @@ app-info-panel {
|
||||
right: 0;
|
||||
top: 0;
|
||||
transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
-moz-transition: all 0.3s ease-in-out;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
@ -19,44 +19,50 @@
|
||||
<div class="controls controls-top">
|
||||
<a *ngIf="activePhoto" [href]="activePhoto.gridPhoto.getPhotoPath()"
|
||||
[download]="activePhoto.gridPhoto.photo.name">
|
||||
<span class="glyphicon glyphicon-download-alt highlight control-button"
|
||||
<span class="oi oi-data-transfer-download highlight control-button"
|
||||
title="download" i18n-title></span>
|
||||
</a>
|
||||
<span class="glyphicon glyphicon-info-sign highlight control-button" (click)="toggleInfoPanel()"
|
||||
<span class="oi oi-info highlight control-button"
|
||||
(click)="toggleInfoPanel()"
|
||||
title="info" i18n-title></span>
|
||||
|
||||
<span class=" glyphicon glyphicon-resize-small highlight control-button"
|
||||
<span class="oi oi-fullscreen-exit highlight control-button"
|
||||
*ngIf="fullScreenService.isFullScreenEnabled()"
|
||||
(click)="fullScreenService.exitFullScreen()" title="toggle fullscreen" i18n-title></span>
|
||||
(click)="fullScreenService.exitFullScreen()"
|
||||
title="toggle fullscreen" i18n-title>
|
||||
|
||||
<span class="glyphicon glyphicon-fullscreen highlight control-button"
|
||||
</span>
|
||||
|
||||
<span class="oi oi-fullscreen-enter highlight control-button"
|
||||
*ngIf="!fullScreenService.isFullScreenEnabled()"
|
||||
(click)="fullScreenService.showFullScreen(root)" title="toggle fullscreen" i18n-title></span>
|
||||
(click)="fullScreenService.showFullScreen(root)"
|
||||
title="toggle fullscreen" i18n-title>
|
||||
</span>
|
||||
|
||||
<span class="glyphicon glyphicon-remove highlight control-button" (click)="hide()" title="close"
|
||||
<span class="oi oi-x highlight control-button" (click)="hide()" title="close"
|
||||
i18n-title></span>
|
||||
</div>
|
||||
|
||||
<div class="navigation-arrow highlight"
|
||||
*ngIf="navigation.hasPrev" title="key: left arrow" id="leftArrow" i18n-title
|
||||
(click)="prevImage()"><span
|
||||
class="glyphicon glyphicon-chevron-left"></span></div>
|
||||
class="oi oi-chevron-left"></span></div>
|
||||
<div class="navigation-arrow highlight"
|
||||
*ngIf="navigation.hasNext" title="key: right arrow" id="rightArrow" i18n-title
|
||||
(click)="nextImage()"><span
|
||||
class="glyphicon glyphicon-chevron-right"></span></div>
|
||||
class="oi oi-chevron-right"></span></div>
|
||||
|
||||
<div class="controls controls-playback">
|
||||
<span class="glyphicon glyphicon-pause highlight control-button"
|
||||
<span class="oi oi-media-pause highlight control-button"
|
||||
[ngClass]="playBackState == 0 ? 'button-disabled':''"
|
||||
(click)="pause()"
|
||||
title="pause"></span>
|
||||
<span
|
||||
class="glyphicon glyphicon-play highlight control-button"
|
||||
class="oi oi-media-play highlight control-button"
|
||||
[ngClass]="playBackState == 1 ? 'button-active':''"
|
||||
(click)="play()"
|
||||
title="auto play"></span>
|
||||
<span class="glyphicon glyphicon-forward highlight control-button"
|
||||
<span class="oi oi-media-skip-forward highlight control-button"
|
||||
[ngClass]="playBackState == 2 ? 'button-active':''"
|
||||
(click)="fastForward()"
|
||||
title="fast auto play"></span>
|
||||
|
@ -11,6 +11,9 @@
|
||||
align-items: center; /* add to align vertical */
|
||||
cursor: pointer;
|
||||
transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-moz-transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.sebm-google-map-container {
|
||||
@ -27,6 +30,9 @@
|
||||
height: 100%; /* Full height */
|
||||
background-color: black;
|
||||
transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-moz-transition: all 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
#controllers-container {
|
||||
|
@ -27,8 +27,8 @@
|
||||
[style.width.px]="photo.preview.width"
|
||||
[style.height.px]="photo.preview.height"
|
||||
*ngIf="!photo.preview.thumbnail.Src">
|
||||
<span class="glyphicon"
|
||||
[ngClass]="photo.preview.thumbnail.Error ? 'glyphicon-warning-sign' : 'glyphicon-picture'"
|
||||
<span class="oi"
|
||||
[ngClass]="photo.preview.thumbnail.Error ? 'oi-warning' : 'oi-picture'"
|
||||
aria-hidden="true">
|
||||
</span>
|
||||
</div>
|
||||
@ -41,17 +41,17 @@
|
||||
<div id="controllers-container" *ngIf="visible">
|
||||
<div id="controls">
|
||||
<span>
|
||||
<span class=" glyphicon glyphicon-resize-small highlight"
|
||||
<span class="oi oi-fullscreen-exit highlight"
|
||||
*ngIf="fullScreenService.isFullScreenEnabled()"
|
||||
(click)="fullScreenService.exitFullScreen()" title="toggle fullscreen"></span>
|
||||
</span>
|
||||
<span>
|
||||
<span class="glyphicon glyphicon-fullscreen highlight"
|
||||
<span class="oi oi-fullscreen-enter highlight"
|
||||
*ngIf="!fullScreenService.isFullScreenEnabled()"
|
||||
(click)="fullScreenService.showFullScreen(root)" title="toggle fullscreen"></span>
|
||||
</span>
|
||||
<span>
|
||||
<span class="glyphicon glyphicon-remove highlight" (click)="hide()" title="close"></span>
|
||||
<span class="oi oi-x highlight" (click)="hide()" title="close"></span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
@ -1,8 +1,9 @@
|
||||
<ol id="directory-path" class="breadcrumb">
|
||||
<li *ngFor="let path of routes">
|
||||
<a *ngIf="path.route" [routerLink]="['/gallery',path.route]"
|
||||
[queryParams]="_shareService.isSharing() ? { sk: _shareService.getSharingKey() }:{}">{{path.name}}</a>
|
||||
<span *ngIf="!path.route">{{path.name}}</span>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol id="directory-path" class="breadcrumb">
|
||||
<li *ngFor="let path of routes" class="breadcrumb-item">
|
||||
<a *ngIf="path.route" [routerLink]="['/gallery',path.route]"
|
||||
[queryParams]="_shareService.isSharing() ? { sk: _shareService.getSharingKey() }:{}">{{path.name}}</a>
|
||||
<ng-container *ngIf="!path.route">{{path.name}}</ng-container>
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
|
@ -28,7 +28,7 @@
|
||||
}
|
||||
|
||||
.autocomplete-item:hover {
|
||||
background-color: #337ab7;
|
||||
background-color: #007bff;
|
||||
}
|
||||
|
||||
.autocomplete-item:hover a {
|
||||
@ -42,5 +42,5 @@
|
||||
}
|
||||
|
||||
form {
|
||||
padding-right: 50px;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<form class="navbar-form" role="search" #SearchForm="ngForm">
|
||||
<div class="input-group">
|
||||
<input type="text"
|
||||
class="form-control"
|
||||
class="form-control "
|
||||
i18n-placeholder
|
||||
placeholder="Search"
|
||||
(keyup)="onSearchChange($event)"
|
||||
@ -21,10 +21,10 @@
|
||||
<div class="autocomplete-item" *ngFor="let item of autoCompleteItems">
|
||||
<a [routerLink]="['/search', item.text, {type: SearchTypes[item.type]}]">
|
||||
<span [ngSwitch]="item.type">
|
||||
<span *ngSwitchCase="0" class="glyphicon glyphicon-picture"></span>
|
||||
<span *ngSwitchCase="1" class="glyphicon glyphicon-folder-open"></span>
|
||||
<span *ngSwitchCase="2" class="glyphicon glyphicon-tag"></span>
|
||||
<span *ngSwitchCase="3" class="glyphicon glyphicon-map-marker"></span>
|
||||
<span *ngSwitchCase="SearchTypes.image" class="oi oi-image"></span>
|
||||
<span *ngSwitchCase="SearchTypes.directory" class="oi oi-folder"></span>
|
||||
<span *ngSwitchCase="SearchTypes.keyword" class="oi oi-tag"></span>
|
||||
<span *ngSwitchCase="SearchTypes.position" class="oi oi-map-marker"></span>
|
||||
</span>
|
||||
{{item.preText}}<strong>{{item.highLightText}}</strong>{{item.postText}}
|
||||
</a>
|
||||
@ -32,8 +32,8 @@
|
||||
</div>
|
||||
|
||||
<div class="input-group-btn" style="display: block">
|
||||
<button class="btn btn-default dropdown-toggle" type="button" (click)="onSearch()"><i
|
||||
class="glyphicon glyphicon-search"></i>
|
||||
<button class="btn btn-default" type="button" (click)="onSearch()">
|
||||
<span class="oi oi-magnifying-glass"></span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -72,7 +72,6 @@ export class GallerySearchComponent implements OnDestroy {
|
||||
}
|
||||
|
||||
|
||||
|
||||
public setMouseOverAutoComplete(value: boolean) {
|
||||
this.mouseOverAutoComplete = value;
|
||||
}
|
||||
|
@ -10,3 +10,4 @@
|
||||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
<button id="shareButton" class="btn btn-default navbar-btn btn-link"
|
||||
<button id="shareButton" class="nav-link btn btn-default btn-link"
|
||||
type="button" [disabled]="!enabled" (click)="showModal()">
|
||||
<span class="glyphicon glyphicon-share-alt"></span>
|
||||
<span class="oi oi-share"></span>
|
||||
<ng-container i18n>Share</ng-container>
|
||||
</button>
|
||||
|
||||
@ -10,16 +10,17 @@
|
||||
tabindex="-1" role="dialog" aria-labelledby="shareModalLabel"
|
||||
[config]="{ backdrop: false }"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" (click)="hideModal()" aria-label="Close"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="shareModalLabel" i18n>Share</h4>
|
||||
<h5 class="modal-title" id="shareModalLabel" i18n>Share</h5>
|
||||
<button type="button" class="close" (click)="hideModal()" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-sm-10">
|
||||
<div class="col-9">
|
||||
<input id="shareLink"
|
||||
name="shareLink"
|
||||
placeholder="link"
|
||||
@ -27,20 +28,20 @@
|
||||
type="text"
|
||||
[ngModel]="url">
|
||||
</div>
|
||||
<div class="col-sm-2 pull-right">
|
||||
<div class="col-3">
|
||||
<button id="copyButton" name="copyButton"
|
||||
ngxClipboard [cbContent]="url"
|
||||
(cbOnSuccess)="onCopy()"
|
||||
class="btn btn-primary" i18n>Copy
|
||||
class="btn btn-primary btn-block" i18n>Copy
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<hr/>
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="col-4">
|
||||
<label class="control-label" i18n>Sharing:</label>
|
||||
</div>
|
||||
<div class="col-sm-9">
|
||||
<div class="col-8">
|
||||
<input disabled type="text"
|
||||
class="full-width form-control"
|
||||
[ngModel]="currentDir">
|
||||
@ -48,27 +49,33 @@
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="col-4">
|
||||
<label class="control-label" i18n>Include subfolders:</label>
|
||||
</div>
|
||||
<div class="col-sm-4">
|
||||
<input id="recursiveShareBox"
|
||||
type="checkbox"
|
||||
(change)="update()"
|
||||
[(ngModel)]="input.includeSubfolders"
|
||||
checked="checked"
|
||||
value="remember-me">
|
||||
<div class="col-8">
|
||||
<bSwitch
|
||||
class="switch"
|
||||
name="includeSubfolders"
|
||||
[switch-on-color]="'success'"
|
||||
[switch-inverse]="'inverse'"
|
||||
[switch-off-text]="text.No"
|
||||
[switch-on-text]="text.Yes"
|
||||
[switch-handle-width]="'100'"
|
||||
[switch-label-width]="'20'"
|
||||
(change)="update()"
|
||||
[(ngModel)]="input.includeSubfolders">
|
||||
</bSwitch>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="col-4">
|
||||
<label class="control-label">
|
||||
<ng-container i18n>Password</ng-container>
|
||||
:
|
||||
</label>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="col-8">
|
||||
<input id="password"
|
||||
class="form-control"
|
||||
type="password"
|
||||
@ -80,21 +87,21 @@
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-3">
|
||||
<div class="col-4">
|
||||
<label class="control-label" i18n>Valid:</label>
|
||||
</div>
|
||||
<div class="col-sm-3" style="padding-right: 1px">
|
||||
<div class="col-4" style="padding-right: 1px">
|
||||
<input class="form-control" [(ngModel)]="input.valid.amount" (change)="update()"
|
||||
name="validAmount"
|
||||
type="number" min="0" step="1"/>
|
||||
</div>
|
||||
<div class="col-sm-3" style="padding-left: 1px">
|
||||
<select class="form-control col-md-3" [(ngModel)]="input.valid.type" (change)="update()" name="validType"
|
||||
<div class="col-4" style="padding-left: 1px">
|
||||
<select class="form-control" [(ngModel)]="input.valid.type" (change)="update()" name="validType"
|
||||
required>
|
||||
<option value="{{ValidityTypes.Minutes}}" i18n>Minutes</option>
|
||||
<option value="{{ValidityTypes.Hours}}" i18n>Hours</option>
|
||||
<option value="{{ValidityTypes.Days}}" i18n>Days</option>
|
||||
<option value="{{ValidityTypes.Months}}" i18n>Months</option>
|
||||
<option [ngValue]="ValidityTypes.Minutes" i18n>Minutes</option>
|
||||
<option [ngValue]="ValidityTypes.Hours" i18n>Hours</option>
|
||||
<option [ngValue]="ValidityTypes.Days" i18n>Days</option>
|
||||
<option [ngValue]="ValidityTypes.Months" i18n>Months</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -36,11 +36,19 @@ export class GalleryShareComponent implements OnInit, OnDestroy {
|
||||
passwordProtection = false;
|
||||
ValidityTypes: any;
|
||||
|
||||
text = {
|
||||
Yes: 'Yes',
|
||||
No: 'No'
|
||||
};
|
||||
|
||||
constructor(private _sharingService: ShareService,
|
||||
public _galleryService: GalleryService,
|
||||
private _notification: NotificationService,
|
||||
public i18n: I18n) {
|
||||
this.ValidityTypes = ValidityTypes;
|
||||
|
||||
this.text.Yes = i18n('Yes');
|
||||
this.text.No = i18n('No');
|
||||
}
|
||||
|
||||
|
||||
|
@ -10,13 +10,10 @@
|
||||
<ng-container *ngIf="current != null">
|
||||
{{current}}
|
||||
</ng-container>
|
||||
<span *ngIf="current == null" class="glyphicon glyphicon-globe">
|
||||
</span>
|
||||
<span class="caret"></span>
|
||||
<span *ngIf="current == null" class="oi oi-globe"></span>
|
||||
|
||||
</button>
|
||||
<ul *dropdownMenu class="dropdown-menu" aria-labelledby="language">
|
||||
<li *ngFor="let lang of languages">
|
||||
<a href="/{{lang}}">{{lang}}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div *dropdownMenu class="dropdown-menu" aria-labelledby="language">
|
||||
<a *ngFor="let lang of languages" class="dropdown-item" href="/{{lang}}">{{lang}}</a>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,6 +1,3 @@
|
||||
.container {
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 80px;
|
||||
font-weight: bold;
|
||||
@ -21,24 +18,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-top: 40px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.card {
|
||||
padding: 15px;
|
||||
max-width: 350px;
|
||||
width: 100% !important;
|
||||
background-color: #F7F7F7;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
|
||||
overflow: hidden;
|
||||
height: 295px;
|
||||
margin: 0px auto 0;
|
||||
}
|
||||
|
||||
/*Margin by pixel:*/
|
||||
@media screen and ( min-height: 600px ) {
|
||||
.card {
|
||||
@ -46,21 +25,13 @@
|
||||
}
|
||||
}
|
||||
|
||||
.has-margin {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.input-group .form-control, .checkbox {
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
.card {
|
||||
min-width: 400px;
|
||||
background-color: #F7F7F7;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
}
|
||||
|
||||
.error-message {
|
||||
color: #d9534f;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
@ -1,53 +1,66 @@
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<app-language class="pull-right"></app-language>
|
||||
<div class="container d-flex flex-column justify-content-center">
|
||||
<div class="row align-self-end">
|
||||
<app-language></app-language>
|
||||
</div>
|
||||
<div class="row title">
|
||||
<div class="row title align-self-center">
|
||||
<h1><img src="assets/icon.png"/>{{title}}</h1>
|
||||
</div>
|
||||
<div class="row card">
|
||||
<div class="col-md-12">
|
||||
<h1 i18n>Please log in</h1>
|
||||
<form name="form" id="form" class="form-horizontal" #LoginForm="ngForm" (submit)="onLogin()">
|
||||
<div class="row card align-self-center">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title" i18n>Please log in</h4>
|
||||
<form name="form" id="form" #LoginForm="ngForm" (submit)="onLogin()">
|
||||
<div class="error-message" [hidden]="loginError==false" i18n>
|
||||
Wrong username or password
|
||||
</div>
|
||||
<div class="input-group has-margin">
|
||||
<span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
|
||||
<input id="username"
|
||||
type="text"
|
||||
class="form-control"
|
||||
i18n-placeholder
|
||||
placeholder="Username"
|
||||
autocomplete="login-username"
|
||||
autofocus
|
||||
[(ngModel)]="loginCredential.username"
|
||||
name="username" required>
|
||||
|
||||
<div class="form-group ">
|
||||
<label class="sr-only" for="username">Username</label>
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text"><span class="oi oi-person"></span></div>
|
||||
</div>
|
||||
<input type="text"
|
||||
i18n-placeholder
|
||||
class="form-control"
|
||||
name="username"
|
||||
id="username"
|
||||
autocomplete="login-username"
|
||||
[(ngModel)]="loginCredential.username"
|
||||
placeholder="Username"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
|
||||
<input id="password"
|
||||
class="form-control"
|
||||
type="password"
|
||||
[(ngModel)]="loginCredential.password"
|
||||
name="password"
|
||||
autocomplete="login-password"
|
||||
i18n-placeholder
|
||||
placeholder="Password"
|
||||
required>
|
||||
<div class="form-group ">
|
||||
<label class="sr-only" for="password">Password</label>
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text"><span class="oi oi-lock-locked"></span></div>
|
||||
</div>
|
||||
<input type="password"
|
||||
i18n-placeholder
|
||||
class="form-control"
|
||||
name="password"
|
||||
id="password"
|
||||
placeholder="Password"
|
||||
autocomplete="login-password"
|
||||
[(ngModel)]="loginCredential.password"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="checkbox">
|
||||
<label><input type="checkbox" name="rememberMe" [(ngModel)]="loginCredential.rememberMe" value="">
|
||||
<ng-container i18n>Remember me</ng-container>
|
||||
</label>
|
||||
<div class="form-group">
|
||||
<div class="custom-control custom-checkbox">
|
||||
<input type="checkbox" class="custom-control-input" name="rememberMe" id="rememberMe"
|
||||
[(ngModel)]="loginCredential.rememberMe">
|
||||
<label class="custom-control-label" for="rememberMe" i18n>Remember me</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<!-- Button -->
|
||||
<div class="col-sm-12 controls">
|
||||
<button class="btn btn-primary pull-right btn-login"
|
||||
<button class="btn btn-primary btn-lg btn-block"
|
||||
[disabled]="!LoginForm.form.valid || inProgress"
|
||||
type="submit"
|
||||
name="action" i18n>Login
|
||||
|
@ -10,28 +10,13 @@
|
||||
margin: 5px 0;
|
||||
}
|
||||
|
||||
.panel-title {
|
||||
display: inline-block;
|
||||
margin-top: 8px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
height: 44px;
|
||||
}
|
||||
|
||||
.panel-heading bSwitch {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.panel-heading {
|
||||
padding: 5px 15px;
|
||||
}
|
||||
|
||||
.switch-wrapper {
|
||||
display: inline-block;
|
||||
float: none;
|
||||
text-align: right;
|
||||
padding: 0;
|
||||
float: right;
|
||||
margin-top: -4px;
|
||||
margin-bottom: -4px;
|
||||
|
||||
}
|
||||
|
@ -1,24 +1,24 @@
|
||||
<form #settingsForm="ngForm" class="form-horizontal">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" i18n>Basic settings</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header" i18n>
|
||||
Basic settings
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
|
||||
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="applicationTitle" i18n>Page title</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="applicationTitle" i18n>Page title</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="Pigallery 2"
|
||||
id="applicationTitle"
|
||||
[(ngModel)]="settings.applicationTitle"
|
||||
name="applicationTitle" required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="port">Port</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="port">Port</label>
|
||||
<div class="col-md-10">
|
||||
<input type="number" class="form-control" placeholder="80"
|
||||
id="port"
|
||||
min="0"
|
||||
@ -26,48 +26,53 @@
|
||||
max="65535"
|
||||
[(ngModel)]="settings.port"
|
||||
name="port" required>
|
||||
<span class="help-block" i18n>Port number. Port 80 is usually what you need.</span>
|
||||
<small class="form-text text-muted" i18n>Port number. Port 80 is usually what you need.</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="folder">Images folder</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="folder">Images folder</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="path"
|
||||
id="folder"
|
||||
[(ngModel)]="settings.imagesFolder"
|
||||
name="folder" required>
|
||||
<span class="help-block" i18n>Images are loaded from this folder (read permission required)</span>
|
||||
<small class="form-text text-muted" i18n>Images are loaded from this folder (read permission required)</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="publicUrl" i18n>Page public url</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="publicUrl" i18n>Page public url</label>
|
||||
<div class="col-md-10">
|
||||
<input type="url" class="form-control" placeholder="{{urlPlaceholder}}"
|
||||
id="publicUrl"
|
||||
[(ngModel)]="settings.publicUrl"
|
||||
name="publicUrl">
|
||||
<span class="help-block" i18n>If you access the page form local network its good to know the public url for creating sharing link</span>
|
||||
<small class="form-text text-muted" i18n>If you access the page form local network its good to know the public
|
||||
url for creating sharing link
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="urlBase" i18n>Url Base</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="urlBase" i18n>Url Base</label>
|
||||
<div class="col-md-10">
|
||||
<input type="url" class="form-control" placeholder="/myGallery"
|
||||
id="urlBase"
|
||||
[(ngModel)]="settings.urlBase"
|
||||
name="urlBase">
|
||||
<span class="help-block" i18n>If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If not working you might miss the '/' from the beginning of the url.</span>
|
||||
<small class="form-text text-muted" i18n>If you access the gallery under a sub url (like:
|
||||
http://mydomain.com/myGallery), set it here. If not working you might miss the '/' from the beginning of the
|
||||
url.
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -35,8 +35,7 @@ export class BasicSettingsComponent extends SettingsComponent<BasicConfigDTO> {
|
||||
public async save(): Promise<boolean> {
|
||||
const val = await super.save();
|
||||
if (val === true) {
|
||||
|
||||
this.notification.info('Restart the server to apply the new settings');
|
||||
this.notification.info(this.i18n('Restart the server to apply the new settings'));
|
||||
}
|
||||
return val;
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" i18n>Database settings</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header" i18n>
|
||||
Database settings
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
<form #settingsForm="ngForm">
|
||||
<p class="title" i18n>Type:</p>
|
||||
@ -10,8 +10,9 @@
|
||||
<option *ngFor="let type of types" [ngValue]="type.key">{{type.value}}
|
||||
</option>
|
||||
</select>
|
||||
<span *ngIf="settings.type == DatabaseType.mysql"
|
||||
class="help-block" i18n>Install manually mysql node module to use mysql (npm install mysql)</span>
|
||||
<small *ngIf="settings.type == DatabaseType.mysql"
|
||||
class="form-text text-muted" i18n>Install manually mysql node module to use mysql (npm install mysql)
|
||||
</small>
|
||||
|
||||
<ng-container *ngIf="settings.type == DatabaseType.mysql">
|
||||
<p class="title" i18n>MySQL settings:</p>
|
||||
@ -26,16 +27,16 @@
|
||||
</ng-container>
|
||||
<ng-container *ngIf="settings.type == DatabaseType.sqlite">
|
||||
<p class="title" i18n>SQLie settings:</p>
|
||||
<input type="text" class="form-control" placeholder="storage" autofocus
|
||||
<input type="text" class="form-control" placeholder="storage"
|
||||
[(ngModel)]="settings.sqlite.storage" name="host" required>
|
||||
</ng-container>
|
||||
|
||||
</form>
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,3 +0,0 @@
|
||||
.buttons {
|
||||
text-align: center;
|
||||
}
|
@ -1,57 +1,60 @@
|
||||
<form #settingsForm="ngForm" class="form-horizontal">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title col-xs-4" i18n>Folder indexing</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header" i18n>
|
||||
Folder indexing
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
|
||||
<ng-container *ngIf="!simplifiedMode">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="cachedFolderTimeout" i18n>Index cache timeout [ms]</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="cachedFolderTimeout" i18n>Index cache timeout [ms]</label>
|
||||
<div class="col-md-10">
|
||||
<input type="number" class="form-control" placeholder="36000"
|
||||
id="cachedFolderTimeout"
|
||||
min="0"
|
||||
step="1"
|
||||
[(ngModel)]="settings.cachedFolderTimeout"
|
||||
name="cachedFolderTimeout" required>
|
||||
<span class="help-block" i18n>If there was no indexing in this time, it reindexes. (skipped if indexen in DB and sensitivity is low)</span>
|
||||
<small class="form-text text-muted" i18n>If there was no indexing in this time, it reindexes. (skipped if
|
||||
indexen in DB and sensitivity is low)
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="folderPreviewSize" i18n>Sub folder preview size</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="folderPreviewSize" i18n>Sub folder preview size</label>
|
||||
<div class="col-md-10">
|
||||
<input type="number" class="form-control" placeholder="1"
|
||||
id="folderPreviewSize"
|
||||
min="0"
|
||||
step="1"
|
||||
[(ngModel)]="settings.folderPreviewSize"
|
||||
name="folderPreviewSize" required>
|
||||
<span class="help-block" i18n>Reads this many photos from sub folders</span>
|
||||
<small class="form-text text-muted" i18n>Reads this many photos from sub folders</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="reIndexingSensitivity" i18n>Folder reindexing sensitivity</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="reIndexingSensitivity" i18n>Folder reindexing sensitivity</label>
|
||||
<div class="col-md-10">
|
||||
<select id="reIndexingSensitivity" class="form-control" [(ngModel)]="settings.reIndexingSensitivity"
|
||||
name="reIndexingSensitivity" required>
|
||||
<option *ngFor="let type of types" [ngValue]="type.key">{{type.value}}
|
||||
</option>
|
||||
</select>
|
||||
<span
|
||||
class="help-block"
|
||||
i18n>Set the reindexing sensitivity. High value check the folders for change more often</span>
|
||||
<small
|
||||
class="form-text text-muted"
|
||||
i18n>Set the reindexing sensitivity. High value check the folders for change more often
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
<br/>
|
||||
@ -69,7 +72,7 @@
|
||||
<div *ngIf="_settingsService.progress.value != null">
|
||||
indexing: {{_settingsService.progress.value.current}}
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-success"
|
||||
<div class="progress-bar progress-bar-success"
|
||||
role="progressbar"
|
||||
aria-valuenow="2"
|
||||
aria-valuemin="0"
|
||||
@ -81,7 +84,7 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row buttons">
|
||||
<div class="row justify-content-center">
|
||||
<button class="btn btn-success"
|
||||
*ngIf="_settingsService.progress.value == null"
|
||||
[disabled]="inProgress"
|
||||
|
@ -1,8 +1,8 @@
|
||||
<form #settingsForm="ngForm" class="form-horizontal">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title col-xs-4" i18n>Map settings</h3>
|
||||
<div class="switch-wrapper col-xs-8">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<ng-container i18n>Map settings</ng-container>
|
||||
<div class="switch-wrapper">
|
||||
<bSwitch
|
||||
class="switch"
|
||||
name="enabled"
|
||||
@ -16,31 +16,33 @@
|
||||
[(ngModel)]="settings.enabled">
|
||||
</bSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="googleApiKey" i18n>Google maps api key</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="googleApiKey" i18n>Google maps api key</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="Google api key"
|
||||
[(ngModel)]="settings.googleApiKey"
|
||||
[disabled]="!settings.enabled"
|
||||
name="googleApiKey" id="googleApiKey" required>
|
||||
<span class="help-block"><ng-container i18n>To show the images on a map,</ng-container> <a
|
||||
<small class="form-text text-muted">
|
||||
<ng-container i18n>To show the images on a map,</ng-container>
|
||||
<a
|
||||
href="https://developers.google.com/maps/documentation/javascript/get-api-key" i18n>google api key</a> <ng-container
|
||||
i18n>is need</ng-container></span>
|
||||
|
||||
|
||||
i18n>is need
|
||||
</ng-container>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,15 +1,15 @@
|
||||
<form #settingsForm="ngForm" class="form-horizontal">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" i18n>Other settings</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header" i18n>
|
||||
Other settings
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong i18n>Error: </strong>{{error}}</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enableThreading" i18n>Threading</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="enableThreading" i18n>Threading</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="enableThreading"
|
||||
class="switch"
|
||||
@ -22,14 +22,16 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.enableThreading">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Runs directory scanning and thumbnail generation (only for Jimp) in a different thread</span>
|
||||
<small class="form-text text-muted" i18n>Runs directory scanning and thumbnail generation (only for Jimp) in a
|
||||
different thread
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enableOnScrollThumbnailPrioritising" i18n>Scroll based thumbnail
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="enableOnScrollThumbnailPrioritising" i18n>Scroll based thumbnail
|
||||
generation</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="enableOnScrollThumbnailPrioritising"
|
||||
class="switch"
|
||||
@ -42,13 +44,14 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.enableOnScrollThumbnailPrioritising">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Those thumbnails get higher priority that are visible on the screen</span>
|
||||
<small class="form-text text-muted" i18n>Those thumbnails get higher priority that are visible on the screen
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enableOnScrollRendering" i18n>Lazy image rendering</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="enableOnScrollRendering" i18n>Lazy image rendering</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="enableOnScrollRendering"
|
||||
class="switch"
|
||||
@ -61,14 +64,16 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.enableOnScrollRendering">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Shows only the required amount of photos at once. Renders more if page bottom is reached</span>
|
||||
<small class="form-text text-muted" i18n>Shows only the required amount of photos at once. Renders more if
|
||||
page bottom is reached
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="enableCache" i18n>Cache</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="enableCache" i18n>Cache</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="enableCache"
|
||||
class="switch"
|
||||
@ -81,16 +86,17 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.enableCache">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Caches directory contents and search results for better performance</span>
|
||||
<small class="form-text text-muted" i18n>Caches directory contents and search results for better performance
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<form #settingsForm="ngForm">
|
||||
<div class="panel panel-default"
|
||||
<div class="card mb-4"
|
||||
[ngClass]="settings.enabled && !_settingsService.isSupported()?'panel-warning':''">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title col-xs-6" i18n>Search settings</h3>
|
||||
<div class="switch-wrapper col-xs-6">
|
||||
<h5 class="card-header">
|
||||
<ng-container i18n>Search settings</ng-container>
|
||||
<div class="switch-wrapper">
|
||||
<bSwitch
|
||||
class="switch"
|
||||
name="enabled"
|
||||
@ -17,15 +17,15 @@
|
||||
[(ngModel)]="settings.enabled">
|
||||
</bSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
|
||||
<ng-container *ngIf="settings.enabled || _settingsService.isSupported()">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="autocompleteEnabled" i18n>Autocomplete</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="autocompleteEnabled" i18n>Autocomplete</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="autocompleteEnabled"
|
||||
class="switch"
|
||||
@ -39,14 +39,14 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.autocompleteEnabled">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Show hints while typing search query</span>
|
||||
<small class="form-text text-muted" i18n>Show hints while typing search query</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="instantSearchEnabled" i18n>Instant search</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="instantSearchEnabled" i18n>Instant search</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="instantSearchEnabled"
|
||||
class="switch"
|
||||
@ -60,7 +60,7 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.instantSearchEnabled">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Enables showing search results, while typing search query</span>
|
||||
<small class="form-text text-muted" i18n>Enables showing search results, while typing search query</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -68,11 +68,11 @@
|
||||
<div class="panel-info" *ngIf="(!settings.enabled && !_settingsService.isSupported())" i18n>
|
||||
Search is not supported with these settings
|
||||
</div>
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<form #settingsForm="ngForm">
|
||||
<div class="panel panel-default"
|
||||
<div class="card mb-4"
|
||||
[ngClass]="settings.enabled && !_settingsService.isSupported()?'panel-warning':''">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title col-xs-6" i18n>Share settings</h3>
|
||||
<div class="switch-wrapper col-xs-6">
|
||||
<h5 class="card-header">
|
||||
<ng-container i18n>Share settings</ng-container>
|
||||
<div class="switch-wrapper">
|
||||
<bSwitch
|
||||
class="switch"
|
||||
name="enabled"
|
||||
@ -17,14 +17,14 @@
|
||||
[(ngModel)]="settings.enabled">
|
||||
</bSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
|
||||
<ng-container *ngIf="settings.enabled || _settingsService.isSupported()">
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="passwordProtected" i18n>Password protected</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="passwordProtected" i18n>Password protected</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="passwordProtected"
|
||||
class="switch"
|
||||
@ -38,7 +38,7 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.passwordProtected">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>Enables password protected sharing links</span>
|
||||
<small class="form-text text-muted" i18n>Enables password protected sharing links</small>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@ -47,11 +47,11 @@
|
||||
<div class="panel-info" *ngIf="(!settings.enabled && !_settingsService.isSupported())" i18n>
|
||||
Sharing is not supported with these settings
|
||||
</div>
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,9 +1,9 @@
|
||||
<form #settingsForm="ngForm" class="form-horizontal">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title" i18n>Thumbnail settings</h3>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header" i18n>
|
||||
Thumbnail settings
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
<div [hidden]="settings.server.processingLibrary!=ThumbnailProcessingLib.Jimp"
|
||||
class="alert alert-warning"
|
||||
@ -12,37 +12,43 @@
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="lib" i18n>Thumbnail generation library</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="lib" i18n>Thumbnail generation library</label>
|
||||
<div class="col-md-10">
|
||||
<select id="lib" class="form-control" [(ngModel)]="settings.server.processingLibrary"
|
||||
name="type" required>
|
||||
<option *ngFor="let type of types" [ngValue]="type.key">{{type.value}}
|
||||
</option>
|
||||
</select>
|
||||
<span *ngIf="settings.server.processingLibrary==ThumbnailProcessingLib.sharp"
|
||||
class="help-block" i18n>Make sure that sharp node module is installed (npm install sharp).</span>
|
||||
<span *ngIf="settings.server.processingLibrary==ThumbnailProcessingLib.gm"
|
||||
class="help-block"><ng-container i18n>Make sure that gm node module and</ng-container> <a
|
||||
href="http://www.graphicsmagick.org/" i18n>GraphicsMagick</a> <ng-container i18n>are installed (npm install sharp).</ng-container></span>
|
||||
<small *ngIf="settings.server.processingLibrary==ThumbnailProcessingLib.sharp"
|
||||
class="form-text text-muted" i18n>Make sure that sharp node module is installed (npm install sharp).
|
||||
</small>
|
||||
<small *ngIf="settings.server.processingLibrary==ThumbnailProcessingLib.gm"
|
||||
class="form-text text-muted">
|
||||
<ng-container i18n>Make sure that gm node module and</ng-container>
|
||||
<a
|
||||
href="http://www.graphicsmagick.org/" i18n>GraphicsMagick</a>
|
||||
<ng-container i18n>are installed (npm install sharp).</ng-container>
|
||||
</small>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="col-sm-2 control-label" for="th_folder" i18n>Thumbnail folder</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row">
|
||||
<label class="col-md-2 control-label" for="th_folder" i18n>Thumbnail folder</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="path"
|
||||
id="th_folder"
|
||||
[(ngModel)]="settings.server.folder"
|
||||
name="path" required>
|
||||
<span class="help-block" i18n>Thumbnails will be saved in this folder. Write access is required</span>
|
||||
<small class="form-text text-muted" i18n>Thumbnails will be saved in this folder. Write access is required
|
||||
</small>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="quality" i18n>Thumbnail Quality</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="quality" i18n>Thumbnail Quality</label>
|
||||
<div class="col-md-10">
|
||||
<bSwitch
|
||||
id="quality"
|
||||
class="switch"
|
||||
@ -55,14 +61,14 @@
|
||||
[switch-label-width]="'20'"
|
||||
[(ngModel)]="settings.server.qualityPriority">
|
||||
</bSwitch>
|
||||
<span class="help-block" i18n>High quality may be slow. Especially with Jimp.</span>
|
||||
<small class="form-text text-muted" i18n>High quality may be slow. Especially with Jimp.</small>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="icon">Icon size</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="icon">Icon size</label>
|
||||
<div class="col-md-10">
|
||||
<input type="number" class="form-control" placeholder="30"
|
||||
id="icon"
|
||||
[(ngModel)]="settings.client.iconSize"
|
||||
@ -70,34 +76,34 @@
|
||||
max="100"
|
||||
step="1"
|
||||
name="icon" required>
|
||||
<span class="help-block" i18n>Icon size (used on maps)</span>
|
||||
<small class="form-text text-muted" i18n>Icon size (used on maps)</small>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group" [hidden]="simplifiedMode">
|
||||
<label class="col-sm-2 control-label" for="thumbnailSizes" i18n>Thumbnail sizes</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="form-group row" [hidden]="simplifiedMode">
|
||||
<label class="col-md-2 control-label" for="thumbnailSizes" i18n>Thumbnail sizes</label>
|
||||
<div class="col-md-10">
|
||||
<input type="text" class="form-control" placeholder="200; 400"
|
||||
id="thumbnailSizes"
|
||||
[(ngModel)]="ThumbnailSizes"
|
||||
name="thumbnailSizes" required>
|
||||
<span class="help-block">
|
||||
<small class="form-text text-muted">
|
||||
<ng-container i18n>Size of the thumbnails.</ng-container><br/>
|
||||
<ng-container i18n>The best matching size will be generated. (More size gives better quality, but use storage to store and CPU to render.)</ng-container><br/>
|
||||
<ng-container
|
||||
i18n>';' separated integers. If size is 200, tha thumbnail will have 200^2 pixels.</ng-container>
|
||||
</span>
|
||||
</small>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
|
||||
<button class="btn btn-success pull-right"
|
||||
<button class="btn btn-success float-right"
|
||||
[disabled]="!settingsForm.form.valid || !changed || inProgress"
|
||||
(click)="save()" i18n>Save
|
||||
</button>
|
||||
<button class="btn btn-default pull-right"
|
||||
<button class="btn btn-default float-right"
|
||||
(click)="reset()" i18n>Reset
|
||||
</button>
|
||||
</div>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">
|
||||
<h3 class="panel-title col-xs-6" i18n>Password protection </h3>
|
||||
<div class="switch-wrapper col-xs-6">
|
||||
<div class="card mb-4">
|
||||
<h5 class="card-header">
|
||||
<ng-container i18n>Password protection</ng-container>
|
||||
<div class="switch-wrapper">
|
||||
<bSwitch
|
||||
class="switch"
|
||||
name="enabled"
|
||||
@ -16,8 +16,8 @@
|
||||
(onChangeState)="switched($event)">
|
||||
</bSwitch>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel-body">
|
||||
</h5>
|
||||
<div class="card-body">
|
||||
<div [hidden]="!error" class="alert alert-danger" role="alert"><strong>Error: </strong>{{error}}</div>
|
||||
|
||||
<ng-container *ngIf="enabled">
|
||||
@ -44,14 +44,14 @@
|
||||
<td>
|
||||
<button [disabled]="!canModifyUser(user)" (click)="deleteUser(user)"
|
||||
[ngClass]="canModifyUser(user)? 'btn-danger':'btn-default'"
|
||||
class="btn pull-right">
|
||||
<span class="glyphicon glyphicon-trash" aria-hidden="true" aria-label="Delete"></span>
|
||||
class="btn float-right">
|
||||
<span class="oi oi-trash" aria-hidden="true" aria-label="Delete"></span>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<button class="btn btn-primary pull-right"
|
||||
<button class="btn btn-primary float-right"
|
||||
(click)="initNewUser()" i18n>+ Add user
|
||||
</button>
|
||||
</ng-container>
|
||||
@ -67,11 +67,11 @@
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" (click)="userModal.hide()" aria-label="Close"><span
|
||||
aria-hidden="true">×</span></button>
|
||||
<h4 class="modal-title" id="userModalLabel" i18n>Add new User</h4>
|
||||
<h5 class="modal-title" id="userModalLabel" i18n>Add new User</h5>
|
||||
<button type="button" class="close" (click)="userModal.hide()" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
<form #NewUserForm="ngForm">
|
||||
<div class="modal-body">
|
||||
<input type="text" class="form-control" i18n-placeholder placeholder="Username" autofocus
|
||||
|
@ -75,6 +75,7 @@ export class UserMangerSettingsComponent implements OnInit {
|
||||
this.enabled = await this._userSettings.getSettings();
|
||||
}
|
||||
|
||||
|
||||
async switched(event: { previousValue: false, currentValue: true }) {
|
||||
this.inProgress = true;
|
||||
this.error = '';
|
||||
@ -84,6 +85,7 @@ export class UserMangerSettingsComponent implements OnInit {
|
||||
await this.getSettings();
|
||||
if (this.enabled === true) {
|
||||
this.notification.success(this.i18n('Password protection enabled'), this.i18n('Success'));
|
||||
this.notification.info(this.i18n('Server restart is recommended.'));
|
||||
this.getUsersList();
|
||||
} else {
|
||||
this.notification.success(this.i18n('Password protection disabled'), this.i18n('Success'));
|
||||
|
@ -1,6 +1,3 @@
|
||||
.container {
|
||||
}
|
||||
|
||||
.title h1 {
|
||||
font-size: 80px;
|
||||
font-weight: bold;
|
||||
@ -11,46 +8,30 @@
|
||||
height: 80px;
|
||||
}
|
||||
|
||||
.title {
|
||||
margin-top: 40px;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
}
|
||||
@media screen and ( max-width: 500px ) {
|
||||
.title h1 {
|
||||
font-size: 70px;
|
||||
}
|
||||
|
||||
.card {
|
||||
padding: 15px;
|
||||
max-width: 350px;
|
||||
width: 100% !important;
|
||||
background-color: #F7F7F7;
|
||||
border-radius: 2px;
|
||||
box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);
|
||||
overflow: hidden;
|
||||
height: 150px;
|
||||
margin: 0px auto 0;
|
||||
}
|
||||
|
||||
/*Margin by pixel:*/
|
||||
@media screen and ( min-height: 400px ) {
|
||||
.card {
|
||||
margin-top: calc((100vh - 120px - 150px) / 2 - 60px)
|
||||
.title img {
|
||||
height: 70px;
|
||||
}
|
||||
}
|
||||
|
||||
.has-margin {
|
||||
margin-bottom: 10px;
|
||||
/*Margin by pixel:*/
|
||||
@media screen and ( min-height: 600px ) {
|
||||
.card {
|
||||
margin-top: calc((100vh - 120px - 295px) / 2 - 60px)
|
||||
}
|
||||
}
|
||||
|
||||
.input-group .form-control, .checkbox {
|
||||
padding: 10px;
|
||||
font-size: 16px;
|
||||
.card {
|
||||
min-width: 400px;
|
||||
background-color: #F7F7F7;
|
||||
box-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
|
||||
|
||||
}
|
||||
|
||||
.error-message {
|
||||
color: #d9534f;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
@ -1,36 +1,41 @@
|
||||
<div class="container">
|
||||
|
||||
<div class="row">
|
||||
<app-language class="pull-right"></app-language>
|
||||
<div class="container d-flex flex-column justify-content-center">
|
||||
<div class="row align-self-end">
|
||||
<app-language></app-language>
|
||||
</div>
|
||||
<div class="row title">
|
||||
<div class="row title align-self-center">
|
||||
<h1><img src="assets/icon.png"/>{{title}}</h1>
|
||||
</div>
|
||||
|
||||
<div class="row card">
|
||||
<div class="col-md-12">
|
||||
<div class="row card align-self-center">
|
||||
<div class="card-body">
|
||||
<form name="form" id="form" class="form-horizontal" #LoginForm="ngForm" (submit)="onLogin()">
|
||||
<div class="error-message" [hidden]="loginError==false" i18n>
|
||||
Wrong password
|
||||
</div>
|
||||
|
||||
<div class="input-group has-margin">
|
||||
<span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
|
||||
<input id="password"
|
||||
class="form-control"
|
||||
type="password"
|
||||
[(ngModel)]="password"
|
||||
name="password"
|
||||
i18n-placeholder
|
||||
placeholder="Password"
|
||||
required>
|
||||
|
||||
<div class="form-group ">
|
||||
<label class="sr-only" for="password">Password</label>
|
||||
<div class="input-group mb-2">
|
||||
<div class="input-group-prepend">
|
||||
<div class="input-group-text"><span class="oi oi-lock-locked"></span></div>
|
||||
</div>
|
||||
<input type="password"
|
||||
i18n-placeholder
|
||||
class="form-control"
|
||||
name="password"
|
||||
id="password"
|
||||
placeholder="Password"
|
||||
autocomplete="login-password"
|
||||
[(ngModel)]="password"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<!-- Button -->
|
||||
<div class="col-sm-12 controls">
|
||||
<button class="btn btn-primary pull-right btn-login"
|
||||
<button class="btn btn-primary btn-lg btn-block"
|
||||
[disabled]="!LoginForm.form.valid"
|
||||
type="submit"
|
||||
name="action" i18n>Enter
|
||||
|
@ -26,7 +26,7 @@
|
||||
<source>Username</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">21</context>
|
||||
<context context-type="linenumber">29</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
@ -42,19 +42,19 @@
|
||||
<source>Password</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">37</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/sharelogin/share-login.component.ts</context>
|
||||
<context context-type="linenumber">25</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="linenumber">74</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">78</context>
|
||||
<context context-type="linenumber">84</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
@ -70,7 +70,7 @@
|
||||
<source>Remember me</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>Remember me</target>
|
||||
</trans-unit>
|
||||
@ -79,7 +79,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
<context context-type="linenumber">66</context>
|
||||
</context-group>
|
||||
<target>Login
|
||||
</target>
|
||||
@ -90,7 +90,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/sharelogin/share-login.component.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
<context context-type="linenumber">11</context>
|
||||
</context-group>
|
||||
<target>
|
||||
Wrong password
|
||||
@ -101,7 +101,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/sharelogin/share-login.component.ts</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
</context-group>
|
||||
<target>Enter
|
||||
</target>
|
||||
@ -118,7 +118,7 @@
|
||||
<source>info</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>info</target>
|
||||
</trans-unit>
|
||||
@ -126,11 +126,11 @@
|
||||
<source>toggle fullscreen</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">30</context>
|
||||
<context context-type="linenumber">32</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target>toggle fullscreen</target>
|
||||
</trans-unit>
|
||||
@ -138,7 +138,7 @@
|
||||
<source>close</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<target>close</target>
|
||||
</trans-unit>
|
||||
@ -146,7 +146,7 @@
|
||||
<source>key: left arrow</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
<context context-type="linenumber">47</context>
|
||||
</context-group>
|
||||
<target>key: left arrow</target>
|
||||
</trans-unit>
|
||||
@ -154,7 +154,7 @@
|
||||
<source>key: right arrow</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="linenumber">51</context>
|
||||
</context-group>
|
||||
<target>key: right arrow</target>
|
||||
</trans-unit>
|
||||
@ -206,7 +206,7 @@
|
||||
<source>Logout</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/frame/frame.component.ts</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="linenumber">38</context>
|
||||
</context-group>
|
||||
<target>Logout</target>
|
||||
</trans-unit>
|
||||
@ -218,7 +218,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="linenumber">16</context>
|
||||
</context-group>
|
||||
<target>Share</target>
|
||||
</trans-unit>
|
||||
@ -227,7 +227,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
<context context-type="linenumber">35</context>
|
||||
</context-group>
|
||||
<target>Copy
|
||||
</target>
|
||||
@ -236,7 +236,7 @@
|
||||
<source>Sharing:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<target>Sharing:</target>
|
||||
</trans-unit>
|
||||
@ -244,7 +244,7 @@
|
||||
<source>Include subfolders:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">52</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
</context-group>
|
||||
<target>Include subfolders:</target>
|
||||
</trans-unit>
|
||||
@ -252,7 +252,7 @@
|
||||
<source>Valid:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">84</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Valid:</target>
|
||||
</trans-unit>
|
||||
@ -260,7 +260,7 @@
|
||||
<source>Minutes</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">94</context>
|
||||
<context context-type="linenumber">100</context>
|
||||
</context-group>
|
||||
<target>Minutes</target>
|
||||
</trans-unit>
|
||||
@ -268,7 +268,7 @@
|
||||
<source>Hours</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">95</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Hours</target>
|
||||
</trans-unit>
|
||||
@ -276,7 +276,7 @@
|
||||
<source>Days</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">96</context>
|
||||
<context context-type="linenumber">102</context>
|
||||
</context-group>
|
||||
<target>Days</target>
|
||||
</trans-unit>
|
||||
@ -284,15 +284,17 @@
|
||||
<source>Months</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">97</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
</context-group>
|
||||
<target>Months</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f0acecaa22df19767da6d9990458470b17da3d7a" datatype="html">
|
||||
<source>Server notifications</source>
|
||||
<trans-unit id="ac9751501a838bfb31f23e94ceb9616fe498a267" datatype="html">
|
||||
<source>
|
||||
Server notifications
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">6</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
</context-group>
|
||||
<target>Server notifications</target>
|
||||
</trans-unit>
|
||||
@ -320,17 +322,17 @@
|
||||
<source>Info</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/infopanel/info-panel.lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Info</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="343879e5c41bab3cbc6160ae25fb0ed8e08859f0" datatype="html">
|
||||
<source>Password protection </source>
|
||||
<trans-unit id="427589505741d1da181b756815701e756184cb8d" datatype="html">
|
||||
<source>Password protection</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Password protection </target>
|
||||
<target>Password protection</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="cff1428d10d59d14e45edec3c735a27b5482db59" datatype="html">
|
||||
<source>Name</source>
|
||||
@ -374,7 +376,7 @@
|
||||
<source>Add new User</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
<context context-type="linenumber">72</context>
|
||||
<context context-type="linenumber">70</context>
|
||||
</context-group>
|
||||
<target>Add new User</target>
|
||||
</trans-unit>
|
||||
@ -396,11 +398,13 @@
|
||||
<target>Add User
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="25e15358423a68caf2960ac3eac6f7cfd19d5a30" datatype="html">
|
||||
<source>Database settings</source>
|
||||
<trans-unit id="26029ad47ff6a694b272298b212b5458128810be" datatype="html">
|
||||
<source>
|
||||
Database settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/database/database.settings.component.ts</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
<context context-type="linenumber">2</context>
|
||||
</context-group>
|
||||
<target>Database settings</target>
|
||||
</trans-unit>
|
||||
@ -517,7 +521,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/map/map.settings.component.ts</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/thumbnail/thumbanil.settings.component.ts</context>
|
||||
@ -547,7 +551,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/map/map.settings.component.ts</context>
|
||||
<context context-type="linenumber">44</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/thumbnail/thumbanil.settings.component.ts</context>
|
||||
@ -572,11 +576,13 @@
|
||||
<target>Reset
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d6644690d6218f5ecc21dd3b2c69aca33d6d58c3" datatype="html">
|
||||
<source>Thumbnail settings</source>
|
||||
<trans-unit id="7f69d84360f0db236db44098d55961bc2d267b5e" datatype="html">
|
||||
<source>
|
||||
Thumbnail settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/thumbnail/thumbanil.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Thumbnail settings</target>
|
||||
</trans-unit>
|
||||
@ -792,11 +798,13 @@
|
||||
Sharing is not supported with these settings
|
||||
</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="fe4fefb86d4b6629064ff0fa96fdc2b80fc151b0" datatype="html">
|
||||
<source>Basic settings</source>
|
||||
<trans-unit id="d62666b3159a0b5916b8f908c84e6b6f441ec1d1" datatype="html">
|
||||
<source>
|
||||
Basic settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/basic/basic.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Basic settings</target>
|
||||
</trans-unit>
|
||||
@ -856,11 +864,13 @@
|
||||
</context-group>
|
||||
<target>If you access the gallery under a sub url (like: http://mydomain.com/myGallery), set it here. If not working you might miss the '/' from the beginning of the url.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1e99f581a015c671d53abad7c7df6a5ad35bfe85" datatype="html">
|
||||
<source>Other settings</source>
|
||||
<trans-unit id="ee1319d3bfb2e70e14212ea2c3896e4ac4dc0092" datatype="html">
|
||||
<source>
|
||||
Other settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/other/other.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Other settings</target>
|
||||
</trans-unit>
|
||||
@ -938,11 +948,13 @@
|
||||
</context-group>
|
||||
<target>Caches directory contents and search results for better performance</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87b1696eb068572c3908643c425ee3090938c1a0" datatype="html">
|
||||
<source>Folder indexing</source>
|
||||
<trans-unit id="5e00b6f637f57796ae6ce0bbafedf3849e28a171" datatype="html">
|
||||
<source>
|
||||
Folder indexing
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Folder indexing</target>
|
||||
</trans-unit>
|
||||
@ -1096,6 +1108,22 @@
|
||||
</context-group>
|
||||
<target>Images</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">
|
||||
<source>Yes</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Yes</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">
|
||||
<source>No</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>No</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="867c1b6839b592cec2156dd0b8a0009fe1557bfa" datatype="html">
|
||||
<source>Url has been copied to clipboard</source>
|
||||
<context-group purpose="location">
|
||||
@ -1216,6 +1244,18 @@
|
||||
</context-group>
|
||||
<target>Basic</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6244017173fe88802248f410e78f2e637f98f634" datatype="html">
|
||||
<source>Restart the server to apply the new settings</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/basic/basic.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/other/other.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Restart the server to apply the new settings</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f53ab04e9d8449445abf482bf44b521e2e695c3c" datatype="html">
|
||||
<source>Indexing</source>
|
||||
<context-group purpose="location">
|
||||
@ -1260,14 +1300,6 @@
|
||||
</context-group>
|
||||
<target>Other</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6244017173fe88802248f410e78f2e637f98f634" datatype="html">
|
||||
<source>Restart the server to apply the new settings</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/other/other.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Restart the server to apply the new settings</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
@ -1292,6 +1324,14 @@
|
||||
</context-group>
|
||||
<target>Password protection enabled</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c76b3ba44c5b7ab363729f81f763b29ef5d7a641" datatype="html">
|
||||
<source>Server restart is recommended.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Server restart is recommended.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="00de5dcd17a5ebd17e67e0688bc638e01bc510a4" datatype="html">
|
||||
<source>Password protection disabled</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -24,7 +24,7 @@
|
||||
<source>Username</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">21</context>
|
||||
<context context-type="linenumber">29</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
@ -40,19 +40,19 @@
|
||||
<source>Password</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">37</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/sharelogin/share-login.component.ts</context>
|
||||
<context context-type="linenumber">25</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">67</context>
|
||||
<context context-type="linenumber">74</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">78</context>
|
||||
<context context-type="linenumber">84</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
@ -68,7 +68,7 @@
|
||||
<source>Remember me</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">43</context>
|
||||
<context context-type="linenumber">56</context>
|
||||
</context-group>
|
||||
<target>Emlékezz rám</target>
|
||||
</trans-unit>
|
||||
@ -77,7 +77,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/login/login.component.ts</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
<context context-type="linenumber">66</context>
|
||||
</context-group>
|
||||
<target>Belépés</target>
|
||||
</trans-unit>
|
||||
@ -87,7 +87,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/sharelogin/share-login.component.ts</context>
|
||||
<context context-type="linenumber">13</context>
|
||||
<context context-type="linenumber">11</context>
|
||||
</context-group>
|
||||
<target>Rossz jelszó</target>
|
||||
</trans-unit>
|
||||
@ -96,7 +96,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/sharelogin/share-login.component.ts</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
</context-group>
|
||||
<target>Belépés</target>
|
||||
</trans-unit>
|
||||
@ -112,7 +112,7 @@
|
||||
<source>info</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">26</context>
|
||||
<context context-type="linenumber">27</context>
|
||||
</context-group>
|
||||
<target>info</target>
|
||||
</trans-unit>
|
||||
@ -120,11 +120,11 @@
|
||||
<source>toggle fullscreen</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">30</context>
|
||||
<context context-type="linenumber">32</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<target>teljes képernyőre váltás</target>
|
||||
</trans-unit>
|
||||
@ -132,7 +132,7 @@
|
||||
<source>close</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">36</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<target>bezárás</target>
|
||||
</trans-unit>
|
||||
@ -140,7 +140,7 @@
|
||||
<source>key: left arrow</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
<context context-type="linenumber">47</context>
|
||||
</context-group>
|
||||
<target>billentyű: balra nyíl</target>
|
||||
</trans-unit>
|
||||
@ -148,7 +148,7 @@
|
||||
<source>key: right arrow</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="linenumber">51</context>
|
||||
</context-group>
|
||||
<target>billentyű: jobbra nyíl</target>
|
||||
</trans-unit>
|
||||
@ -174,7 +174,7 @@
|
||||
<context context-type="sourcefile">app/gallery/gallery.component.ts</context>
|
||||
<context context-type="linenumber">10</context>
|
||||
</context-group>
|
||||
<target>napok</target>
|
||||
<target>nap</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c17b163553f84f2f704031a1b343e7b89c5c5ee1" datatype="html">
|
||||
<source>
|
||||
@ -198,7 +198,7 @@
|
||||
<source>Logout</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/frame/frame.component.ts</context>
|
||||
<context context-type="linenumber">45</context>
|
||||
<context context-type="linenumber">38</context>
|
||||
</context-group>
|
||||
<target>Kijelentkezés</target>
|
||||
</trans-unit>
|
||||
@ -210,7 +210,7 @@
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">18</context>
|
||||
<context context-type="linenumber">16</context>
|
||||
</context-group>
|
||||
<target>Megosztás</target>
|
||||
</trans-unit>
|
||||
@ -219,7 +219,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">34</context>
|
||||
<context context-type="linenumber">35</context>
|
||||
</context-group>
|
||||
<target>Másolat</target>
|
||||
</trans-unit>
|
||||
@ -227,7 +227,7 @@
|
||||
<source>Sharing:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<target>megosztás:</target>
|
||||
</trans-unit>
|
||||
@ -235,7 +235,7 @@
|
||||
<source>Include subfolders:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">52</context>
|
||||
<context context-type="linenumber">53</context>
|
||||
</context-group>
|
||||
<target>Alkönyvtárak beillesztése:</target>
|
||||
</trans-unit>
|
||||
@ -243,7 +243,7 @@
|
||||
<source>Valid:</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">84</context>
|
||||
<context context-type="linenumber">90</context>
|
||||
</context-group>
|
||||
<target>Érvényes:</target>
|
||||
</trans-unit>
|
||||
@ -251,7 +251,7 @@
|
||||
<source>Minutes</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">94</context>
|
||||
<context context-type="linenumber">100</context>
|
||||
</context-group>
|
||||
<target>Percek</target>
|
||||
</trans-unit>
|
||||
@ -259,7 +259,7 @@
|
||||
<source>Hours</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">95</context>
|
||||
<context context-type="linenumber">101</context>
|
||||
</context-group>
|
||||
<target>Órák</target>
|
||||
</trans-unit>
|
||||
@ -267,7 +267,7 @@
|
||||
<source>Days</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">96</context>
|
||||
<context context-type="linenumber">102</context>
|
||||
</context-group>
|
||||
<target>Napok</target>
|
||||
</trans-unit>
|
||||
@ -275,15 +275,17 @@
|
||||
<source>Months</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">97</context>
|
||||
<context context-type="linenumber">103</context>
|
||||
</context-group>
|
||||
<target>hónapok</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f0acecaa22df19767da6d9990458470b17da3d7a" datatype="html">
|
||||
<source>Server notifications</source>
|
||||
<trans-unit id="ac9751501a838bfb31f23e94ceb9616fe498a267" datatype="html">
|
||||
<source>
|
||||
Server notifications
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/admin/admin.component.ts</context>
|
||||
<context context-type="linenumber">6</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
</context-group>
|
||||
<target>Szerver értesítések</target>
|
||||
</trans-unit>
|
||||
@ -309,12 +311,12 @@
|
||||
<source>Info</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/gallery/lightbox/infopanel/info-panel.lightbox.gallery.component.ts</context>
|
||||
<context context-type="linenumber">5</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Info</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="343879e5c41bab3cbc6160ae25fb0ed8e08859f0" datatype="html">
|
||||
<source>Password protection </source>
|
||||
<trans-unit id="427589505741d1da181b756815701e756184cb8d" datatype="html">
|
||||
<source>Password protection</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
@ -360,7 +362,7 @@
|
||||
<source>Add new User</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
<context context-type="linenumber">72</context>
|
||||
<context context-type="linenumber">70</context>
|
||||
</context-group>
|
||||
<target>Új felhasználó hozzáadása</target>
|
||||
</trans-unit>
|
||||
@ -381,11 +383,13 @@
|
||||
</context-group>
|
||||
<target>Felhasználó hozzáadása</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="25e15358423a68caf2960ac3eac6f7cfd19d5a30" datatype="html">
|
||||
<source>Database settings</source>
|
||||
<trans-unit id="26029ad47ff6a694b272298b212b5458128810be" datatype="html">
|
||||
<source>
|
||||
Database settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/database/database.settings.component.ts</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
<context context-type="linenumber">2</context>
|
||||
</context-group>
|
||||
<target>Adatbázis beállítások</target>
|
||||
</trans-unit>
|
||||
@ -500,7 +504,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/map/map.settings.component.ts</context>
|
||||
<context context-type="linenumber">41</context>
|
||||
<context context-type="linenumber">39</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/thumbnail/thumbanil.settings.component.ts</context>
|
||||
@ -529,7 +533,7 @@
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/map/map.settings.component.ts</context>
|
||||
<context context-type="linenumber">44</context>
|
||||
<context context-type="linenumber">42</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/thumbnail/thumbanil.settings.component.ts</context>
|
||||
@ -553,11 +557,13 @@
|
||||
</context-group>
|
||||
<target>Visszaállítás</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="d6644690d6218f5ecc21dd3b2c69aca33d6d58c3" datatype="html">
|
||||
<source>Thumbnail settings</source>
|
||||
<trans-unit id="7f69d84360f0db236db44098d55961bc2d267b5e" datatype="html">
|
||||
<source>
|
||||
Thumbnail settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/thumbnail/thumbanil.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Miniatűr beállítások</target>
|
||||
</trans-unit>
|
||||
@ -768,13 +774,15 @@
|
||||
</context-group>
|
||||
<target>A megosztás nem támogatott ezekkel a beállításokkal</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="fe4fefb86d4b6629064ff0fa96fdc2b80fc151b0" datatype="html">
|
||||
<source>Basic settings</source>
|
||||
<trans-unit id="d62666b3159a0b5916b8f908c84e6b6f441ec1d1" datatype="html">
|
||||
<source>
|
||||
Basic settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/basic/basic.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Alapvető beállítások</target>
|
||||
<target>Alapbeállítások</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="870d05214ce19848ea4b7fe698e9a2e73db0c715" datatype="html">
|
||||
<source>Page title</source>
|
||||
@ -832,11 +840,13 @@
|
||||
</context-group>
|
||||
<target>Ha az oldalt egy al címen lehet elérni (pl: http://oldalam.hu/myGallery), akkor az alcímet itt állitsd be. Hiba esetén lehet, hogy a "/" hiányzik az url elejéről.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="1e99f581a015c671d53abad7c7df6a5ad35bfe85" datatype="html">
|
||||
<source>Other settings</source>
|
||||
<trans-unit id="ee1319d3bfb2e70e14212ea2c3896e4ac4dc0092" datatype="html">
|
||||
<source>
|
||||
Other settings
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/other/other.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Egyéb beállitások</target>
|
||||
</trans-unit>
|
||||
@ -914,11 +924,13 @@
|
||||
</context-group>
|
||||
<target>Gyorsítótárazza a könyvtár tartalmát és a keresési eredményeket a jobb teljesítmény érdekében</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="87b1696eb068572c3908643c425ee3090938c1a0" datatype="html">
|
||||
<source>Folder indexing</source>
|
||||
<trans-unit id="5e00b6f637f57796ae6ce0bbafedf3849e28a171" datatype="html">
|
||||
<source>
|
||||
Folder indexing
|
||||
</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">app/settings/indexing/indexing.settings.component.ts</context>
|
||||
<context context-type="linenumber">4</context>
|
||||
<context context-type="linenumber">3</context>
|
||||
</context-group>
|
||||
<target>Mappa indexelése</target>
|
||||
</trans-unit>
|
||||
@ -1067,6 +1079,22 @@
|
||||
</context-group>
|
||||
<target>képek</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="4f20f2d5a6882190892e58b85f6ccbedfa737952" datatype="html">
|
||||
<source>Yes</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Igen</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="3d3ae7deebc5949b0c1c78b9847886a94321d9fd" datatype="html">
|
||||
<source>No</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/gallery/share/share.gallery.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Nem</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="867c1b6839b592cec2156dd0b8a0009fe1557bfa" datatype="html">
|
||||
<source>Url has been copied to clipboard</source>
|
||||
<context-group purpose="location">
|
||||
@ -1187,6 +1215,18 @@
|
||||
</context-group>
|
||||
<target>Alapvető</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6244017173fe88802248f410e78f2e637f98f634" datatype="html">
|
||||
<source>Restart the server to apply the new settings</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/basic/basic.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/other/other.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Indítsa újra a weboldalt az új beállítások alkalmazásához</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="f53ab04e9d8449445abf482bf44b521e2e695c3c" datatype="html">
|
||||
<source>Indexing</source>
|
||||
<context-group purpose="location">
|
||||
@ -1231,14 +1271,6 @@
|
||||
</context-group>
|
||||
<target>Más</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="6244017173fe88802248f410e78f2e637f98f634" datatype="html">
|
||||
<source>Restart the server to apply the new settings</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/other/other.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Indítsa újra a weboldalt az új beállítások alkalmazásához</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="45dda89cf029b7d7b457a8dff01dc4b9a6485816" datatype="html">
|
||||
<source>Thumbnail</source>
|
||||
<context-group purpose="location">
|
||||
@ -1263,6 +1295,14 @@
|
||||
</context-group>
|
||||
<target>Jelszavas védelem engedélyezve</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="c76b3ba44c5b7ab363729f81f763b29ef5d7a641" datatype="html">
|
||||
<source>Server restart is recommended.</source>
|
||||
<context-group purpose="location">
|
||||
<context context-type="sourcefile">frontend/app/settings/usermanager/usermanager.settings.component.ts</context>
|
||||
<context context-type="linenumber">1</context>
|
||||
</context-group>
|
||||
<target>Szerver újraindítás javasolt.</target>
|
||||
</trans-unit>
|
||||
<trans-unit id="00de5dcd17a5ebd17e67e0688bc638e01bc510a4" datatype="html">
|
||||
<source>Password protection disabled</source>
|
||||
<context-group purpose="location">
|
||||
|
@ -70,7 +70,7 @@
|
||||
"@types/node": "^10.0.3",
|
||||
"@types/sharp": "^0.17.8",
|
||||
"@types/winston": "^2.3.9",
|
||||
"bootstrap": "3.3.7",
|
||||
"bootstrap": "4.1.1",
|
||||
"chai": "^4.1.2",
|
||||
"codelyzer": "~4.3.0",
|
||||
"core-js": "^2.5.5",
|
||||
@ -100,6 +100,7 @@
|
||||
"ng2-toastr": "^4.1.2",
|
||||
"ngx-bootstrap": "^2.0.4",
|
||||
"ngx-clipboard": "^10.0.0",
|
||||
"open-iconic": "^1.1.1",
|
||||
"protractor": "^5.3.1",
|
||||
"remap-istanbul": "^0.11.1",
|
||||
"rimraf": "^2.6.2",
|
||||
|
Loading…
Reference in New Issue
Block a user