Merge branch 'dev' into dobrotyzpece.cz
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #52BCD3;
|
||||
}
|
||||
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #59c2e6;
|
||||
}
|
||||
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #85CE36;
|
||||
}
|
||||
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #fe821d;
|
||||
}
|
||||
|
||||
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #7867A7;
|
||||
}
|
||||
|
||||
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #FF6161;
|
||||
}
|
||||
@@ -2770,3 +2770,7 @@ span a {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #4bcf99;
|
||||
}
|
||||
|
||||
@@ -2883,3 +2883,7 @@ pre {
|
||||
@media (max-width: 767px) {
|
||||
.header .header-block-nav .profile-dropdown-menu {
|
||||
margin-top: 8px; } }
|
||||
|
||||
.tag-primary {
|
||||
background-color: #85CE36;
|
||||
}
|
||||
@@ -13623,7 +13623,7 @@ button.close {
|
||||
}
|
||||
|
||||
.text-primary {
|
||||
color: #0275D8 !important;
|
||||
color: #0275D8;
|
||||
}
|
||||
|
||||
a.text-primary:focus, a.text-primary:hover {
|
||||
@@ -13631,7 +13631,7 @@ a.text-primary:focus, a.text-primary:hover {
|
||||
}
|
||||
|
||||
.text-success {
|
||||
color: #5CB85C !important;
|
||||
color: #5CB85C;
|
||||
}
|
||||
|
||||
a.text-success:focus, a.text-success:hover {
|
||||
@@ -13639,7 +13639,7 @@ a.text-success:focus, a.text-success:hover {
|
||||
}
|
||||
|
||||
.text-info {
|
||||
color: #5BC0DE !important;
|
||||
color: #5BC0DE;
|
||||
}
|
||||
|
||||
a.text-info:focus, a.text-info:hover {
|
||||
@@ -14191,7 +14191,6 @@ img {
|
||||
|
||||
.timeline > li {
|
||||
position: relative;
|
||||
|
||||
}
|
||||
|
||||
.timeline > li:before,
|
||||
@@ -14204,7 +14203,6 @@ img {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
|
||||
.timeline > li > .timeline-panel {
|
||||
width: 46%;
|
||||
float: left;
|
||||
@@ -14250,7 +14248,7 @@ img {
|
||||
top: 26px;
|
||||
left: 50%;
|
||||
margin-left: -14px;
|
||||
background-color: #ddd;
|
||||
background-color: #DDD;
|
||||
z-index: 100;
|
||||
border-radius: 50%;
|
||||
}
|
||||
@@ -14349,6 +14347,7 @@ img {
|
||||
.ace-editor-container {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ace-editor {
|
||||
position: absolute !important;
|
||||
width: 100%;
|
||||
@@ -14365,18 +14364,124 @@ img {
|
||||
padding: .5em;
|
||||
}
|
||||
|
||||
.header-block img {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.truncate {
|
||||
width: 90%;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
word-break: break-all;
|
||||
}
|
||||
|
||||
.bold {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.m-l-10 {
|
||||
margin-left: 10px;
|
||||
}
|
||||
.m-t-15 {
|
||||
margin-top: 15px;
|
||||
}
|
||||
.p-tb-15 {
|
||||
padding-top: 15px;
|
||||
padding-bottom: 15px;
|
||||
}
|
||||
|
||||
.card .card-header .title {
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
.card .card-header .title small {
|
||||
padding-left: 10px;
|
||||
}
|
||||
.card.file-preview .card-block {
|
||||
padding: 0;
|
||||
height: 6em;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.card.file-preview .card-block p {
|
||||
padding: 1em 5px;
|
||||
}
|
||||
|
||||
.card.file-preview .card-footer {
|
||||
padding: 5px !important;
|
||||
}
|
||||
|
||||
.card.file-preview .card-block img {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
.tag {
|
||||
display: inline-block;
|
||||
padding: 0.25em 0.4em;
|
||||
font-size: 75%;
|
||||
font-weight: bold;
|
||||
line-height: 1;
|
||||
color: #fff;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
vertical-align: baseline;
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
|
||||
.tag:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.btn .tag {
|
||||
position: relative;
|
||||
top: -1px;
|
||||
}
|
||||
|
||||
a.tag:focus, a.tag:hover {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tag-pill {
|
||||
padding-right: 0.6em;
|
||||
padding-left: 0.6em;
|
||||
border-radius: 10rem;
|
||||
}
|
||||
|
||||
.tag-default {
|
||||
background-color: #818a91;
|
||||
}
|
||||
|
||||
.tag-default[href]:focus, .tag-default[href]:hover {
|
||||
background-color: #687077;
|
||||
}
|
||||
|
||||
.tag-success {
|
||||
background-color: #5cb85c;
|
||||
}
|
||||
|
||||
.tag-success[href]:focus, .tag-success[href]:hover {
|
||||
background-color: #449d44;
|
||||
}
|
||||
|
||||
.tag-info {
|
||||
background-color: #5bc0de;
|
||||
}
|
||||
|
||||
.tag-info[href]:focus, .tag-info[href]:hover {
|
||||
background-color: #31b0d5;
|
||||
}
|
||||
|
||||
.tag-warning {
|
||||
background-color: #f0ad4e;
|
||||
}
|
||||
|
||||
.tag-warning[href]:focus, .tag-warning[href]:hover {
|
||||
background-color: #ec971f;
|
||||
}
|
||||
|
||||
.tag-danger {
|
||||
background-color: #d9534f;
|
||||
}
|
||||
|
||||
.tag-danger[href]:focus, .tag-danger[href]:hover {
|
||||
background-color: #c9302c;
|
||||
}
|
||||
@@ -57632,3 +57632,203 @@ Licensed under the BSD-2-Clause License.
|
||||
})(Morris.EventEmitter);
|
||||
|
||||
}).call(this);
|
||||
(function($) {
|
||||
|
||||
$.fn.areYouSure = function(options) {
|
||||
|
||||
var settings = $.extend(
|
||||
{
|
||||
'message' : 'You have unsaved changes!',
|
||||
'dirtyClass' : 'dirty',
|
||||
'change' : null,
|
||||
'silent' : false,
|
||||
'addRemoveFieldsMarksDirty' : false,
|
||||
'fieldEvents' : 'change keyup propertychange input',
|
||||
'fieldSelector': ":input:not(input[type=submit]):not(input[type=button])"
|
||||
}, options);
|
||||
|
||||
var getValue = function($field) {
|
||||
if ($field.hasClass('ays-ignore')
|
||||
|| $field.hasClass('aysIgnore')
|
||||
|| $field.attr('data-ays-ignore')
|
||||
|| $field.attr('name') === undefined) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if ($field.is(':disabled')) {
|
||||
return 'ays-disabled';
|
||||
}
|
||||
|
||||
var val;
|
||||
var type = $field.attr('type');
|
||||
if ($field.is('select')) {
|
||||
type = 'select';
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case 'checkbox':
|
||||
case 'radio':
|
||||
val = $field.is(':checked');
|
||||
break;
|
||||
case 'select':
|
||||
val = '';
|
||||
$field.find('option').each(function(o) {
|
||||
var $option = $(this);
|
||||
if ($option.is(':selected')) {
|
||||
val += $option.val();
|
||||
}
|
||||
});
|
||||
break;
|
||||
default:
|
||||
val = $field.val();
|
||||
}
|
||||
|
||||
return val;
|
||||
};
|
||||
|
||||
var storeOrigValue = function($field) {
|
||||
$field.data('ays-orig', getValue($field));
|
||||
};
|
||||
|
||||
var checkForm = function(evt) {
|
||||
|
||||
var isFieldDirty = function($field) {
|
||||
var origValue = $field.data('ays-orig');
|
||||
if (undefined === origValue) {
|
||||
return false;
|
||||
}
|
||||
return (getValue($field) != origValue);
|
||||
};
|
||||
|
||||
var $form = ($(this).is('form'))
|
||||
? $(this)
|
||||
: $(this).parents('form');
|
||||
|
||||
// Test on the target first as it's the most likely to be dirty
|
||||
if (isFieldDirty($(evt.target))) {
|
||||
setDirtyStatus($form, true);
|
||||
return;
|
||||
}
|
||||
|
||||
$fields = $form.find(settings.fieldSelector);
|
||||
|
||||
if (settings.addRemoveFieldsMarksDirty) {
|
||||
// Check if field count has changed
|
||||
var origCount = $form.data("ays-orig-field-count");
|
||||
if (origCount != $fields.length) {
|
||||
setDirtyStatus($form, true);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Brute force - check each field
|
||||
var isDirty = false;
|
||||
$fields.each(function() {
|
||||
$field = $(this);
|
||||
if (isFieldDirty($field)) {
|
||||
isDirty = true;
|
||||
return false; // break
|
||||
}
|
||||
});
|
||||
|
||||
setDirtyStatus($form, isDirty);
|
||||
};
|
||||
|
||||
var initForm = function($form) {
|
||||
var fields = $form.find(settings.fieldSelector);
|
||||
$(fields).each(function() { storeOrigValue($(this)); });
|
||||
$(fields).unbind(settings.fieldEvents, checkForm);
|
||||
$(fields).bind(settings.fieldEvents, checkForm);
|
||||
$form.data("ays-orig-field-count", $(fields).length);
|
||||
setDirtyStatus($form, false);
|
||||
};
|
||||
|
||||
var setDirtyStatus = function($form, isDirty) {
|
||||
var changed = isDirty != $form.hasClass(settings.dirtyClass);
|
||||
$form.toggleClass(settings.dirtyClass, isDirty);
|
||||
|
||||
// Fire change event if required
|
||||
if (changed) {
|
||||
if (settings.change) settings.change.call($form, $form);
|
||||
|
||||
if (isDirty) $form.trigger('dirty.areYouSure', [$form]);
|
||||
if (!isDirty) $form.trigger('clean.areYouSure', [$form]);
|
||||
$form.trigger('change.areYouSure', [$form]);
|
||||
}
|
||||
};
|
||||
|
||||
var rescan = function() {
|
||||
var $form = $(this);
|
||||
var fields = $form.find(settings.fieldSelector);
|
||||
$(fields).each(function() {
|
||||
var $field = $(this);
|
||||
if (!$field.data('ays-orig')) {
|
||||
storeOrigValue($field);
|
||||
$field.bind(settings.fieldEvents, checkForm);
|
||||
}
|
||||
});
|
||||
// Check for changes while we're here
|
||||
$form.trigger('checkform.areYouSure');
|
||||
};
|
||||
|
||||
var reinitialize = function() {
|
||||
initForm($(this));
|
||||
}
|
||||
|
||||
if (!settings.silent && !window.aysUnloadSet) {
|
||||
window.aysUnloadSet = true;
|
||||
$(window).bind('beforeunload', function() {
|
||||
$dirtyForms = $("form").filter('.' + settings.dirtyClass);
|
||||
if ($dirtyForms.length == 0) {
|
||||
return;
|
||||
}
|
||||
// Prevent multiple prompts - seen on Chrome and IE
|
||||
if (navigator.userAgent.toLowerCase().match(/msie|chrome/)) {
|
||||
if (window.aysHasPrompted) {
|
||||
return;
|
||||
}
|
||||
window.aysHasPrompted = true;
|
||||
window.setTimeout(function() {window.aysHasPrompted = false;}, 900);
|
||||
}
|
||||
return settings.message;
|
||||
});
|
||||
}
|
||||
|
||||
return this.each(function(elem) {
|
||||
if (!$(this).is('form')) {
|
||||
return;
|
||||
}
|
||||
var $form = $(this);
|
||||
|
||||
$form.submit(function() {
|
||||
$form.removeClass(settings.dirtyClass);
|
||||
});
|
||||
$form.bind('reset', function() { setDirtyStatus($form, false); });
|
||||
// Add a custom events
|
||||
$form.bind('rescan.areYouSure', rescan);
|
||||
$form.bind('reinitialize.areYouSure', reinitialize);
|
||||
$form.bind('checkform.areYouSure', checkForm);
|
||||
initForm($form);
|
||||
});
|
||||
};
|
||||
})(jQuery);
|
||||
$(function() {
|
||||
if (!navigator.userAgent.toLowerCase().match(/iphone|ipad|ipod|opera/)) {
|
||||
return;
|
||||
}
|
||||
$('a').bind('click', function(evt) {
|
||||
var href = $(evt.target).closest('a').attr('href');
|
||||
if (href !== undefined && !(href.match(/^#/) || href.trim() == '')) {
|
||||
var response = $(window).triggerHandler('beforeunload', response);
|
||||
if (response && response != "") {
|
||||
var msg = response + "\n\n"
|
||||
+ "Press OK to leave this page or Cancel to stay.";
|
||||
if (!confirm(msg)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
window.location.href = href;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
@@ -0,0 +1,577 @@
|
||||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
|
||||
/* Copyright 2012 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/* globals VBArray, PDFJS */
|
||||
|
||||
'use strict';
|
||||
|
||||
// Initializing PDFJS global object here, it case if we need to change/disable
|
||||
// some PDF.js features, e.g. range requests
|
||||
if (typeof PDFJS === 'undefined') {
|
||||
(typeof window !== 'undefined' ? window : this).PDFJS = {};
|
||||
}
|
||||
|
||||
// Checking if the typed arrays are supported
|
||||
// Support: iOS<6.0 (subarray), IE<10, Android<4.0
|
||||
(function checkTypedArrayCompatibility() {
|
||||
if (typeof Uint8Array !== 'undefined') {
|
||||
// Support: iOS<6.0
|
||||
if (typeof Uint8Array.prototype.subarray === 'undefined') {
|
||||
Uint8Array.prototype.subarray = function subarray(start, end) {
|
||||
return new Uint8Array(this.slice(start, end));
|
||||
};
|
||||
Float32Array.prototype.subarray = function subarray(start, end) {
|
||||
return new Float32Array(this.slice(start, end));
|
||||
};
|
||||
}
|
||||
|
||||
// Support: Android<4.1
|
||||
if (typeof Float64Array === 'undefined') {
|
||||
window.Float64Array = Float32Array;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
function subarray(start, end) {
|
||||
return new TypedArray(this.slice(start, end));
|
||||
}
|
||||
|
||||
function setArrayOffset(array, offset) {
|
||||
if (arguments.length < 2) {
|
||||
offset = 0;
|
||||
}
|
||||
for (var i = 0, n = array.length; i < n; ++i, ++offset) {
|
||||
this[offset] = array[i] & 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
function TypedArray(arg1) {
|
||||
var result, i, n;
|
||||
if (typeof arg1 === 'number') {
|
||||
result = [];
|
||||
for (i = 0; i < arg1; ++i) {
|
||||
result[i] = 0;
|
||||
}
|
||||
} else if ('slice' in arg1) {
|
||||
result = arg1.slice(0);
|
||||
} else {
|
||||
result = [];
|
||||
for (i = 0, n = arg1.length; i < n; ++i) {
|
||||
result[i] = arg1[i];
|
||||
}
|
||||
}
|
||||
|
||||
result.subarray = subarray;
|
||||
result.buffer = result;
|
||||
result.byteLength = result.length;
|
||||
result.set = setArrayOffset;
|
||||
|
||||
if (typeof arg1 === 'object' && arg1.buffer) {
|
||||
result.buffer = arg1.buffer;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
window.Uint8Array = TypedArray;
|
||||
window.Int8Array = TypedArray;
|
||||
|
||||
// we don't need support for set, byteLength for 32-bit array
|
||||
// so we can use the TypedArray as well
|
||||
window.Uint32Array = TypedArray;
|
||||
window.Int32Array = TypedArray;
|
||||
window.Uint16Array = TypedArray;
|
||||
window.Float32Array = TypedArray;
|
||||
window.Float64Array = TypedArray;
|
||||
})();
|
||||
|
||||
// URL = URL || webkitURL
|
||||
// Support: Safari<7, Android 4.2+
|
||||
(function normalizeURLObject() {
|
||||
if (!window.URL) {
|
||||
window.URL = window.webkitURL;
|
||||
}
|
||||
})();
|
||||
|
||||
// Object.defineProperty()?
|
||||
// Support: Android<4.0, Safari<5.1
|
||||
(function checkObjectDefinePropertyCompatibility() {
|
||||
if (typeof Object.defineProperty !== 'undefined') {
|
||||
var definePropertyPossible = true;
|
||||
try {
|
||||
// some browsers (e.g. safari) cannot use defineProperty() on DOM objects
|
||||
// and thus the native version is not sufficient
|
||||
Object.defineProperty(new Image(), 'id', { value: 'test' });
|
||||
// ... another test for android gb browser for non-DOM objects
|
||||
var Test = function Test() {};
|
||||
Test.prototype = { get id() { } };
|
||||
Object.defineProperty(new Test(), 'id',
|
||||
{ value: '', configurable: true, enumerable: true, writable: false });
|
||||
} catch (e) {
|
||||
definePropertyPossible = false;
|
||||
}
|
||||
if (definePropertyPossible) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
Object.defineProperty = function objectDefineProperty(obj, name, def) {
|
||||
delete obj[name];
|
||||
if ('get' in def) {
|
||||
obj.__defineGetter__(name, def['get']);
|
||||
}
|
||||
if ('set' in def) {
|
||||
obj.__defineSetter__(name, def['set']);
|
||||
}
|
||||
if ('value' in def) {
|
||||
obj.__defineSetter__(name, function objectDefinePropertySetter(value) {
|
||||
this.__defineGetter__(name, function objectDefinePropertyGetter() {
|
||||
return value;
|
||||
});
|
||||
return value;
|
||||
});
|
||||
obj[name] = def.value;
|
||||
}
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
// No XMLHttpRequest#response?
|
||||
// Support: IE<11, Android <4.0
|
||||
(function checkXMLHttpRequestResponseCompatibility() {
|
||||
var xhrPrototype = XMLHttpRequest.prototype;
|
||||
var xhr = new XMLHttpRequest();
|
||||
if (!('overrideMimeType' in xhr)) {
|
||||
// IE10 might have response, but not overrideMimeType
|
||||
// Support: IE10
|
||||
Object.defineProperty(xhrPrototype, 'overrideMimeType', {
|
||||
value: function xmlHttpRequestOverrideMimeType(mimeType) {}
|
||||
});
|
||||
}
|
||||
if ('responseType' in xhr) {
|
||||
return;
|
||||
}
|
||||
|
||||
// The worker will be using XHR, so we can save time and disable worker.
|
||||
PDFJS.disableWorker = true;
|
||||
|
||||
Object.defineProperty(xhrPrototype, 'responseType', {
|
||||
get: function xmlHttpRequestGetResponseType() {
|
||||
return this._responseType || 'text';
|
||||
},
|
||||
set: function xmlHttpRequestSetResponseType(value) {
|
||||
if (value === 'text' || value === 'arraybuffer') {
|
||||
this._responseType = value;
|
||||
if (value === 'arraybuffer' &&
|
||||
typeof this.overrideMimeType === 'function') {
|
||||
this.overrideMimeType('text/plain; charset=x-user-defined');
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Support: IE9
|
||||
if (typeof VBArray !== 'undefined') {
|
||||
Object.defineProperty(xhrPrototype, 'response', {
|
||||
get: function xmlHttpRequestResponseGet() {
|
||||
if (this.responseType === 'arraybuffer') {
|
||||
return new Uint8Array(new VBArray(this.responseBody).toArray());
|
||||
} else {
|
||||
return this.responseText;
|
||||
}
|
||||
}
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
Object.defineProperty(xhrPrototype, 'response', {
|
||||
get: function xmlHttpRequestResponseGet() {
|
||||
if (this.responseType !== 'arraybuffer') {
|
||||
return this.responseText;
|
||||
}
|
||||
var text = this.responseText;
|
||||
var i, n = text.length;
|
||||
var result = new Uint8Array(n);
|
||||
for (i = 0; i < n; ++i) {
|
||||
result[i] = text.charCodeAt(i) & 0xFF;
|
||||
}
|
||||
return result.buffer;
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
||||
// window.btoa (base64 encode function) ?
|
||||
// Support: IE<10
|
||||
(function checkWindowBtoaCompatibility() {
|
||||
if ('btoa' in window) {
|
||||
return;
|
||||
}
|
||||
|
||||
var digits =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
|
||||
window.btoa = function windowBtoa(chars) {
|
||||
var buffer = '';
|
||||
var i, n;
|
||||
for (i = 0, n = chars.length; i < n; i += 3) {
|
||||
var b1 = chars.charCodeAt(i) & 0xFF;
|
||||
var b2 = chars.charCodeAt(i + 1) & 0xFF;
|
||||
var b3 = chars.charCodeAt(i + 2) & 0xFF;
|
||||
var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
|
||||
var d3 = i + 1 < n ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
|
||||
var d4 = i + 2 < n ? (b3 & 0x3F) : 64;
|
||||
buffer += (digits.charAt(d1) + digits.charAt(d2) +
|
||||
digits.charAt(d3) + digits.charAt(d4));
|
||||
}
|
||||
return buffer;
|
||||
};
|
||||
})();
|
||||
|
||||
// window.atob (base64 encode function)?
|
||||
// Support: IE<10
|
||||
(function checkWindowAtobCompatibility() {
|
||||
if ('atob' in window) {
|
||||
return;
|
||||
}
|
||||
|
||||
// https://github.com/davidchambers/Base64.js
|
||||
var digits =
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
|
||||
window.atob = function (input) {
|
||||
input = input.replace(/=+$/, '');
|
||||
if (input.length % 4 === 1) {
|
||||
throw new Error('bad atob input');
|
||||
}
|
||||
for (
|
||||
// initialize result and counters
|
||||
var bc = 0, bs, buffer, idx = 0, output = '';
|
||||
// get next character
|
||||
buffer = input.charAt(idx++);
|
||||
// character found in table?
|
||||
// initialize bit storage and add its ascii value
|
||||
~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,
|
||||
// and if not first of each 4 characters,
|
||||
// convert the first 8 bits to one ascii character
|
||||
bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0
|
||||
) {
|
||||
// try to find character in table (0-63, not found => -1)
|
||||
buffer = digits.indexOf(buffer);
|
||||
}
|
||||
return output;
|
||||
};
|
||||
})();
|
||||
|
||||
// Function.prototype.bind?
|
||||
// Support: Android<4.0, iOS<6.0
|
||||
(function checkFunctionPrototypeBindCompatibility() {
|
||||
if (typeof Function.prototype.bind !== 'undefined') {
|
||||
return;
|
||||
}
|
||||
|
||||
Function.prototype.bind = function functionPrototypeBind(obj) {
|
||||
var fn = this, headArgs = Array.prototype.slice.call(arguments, 1);
|
||||
var bound = function functionPrototypeBindBound() {
|
||||
var args = headArgs.concat(Array.prototype.slice.call(arguments));
|
||||
return fn.apply(obj, args);
|
||||
};
|
||||
return bound;
|
||||
};
|
||||
})();
|
||||
|
||||
// HTMLElement dataset property
|
||||
// Support: IE<11, Safari<5.1, Android<4.0
|
||||
(function checkDatasetProperty() {
|
||||
var div = document.createElement('div');
|
||||
if ('dataset' in div) {
|
||||
return; // dataset property exists
|
||||
}
|
||||
|
||||
Object.defineProperty(HTMLElement.prototype, 'dataset', {
|
||||
get: function() {
|
||||
if (this._dataset) {
|
||||
return this._dataset;
|
||||
}
|
||||
|
||||
var dataset = {};
|
||||
for (var j = 0, jj = this.attributes.length; j < jj; j++) {
|
||||
var attribute = this.attributes[j];
|
||||
if (attribute.name.substring(0, 5) !== 'data-') {
|
||||
continue;
|
||||
}
|
||||
var key = attribute.name.substring(5).replace(/\-([a-z])/g,
|
||||
function(all, ch) {
|
||||
return ch.toUpperCase();
|
||||
});
|
||||
dataset[key] = attribute.value;
|
||||
}
|
||||
|
||||
Object.defineProperty(this, '_dataset', {
|
||||
value: dataset,
|
||||
writable: false,
|
||||
enumerable: false
|
||||
});
|
||||
return dataset;
|
||||
},
|
||||
enumerable: true
|
||||
});
|
||||
})();
|
||||
|
||||
// HTMLElement classList property
|
||||
// Support: IE<10, Android<4.0, iOS<5.0
|
||||
(function checkClassListProperty() {
|
||||
var div = document.createElement('div');
|
||||
if ('classList' in div) {
|
||||
return; // classList property exists
|
||||
}
|
||||
|
||||
function changeList(element, itemName, add, remove) {
|
||||
var s = element.className || '';
|
||||
var list = s.split(/\s+/g);
|
||||
if (list[0] === '') {
|
||||
list.shift();
|
||||
}
|
||||
var index = list.indexOf(itemName);
|
||||
if (index < 0 && add) {
|
||||
list.push(itemName);
|
||||
}
|
||||
if (index >= 0 && remove) {
|
||||
list.splice(index, 1);
|
||||
}
|
||||
element.className = list.join(' ');
|
||||
return (index >= 0);
|
||||
}
|
||||
|
||||
var classListPrototype = {
|
||||
add: function(name) {
|
||||
changeList(this.element, name, true, false);
|
||||
},
|
||||
contains: function(name) {
|
||||
return changeList(this.element, name, false, false);
|
||||
},
|
||||
remove: function(name) {
|
||||
changeList(this.element, name, false, true);
|
||||
},
|
||||
toggle: function(name) {
|
||||
changeList(this.element, name, true, true);
|
||||
}
|
||||
};
|
||||
|
||||
Object.defineProperty(HTMLElement.prototype, 'classList', {
|
||||
get: function() {
|
||||
if (this._classList) {
|
||||
return this._classList;
|
||||
}
|
||||
|
||||
var classList = Object.create(classListPrototype, {
|
||||
element: {
|
||||
value: this,
|
||||
writable: false,
|
||||
enumerable: true
|
||||
}
|
||||
});
|
||||
Object.defineProperty(this, '_classList', {
|
||||
value: classList,
|
||||
writable: false,
|
||||
enumerable: false
|
||||
});
|
||||
return classList;
|
||||
},
|
||||
enumerable: true
|
||||
});
|
||||
})();
|
||||
|
||||
// Check console compatibility
|
||||
// In older IE versions the console object is not available
|
||||
// unless console is open.
|
||||
// Support: IE<10
|
||||
(function checkConsoleCompatibility() {
|
||||
if (!('console' in window)) {
|
||||
window.console = {
|
||||
log: function() {},
|
||||
error: function() {},
|
||||
warn: function() {}
|
||||
};
|
||||
} else if (!('bind' in console.log)) {
|
||||
// native functions in IE9 might not have bind
|
||||
console.log = (function(fn) {
|
||||
return function(msg) { return fn(msg); };
|
||||
})(console.log);
|
||||
console.error = (function(fn) {
|
||||
return function(msg) { return fn(msg); };
|
||||
})(console.error);
|
||||
console.warn = (function(fn) {
|
||||
return function(msg) { return fn(msg); };
|
||||
})(console.warn);
|
||||
}
|
||||
})();
|
||||
|
||||
// Check onclick compatibility in Opera
|
||||
// Support: Opera<15
|
||||
(function checkOnClickCompatibility() {
|
||||
// workaround for reported Opera bug DSK-354448:
|
||||
// onclick fires on disabled buttons with opaque content
|
||||
function ignoreIfTargetDisabled(event) {
|
||||
if (isDisabled(event.target)) {
|
||||
event.stopPropagation();
|
||||
}
|
||||
}
|
||||
function isDisabled(node) {
|
||||
return node.disabled || (node.parentNode && isDisabled(node.parentNode));
|
||||
}
|
||||
if (navigator.userAgent.indexOf('Opera') !== -1) {
|
||||
// use browser detection since we cannot feature-check this bug
|
||||
document.addEventListener('click', ignoreIfTargetDisabled, true);
|
||||
}
|
||||
})();
|
||||
|
||||
// Checks if possible to use URL.createObjectURL()
|
||||
// Support: IE
|
||||
(function checkOnBlobSupport() {
|
||||
// sometimes IE loosing the data created with createObjectURL(), see #3977
|
||||
if (navigator.userAgent.indexOf('Trident') >= 0) {
|
||||
PDFJS.disableCreateObjectURL = true;
|
||||
}
|
||||
})();
|
||||
|
||||
// Checks if navigator.language is supported
|
||||
(function checkNavigatorLanguage() {
|
||||
if ('language' in navigator) {
|
||||
return;
|
||||
}
|
||||
PDFJS.locale = navigator.userLanguage || 'en-US';
|
||||
})();
|
||||
|
||||
(function checkRangeRequests() {
|
||||
// Safari has issues with cached range requests see:
|
||||
// https://github.com/mozilla/pdf.js/issues/3260
|
||||
// Last tested with version 6.0.4.
|
||||
// Support: Safari 6.0+
|
||||
var isSafari = Object.prototype.toString.call(
|
||||
window.HTMLElement).indexOf('Constructor') > 0;
|
||||
|
||||
// Older versions of Android (pre 3.0) has issues with range requests, see:
|
||||
// https://github.com/mozilla/pdf.js/issues/3381.
|
||||
// Make sure that we only match webkit-based Android browsers,
|
||||
// since Firefox/Fennec works as expected.
|
||||
// Support: Android<3.0
|
||||
var regex = /Android\s[0-2][^\d]/;
|
||||
var isOldAndroid = regex.test(navigator.userAgent);
|
||||
|
||||
// Range requests are broken in Chrome 39 and 40, https://crbug.com/442318
|
||||
var isChromeWithRangeBug = /Chrome\/(39|40)\./.test(navigator.userAgent);
|
||||
|
||||
if (isSafari || isOldAndroid || isChromeWithRangeBug) {
|
||||
PDFJS.disableRange = true;
|
||||
PDFJS.disableStream = true;
|
||||
}
|
||||
})();
|
||||
|
||||
// Check if the browser supports manipulation of the history.
|
||||
// Support: IE<10, Android<4.2
|
||||
(function checkHistoryManipulation() {
|
||||
// Android 2.x has so buggy pushState support that it was removed in
|
||||
// Android 3.0 and restored as late as in Android 4.2.
|
||||
// Support: Android 2.x
|
||||
if (!history.pushState || navigator.userAgent.indexOf('Android 2.') >= 0) {
|
||||
PDFJS.disableHistory = true;
|
||||
}
|
||||
})();
|
||||
|
||||
// Support: IE<11, Chrome<21, Android<4.4, Safari<6
|
||||
(function checkSetPresenceInImageData() {
|
||||
// IE < 11 will use window.CanvasPixelArray which lacks set function.
|
||||
if (window.CanvasPixelArray) {
|
||||
if (typeof window.CanvasPixelArray.prototype.set !== 'function') {
|
||||
window.CanvasPixelArray.prototype.set = function(arr) {
|
||||
for (var i = 0, ii = this.length; i < ii; i++) {
|
||||
this[i] = arr[i];
|
||||
}
|
||||
};
|
||||
}
|
||||
} else {
|
||||
// Old Chrome and Android use an inaccessible CanvasPixelArray prototype.
|
||||
// Because we cannot feature detect it, we rely on user agent parsing.
|
||||
var polyfill = false, versionMatch;
|
||||
if (navigator.userAgent.indexOf('Chrom') >= 0) {
|
||||
versionMatch = navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./);
|
||||
// Chrome < 21 lacks the set function.
|
||||
polyfill = versionMatch && parseInt(versionMatch[2]) < 21;
|
||||
} else if (navigator.userAgent.indexOf('Android') >= 0) {
|
||||
// Android < 4.4 lacks the set function.
|
||||
// Android >= 4.4 will contain Chrome in the user agent,
|
||||
// thus pass the Chrome check above and not reach this block.
|
||||
polyfill = /Android\s[0-4][^\d]/g.test(navigator.userAgent);
|
||||
} else if (navigator.userAgent.indexOf('Safari') >= 0) {
|
||||
versionMatch = navigator.userAgent.
|
||||
match(/Version\/([0-9]+)\.([0-9]+)\.([0-9]+) Safari\//);
|
||||
// Safari < 6 lacks the set function.
|
||||
polyfill = versionMatch && parseInt(versionMatch[1]) < 6;
|
||||
}
|
||||
|
||||
if (polyfill) {
|
||||
var contextPrototype = window.CanvasRenderingContext2D.prototype;
|
||||
contextPrototype._createImageData = contextPrototype.createImageData;
|
||||
contextPrototype.createImageData = function(w, h) {
|
||||
var imageData = this._createImageData(w, h);
|
||||
imageData.data.set = function(arr) {
|
||||
for (var i = 0, ii = this.length; i < ii; i++) {
|
||||
this[i] = arr[i];
|
||||
}
|
||||
};
|
||||
return imageData;
|
||||
};
|
||||
}
|
||||
}
|
||||
})();
|
||||
|
||||
// Support: IE<10, Android<4.0, iOS
|
||||
(function checkRequestAnimationFrame() {
|
||||
function fakeRequestAnimationFrame(callback) {
|
||||
window.setTimeout(callback, 20);
|
||||
}
|
||||
|
||||
var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
|
||||
if (isIOS) {
|
||||
// requestAnimationFrame on iOS is broken, replacing with fake one.
|
||||
window.requestAnimationFrame = fakeRequestAnimationFrame;
|
||||
return;
|
||||
}
|
||||
if ('requestAnimationFrame' in window) {
|
||||
return;
|
||||
}
|
||||
window.requestAnimationFrame =
|
||||
window.mozRequestAnimationFrame ||
|
||||
window.webkitRequestAnimationFrame ||
|
||||
fakeRequestAnimationFrame;
|
||||
})();
|
||||
|
||||
(function checkCanvasSizeLimitation() {
|
||||
var isIOS = /(iPad|iPhone|iPod)/g.test(navigator.userAgent);
|
||||
var isAndroid = /Android/g.test(navigator.userAgent);
|
||||
if (isIOS || isAndroid) {
|
||||
// 5MP
|
||||
PDFJS.maxCanvasPixels = 5242880;
|
||||
}
|
||||
})();
|
||||
|
||||
// Disable fullscreen support for certain problematic configurations.
|
||||
// Support: IE11+ (when embedded).
|
||||
(function checkFullscreenSupport() {
|
||||
var isEmbeddedIE = (navigator.userAgent.indexOf('Trident') >= 0 &&
|
||||
window.parent !== window);
|
||||
if (isEmbeddedIE) {
|
||||
PDFJS.disableFullscreen = true;
|
||||
}
|
||||
})();
|
||||
@@ -0,0 +1,27 @@
|
||||
/* This is just a sample file with CSS rules. You should write your own @font-face declarations
|
||||
* to add support for your desired fonts.
|
||||
*/
|
||||
|
||||
@font-face {
|
||||
font-family: 'Novecentowide Book';
|
||||
src: url("/ViewerJS/fonts/Novecentowide-Bold-webfont.eot");
|
||||
src: url("/ViewerJS/fonts/Novecentowide-Bold-webfont.eot?#iefix") format("embedded-opentype"),
|
||||
url("/ViewerJS/fonts/Novecentowide-Bold-webfont.woff") format("woff"),
|
||||
url("/fonts/Novecentowide-Bold-webfont.ttf") format("truetype"),
|
||||
url("/fonts/Novecentowide-Bold-webfont.svg#NovecentowideBookBold") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'exotica';
|
||||
src: url('/ViewerJS/fonts/Exotica-webfont.eot');
|
||||
src: url('/ViewerJS/fonts/Exotica-webfont.eot?#iefix') format('embedded-opentype'),
|
||||
url('/ViewerJS/fonts/Exotica-webfont.woff') format('woff'),
|
||||
url('/ViewerJS/fonts/Exotica-webfont.ttf') format('truetype'),
|
||||
url('/ViewerJS/fonts/Exotica-webfont.svg#exoticamedium') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
|
||||
}
|
||||
|
||||
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 2.4 KiB |
|
After Width: | Height: | Size: 512 B |
|
After Width: | Height: | Size: 491 B |
|
After Width: | Height: | Size: 237 B |
|
After Width: | Height: | Size: 353 B |
|
After Width: | Height: | Size: 344 B |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 228 B |
|
After Width: | Height: | Size: 143 B |
@@ -0,0 +1 @@
|
||||
var /**@const{!string}*/pdfjs_version = "v1.1.114";
|
||||
@@ -0,0 +1,419 @@
|
||||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* Copyright 2012 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
/* globals CustomStyle, PDFJS */
|
||||
|
||||
'use strict';
|
||||
|
||||
var MAX_TEXT_DIVS_TO_RENDER = 100000;
|
||||
|
||||
var NonWhitespaceRegexp = /\S/;
|
||||
|
||||
function isAllWhitespace(str) {
|
||||
return !NonWhitespaceRegexp.test(str);
|
||||
}
|
||||
|
||||
/**
|
||||
* @typedef {Object} TextLayerBuilderOptions
|
||||
* @property {HTMLDivElement} textLayerDiv - The text layer container.
|
||||
* @property {number} pageIndex - The page index.
|
||||
* @property {PageViewport} viewport - The viewport of the text layer.
|
||||
* @property {PDFFindController} findController
|
||||
*/
|
||||
|
||||
/**
|
||||
* TextLayerBuilder provides text-selection functionality for the PDF.
|
||||
* It does this by creating overlay divs over the PDF text. These divs
|
||||
* contain text that matches the PDF text they are overlaying. This object
|
||||
* also provides a way to highlight text that is being searched for.
|
||||
* @class
|
||||
*/
|
||||
var TextLayerBuilder = (function TextLayerBuilderClosure() {
|
||||
function TextLayerBuilder(options) {
|
||||
this.textLayerDiv = options.textLayerDiv;
|
||||
this.renderingDone = false;
|
||||
this.divContentDone = false;
|
||||
this.pageIdx = options.pageIndex;
|
||||
this.pageNumber = this.pageIdx + 1;
|
||||
this.matches = [];
|
||||
this.viewport = options.viewport;
|
||||
this.textDivs = [];
|
||||
this.findController = options.findController || null;
|
||||
}
|
||||
|
||||
TextLayerBuilder.prototype = {
|
||||
_finishRendering: function TextLayerBuilder_finishRendering() {
|
||||
this.renderingDone = true;
|
||||
|
||||
var event = document.createEvent('CustomEvent');
|
||||
event.initCustomEvent('textlayerrendered', true, true, {
|
||||
pageNumber: this.pageNumber
|
||||
});
|
||||
this.textLayerDiv.dispatchEvent(event);
|
||||
},
|
||||
|
||||
renderLayer: function TextLayerBuilder_renderLayer() {
|
||||
var textLayerFrag = document.createDocumentFragment();
|
||||
var textDivs = this.textDivs;
|
||||
var textDivsLength = textDivs.length;
|
||||
var canvas = document.createElement('canvas');
|
||||
var ctx = canvas.getContext('2d');
|
||||
|
||||
// No point in rendering many divs as it would make the browser
|
||||
// unusable even after the divs are rendered.
|
||||
if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
|
||||
this._finishRendering();
|
||||
return;
|
||||
}
|
||||
|
||||
var lastFontSize;
|
||||
var lastFontFamily;
|
||||
for (var i = 0; i < textDivsLength; i++) {
|
||||
var textDiv = textDivs[i];
|
||||
if (textDiv.dataset.isWhitespace !== undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
var fontSize = textDiv.style.fontSize;
|
||||
var fontFamily = textDiv.style.fontFamily;
|
||||
|
||||
// Only build font string and set to context if different from last.
|
||||
if (fontSize !== lastFontSize || fontFamily !== lastFontFamily) {
|
||||
ctx.font = fontSize + ' ' + fontFamily;
|
||||
lastFontSize = fontSize;
|
||||
lastFontFamily = fontFamily;
|
||||
}
|
||||
|
||||
var width = ctx.measureText(textDiv.textContent).width;
|
||||
if (width > 0) {
|
||||
textLayerFrag.appendChild(textDiv);
|
||||
var transform;
|
||||
if (textDiv.dataset.canvasWidth !== undefined) {
|
||||
// Dataset values come of type string.
|
||||
var textScale = textDiv.dataset.canvasWidth / width;
|
||||
transform = 'scaleX(' + textScale + ')';
|
||||
} else {
|
||||
transform = '';
|
||||
}
|
||||
var rotation = textDiv.dataset.angle;
|
||||
if (rotation) {
|
||||
transform = 'rotate(' + rotation + 'deg) ' + transform;
|
||||
}
|
||||
if (transform) {
|
||||
CustomStyle.setProp('transform' , textDiv, transform);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this.textLayerDiv.appendChild(textLayerFrag);
|
||||
this._finishRendering();
|
||||
this.updateMatches();
|
||||
},
|
||||
|
||||
/**
|
||||
* Renders the text layer.
|
||||
* @param {number} timeout (optional) if specified, the rendering waits
|
||||
* for specified amount of ms.
|
||||
*/
|
||||
render: function TextLayerBuilder_render(timeout) {
|
||||
if (!this.divContentDone || this.renderingDone) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.renderTimer) {
|
||||
clearTimeout(this.renderTimer);
|
||||
this.renderTimer = null;
|
||||
}
|
||||
|
||||
if (!timeout) { // Render right away
|
||||
this.renderLayer();
|
||||
} else { // Schedule
|
||||
var self = this;
|
||||
this.renderTimer = setTimeout(function() {
|
||||
self.renderLayer();
|
||||
self.renderTimer = null;
|
||||
}, timeout);
|
||||
}
|
||||
},
|
||||
|
||||
appendText: function TextLayerBuilder_appendText(geom, styles) {
|
||||
var style = styles[geom.fontName];
|
||||
var textDiv = document.createElement('div');
|
||||
this.textDivs.push(textDiv);
|
||||
if (isAllWhitespace(geom.str)) {
|
||||
textDiv.dataset.isWhitespace = true;
|
||||
return;
|
||||
}
|
||||
var tx = PDFJS.Util.transform(this.viewport.transform, geom.transform);
|
||||
var angle = Math.atan2(tx[1], tx[0]);
|
||||
if (style.vertical) {
|
||||
angle += Math.PI / 2;
|
||||
}
|
||||
var fontHeight = Math.sqrt((tx[2] * tx[2]) + (tx[3] * tx[3]));
|
||||
var fontAscent = fontHeight;
|
||||
if (style.ascent) {
|
||||
fontAscent = style.ascent * fontAscent;
|
||||
} else if (style.descent) {
|
||||
fontAscent = (1 + style.descent) * fontAscent;
|
||||
}
|
||||
|
||||
var left;
|
||||
var top;
|
||||
if (angle === 0) {
|
||||
left = tx[4];
|
||||
top = tx[5] - fontAscent;
|
||||
} else {
|
||||
left = tx[4] + (fontAscent * Math.sin(angle));
|
||||
top = tx[5] - (fontAscent * Math.cos(angle));
|
||||
}
|
||||
textDiv.style.left = left + 'px';
|
||||
textDiv.style.top = top + 'px';
|
||||
textDiv.style.fontSize = fontHeight + 'px';
|
||||
textDiv.style.fontFamily = style.fontFamily;
|
||||
|
||||
textDiv.textContent = geom.str;
|
||||
// |fontName| is only used by the Font Inspector. This test will succeed
|
||||
// when e.g. the Font Inspector is off but the Stepper is on, but it's
|
||||
// not worth the effort to do a more accurate test.
|
||||
if (PDFJS.pdfBug) {
|
||||
textDiv.dataset.fontName = geom.fontName;
|
||||
}
|
||||
// Storing into dataset will convert number into string.
|
||||
if (angle !== 0) {
|
||||
textDiv.dataset.angle = angle * (180 / Math.PI);
|
||||
}
|
||||
// We don't bother scaling single-char text divs, because it has very
|
||||
// little effect on text highlighting. This makes scrolling on docs with
|
||||
// lots of such divs a lot faster.
|
||||
if (textDiv.textContent.length > 1) {
|
||||
if (style.vertical) {
|
||||
textDiv.dataset.canvasWidth = geom.height * this.viewport.scale;
|
||||
} else {
|
||||
textDiv.dataset.canvasWidth = geom.width * this.viewport.scale;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
setTextContent: function TextLayerBuilder_setTextContent(textContent) {
|
||||
this.textContent = textContent;
|
||||
|
||||
var textItems = textContent.items;
|
||||
for (var i = 0, len = textItems.length; i < len; i++) {
|
||||
this.appendText(textItems[i], textContent.styles);
|
||||
}
|
||||
this.divContentDone = true;
|
||||
},
|
||||
|
||||
convertMatches: function TextLayerBuilder_convertMatches(matches) {
|
||||
var i = 0;
|
||||
var iIndex = 0;
|
||||
var bidiTexts = this.textContent.items;
|
||||
var end = bidiTexts.length - 1;
|
||||
var queryLen = (this.findController === null ?
|
||||
0 : this.findController.state.query.length);
|
||||
var ret = [];
|
||||
|
||||
for (var m = 0, len = matches.length; m < len; m++) {
|
||||
// Calculate the start position.
|
||||
var matchIdx = matches[m];
|
||||
|
||||
// Loop over the divIdxs.
|
||||
while (i !== end && matchIdx >= (iIndex + bidiTexts[i].str.length)) {
|
||||
iIndex += bidiTexts[i].str.length;
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i === bidiTexts.length) {
|
||||
console.error('Could not find a matching mapping');
|
||||
}
|
||||
|
||||
var match = {
|
||||
begin: {
|
||||
divIdx: i,
|
||||
offset: matchIdx - iIndex
|
||||
}
|
||||
};
|
||||
|
||||
// Calculate the end position.
|
||||
matchIdx += queryLen;
|
||||
|
||||
// Somewhat the same array as above, but use > instead of >= to get
|
||||
// the end position right.
|
||||
while (i !== end && matchIdx > (iIndex + bidiTexts[i].str.length)) {
|
||||
iIndex += bidiTexts[i].str.length;
|
||||
i++;
|
||||
}
|
||||
|
||||
match.end = {
|
||||
divIdx: i,
|
||||
offset: matchIdx - iIndex
|
||||
};
|
||||
ret.push(match);
|
||||
}
|
||||
|
||||
return ret;
|
||||
},
|
||||
|
||||
renderMatches: function TextLayerBuilder_renderMatches(matches) {
|
||||
// Early exit if there is nothing to render.
|
||||
if (matches.length === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var bidiTexts = this.textContent.items;
|
||||
var textDivs = this.textDivs;
|
||||
var prevEnd = null;
|
||||
var pageIdx = this.pageIdx;
|
||||
var isSelectedPage = (this.findController === null ?
|
||||
false : (pageIdx === this.findController.selected.pageIdx));
|
||||
var selectedMatchIdx = (this.findController === null ?
|
||||
-1 : this.findController.selected.matchIdx);
|
||||
var highlightAll = (this.findController === null ?
|
||||
false : this.findController.state.highlightAll);
|
||||
var infinity = {
|
||||
divIdx: -1,
|
||||
offset: undefined
|
||||
};
|
||||
|
||||
function beginText(begin, className) {
|
||||
var divIdx = begin.divIdx;
|
||||
textDivs[divIdx].textContent = '';
|
||||
appendTextToDiv(divIdx, 0, begin.offset, className);
|
||||
}
|
||||
|
||||
function appendTextToDiv(divIdx, fromOffset, toOffset, className) {
|
||||
var div = textDivs[divIdx];
|
||||
var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset);
|
||||
var node = document.createTextNode(content);
|
||||
if (className) {
|
||||
var span = document.createElement('span');
|
||||
span.className = className;
|
||||
span.appendChild(node);
|
||||
div.appendChild(span);
|
||||
return;
|
||||
}
|
||||
div.appendChild(node);
|
||||
}
|
||||
|
||||
var i0 = selectedMatchIdx, i1 = i0 + 1;
|
||||
if (highlightAll) {
|
||||
i0 = 0;
|
||||
i1 = matches.length;
|
||||
} else if (!isSelectedPage) {
|
||||
// Not highlighting all and this isn't the selected page, so do nothing.
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = i0; i < i1; i++) {
|
||||
var match = matches[i];
|
||||
var begin = match.begin;
|
||||
var end = match.end;
|
||||
var isSelected = (isSelectedPage && i === selectedMatchIdx);
|
||||
var highlightSuffix = (isSelected ? ' selected' : '');
|
||||
|
||||
if (this.findController) {
|
||||
this.findController.updateMatchPosition(pageIdx, i, textDivs,
|
||||
begin.divIdx, end.divIdx);
|
||||
}
|
||||
|
||||
// Match inside new div.
|
||||
if (!prevEnd || begin.divIdx !== prevEnd.divIdx) {
|
||||
// If there was a previous div, then add the text at the end.
|
||||
if (prevEnd !== null) {
|
||||
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
|
||||
}
|
||||
// Clear the divs and set the content until the starting point.
|
||||
beginText(begin);
|
||||
} else {
|
||||
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset);
|
||||
}
|
||||
|
||||
if (begin.divIdx === end.divIdx) {
|
||||
appendTextToDiv(begin.divIdx, begin.offset, end.offset,
|
||||
'highlight' + highlightSuffix);
|
||||
} else {
|
||||
appendTextToDiv(begin.divIdx, begin.offset, infinity.offset,
|
||||
'highlight begin' + highlightSuffix);
|
||||
for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) {
|
||||
textDivs[n0].className = 'highlight middle' + highlightSuffix;
|
||||
}
|
||||
beginText(end, 'highlight end' + highlightSuffix);
|
||||
}
|
||||
prevEnd = end;
|
||||
}
|
||||
|
||||
if (prevEnd) {
|
||||
appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset);
|
||||
}
|
||||
},
|
||||
|
||||
updateMatches: function TextLayerBuilder_updateMatches() {
|
||||
// Only show matches when all rendering is done.
|
||||
if (!this.renderingDone) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear all matches.
|
||||
var matches = this.matches;
|
||||
var textDivs = this.textDivs;
|
||||
var bidiTexts = this.textContent.items;
|
||||
var clearedUntilDivIdx = -1;
|
||||
|
||||
// Clear all current matches.
|
||||
for (var i = 0, len = matches.length; i < len; i++) {
|
||||
var match = matches[i];
|
||||
var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx);
|
||||
for (var n = begin, end = match.end.divIdx; n <= end; n++) {
|
||||
var div = textDivs[n];
|
||||
div.textContent = bidiTexts[n].str;
|
||||
div.className = '';
|
||||
}
|
||||
clearedUntilDivIdx = match.end.divIdx + 1;
|
||||
}
|
||||
|
||||
if (this.findController === null || !this.findController.active) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Convert the matches on the page controller into the match format
|
||||
// used for the textLayer.
|
||||
this.matches = this.convertMatches(this.findController === null ?
|
||||
[] : (this.findController.pageMatches[this.pageIdx] || []));
|
||||
this.renderMatches(this.matches);
|
||||
}
|
||||
};
|
||||
return TextLayerBuilder;
|
||||
})();
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @implements IPDFTextLayerFactory
|
||||
*/
|
||||
function DefaultTextLayerFactory() {}
|
||||
DefaultTextLayerFactory.prototype = {
|
||||
/**
|
||||
* @param {HTMLDivElement} textLayerDiv
|
||||
* @param {number} pageIndex
|
||||
* @param {PageViewport} viewport
|
||||
* @returns {TextLayerBuilder}
|
||||
*/
|
||||
createTextLayerBuilder: function (textLayerDiv, pageIndex, viewport) {
|
||||
return new TextLayerBuilder({
|
||||
textLayerDiv: textLayerDiv,
|
||||
pageIndex: pageIndex,
|
||||
viewport: viewport
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,394 @@
|
||||
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||
/* Copyright 2012 Mozilla Foundation
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
var CSS_UNITS = 96.0 / 72.0;
|
||||
var DEFAULT_SCALE = 'auto';
|
||||
var UNKNOWN_SCALE = 0;
|
||||
var MAX_AUTO_SCALE = 1.25;
|
||||
var SCROLLBAR_PADDING = 40;
|
||||
var VERTICAL_PADDING = 5;
|
||||
|
||||
// optimised CSS custom property getter/setter
|
||||
var CustomStyle = (function CustomStyleClosure() {
|
||||
|
||||
// As noted on: http://www.zachstronaut.com/posts/2009/02/17/
|
||||
// animate-css-transforms-firefox-webkit.html
|
||||
// in some versions of IE9 it is critical that ms appear in this list
|
||||
// before Moz
|
||||
var prefixes = ['ms', 'Moz', 'Webkit', 'O'];
|
||||
var _cache = {};
|
||||
|
||||
function CustomStyle() {}
|
||||
|
||||
CustomStyle.getProp = function get(propName, element) {
|
||||
// check cache only when no element is given
|
||||
if (arguments.length === 1 && typeof _cache[propName] === 'string') {
|
||||
return _cache[propName];
|
||||
}
|
||||
|
||||
element = element || document.documentElement;
|
||||
var style = element.style, prefixed, uPropName;
|
||||
|
||||
// test standard property first
|
||||
if (typeof style[propName] === 'string') {
|
||||
return (_cache[propName] = propName);
|
||||
}
|
||||
|
||||
// capitalize
|
||||
uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
|
||||
|
||||
// test vendor specific properties
|
||||
for (var i = 0, l = prefixes.length; i < l; i++) {
|
||||
prefixed = prefixes[i] + uPropName;
|
||||
if (typeof style[prefixed] === 'string') {
|
||||
return (_cache[propName] = prefixed);
|
||||
}
|
||||
}
|
||||
|
||||
//if all fails then set to undefined
|
||||
return (_cache[propName] = 'undefined');
|
||||
};
|
||||
|
||||
CustomStyle.setProp = function set(propName, element, str) {
|
||||
var prop = this.getProp(propName);
|
||||
if (prop !== 'undefined') {
|
||||
element.style[prop] = str;
|
||||
}
|
||||
};
|
||||
|
||||
return CustomStyle;
|
||||
})();
|
||||
|
||||
function getFileName(url) {
|
||||
var anchor = url.indexOf('#');
|
||||
var query = url.indexOf('?');
|
||||
var end = Math.min(
|
||||
anchor > 0 ? anchor : url.length,
|
||||
query > 0 ? query : url.length);
|
||||
return url.substring(url.lastIndexOf('/', end) + 1, end);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns scale factor for the canvas. It makes sense for the HiDPI displays.
|
||||
* @return {Object} The object with horizontal (sx) and vertical (sy)
|
||||
scales. The scaled property is set to false if scaling is
|
||||
not required, true otherwise.
|
||||
*/
|
||||
function getOutputScale(ctx) {
|
||||
var devicePixelRatio = window.devicePixelRatio || 1;
|
||||
var backingStoreRatio = ctx.webkitBackingStorePixelRatio ||
|
||||
ctx.mozBackingStorePixelRatio ||
|
||||
ctx.msBackingStorePixelRatio ||
|
||||
ctx.oBackingStorePixelRatio ||
|
||||
ctx.backingStorePixelRatio || 1;
|
||||
var pixelRatio = devicePixelRatio / backingStoreRatio;
|
||||
return {
|
||||
sx: pixelRatio,
|
||||
sy: pixelRatio,
|
||||
scaled: pixelRatio !== 1
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Scrolls specified element into view of its parent.
|
||||
* element {Object} The element to be visible.
|
||||
* spot {Object} An object with optional top and left properties,
|
||||
* specifying the offset from the top left edge.
|
||||
*/
|
||||
function scrollIntoView(element, spot) {
|
||||
// Assuming offsetParent is available (it's not available when viewer is in
|
||||
// hidden iframe or object). We have to scroll: if the offsetParent is not set
|
||||
// producing the error. See also animationStartedClosure.
|
||||
var parent = element.offsetParent;
|
||||
var offsetY = element.offsetTop + element.clientTop;
|
||||
var offsetX = element.offsetLeft + element.clientLeft;
|
||||
if (!parent) {
|
||||
console.error('offsetParent is not set -- cannot scroll');
|
||||
return;
|
||||
}
|
||||
while (parent.clientHeight === parent.scrollHeight) {
|
||||
if (parent.dataset._scaleY) {
|
||||
offsetY /= parent.dataset._scaleY;
|
||||
offsetX /= parent.dataset._scaleX;
|
||||
}
|
||||
offsetY += parent.offsetTop;
|
||||
offsetX += parent.offsetLeft;
|
||||
parent = parent.offsetParent;
|
||||
if (!parent) {
|
||||
return; // no need to scroll
|
||||
}
|
||||
}
|
||||
if (spot) {
|
||||
if (spot.top !== undefined) {
|
||||
offsetY += spot.top;
|
||||
}
|
||||
if (spot.left !== undefined) {
|
||||
offsetX += spot.left;
|
||||
parent.scrollLeft = offsetX;
|
||||
}
|
||||
}
|
||||
parent.scrollTop = offsetY;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to start monitoring the scroll event and converting them into
|
||||
* PDF.js friendly one: with scroll debounce and scroll direction.
|
||||
*/
|
||||
function watchScroll(viewAreaElement, callback) {
|
||||
var debounceScroll = function debounceScroll(evt) {
|
||||
if (rAF) {
|
||||
return;
|
||||
}
|
||||
// schedule an invocation of scroll for next animation frame.
|
||||
rAF = window.requestAnimationFrame(function viewAreaElementScrolled() {
|
||||
rAF = null;
|
||||
|
||||
var currentY = viewAreaElement.scrollTop;
|
||||
var lastY = state.lastY;
|
||||
if (currentY !== lastY) {
|
||||
state.down = currentY > lastY;
|
||||
}
|
||||
state.lastY = currentY;
|
||||
callback(state);
|
||||
});
|
||||
};
|
||||
|
||||
var state = {
|
||||
down: true,
|
||||
lastY: viewAreaElement.scrollTop,
|
||||
_eventHandler: debounceScroll
|
||||
};
|
||||
|
||||
var rAF = null;
|
||||
viewAreaElement.addEventListener('scroll', debounceScroll, true);
|
||||
return state;
|
||||
}
|
||||
|
||||
/**
|
||||
* Use binary search to find the index of the first item in a given array which
|
||||
* passes a given condition. The items are expected to be sorted in the sense
|
||||
* that if the condition is true for one item in the array, then it is also true
|
||||
* for all following items.
|
||||
*
|
||||
* @returns {Number} Index of the first array element to pass the test,
|
||||
* or |items.length| if no such element exists.
|
||||
*/
|
||||
function binarySearchFirstItem(items, condition) {
|
||||
var minIndex = 0;
|
||||
var maxIndex = items.length - 1;
|
||||
|
||||
if (items.length === 0 || !condition(items[maxIndex])) {
|
||||
return items.length;
|
||||
}
|
||||
if (condition(items[minIndex])) {
|
||||
return minIndex;
|
||||
}
|
||||
|
||||
while (minIndex < maxIndex) {
|
||||
var currentIndex = (minIndex + maxIndex) >> 1;
|
||||
var currentItem = items[currentIndex];
|
||||
if (condition(currentItem)) {
|
||||
maxIndex = currentIndex;
|
||||
} else {
|
||||
minIndex = currentIndex + 1;
|
||||
}
|
||||
}
|
||||
return minIndex; /* === maxIndex */
|
||||
}
|
||||
|
||||
/**
|
||||
* Generic helper to find out what elements are visible within a scroll pane.
|
||||
*/
|
||||
function getVisibleElements(scrollEl, views, sortByVisibility) {
|
||||
var top = scrollEl.scrollTop, bottom = top + scrollEl.clientHeight;
|
||||
var left = scrollEl.scrollLeft, right = left + scrollEl.clientWidth;
|
||||
|
||||
function isElementBottomBelowViewTop(view) {
|
||||
var element = view.div;
|
||||
var elementBottom =
|
||||
element.offsetTop + element.clientTop + element.clientHeight;
|
||||
return elementBottom > top;
|
||||
}
|
||||
|
||||
var visible = [], view, element;
|
||||
var currentHeight, viewHeight, hiddenHeight, percentHeight;
|
||||
var currentWidth, viewWidth;
|
||||
var firstVisibleElementInd = (views.length === 0) ? 0 :
|
||||
binarySearchFirstItem(views, isElementBottomBelowViewTop);
|
||||
|
||||
for (var i = firstVisibleElementInd, ii = views.length; i < ii; i++) {
|
||||
view = views[i];
|
||||
element = view.div;
|
||||
currentHeight = element.offsetTop + element.clientTop;
|
||||
viewHeight = element.clientHeight;
|
||||
|
||||
if (currentHeight > bottom) {
|
||||
break;
|
||||
}
|
||||
|
||||
currentWidth = element.offsetLeft + element.clientLeft;
|
||||
viewWidth = element.clientWidth;
|
||||
if (currentWidth + viewWidth < left || currentWidth > right) {
|
||||
continue;
|
||||
}
|
||||
hiddenHeight = Math.max(0, top - currentHeight) +
|
||||
Math.max(0, currentHeight + viewHeight - bottom);
|
||||
percentHeight = ((viewHeight - hiddenHeight) * 100 / viewHeight) | 0;
|
||||
|
||||
visible.push({
|
||||
id: view.id,
|
||||
x: currentWidth,
|
||||
y: currentHeight,
|
||||
view: view,
|
||||
percent: percentHeight
|
||||
});
|
||||
}
|
||||
|
||||
var first = visible[0];
|
||||
var last = visible[visible.length - 1];
|
||||
|
||||
if (sortByVisibility) {
|
||||
visible.sort(function(a, b) {
|
||||
var pc = a.percent - b.percent;
|
||||
if (Math.abs(pc) > 0.001) {
|
||||
return -pc;
|
||||
}
|
||||
return a.id - b.id; // ensure stability
|
||||
});
|
||||
}
|
||||
return {first: first, last: last, views: visible};
|
||||
}
|
||||
|
||||
/**
|
||||
* Event handler to suppress context menu.
|
||||
*/
|
||||
function noContextMenuHandler(e) {
|
||||
e.preventDefault();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the filename or guessed filename from the url (see issue 3455).
|
||||
* url {String} The original PDF location.
|
||||
* @return {String} Guessed PDF file name.
|
||||
*/
|
||||
function getPDFFileNameFromURL(url) {
|
||||
var reURI = /^(?:([^:]+:)?\/\/[^\/]+)?([^?#]*)(\?[^#]*)?(#.*)?$/;
|
||||
// SCHEME HOST 1.PATH 2.QUERY 3.REF
|
||||
// Pattern to get last matching NAME.pdf
|
||||
var reFilename = /[^\/?#=]+\.pdf\b(?!.*\.pdf\b)/i;
|
||||
var splitURI = reURI.exec(url);
|
||||
var suggestedFilename = reFilename.exec(splitURI[1]) ||
|
||||
reFilename.exec(splitURI[2]) ||
|
||||
reFilename.exec(splitURI[3]);
|
||||
if (suggestedFilename) {
|
||||
suggestedFilename = suggestedFilename[0];
|
||||
if (suggestedFilename.indexOf('%') !== -1) {
|
||||
// URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf
|
||||
try {
|
||||
suggestedFilename =
|
||||
reFilename.exec(decodeURIComponent(suggestedFilename))[0];
|
||||
} catch(e) { // Possible (extremely rare) errors:
|
||||
// URIError "Malformed URI", e.g. for "%AA.pdf"
|
||||
// TypeError "null has no properties", e.g. for "%2F.pdf"
|
||||
}
|
||||
}
|
||||
}
|
||||
return suggestedFilename || 'document.pdf';
|
||||
}
|
||||
|
||||
var ProgressBar = (function ProgressBarClosure() {
|
||||
|
||||
function clamp(v, min, max) {
|
||||
return Math.min(Math.max(v, min), max);
|
||||
}
|
||||
|
||||
function ProgressBar(id, opts) {
|
||||
this.visible = true;
|
||||
|
||||
// Fetch the sub-elements for later.
|
||||
this.div = document.querySelector(id + ' .progress');
|
||||
|
||||
// Get the loading bar element, so it can be resized to fit the viewer.
|
||||
this.bar = this.div.parentNode;
|
||||
|
||||
// Get options, with sensible defaults.
|
||||
this.height = opts.height || 100;
|
||||
this.width = opts.width || 100;
|
||||
this.units = opts.units || '%';
|
||||
|
||||
// Initialize heights.
|
||||
this.div.style.height = this.height + this.units;
|
||||
this.percent = 0;
|
||||
}
|
||||
|
||||
ProgressBar.prototype = {
|
||||
|
||||
updateBar: function ProgressBar_updateBar() {
|
||||
if (this._indeterminate) {
|
||||
this.div.classList.add('indeterminate');
|
||||
this.div.style.width = this.width + this.units;
|
||||
return;
|
||||
}
|
||||
|
||||
this.div.classList.remove('indeterminate');
|
||||
var progressSize = this.width * this._percent / 100;
|
||||
this.div.style.width = progressSize + this.units;
|
||||
},
|
||||
|
||||
get percent() {
|
||||
return this._percent;
|
||||
},
|
||||
|
||||
set percent(val) {
|
||||
this._indeterminate = isNaN(val);
|
||||
this._percent = clamp(val, 0, 100);
|
||||
this.updateBar();
|
||||
},
|
||||
|
||||
setWidth: function ProgressBar_setWidth(viewer) {
|
||||
if (viewer) {
|
||||
var container = viewer.parentNode;
|
||||
var scrollbarWidth = container.offsetWidth - viewer.offsetWidth;
|
||||
if (scrollbarWidth > 0) {
|
||||
this.bar.setAttribute('style', 'width: calc(100% - ' +
|
||||
scrollbarWidth + 'px);');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
hide: function ProgressBar_hide() {
|
||||
if (!this.visible) {
|
||||
return;
|
||||
}
|
||||
this.visible = false;
|
||||
this.bar.classList.add('hidden');
|
||||
document.body.classList.remove('loadingInProgress');
|
||||
},
|
||||
|
||||
show: function ProgressBar_show() {
|
||||
if (this.visible) {
|
||||
return;
|
||||
}
|
||||
this.visible = true;
|
||||
document.body.classList.add('loadingInProgress');
|
||||
this.bar.classList.remove('hidden');
|
||||
}
|
||||
};
|
||||
|
||||
return ProgressBar;
|
||||
})();
|
||||
@@ -1,48 +1,51 @@
|
||||
<?php
|
||||
return [
|
||||
"assignWidget" => "Přiřadil widget :widgetName (#:widgetId) do plochy :widgetAreaName (#:widgetAreaId)",
|
||||
"changeSettings" => "Změna nastavení",
|
||||
"createNewContent" => "Vytvořena nová obsahová stránka. Titulek <strong>:title</strong>, url :url a ID #:id",
|
||||
"deleteContent" => 'Smazána stránka ":title", url "url a ID #:id. Tato změna je zaznamenána v revizi :revision.',
|
||||
"deleteCustomField" => "a",
|
||||
"deleteWidgetArea" => "Smazal plochu pro widget :name",
|
||||
"draftFromContent" => "Upraven widget :name (#:id)",
|
||||
"editContent" => 'Editace stránky - nový titulek je ":title", url :url a ID #:id. Revize změny: :revision.',
|
||||
"editCustomField" => "a",
|
||||
"editWidget" => "Upraven widget :name (#:id)",
|
||||
"editWidgetArea" => 'Upravena plocha pro widgety :name (#:id) s popisem ":description"',
|
||||
"invalidEditContentAttempt" => "Pokus o editaci obsahu s ID :contentId",
|
||||
"ip" => "IP adresa",
|
||||
"login" => "Přihlášen",
|
||||
"logout" => "Odhlášen",
|
||||
"nameAssignWidget" => "Přiřazení widgetu",
|
||||
"nameChangeSettings" => "Změna nastavení",
|
||||
"nameCreateNewContent" => "Vytvoření nové stránky",
|
||||
"nameDeleteContent" => "Smazání stránky",
|
||||
"nameDeleteCustomField" => "Smazání uživatelského pole",
|
||||
"nameDeleteWidgetArea" => "Smazání plochy pro widgety",
|
||||
"nameDraftFromContent" => "Vytvoření konceptu z publikované stránky",
|
||||
"nameEditContent" => "Úprava obsahu",
|
||||
"nameEditCustomField" => "Editace uživatelského pole",
|
||||
"nameEditWidget" => "Úprava widgetu",
|
||||
"nameEditWidgetArea" => "Úprava plochy pro widgety",
|
||||
"nameInvalidEditContentAttempt" => "Pokus o editaci neexistující/neplatné stránky",
|
||||
"nameLogin" => "Login",
|
||||
"nameLogout" => "Odhlášení",
|
||||
"nameNewCustomField" => "Vytvoření uživatelského pole",
|
||||
"nameNewWidget" => "Nový widget",
|
||||
"nameNewWidgetArea" => "Vytoření plochy pro widgety",
|
||||
"namePublishContent" => "Publikace stránky",
|
||||
"nameRemoveWidgetFromArea" => "Odebrání widgetu z plochy",
|
||||
"nameSetHomepage" => "Nastavení domovské stránky",
|
||||
"nameUserEdit" => "Editace uživatele",
|
||||
"newCustomField" => 'Přidal nové uživatelské pole s ID #:id a jménem ":name"',
|
||||
"newWidget" => 'Vytvořen nový widget :type se jménem :name (#:id) a popisem ":description".',
|
||||
"newWidgetArea" => 'Vytvořil plochu pro widgety :name (#:id) s popisem ":description"',
|
||||
"overview" => "Seznam všech akcí",
|
||||
"publishContent" => 'Publikována stránka ":title" (url :url, ID #:id). Revize :revision.',
|
||||
"removeWidgetFromArea" => "Odebrán widget :widgetName z oblasti :widgetAreaName (#widgetAreaId)",
|
||||
"setHomepage" => "Nastavena nová domovská stránka: :title, URL: :url a ID #:id. Revize :revision.",
|
||||
"userAgent" => "Prohlížeč",
|
||||
"userEdit" => "Upravil uživatele :name (:email)",
|
||||
"assignWidget" => "Přiřadil widget :widgetName (#:widgetId) do plochy :widgetAreaName (#:widgetAreaId)",
|
||||
"changeSettings" => "Změna nastavení",
|
||||
"createNewContent" => "Vytvořena nová obsahová stránka. Titulek <strong>:title</strong>, url :url a ID #:id",
|
||||
"createUser" => "Vytvořen nový uživatel :name s e-mailem :email.",
|
||||
"deleteContent" => 'Smazána stránka ":title", url "url a ID #:id. Tato změna je zaznamenána v revizi :revision.',
|
||||
"deleteCustomField" => "a",
|
||||
"deleteWidgetArea" => "Smazal plochu pro widget :name",
|
||||
"displayingUsersActions" => "Zobrazuji všechny akce od uživatele :name (:email).",
|
||||
"draftFromContent" => "Upraven widget :name (#:id)",
|
||||
"editContent" => 'Editace stránky - nový titulek je ":title", url :url a ID #:id. Revize změny: :revision.',
|
||||
"editCustomField" => "a",
|
||||
"editWidget" => "Upraven widget :name (#:id)",
|
||||
"editWidgetArea" => 'Upravena plocha pro widgety :name (#:id) s popisem ":description"',
|
||||
"invalidEditContentAttempt" => "Pokus o editaci obsahu s ID :contentId",
|
||||
"ip" => "IP adresa",
|
||||
"login" => "Přihlášen",
|
||||
"logout" => "Odhlášen",
|
||||
"nameAssignWidget" => "Přiřazení widgetu",
|
||||
"nameChangeSettings" => "Změna nastavení",
|
||||
"nameCreateNewContent" => "Vytvoření nové stránky",
|
||||
"nameCreateUser" => "Vytvořen uživatel",
|
||||
"nameDeleteContent" => "Smazání stránky",
|
||||
"nameDeleteCustomField" => "Smazání uživatelského pole",
|
||||
"nameDeleteWidgetArea" => "Smazání plochy pro widgety",
|
||||
"nameDraftFromContent" => "Vytvoření konceptu z publikované stránky",
|
||||
"nameEditContent" => "Úprava obsahu",
|
||||
"nameEditCustomField" => "Editace uživatelského pole",
|
||||
"nameEditWidget" => "Úprava widgetu",
|
||||
"nameEditWidgetArea" => "Úprava plochy pro widgety",
|
||||
"nameInvalidEditContentAttempt" => "Pokus o editaci neexistující/neplatné stránky",
|
||||
"nameLogin" => "Login",
|
||||
"nameLogout" => "Odhlášení",
|
||||
"nameNewCustomField" => "Vytvoření uživatelského pole",
|
||||
"nameNewWidget" => "Nový widget",
|
||||
"nameNewWidgetArea" => "Vytoření plochy pro widgety",
|
||||
"namePublishContent" => "Publikace stránky",
|
||||
"nameRemoveWidgetFromArea" => "Odebrání widgetu z plochy",
|
||||
"nameSetHomepage" => "Nastavení domovské stránky",
|
||||
"nameUserEdit" => "Editace uživatele",
|
||||
"newCustomField" => 'Přidal nové uživatelské pole s ID #:id a jménem ":name"',
|
||||
"newWidget" => 'Vytvořen nový widget :type se jménem :name (#:id) a popisem ":description".',
|
||||
"newWidgetArea" => 'Vytvořil plochu pro widgety :name (#:id) s popisem ":description"',
|
||||
"overview" => "Seznam všech akcí",
|
||||
"publishContent" => 'Publikována stránka ":title" (url :url, ID #:id). Revize :revision.',
|
||||
"removeWidgetFromArea" => "Odebrán widget :widgetName z oblasti :widgetAreaName (#widgetAreaId)",
|
||||
"setHomepage" => "Nastavena nová domovská stránka: :title, URL: :url a ID #:id. Revize :revision.",
|
||||
"userAgent" => "Prohlížeč",
|
||||
"userEdit" => "Upravil uživatele :name (:email)",
|
||||
];
|
||||
|
||||
@@ -8,6 +8,7 @@ return [
|
||||
"content" => "Obsah stránky",
|
||||
"createdAt" => "Vytvořeno",
|
||||
"deletePage" => "Smazat",
|
||||
"deleteTitlePhoto" => "Smazat titulní obrázek",
|
||||
"edit" => "Editace :name",
|
||||
"editPlain" => "Editace",
|
||||
"field_meta_description" => "Popis stránky",
|
||||
@@ -17,10 +18,12 @@ return [
|
||||
"field_title" => "Titulek stránky",
|
||||
"field_url" => "URL",
|
||||
"files" => "Soubory",
|
||||
"homepage" => "Domovská stránka",
|
||||
"homepageProtected" => "Domovská stránka je zobrazena jen pro přihlášené uživatele. Toto může i nemusí být chyba.",
|
||||
"homepageSetup" => "Domovská stránka úspěšně nastavena.",
|
||||
"invalidPage" => "Požadovaná stránka neexistuje.",
|
||||
"invalidStatus" => "Nelze změnit stav stránky na něco nedefinovaného.",
|
||||
"invalidTemplateSelected" => "Není zvolena šablona pro vykreslení stránky! Stránka nebude pro návštěvníky vykreslena!",
|
||||
"lockUrl" => "Zachovat URL?",
|
||||
"makeDraft" => "Převést na koncept",
|
||||
"makeProtected" => "Zobrazit jen pro přihlášené",
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<?php
|
||||
return [
|
||||
"content" => "Uživatelská pole pro stránky",
|
||||
"createNew" => "Vytvořit nové uživatelské pole",
|
||||
"date" => "Datum",
|
||||
"defaultValue" => "Výchozí hodnota",
|
||||
"description" => "Popis",
|
||||
"edit" => 'Upravuji uživatelské pole ":name"',
|
||||
"fieldNotExist" => "Vybrané pole neexistuje!",
|
||||
"maxLength" => "Maximální délka",
|
||||
"minLength" => "Minimální délka",
|
||||
"name" => "Jméno",
|
||||
"new" => "Nové uživatelské pole",
|
||||
"noFields" => "Nebyly definovány žádné uživatelské pole.",
|
||||
"number" => "Číslo",
|
||||
"overview" => "Seznam všech uživatelských polí",
|
||||
"possibleValues" => "Povolené hodnoty (každá hodnota na nový řádek)",
|
||||
"regExp" => "Povolit pouze hodnoty odpovádající následující regulárnímu výrazu",
|
||||
"required" => "Povinné?",
|
||||
"resource" => "Přidat ke zdroji",
|
||||
"resource_content" => "Každá obsahová stránka",
|
||||
"resource_user" => "Uživatel",
|
||||
"selectboxList" => "Seznam (selectbox)",
|
||||
"string" => "Krátký text",
|
||||
"successfullyCreated" => "Uživatelské pole úspěšně vytvořeno",
|
||||
"successfullyDeleted" => "Uživatelské pole úspěšně smazáno",
|
||||
"successfullyEdited" => "Uživatelské pole úspěšně aktualizováno",
|
||||
"type" => "Typ uživatelského pole",
|
||||
"users" => "Uživatelské políčka pro uživatele",
|
||||
"content" => "Uživatelská pole pro stránky",
|
||||
"createNew" => "Vytvořit nové uživatelské pole",
|
||||
"date" => "Datum",
|
||||
"defaultValue" => "Výchozí hodnota",
|
||||
"description" => "Popis",
|
||||
"edit" => 'Upravuji uživatelské pole ":name"',
|
||||
"fieldNotExist" => "Vybrané pole neexistuje!",
|
||||
"maxLength" => "Maximální délka",
|
||||
"minLength" => "Minimální délka",
|
||||
"name" => "Jméno",
|
||||
"new" => "Nové uživatelské pole",
|
||||
"noFields" => "Nebyly definovány žádné uživatelské pole.",
|
||||
"number" => "Číslo",
|
||||
"overview" => "Seznam všech uživatelských polí",
|
||||
"possibleValues" => "Povolené hodnoty (každá hodnota na nový řádek)",
|
||||
"regExp" => "Povolit pouze hodnoty odpovádající následující regulárnímu výrazu",
|
||||
"required" => "Povinné?",
|
||||
"resource" => "Přidat ke zdroji",
|
||||
"resource_content" => "Každá obsahová stránka",
|
||||
"resource_user" => "Uživatel",
|
||||
"selectboxList" => "Seznam (selectbox)",
|
||||
"string" => "Krátký text",
|
||||
"successfullyCreated" => "Uživatelské pole úspěšně vytvořeno",
|
||||
"successfullyDeleted" => "Uživatelské pole úspěšně smazáno",
|
||||
"successfullyEdited" => "Uživatelské pole úspěšně aktualizováno",
|
||||
"type" => "Typ uživatelského pole",
|
||||
"users" => "Uživatelské políčka pro uživatele",
|
||||
];
|
||||
|
||||
@@ -1,41 +1,42 @@
|
||||
<?php
|
||||
return [
|
||||
"createSubdirectoryFor" => "Vytvořit podadresář v :directory.",
|
||||
"createdAt" => "Nahráno",
|
||||
"description" => "Popis souboru",
|
||||
"directories" => "Podadresáře v adresáři :directory",
|
||||
"directoryDescription" => "Popis",
|
||||
"directoryHidden" => "Skrytý adresář",
|
||||
"directoryName" => "Jméno adresáře",
|
||||
"edit" => "Upravit soubor :name",
|
||||
"editButton" => "Upravit",
|
||||
"editDirectory" => "Upravit adresář",
|
||||
"editDirectorySuccess" => "Úspěšně uloženo",
|
||||
"encoding" => "Kódování",
|
||||
"fileDeleted" => "Soubor smazán",
|
||||
"fileInfo" => "Informace",
|
||||
"fileSize" => "Velikost",
|
||||
"hash" => "Hash",
|
||||
"invalidFile" => "Nahrávaný soubor nelze nahrát, z nějakého důvodu není validní.",
|
||||
"keywords" => "Klíčová slova (oddělena čárkou)",
|
||||
"mime" => "MIME typ",
|
||||
"name" => "Jméno",
|
||||
"newDirectory" => "Vytvořit nový adresář",
|
||||
"newDirectorySuccess" => "Nový adresář úspěšně vytvořen",
|
||||
"newFile" => "Nový soubor",
|
||||
"noFileSpecified" => "Nebyl zvolen žádný soubor k nahrávání",
|
||||
"noFiles" => "Žádný soubor nebyl nalezen",
|
||||
"noSubdirectories" => "Žádné podadresáře",
|
||||
"originalFilename" => "Původní jméno",
|
||||
"overview" => "Seznam všech souborů",
|
||||
"parentDirectory" => "Rodičovský adresář",
|
||||
"resolution" => "Rozlišení",
|
||||
"rootDirectories" => "Kořenové adresáře",
|
||||
"selectFile" => "Vybrat soubor",
|
||||
"subdirectoryExists" => "Adresář s tímto jménem tu již eixstuje",
|
||||
"successfullyChanged" => "Úspěšně uloženo",
|
||||
"updatedAt" => "Poslední změna",
|
||||
"upload" => "Nahrát nový soubor",
|
||||
"uploadSuccessfull" => "Soubor úspěšně nahrán|:count soubory úspěšně nahrány|:count souborů úspěšně nahráno",
|
||||
"url" => "Veřejá URL",
|
||||
"createdAt" => "Nahráno",
|
||||
"delete" => "Smazat",
|
||||
"description" => "Popis souboru",
|
||||
"directories" => "Podadresáře v adresáři :directory",
|
||||
"directoryDescription" => "Popis",
|
||||
"directoryHidden" => "Skrytý adresář",
|
||||
"directoryName" => "Jméno adresáře",
|
||||
"edit" => "Upravit soubor :name",
|
||||
"editButton" => "Upravit",
|
||||
"editDirectory" => "Upravit adresář",
|
||||
"editDirectorySuccess" => "Úspěšně uloženo",
|
||||
"encoding" => "Kódování",
|
||||
"fileDeleted" => "Soubor smazán",
|
||||
"fileInfo" => "Informace",
|
||||
"fileSize" => "Velikost",
|
||||
"hash" => "Hash",
|
||||
"invalidFile" => "Nahrávaný soubor nelze nahrát, z nějakého důvodu není validní.",
|
||||
"keywords" => "Klíčová slova (oddělena čárkou)",
|
||||
"mime" => "MIME typ",
|
||||
"name" => "Jméno",
|
||||
"newDirectory" => "Vytvořit nový adresář",
|
||||
"newDirectorySuccess" => "Nový adresář úspěšně vytvořen",
|
||||
"newFile" => "Nový soubor",
|
||||
"noFileSpecified" => "Nebyl zvolen žádný soubor k nahrávání",
|
||||
"noFiles" => "Žádný soubor nebyl nalezen",
|
||||
"noSubdirectories" => "Žádné podadresáře",
|
||||
"originalFilename" => "Původní jméno",
|
||||
"overview" => "Seznam všech souborů",
|
||||
"parentDirectory" => "Rodičovský adresář",
|
||||
"resolution" => "Rozlišení",
|
||||
"rootDirectories" => "Kořenové adresáře",
|
||||
"selectFile" => "Vybrat soubor",
|
||||
"subdirectoryExists" => "Adresář s tímto jménem tu již eixstuje",
|
||||
"successfullyChanged" => "Úspěšně uloženo",
|
||||
"updatedAt" => "Poslední změna",
|
||||
"upload" => "Nahrát nový soubor",
|
||||
"uploadSuccessfull" => "Soubor úspěšně nahrán|:count soubory úspěšně nahrány|:count souborů úspěšně nahráno",
|
||||
"url" => "Veřejná URL",
|
||||
];
|
||||
|
||||
@@ -1,27 +1,27 @@
|
||||
<?php
|
||||
return [
|
||||
"backToEdit" => "Zpět na editaci obsahu",
|
||||
"backToOverview" => "Zpět na přehled historie",
|
||||
"changedAt" => "Změna z :time",
|
||||
"changedFromTo" => "Změna z <del>:from</del> na <ins>:to</ins>",
|
||||
"columnCategory" => "Kategorie",
|
||||
"columnFile" => "Přiřazené soubory",
|
||||
"columnIs_homepage" => "Domovská stránka",
|
||||
"columnMetaDescription" => "Popis",
|
||||
"columnMetaKeywords" => "Klíčová slova",
|
||||
"columnPageContent" => "Obsah stránky",
|
||||
"columnParentPage" => "Nadřazená stránka",
|
||||
"columnStatus" => "Viditelnost stránky",
|
||||
"columnTemplate" => "Šablona",
|
||||
"columnTitle" => "Titulek",
|
||||
"columnTitlePhotoFilename" => "Titulní obrázek",
|
||||
"columnUrl" => "URL",
|
||||
"deletedFile" => "Odebrán soubor <del>:file</del>.",
|
||||
"diff" => "Rozdíl",
|
||||
"diffPageName" => "Rozdíl v :column",
|
||||
"emptyValue" => "<em>nic</em>",
|
||||
"numOfChanges" => "Jedna změna|:count změny|:count změn",
|
||||
"pageName" => "Historie :name",
|
||||
"setupAsHomepage" => "Nastaveno jako domovská stránka",
|
||||
"uploadedFile" => "Nahrán soubor <ins>:file</ins>.",
|
||||
"backToEdit" => "Zpět na editaci obsahu",
|
||||
"backToOverview" => "Zpět na přehled historie",
|
||||
"changedAt" => "Změna z :time",
|
||||
"changedFromTo" => "Změna z <del>:from</del> na <ins>:to</ins>",
|
||||
"columnCategory" => "Kategorie",
|
||||
"columnFile" => "Přiřazené soubory",
|
||||
"columnIs_homepage" => "Domovská stránka",
|
||||
"columnMetaDescription" => "Popis",
|
||||
"columnMetaKeywords" => "Klíčová slova",
|
||||
"columnPageContent" => "Obsah stránky",
|
||||
"columnParentPage" => "Nadřazená stránka",
|
||||
"columnStatus" => "Viditelnost stránky",
|
||||
"columnTemplate" => "Šablona",
|
||||
"columnTitle" => "Titulek",
|
||||
"columnTitlePhotoFilename" => "Titulní obrázek",
|
||||
"columnUrl" => "URL",
|
||||
"deletedFile" => "Odebrán soubor <del>:file</del>.",
|
||||
"diff" => "Rozdíl",
|
||||
"diffPageName" => "Rozdíl v :column",
|
||||
"emptyValue" => "<em>nic</em>",
|
||||
"numOfChanges" => "Jedna změna|:count změny|:count změn",
|
||||
"pageName" => "Historie :name",
|
||||
"setupAsHomepage" => "Nastaveno jako domovská stránka",
|
||||
"uploadedFile" => "Nahrán soubor <ins>:file</ins>.",
|
||||
];
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
<?php
|
||||
return [
|
||||
"actionLog" => "Záznam událostí",
|
||||
"assignWidgets" => "Přidat widget",
|
||||
"contentPageOverview" => "Přehled",
|
||||
"contentPages" => "Stránky",
|
||||
"customFields" => "Uživatelská pole",
|
||||
"customFieldsNew" => "Nové pole",
|
||||
"customFieldsOverview" => "Přehled",
|
||||
"dashboard" => "Nástěnka",
|
||||
"directories" => "Adresáře",
|
||||
"fileManager" => "Správce souborů",
|
||||
"newContentPage" => "Nová stránka",
|
||||
"newUser" => "Nový uživatel",
|
||||
"newWidget" => "Nový widget",
|
||||
"newWidgetArea" => "Nová plocha",
|
||||
"settings" => "Nastavení",
|
||||
"system" => "Systém",
|
||||
"templates" => "Šablony",
|
||||
"uploadFile" => "Nový soubor",
|
||||
"uploadImage" => "Nový obrázek",
|
||||
"uploadedFiles" => "Přehled",
|
||||
"userDetail" => "Můj profil",
|
||||
"userManagement" => "Uživatelé",
|
||||
"usersOverview" => "Přehled",
|
||||
"widgetAreaOverview" => "Seznam všech ploch pro widgety",
|
||||
"widgetAreas" => "Plochy pro widgety",
|
||||
"widgets" => "Widgety",
|
||||
"widgetsOverview" => "Všechny widgety",
|
||||
"actionLog" => "Záznam událostí",
|
||||
"assignWidgets" => "Přidat widget",
|
||||
"contentPageOverview" => "Přehled",
|
||||
"contentPages" => "Stránky",
|
||||
"customFields" => "Uživatelská pole",
|
||||
"customFieldsNew" => "Nové pole",
|
||||
"customFieldsOverview" => "Přehled",
|
||||
"dashboard" => "Nástěnka",
|
||||
"directories" => "Adresáře",
|
||||
"fileManager" => "Správce souborů",
|
||||
"newContentPage" => "Nová stránka",
|
||||
"newUser" => "Nový uživatel",
|
||||
"newWidget" => "Nový widget",
|
||||
"newWidgetArea" => "Nová plocha",
|
||||
"settings" => "Nastavení",
|
||||
"system" => "Systém",
|
||||
"templates" => "Šablony",
|
||||
"uploadFile" => "Nový soubor",
|
||||
"uploadImage" => "Nový obrázek",
|
||||
"uploadedFiles" => "Přehled",
|
||||
"userDetail" => "Můj profil",
|
||||
"userManagement" => "Uživatelé",
|
||||
"usersOverview" => "Přehled",
|
||||
"widgetAreaOverview" => "Všechny plochy",
|
||||
"widgetAreas" => "Plochy pro widgety",
|
||||
"widgets" => "Widgety",
|
||||
"widgetsOverview" => "Všechny widgety",
|
||||
];
|
||||
|
||||
@@ -1,22 +1,24 @@
|
||||
<?php
|
||||
return [
|
||||
"author" => "Vlastník stránky",
|
||||
"basic" => "Základní informace",
|
||||
"commonSettings" => "Použít jako výchozí pro všechny jazyky?",
|
||||
"googleAnalyticsCode" => "Google Analytics kód",
|
||||
"meta" => "Meta informace",
|
||||
"metaDescription" => "Popis webu",
|
||||
"metaKeywords" => "Klíčová slova webu",
|
||||
"nothingToSave" => "Byl odeslán nezměněný formulář. Žádná změna nebyla uložena.",
|
||||
"overview" => "Všechna nastavení",
|
||||
"pageName" => "Jméno stránky",
|
||||
"save" => "Uložit",
|
||||
"social" => ["facebook" => "Facebook profil",
|
||||
"gplus" => "Google Plus profil",
|
||||
"instagram" => "Instagram profil",
|
||||
"pinterest" => "Pinterest profil",
|
||||
"twitter" => "Twitter účet",
|
||||
],
|
||||
"socialSites" => "Sociální sítě",
|
||||
"successfullySaved" => "Nastavení úspěšně změněno",
|
||||
"author" => "Vlastník stránky",
|
||||
"basic" => "Základní informace",
|
||||
"commonSettings" => "Použít jako výchozí pro všechny jazyky?",
|
||||
"googleAnalyticsCode" => "Google Analytics kód",
|
||||
"meta" => "Meta informace",
|
||||
"metaDescription" => "Popis webu",
|
||||
"metaKeywords" => "Klíčová slova webu",
|
||||
"nothingToSave" => "Byl odeslán nezměněný formulář. Žádná změna nebyla uložena.",
|
||||
"overview" => "Všechna nastavení",
|
||||
"pageName" => "Jméno stránky",
|
||||
"save" => "Uložit",
|
||||
"social" => [
|
||||
"facebook" => "Facebook profil",
|
||||
"gplus" => "Google Plus profil",
|
||||
"instagram" => "Instagram profil",
|
||||
"pinterest" => "Pinterest profil",
|
||||
"twitter" => "Twitter účet",
|
||||
'linkedIn' => 'LinkedIn profil'
|
||||
],
|
||||
"socialSites" => "Sociální sítě",
|
||||
"successfullySaved" => "Nastavení úspěšně změněno",
|
||||
];
|
||||
|
||||
@@ -1,23 +1,23 @@
|
||||
<?php
|
||||
return [
|
||||
"cannotCopy" => "Adresář nemá potřebná práva k zápisu. Kopírování není dostupné.",
|
||||
"cannotWriteContent" => "Nelze uložit obsah šablony, adresář pro uložení souboru nemá dostatečná oprávnění pro zápis. Meta informace k šabloně však byly uloženy.",
|
||||
"copyFailed" => "Nelze zkopírovat šablonu do :name. Zkontrolujte prosím právo pro zápis do adresáře s šablonami.",
|
||||
"copySuccessfull" => "Šablona :name úspěšně vytvořena zkopírováním z jiné šablony",
|
||||
"core" => "Společné šablony",
|
||||
"description" => "Popis",
|
||||
"edit" => "Úprava šablony :name",
|
||||
"editSuccessfull" => "Šablona úspěšně uložena",
|
||||
"error" => "Šablony pro zobrazení chyb",
|
||||
"homepage" => "Domovská stránka",
|
||||
"name" => "Jméno šablony",
|
||||
"new" => "Nová šablona",
|
||||
"newTemplateName" => "Jméno šablony použité v Blade šablonách",
|
||||
"newTemplateNameSuffix" => "kopie",
|
||||
"noSubdirectories" => "Nejsou k dispozici žádné podadresáře",
|
||||
"noTemplates" => "Žádná šablona k dispozici",
|
||||
"notWritable" => "Nelze zapisovat do :file. Veškeré úpravy na tomto soubory <strong>nebudou</strong> uloženy!",
|
||||
"overview" => "Šablony",
|
||||
"parentDirectory" => "Rodičovský adresář",
|
||||
"subdirectories" => "Podadresáře",
|
||||
"cannotCopy" => "Adresář nemá potřebná práva k zápisu. Kopírování není dostupné.",
|
||||
"cannotWriteContent" => "Nelze uložit obsah šablony, adresář pro uložení souboru nemá dostatečná oprávnění pro zápis. Meta informace k šabloně však byly uloženy.",
|
||||
"copyFailed" => "Nelze zkopírovat šablonu do :name. Zkontrolujte prosím právo pro zápis do adresáře s šablonami.",
|
||||
"copySuccessfull" => "Šablona :name úspěšně vytvořena zkopírováním z jiné šablony",
|
||||
"core" => "Společné šablony",
|
||||
"description" => "Popis",
|
||||
"edit" => "Úprava šablony :name",
|
||||
"editSuccessfull" => "Šablona úspěšně uložena",
|
||||
"error" => "Šablony pro zobrazení chyb",
|
||||
"homepage" => "Domovská stránka",
|
||||
"name" => "Jméno šablony",
|
||||
"new" => "Nová šablona",
|
||||
"newTemplateName" => "Jméno šablony použité v Blade šablonách",
|
||||
"newTemplateNameSuffix" => "kopie",
|
||||
"noSubdirectories" => "Nejsou k dispozici žádné podadresáře",
|
||||
"noTemplates" => "Žádná šablona k dispozici",
|
||||
"notWritable" => "Nelze zapisovat do :file. Veškeré úpravy na tomto soubory <strong>nebudou</strong> uloženy!",
|
||||
"overview" => "Šablony",
|
||||
"parentDirectory" => "Rodičovský adresář",
|
||||
"subdirectories" => "Podadresáře",
|
||||
];
|
||||
|
||||
@@ -1,31 +1,32 @@
|
||||
<?php
|
||||
return [
|
||||
"addNewUser" => "Přidat nového uživatele",
|
||||
"allStatuses" => "Všechny",
|
||||
"detail" => "Detaily uživatele :name (:email)",
|
||||
"edit" => "Upravit uživatele",
|
||||
"editUser" => "Editace uživatele :name (:email)",
|
||||
"email" => "E-mail",
|
||||
"gravatarLink" => 'Nastavte si avatar na <a href="http://gravatar.com">gravatar.com</a>',
|
||||
"name" => "Celé jméno",
|
||||
"noActions" => "Uživatel zatím v systému nic neudělal.",
|
||||
"noUsers" => "Žádní uživatelé.",
|
||||
"overview" => "Seznam všech uživatelů",
|
||||
"password" => "Heslo",
|
||||
"passwordLeaveEmpty" => "Nevyplňujte, pokud nechcete změnit heslo.",
|
||||
"profile" => "Profil uživatele",
|
||||
"register" => "Vytvořit uživatele",
|
||||
"registrationSuccessfull" => "Nový úživatel úspěšně přidán.",
|
||||
"role_admin" => "Administrátor",
|
||||
"role_editor" => "Editor",
|
||||
"role_visitor" => "Návštěvník",
|
||||
"roles" => "Prosím, zvolte roli uživatele",
|
||||
"status" => "Stav",
|
||||
"status_active" => "Aktivní",
|
||||
"status_blocked" => "Zablokovaný",
|
||||
"status_deleted" => "Smazaný",
|
||||
"update" => "Upravit informace",
|
||||
"userDetail" => "Informace",
|
||||
"userSuccessfullyEdited" => "Uživatel úspěšně upraven.",
|
||||
"usersActions" => "Akce uživatele",
|
||||
"addNewUser" => "Přidat nového uživatele",
|
||||
"allStatuses" => "Všechny",
|
||||
"detail" => "Detaily uživatele :name (:email)",
|
||||
"edit" => "Upravit uživatele",
|
||||
"editUser" => "Editace uživatele :name (:email)",
|
||||
"email" => "E-mail",
|
||||
"gravatarLink" => 'Nastavte si avatar na <a href="http://gravatar.com">gravatar.com</a>',
|
||||
"moreUserActions" => "Zobrazit více...",
|
||||
"name" => "Celé jméno",
|
||||
"noActions" => "Uživatel zatím v systému nic neudělal.",
|
||||
"noUsers" => "Žádní uživatelé.",
|
||||
"overview" => "Seznam všech uživatelů",
|
||||
"password" => "Heslo",
|
||||
"passwordLeaveEmpty" => "Nevyplňujte, pokud nechcete změnit heslo.",
|
||||
"profile" => "Profil uživatele",
|
||||
"register" => "Vytvořit uživatele",
|
||||
"registrationSuccessfull" => "Nový úživatel úspěšně přidán.",
|
||||
"role_admin" => "Administrátor",
|
||||
"role_editor" => "Editor",
|
||||
"role_visitor" => "Návštěvník",
|
||||
"roles" => "Prosím, zvolte roli uživatele",
|
||||
"status" => "Stav",
|
||||
"status_active" => "Aktivní",
|
||||
"status_blocked" => "Zablokovaný",
|
||||
"status_deleted" => "Smazaný",
|
||||
"update" => "Upravit informace",
|
||||
"userDetail" => "Informace",
|
||||
"userSuccessfullyEdited" => "Uživatel úspěšně upraven.",
|
||||
"usersActions" => "Akce uživatele",
|
||||
];
|
||||
|
||||
@@ -1,17 +1,23 @@
|
||||
<?php
|
||||
return [
|
||||
"actions" => "Akce",
|
||||
"code" => "Unikátní kód (používá se v šablonách pro vykreslení)",
|
||||
"createNew" => "Vytvořit novou plochu",
|
||||
"description" => "Popis",
|
||||
"edit" => "Upravuji plochu :name",
|
||||
"editButton" => "Upravit",
|
||||
"editSuccessfull" => "Změny úspěšně uloženy",
|
||||
"invalidArea" => "Zvolená plocha pro widgety není platná. Vyberte prosím nějakou jinou.",
|
||||
"name" => "Jméno",
|
||||
"new" => "Nová plocha pro widgety",
|
||||
"noEntries" => "Zatím nebyla definována žádná plocha pro widgety.",
|
||||
"overview" => "Seznam všech ploch pro widgety",
|
||||
"successfullyCreated" => "Plocha pro widgety úspěšně vytvořena",
|
||||
"successfullyDeleted" => "Úspěšně smazáno",
|
||||
"actions" => "Akce",
|
||||
"associateWidgets" => "Přiřadit widgety do této plochy",
|
||||
"code" => "Unikátní kód (používá se v šablonách pro vykreslení)",
|
||||
"createNew" => "Vytvořit novou plochu",
|
||||
"delete" => "Smazat",
|
||||
"description" => "Popis",
|
||||
"edit" => "Upravuji plochu :name",
|
||||
"editButton" => "Upravit",
|
||||
"editSuccessfull" => "Změny úspěšně uloženy",
|
||||
"editTooltip" => "Upravit plochu pro widgety",
|
||||
"invalidArea" => "Zvolená plocha pro widgety není platná. Vyberte prosím nějakou jinou.",
|
||||
"name" => "Jméno",
|
||||
"new" => "Nová plocha pro widgety",
|
||||
"noEntries" => "Zatím nebyla definována žádná plocha pro widgety.",
|
||||
"notDeletableArea" => "Nelze smazat požadovanou plochu. Tato plocha je nezbytnou součástí nainstalované šablony a její odstranění by znefunkčnilo celou šablonu.",
|
||||
"overview" => "Všechny plochy",
|
||||
"save" => "Uložit",
|
||||
"successfullyCreated" => "Plocha pro widgety úspěšně vytvořena",
|
||||
"successfullyDeleted" => "Úspěšně smazáno",
|
||||
"uniqueCode" => "Unikátní kód",
|
||||
];
|
||||
|
||||
@@ -6,13 +6,16 @@ return [
|
||||
"associationExists" => "Tento widget již je přiřazený k této ploše pro widgety",
|
||||
"cannotSave" => "Nelze uložit widget. Došlo k nečekané vyjímce. Zpráva: :exception",
|
||||
"createdAt" => "Vytvořeno",
|
||||
"delete" => "Smazat",
|
||||
"deleteAssociation" => "Odstranit",
|
||||
"description" => "Popis",
|
||||
"descriptionOfWidgets" => "Widgety se zobrazují v plochách pro widgety. Tyto plochy je možné umístit na libovolné místo na webu.",
|
||||
"edit" => "Upravit",
|
||||
"editTooltip" => "Upravit tento widget",
|
||||
"missingValue" => "Nelze uložit bez hodnoty pro pole :field",
|
||||
"name" => "Jméno",
|
||||
"noEntries" => "Není dostupný žádný widget.",
|
||||
"notDeletable" => "Nelze smazat widget. Smazání widgetu by melo za následek možné znefunkčnění celé šablony.",
|
||||
"overview" => "Seznam všech widgetů",
|
||||
"preview" => "Náhled",
|
||||
"successfullyAssociated" => "Widget úspěšně vložen do plochy",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
return [
|
||||
"accessDenied" => "Nelze přistoupit k tomuto zdroji",
|
||||
"failed" => "Přihlašovací údaje nejsou správné.",
|
||||
"throttle" => "Příliš mnoho neplatných přihlášení. Zkuste to znovu za :seconds sekund.",
|
||||
"accessDenied" => "Nelze přistoupit k tomuto zdroji",
|
||||
"failed" => "Přihlašovací údaje nejsou správné.",
|
||||
"throttle" => "Příliš mnoho neplatných přihlášení. Zkuste to znovu za :seconds sekund.",
|
||||
];
|
||||
|
||||
@@ -1,14 +1,30 @@
|
||||
<?php
|
||||
return [
|
||||
"customize" => "Přispůsobení",
|
||||
"footer" => "Zápatí",
|
||||
"goToWeb" => "Jít na web",
|
||||
"graphics" => "Grafika",
|
||||
"header" => "Záhlaví",
|
||||
"lang" => ["czech" => "Čeština",
|
||||
"english" => "Angličtina",
|
||||
],
|
||||
"positionFixed" => "fixní",
|
||||
"positionStatic" => "statické",
|
||||
"sidebar" => "Sidebar",
|
||||
"customize" => "Přispůsobení",
|
||||
"footer" => "Zápatí",
|
||||
"goToWeb" => "Jít na web",
|
||||
"graphics" => "Grafika",
|
||||
"header" => "Záhlaví",
|
||||
"lang" => [
|
||||
"czech" => "Čeština",
|
||||
"english" => "Angličtina",
|
||||
'slovak' => 'Slovenština'
|
||||
],
|
||||
"months" => [
|
||||
"april" => "Duben",
|
||||
"august" => "Srpen",
|
||||
"december" => "Prosinec",
|
||||
"february" => "Únor",
|
||||
"january" => "Leden",
|
||||
"july" => "Červenec",
|
||||
"june" => "Červen",
|
||||
"march" => "Březen",
|
||||
"may" => "Květen",
|
||||
"november" => "Listopad",
|
||||
"october" => "Říjen",
|
||||
"september" => "Září",
|
||||
],
|
||||
"positionFixed" => "fixní",
|
||||
"positionStatic" => "statické",
|
||||
"sidebar" => "Sidebar",
|
||||
];
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return [
|
||||
"next" => "Následující »",
|
||||
"previous" => "« Předchozí",
|
||||
"next" => "Následující »",
|
||||
"previous" => "« Předchozí",
|
||||
];
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
<?php
|
||||
return [
|
||||
"password" => "Heslo musí mít alespoň šest znaků a musí být stejné jako ověřovací heslo.",
|
||||
"reset" => "Heslo úspěšně resetováno!",
|
||||
"sent" => "Na e-mail byl odeslán odkaz pro reset hesla.",
|
||||
"token" => "Token pro reset hesla není platný!",
|
||||
"user" => "Uživatel se zadanou e-mailovou adresou neexistuje.",
|
||||
"password" => "Heslo musí mít alespoň šest znaků a musí být stejné jako ověřovací heslo.",
|
||||
"reset" => "Heslo úspěšně resetováno!",
|
||||
"sent" => "Na e-mail byl odeslán odkaz pro reset hesla.",
|
||||
"token" => "Token pro reset hesla není platný!",
|
||||
"user" => "Uživatel se zadanou e-mailovou adresou neexistuje.",
|
||||
];
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
return [
|
||||
"content" => "Obsah",
|
||||
"emptyString" => "Nelze vyhledávat prázdný řetězec!",
|
||||
"files" => "Soubory",
|
||||
"pageTitle" => "Vyhledávání",
|
||||
"results" => "Nalezené výsledky",
|
||||
"term" => "Vyhledávání",
|
||||
"content" => "Obsah",
|
||||
"emptyString" => "Nelze vyhledávat prázdný řetězec!",
|
||||
"files" => "Soubory",
|
||||
"pageTitle" => "Vyhledávání",
|
||||
"results" => "Nalezené výsledky",
|
||||
"term" => "Vyhledávání",
|
||||
];
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
return [
|
||||
"accepted" => ":attribute musí být přijatý.",
|
||||
"active_url" => "Uvedený text není platnou URL adresou.",
|
||||
"after" => ":attribute musí být datem před :date.",
|
||||
"after" => ":attribute musí být datem po :date.",
|
||||
"alpha" => ":attribute smí obsahovat pouze písmena.",
|
||||
"alpha_dash" => ":attribute může obsahovat pouze písmena, čísla a pomlčky.",
|
||||
"alpha_num" => ":attribute může obsahovat pouze písmena a čísla.",
|
||||
@@ -12,7 +12,7 @@ return [
|
||||
"array" => "Zadané pole musí mít alespoň :min a maximálně :max položek.",
|
||||
"file" => "Velikost souboru musí být v rozmezí od :min do :max kilobajtů.",
|
||||
"numeric" => "Hodnota musí být v rozmezí od :min do :max.",
|
||||
"string" => "Zadaný text musí mít mít alespoň :min a maximálně :max znaků.",
|
||||
"string" => "Zadaný text musí mít alespoň :min a maximálně :max znaků.",
|
||||
],
|
||||
"boolean" => ":attribute musí být buď true nebo false.",
|
||||
"confirmed" => "Ověření nesouhlasí.",
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
<?php
|
||||
return [
|
||||
'displayingUsersActions' => 'Displaying actions performed by user :name (:email)',
|
||||
'ip' => 'IP address',
|
||||
'userAgent' => 'Browser identification',
|
||||
'overview' => 'List of all actions',
|
||||
'login' => 'Logged in',
|
||||
'logout' => 'Logged out',
|
||||
'userEdit' => 'Updated user :name (:email)',
|
||||
'createUser' => 'Created user :name (:email)',
|
||||
'newCustomField' => 'Added new custom field with ID #:id and name ":name"',
|
||||
'editCustomField' => 'Edited custom field with ID #:id and name ":name"',
|
||||
'deleteCustomField' => 'Deleted custom field ID #:id and name ":name"',
|
||||
@@ -42,6 +44,7 @@ return [
|
||||
'nameEditWidgetArea' => 'Edit widget area',
|
||||
'nameInvalidEditContentAttempt' => 'Tried to edit invalid page',
|
||||
'nameCreateNewContent' => 'Created new page',
|
||||
'nameCreateUser' => 'Created new user',
|
||||
'nameDeleteContent' => 'Deleted page',
|
||||
'namePublishContent' => 'Published page',
|
||||
'nameDraftFromContent' => 'Made draft from published page',
|
||||
|
||||
@@ -1,56 +1,59 @@
|
||||
<?php
|
||||
return [
|
||||
'status_deleted' => 'Deleted',
|
||||
'status_draft' => 'Draft',
|
||||
'status_protected' => 'Protected',
|
||||
'status_public' => 'Public',
|
||||
'new' => 'Create new :name',
|
||||
'category' => 'Category',
|
||||
'edit' => 'Edit :name',
|
||||
'editPlain' => 'Edit',
|
||||
'content' => 'Page content',
|
||||
'save' => 'Save page',
|
||||
'basicInfo' => 'Basic information',
|
||||
'metaOptions' => 'Meta information',
|
||||
'publicationOptions' => 'Publication setup',
|
||||
'field_title' => 'Page title',
|
||||
'field_url' => 'URL',
|
||||
'field_meta_keywords' => 'Keywords',
|
||||
'field_meta_description' => 'Page description',
|
||||
'field_published_from' => 'Published from',
|
||||
'field_published_to' => 'Published to',
|
||||
'successfullyCreated' => 'Page successfully created',
|
||||
'noPagesAvailable' => 'No static pages available. Try to create one first.',
|
||||
'viewPage' => 'View',
|
||||
'deletePage' => 'Delete',
|
||||
'makePublic' => 'Publish',
|
||||
'makeProtected' => 'Logged users only',
|
||||
'makeDraft' => 'Make draft',
|
||||
'invalidStatus' => 'Cannot change status to something undefined.',
|
||||
'statusChanged' => 'Status successfully changed.',
|
||||
'invalidPage' => 'Specified page does not exist.',
|
||||
'pageDeleted' => 'Page :name (:url) successfully deleted.',
|
||||
'nothingToEdit' => 'You did not submit any changes. Nothing was edited.',
|
||||
'successfullyEdited' => 'Edit successfull',
|
||||
'showHistory' => 'History (:count)',
|
||||
'appearance' => 'Appearance',
|
||||
'template' => 'Template of this page',
|
||||
'overview' => 'List of all content pages',
|
||||
'homepageSetup' => 'Homepage successfully set up.',
|
||||
'setHomepage' => 'Set page as homepage',
|
||||
'noParentPage' => ' -- No parent page -- ',
|
||||
'uploadTitleImage' => 'Upload title image',
|
||||
'noHomepage' => 'You have not set up your homepage yet, or your current homepage is draft! Try to select another one.',
|
||||
'homepageProtected' => 'Your homepage is displayed only for logged in users. This may or may not be an error.',
|
||||
'parentPage' => 'Parent page',
|
||||
'alreadyHomepage' => 'Homepage',
|
||||
'files' => 'Files',
|
||||
'lockUrl' => 'Keep URL',
|
||||
'noCategory' => ' -- No category -- ',
|
||||
'noTemplates' => 'Cannot create content page. There are no available templates for this module.',
|
||||
'title' => 'Title',
|
||||
'createdAt' => 'Created at',
|
||||
'status' => 'Status',
|
||||
'moduleName' => 'Module',
|
||||
'actions' => 'Actions'
|
||||
'status_deleted' => 'Deleted',
|
||||
'status_draft' => 'Draft',
|
||||
'status_protected' => 'Protected',
|
||||
'status_public' => 'Public',
|
||||
'new' => 'Create new :name',
|
||||
'category' => 'Category',
|
||||
'edit' => 'Edit :name',
|
||||
'editPlain' => 'Edit',
|
||||
'content' => 'Page content',
|
||||
'homepage' => 'Homepage',
|
||||
'save' => 'Save page',
|
||||
'basicInfo' => 'Basic information',
|
||||
'metaOptions' => 'Meta information',
|
||||
'publicationOptions' => 'Publication setup',
|
||||
'field_title' => 'Page title',
|
||||
'field_url' => 'URL',
|
||||
'field_meta_keywords' => 'Keywords',
|
||||
'field_meta_description' => 'Page description',
|
||||
'field_published_from' => 'Published from',
|
||||
'field_published_to' => 'Published to',
|
||||
'successfullyCreated' => 'Page successfully created',
|
||||
'noPagesAvailable' => 'No static pages available. Try to create one first.',
|
||||
'viewPage' => 'View',
|
||||
'deletePage' => 'Delete',
|
||||
'makePublic' => 'Publish',
|
||||
'makeProtected' => 'Logged users only',
|
||||
'makeDraft' => 'Make draft',
|
||||
'invalidStatus' => 'Cannot change status to something undefined.',
|
||||
'statusChanged' => 'Status successfully changed.',
|
||||
'invalidPage' => 'Specified page does not exist.',
|
||||
'pageDeleted' => 'Page :name (:url) successfully deleted.',
|
||||
'nothingToEdit' => 'You did not submit any changes. Nothing was edited.',
|
||||
'successfullyEdited' => 'Edit successfull',
|
||||
'showHistory' => 'History (:count)',
|
||||
'appearance' => 'Appearance',
|
||||
'template' => 'Template of this page',
|
||||
'overview' => 'List of all content pages',
|
||||
'homepageSetup' => 'Homepage successfully set up.',
|
||||
'setHomepage' => 'Set page as homepage',
|
||||
'noParentPage' => ' -- No parent page -- ',
|
||||
'uploadTitleImage' => 'Upload title image',
|
||||
'noHomepage' => 'You have not set up your homepage yet, or your current homepage is draft! Try to select another one.',
|
||||
'homepageProtected' => 'Your homepage is displayed only for logged in users. This may or may not be an error.',
|
||||
'parentPage' => 'Parent page',
|
||||
'alreadyHomepage' => 'Homepage',
|
||||
'files' => 'Files',
|
||||
'lockUrl' => 'Keep URL',
|
||||
'noCategory' => ' -- No category -- ',
|
||||
'noTemplates' => 'Cannot create content page. There are no available templates for this module.',
|
||||
'title' => 'Title',
|
||||
'createdAt' => 'Created at',
|
||||
'status' => 'Status',
|
||||
'moduleName' => 'Module',
|
||||
'actions' => 'Actions',
|
||||
'invalidTemplateSelected' => 'Invalid template selected! This page cannot be rendered!',
|
||||
'deleteTitlePhoto' => 'Delete title photo'
|
||||
];
|
||||
@@ -3,6 +3,7 @@ return [
|
||||
'overview' => 'List of all files',
|
||||
'upload' => 'Upload new file',
|
||||
'edit' => 'Edit file :name',
|
||||
'delete' => 'Delete',
|
||||
'fileInfo' => 'Information',
|
||||
'createdAt' => 'Uploaded',
|
||||
'updatedAt' => 'Last change',
|
||||
|
||||
@@ -18,7 +18,8 @@ return [
|
||||
'instagram' => 'Instagram profile',
|
||||
'twitter' => 'Twitter profile',
|
||||
'pinterest' => 'Pinterest profile',
|
||||
'gplus' => 'G+ profile'
|
||||
'gplus' => 'G+ profile',
|
||||
'linkedIn' => 'LinkedIn profile'
|
||||
]
|
||||
|
||||
];
|
||||
@@ -28,5 +28,6 @@ return [
|
||||
'userDetail' => 'Information',
|
||||
'edit' => 'Edit user',
|
||||
'noActions' => 'There are no actions yet.',
|
||||
'gravatarLink' => 'Setup avatar at <a href="http://gravatar.com">gravatar.com</a>'
|
||||
'gravatarLink' => 'Setup avatar at <a href="http://gravatar.com">gravatar.com</a>',
|
||||
'moreUserActions' => 'More actions of this user'
|
||||
];
|
||||
@@ -3,6 +3,7 @@ return [
|
||||
'new' => 'New widget area',
|
||||
'name' => 'Widget area name',
|
||||
'code' => 'Unique code',
|
||||
'uniqueCode' => 'Unique code',
|
||||
'description' => 'Description',
|
||||
'createNew' => 'Create new widget area',
|
||||
'successfullyCreated' => 'Widget area successfully created',
|
||||
@@ -12,6 +13,11 @@ return [
|
||||
'actions' => 'Actions',
|
||||
'noEntries' => 'No widget areas defined yet. Try to create some first.',
|
||||
'editButton' => 'Edit',
|
||||
'save' => 'Save',
|
||||
'edit' => 'Editing widget area :name',
|
||||
'editTooltip' => 'Edit widget area',
|
||||
'associateWidgets' => 'Associate widgets with this widget area',
|
||||
'delete' => 'Delete widget area',
|
||||
'notDeletableArea' => 'Cannot delete desired widget area. This area is essential part of installed template and therefore cannot be deleted.',
|
||||
'editSuccessfull' => 'Successfully edited'
|
||||
];
|
||||
@@ -23,5 +23,8 @@ return [
|
||||
'successfullyDeassociated' => 'Successfully removed from widget area',
|
||||
'widgetExists' => 'Widget :id already exists.',
|
||||
'descriptionOfWidgets' => 'Widgets are displayed in widget areas.',
|
||||
'successfullyDeleted' => 'Widget successfully deleted'
|
||||
'successfullyDeleted' => 'Widget successfully deleted',
|
||||
'delete' => 'Delete',
|
||||
'editTooltip' => 'Edit this widget',
|
||||
'notDeletable' => 'Cannot delete this widget. It is essential part of currenty installed template and therefore cannot be deleted.'
|
||||
];
|
||||
@@ -1,8 +1,23 @@
|
||||
<?php
|
||||
return [
|
||||
'lang' => [
|
||||
'lang' => [
|
||||
'english' => 'English',
|
||||
'czech' => 'Czech'
|
||||
'czech' => 'Czech',
|
||||
'slovak' => 'Slovak'
|
||||
],
|
||||
'months' => [
|
||||
'january' => 'January',
|
||||
'february' => 'February',
|
||||
'march' => 'March',
|
||||
'april' => 'April',
|
||||
'may' => 'May',
|
||||
'june' => 'June',
|
||||
'july' => 'July',
|
||||
'august' => 'August',
|
||||
'september' => 'September',
|
||||
'october' => 'October',
|
||||
'november' => 'November',
|
||||
'december' => 'December'
|
||||
],
|
||||
'customize' => 'Customize',
|
||||
'header' => 'Header',
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
return [
|
||||
"assignWidget" => "Priradil widget :widgetName (#:widgetId) do plochy :widgetAreaName (#:widgetAreaId)",
|
||||
"changeSettings" => "Zmena nastavenia",
|
||||
"createNewContent" => "Vytvorená nová obsahová stránka. Titulok <strong>:title</strong>, url :url a ID #:id",
|
||||
"createUser" => "Vytvorený nový užívateľ :name s e-mailom :email.",
|
||||
"deleteContent" => 'Zmazaná stránka ":title", url "url a ID #:id. Táto zmena je zaznamenaná v revízii :revision.',
|
||||
"deleteCustomField" => "a",
|
||||
"deleteWidgetArea" => "Zmazal plochy pre widget :name",
|
||||
"displayingUsersActions" => "Zobrazujem všetky akcie užívateľa :name (:email).",
|
||||
"draftFromContent" => "Upravený widget :name (#:id)",
|
||||
"editContent" => 'Úprava stránky - nový titulok je ":title", url :url a ID #:id. Revízia zmeny: :revision.',
|
||||
"editCustomField" => "a",
|
||||
"editWidget" => "Upravný widget :name (#:id)",
|
||||
"editWidgetArea" => 'Upravená plocha pre widgety :name (#:id) s popisom ":description"',
|
||||
"invalidEditContentAttempt" => "Pokus o úpravu obsahu s ID :contentId",
|
||||
"ip" => "IP adresa",
|
||||
"login" => "Prihlásený",
|
||||
"logout" => "Odhlásený",
|
||||
"nameAssignWidget" => "Priradenie widgetu",
|
||||
"nameChangeSettings" => "Zmena nastavení",
|
||||
"nameCreateNewContent" => "Vytvorenie novej stránky",
|
||||
"nameCreateUser" => "Vytvorený užívateľ",
|
||||
"nameDeleteContent" => "Zmazanie stránky",
|
||||
"nameDeleteCustomField" => "Zmazanie užívateľského poľa",
|
||||
"nameDeleteWidgetArea" => "Zmazanie plochy pre widgety",
|
||||
"nameDraftFromContent" => "Vytvorenie konceptu z publikovanej stránky",
|
||||
"nameEditContent" => "Úprava obsahu",
|
||||
"nameEditCustomField" => "Úprava užívateľského poľa",
|
||||
"nameEditWidget" => "Úprava widgetu",
|
||||
"nameEditWidgetArea" => "Úprava plochy pre widgety",
|
||||
"nameInvalidEditContentAttempt" => "Pokus o úpravu neexistujúcej/neplatnej stránky",
|
||||
"nameLogin" => "Login",
|
||||
"nameLogout" => "Odhlásenie",
|
||||
"nameNewCustomField" => "Vytvorenie užívateľského poľa",
|
||||
"nameNewWidget" => "Nový widget",
|
||||
"nameNewWidgetArea" => "Vytvorenie plochy pre widgety",
|
||||
"namePublishContent" => "Publikácia stránky",
|
||||
"nameRemoveWidgetFromArea" => "Odobranie widgetu z plochy",
|
||||
"nameSetHomepage" => "Nastavenie domovskej stránky",
|
||||
"nameUserEdit" => "Úprava užívateľa",
|
||||
"newCustomField" => 'Pridal nové užívateľské pole s ID #:id a názvom ":name"',
|
||||
"newWidget" => 'Vytvorený nový widget :type s názvom :name (#:id) a popisom ":description".',
|
||||
"newWidgetArea" => 'Vytvoril plochu pre widgety :name (#:id) s popisom ":description"',
|
||||
"overview" => "Zoznam všetkých akcií",
|
||||
"publishContent" => 'Stránka ":title" bola publikovaná (url :url, ID #:id). Revízia :revision.',
|
||||
"removeWidgetFromArea" => "Widget :widgetName bol odobraný z oblasti :widgetAreaName (#widgetAreaId)",
|
||||
"setHomepage" => "Nastavená nová domovská stránka: :title, URL: :url a ID #:id. Revízia :revision.",
|
||||
"userAgent" => "Prehliadač",
|
||||
"userEdit" => "Upravil užívateľa :name (:email)",
|
||||
];
|
||||
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
return [
|
||||
"admin" => "Administrácia",
|
||||
"confirmation" => "Naozaj si prajete vykonať túto akciu?",
|
||||
"confirmationTitle" => "Naozaj?",
|
||||
"logout" => "Odhlásenie",
|
||||
"logoutSuccessfull" => "Odhlásenie prebehlo úspešne",
|
||||
"no" => "Nie",
|
||||
"yes" => "Áno",
|
||||
];
|
||||
@@ -0,0 +1,58 @@
|
||||
<?php
|
||||
return [
|
||||
"actions" => "Akcie",
|
||||
"alreadyHomepage" => "Domovská stránka",
|
||||
"appearance" => "Vzhľad",
|
||||
"basicInfo" => "Základné informácie",
|
||||
"category" => "Kategórie",
|
||||
"content" => "Obsah stránky",
|
||||
"createdAt" => "Vytvorené",
|
||||
"deletePage" => "Zmazať",
|
||||
"deleteTitlePhoto" => "Zmazať titulný obrázok",
|
||||
"edit" => "Úprava :name",
|
||||
"editPlain" => "Úprava",
|
||||
"field_meta_description" => "Popis stránky",
|
||||
"field_meta_keywords" => "Kľúčové slová",
|
||||
"field_published_from" => "Publikované od",
|
||||
"field_published_to" => "Publikované do",
|
||||
"field_title" => "Titulok stránky",
|
||||
"field_url" => "URL",
|
||||
"files" => "Súbory",
|
||||
"homepageProtected" => "Domovská stránka sa zobrazuje iba pre prihlásených užívateľov. Toto môže, ale nemusí byť chyba.",
|
||||
"homepageSetup" => "Domovská stránka úúspešne nastavená.",
|
||||
"invalidPage" => "Požadovaná stránka neexistuje.",
|
||||
"invalidStatus" => "Nie je možné zmeniť stav stránky na niečo nedefinovaného.",
|
||||
"invalidTemplateSelected" => "Zvolená nesprávna šablóna! Táto stránka sa nedá zobraziť!",
|
||||
"lockUrl" => "Zachovať URL?",
|
||||
"makeDraft" => "Previesť na koncept",
|
||||
"makeProtected" => "Zobraziť iba prihláseným užívateľom",
|
||||
"makePublic" => "Publikovať",
|
||||
"metaOptions" => "Meta informácie",
|
||||
"moduleName" => "Modul",
|
||||
"new" => "Vytvoriť nový :name",
|
||||
"noCategory" => "-- Žiadna kategória --",
|
||||
"noHomepage" => "Domovská stránka nie je nastavená (alebo je nastavená ako koncept)! Vyberte prosím inú stránku, alebo stávajúcu publikujte.",
|
||||
"noPagesAvailable" => "Nie sú dostupné žiadne stránky. Pre zobrazenie prehľadu najprv nejakú vytvorte.",
|
||||
"noParentPage" => "-- Nadradená stránka nevybraná --",
|
||||
"noTemplates" => "Stránku nie je možné vytvoriť. Pre tento modul neexistuje žiadna šablóna, ktorú by bolo možné použiť pre vykreslenie obsahu.",
|
||||
"nothingToEdit" => "Neboli vykonané žiadne zmeny, takže nedošlo k úprave.",
|
||||
"overview" => "Zoznam všetkých obsahových stránok",
|
||||
"pageDeleted" => "Stránka :name (:url) bola úspešne zmazaná.",
|
||||
"parentPage" => "Nadradená stránka",
|
||||
"publicationOptions" => "Nastavenie publikácie",
|
||||
"save" => "Uložiť",
|
||||
"setHomepage" => "Nastaviť ako domovskú stránku",
|
||||
"showHistory" => "História (:count)",
|
||||
"status" => "Stav",
|
||||
"statusChanged" => "Stav úspešne zmenený.",
|
||||
"status_deleted" => "Zmazané",
|
||||
"status_draft" => "Koncept",
|
||||
"status_protected" => "Iba pre prihlásených",
|
||||
"status_public" => "Verejné",
|
||||
"successfullyCreated" => "Stránka úspešne vytvorená",
|
||||
"successfullyEdited" => "Úprava úspešne uložená.",
|
||||
"template" => "Šablóna pre túto stránku",
|
||||
"title" => "Titulok",
|
||||
"uploadTitleImage" => "Nahrať titulný obrázok",
|
||||
"viewPage" => "Zobraziť",
|
||||
];
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
return [
|
||||
"content" => "Užívateľské polia pre stránky",
|
||||
"createNew" => "Vytvoriť nové užívateľské pole",
|
||||
"date" => "Dátum",
|
||||
"defaultValue" => "Prednastavená hodnota",
|
||||
"description" => "Popis",
|
||||
"edit" => 'Upravujem užívateľské pole ":name"',
|
||||
"fieldNotExist" => "Vybrané pole neexistuje!",
|
||||
"maxLength" => "Maximálna dĺžka",
|
||||
"minLength" => "Minimálna dĺžka",
|
||||
"name" => "Názov",
|
||||
"new" => "Nové užívateľské pole",
|
||||
"noFields" => "Neboli definované žiadne užívateľské polia.",
|
||||
"number" => "Číslo",
|
||||
"overview" => "Zoznam všetkých užívateľských polí",
|
||||
"possibleValues" => "Povolené hodnoty (každá hodnota na nový riadok)",
|
||||
"regExp" => "Povoliť iba hodnoty odpovedajúce nasledujúcemu regulárnemu výrazu.",
|
||||
"required" => "Povinné?",
|
||||
"resource" => "Pridať k zdroju",
|
||||
"resource_content" => "Každá obsahová stránka",
|
||||
"resource_user" => "Užívateľ",
|
||||
"selectboxList" => "Zoznam (selectbox)",
|
||||
"string" => "Krátky text",
|
||||
"successfullyCreated" => "Užívateľské pole úspešne vytvorené.",
|
||||
"successfullyDeleted" => "Užívateľské pole úspešne zmazané.",
|
||||
"successfullyEdited" => "Užívateľské pole úspešne aktualizované.",
|
||||
"type" => "Typ užívateľského poľa",
|
||||
"users" => "Užívateľské políčka pre užívateľa",
|
||||
];
|
||||
@@ -0,0 +1,42 @@
|
||||
<?php
|
||||
return [
|
||||
"createSubdirectoryFor" => "Vytvoriť podpriečinok v :directory.",
|
||||
"createdAt" => "Nahrané",
|
||||
"delete" => "Zmazať",
|
||||
"description" => "Popis súboru",
|
||||
"directories" => "Podpriečinky v priečinku :directory",
|
||||
"directoryDescription" => "Popis",
|
||||
"directoryHidden" => "Skrytý priečinok",
|
||||
"directoryName" => "Názov priečinka",
|
||||
"edit" => "Upraviť súbor :name",
|
||||
"editButton" => "Upraviť",
|
||||
"editDirectory" => "Upraviť priečinok",
|
||||
"editDirectorySuccess" => "Úspešne uložené.",
|
||||
"encoding" => "Kódovanie",
|
||||
"fileDeleted" => "Súbor zmazaný",
|
||||
"fileInfo" => "Informácie",
|
||||
"fileSize" => "Veľkosť",
|
||||
"hash" => "Hash",
|
||||
"invalidFile" => "Nahrávaný súbor nie je možné nahrať, z nejakého dôvodu nie je validný.",
|
||||
"keywords" => "Kľúčové slová (oddelené čiarkou)",
|
||||
"mime" => "MIME typ",
|
||||
"name" => "Názov",
|
||||
"newDirectory" => "Vytvoriť nový priečinok",
|
||||
"newDirectorySuccess" => "Nový priečinok úspešne vytvorený",
|
||||
"newFile" => "Nový súbor",
|
||||
"noFileSpecified" => "Nebol vybraný žiadny súbor pre nahratie.",
|
||||
"noFiles" => "Žiadny súbor sa nenašiel",
|
||||
"noSubdirectories" => "Žiadne podpriečinky",
|
||||
"originalFilename" => "Pôvodný názov",
|
||||
"overview" => "Zoznam všetkých súborov",
|
||||
"parentDirectory" => "Rodičovský priečinok",
|
||||
"resolution" => "Rozlíšenie",
|
||||
"rootDirectories" => "Koreňové priečinky",
|
||||
"selectFile" => "Vybrať súbor",
|
||||
"subdirectoryExists" => "Priečinok s týmto názvom už existuje",
|
||||
"successfullyChanged" => "Úspešne uložené.",
|
||||
"updatedAt" => "Posledná zmena",
|
||||
"upload" => "Nahrať nový súbor",
|
||||
"uploadSuccessfull" => "Súbor bol úspešne nahratý. |:count súbory úspešne nahraté|:count súborov úspešne nahratých",
|
||||
"url" => "Verejná URL",
|
||||
];
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
return [
|
||||
"backToEdit" => "Naspäť na úpravu obsahu",
|
||||
"backToOverview" => "Naspäť na prehľad histórie",
|
||||
"changedAt" => "Zmena z :time",
|
||||
"changedFromTo" => "Zmena z <del>:from</del> na <ins>:to</ins>",
|
||||
"columnCategory" => "Kategória",
|
||||
"columnFile" => "Priradené súbory",
|
||||
"columnIs_homepage" => "Domovská stránka",
|
||||
"columnMetaDescription" => "Popis",
|
||||
"columnMetaKeywords" => "Kľúčové slová",
|
||||
"columnPageContent" => "Obsah stránky",
|
||||
"columnParentPage" => "Nadradená stránka",
|
||||
"columnStatus" => "Viditelnosť stránky",
|
||||
"columnTemplate" => "Šablóna",
|
||||
"columnTitle" => "Titulok",
|
||||
"columnTitlePhotoFilename" => "Úvodný obrázok",
|
||||
"columnUrl" => "URL",
|
||||
"deletedFile" => "Odobraný súbor <del>:file</del>.",
|
||||
"diff" => "Rozdiel",
|
||||
"diffPageName" => "Rozdiel v :column",
|
||||
"emptyValue" => "<em>nič</em>",
|
||||
"numOfChanges" => "Jedna zmena|:count zmeny|:count zmien",
|
||||
"pageName" => "História :name",
|
||||
"setupAsHomepage" => "Nastavené ako domovská stránka",
|
||||
"uploadedFile" => "Nahratý súbor <ins>:file</ins>.",
|
||||
];
|
||||
@@ -0,0 +1,13 @@
|
||||
<?php
|
||||
return [
|
||||
"email" => "E-mail pre prihlásenie",
|
||||
"forgottenPassword" => "Zabudnuté heslo",
|
||||
"formHeading" => "Prihlásiť sa e-mailem",
|
||||
"login" => "Login",
|
||||
"pageName" => "Prihlasovací formulár",
|
||||
"password" => "Heslo",
|
||||
"rememberMe" => "Zapamätať?",
|
||||
'loginToContinue' => 'Pre vstup je vyžadované prihlásenie.',
|
||||
'yourEmail' => 'Váš e-mail',
|
||||
'yourPassword' => 'Vaše heslo',
|
||||
];
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
return [
|
||||
"actionLog" => "Záznam udalostí",
|
||||
"assignWidgets" => "Pridať widget",
|
||||
"contentPageOverview" => "Prehľad",
|
||||
"contentPages" => "Stránky",
|
||||
"customFields" => "Užívateľské polia",
|
||||
"customFieldsNew" => "Nové pole",
|
||||
"customFieldsOverview" => "Prehľad",
|
||||
"dashboard" => "Nástenka",
|
||||
"directories" => "Priečinky",
|
||||
"fileManager" => "Správca súborov",
|
||||
"newContentPage" => "Nová stránka",
|
||||
"newUser" => "Nový užívateľ",
|
||||
"newWidget" => "Nový widget",
|
||||
"newWidgetArea" => "Nová plocha",
|
||||
"settings" => "Nastavenie",
|
||||
"system" => "Systém",
|
||||
"templates" => "Šablóny",
|
||||
"uploadFile" => "Nový súbor",
|
||||
"uploadImage" => "Nový obrázok",
|
||||
"uploadedFiles" => "Prehľad",
|
||||
"userDetail" => "Môj profil",
|
||||
"userManagement" => "Užívatelia",
|
||||
"usersOverview" => "Prehľad",
|
||||
"widgetAreaOverview" => "Zoznam všetkých plôch pre widgety",
|
||||
"widgetAreas" => "Plochy pro widgety",
|
||||
"widgets" => "Widgety",
|
||||
"widgetsOverview" => "Všetky widgety",
|
||||
];
|
||||
@@ -0,0 +1,22 @@
|
||||
<?php
|
||||
return [
|
||||
"author" => "Vlastník stránky",
|
||||
"basic" => "Základné informácie",
|
||||
"commonSettings" => "Použiť ako prednastavené pre všetky jazyky?",
|
||||
"googleAnalyticsCode" => "Google Analytics kód",
|
||||
"meta" => "Meta informácie",
|
||||
"metaDescription" => "Popis webu",
|
||||
"metaKeywords" => "Kľúčové slová webu",
|
||||
"nothingToSave" => "Bol odoslaný nezmenený formulár. Žiadna zmena nebola uložená.",
|
||||
"overview" => "Všetky nastavenia",
|
||||
"pageName" => "Názov stránky",
|
||||
"save" => "Uložiť",
|
||||
"social" => ["facebook" => "Facebook profil",
|
||||
"gplus" => "Google Plus profil",
|
||||
"instagram" => "Instagram profil",
|
||||
"pinterest" => "Pinterest profil",
|
||||
"twitter" => "Twitter účet",
|
||||
],
|
||||
"socialSites" => "Sociálne siete",
|
||||
"successfullySaved" => "Nastavenie úspešne zmenené.",
|
||||
];
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
return [
|
||||
"cannotCopy" => "Priečinok nemá potrebné práva k zápisu. Kopírovanie nie je dostupné.",
|
||||
"cannotWriteContent" => "Nie je možné uložiť obsah šablóny, priečinok pre uloženie súboru nemá dostatočné práva pre zápis. Meta informácie k šablóne však uložené boli.",
|
||||
"copyFailed" => "Nie je možné skopírovať šablónu do :name. Skontrolujte prosím práva pre zápis do priečinka so šablónami.",
|
||||
"copySuccessfull" => "Šablóna :name úspešne vytvořená skopírovaním z inej šablóny.",
|
||||
"core" => "Spoločné šablóny",
|
||||
"description" => "Popis",
|
||||
"edit" => "Úprava šablóny :name",
|
||||
"editSuccessfull" => "Šablóna úspešne uložená",
|
||||
"error" => "Šablóny pre zobrazenie chýb",
|
||||
"homepage" => "Domovská stránka",
|
||||
"name" => "Názov šablóna",
|
||||
"new" => "Nová šablóna",
|
||||
"newTemplateName" => "Názov šablóny použitý v Blade šablónach",
|
||||
"newTemplateNameSuffix" => "kopia",
|
||||
"noSubdirectories" => "Nie sú k dispozícii žiadne podpriečinky",
|
||||
"noTemplates" => "Žiadna šablóna nie je k dispozícii",
|
||||
"notWritable" => "Nie je možné zapisovať do :file. Akékoľvek úpravy na tomto súbore zostanú <strong>neuložené</strong>!",
|
||||
"overview" => "Šablóny",
|
||||
"parentDirectory" => "Rodičovský priečinok",
|
||||
"subdirectories" => "Podpriečinky",
|
||||
];
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
return [
|
||||
"addNewUser" => "Pridať nového užívateľa",
|
||||
"allStatuses" => "Všetky",
|
||||
"detail" => "Detail užívateľa :name (:email)",
|
||||
"edit" => "Upraviť užívateľa",
|
||||
"editUser" => "Úprava užívateľa :name (:email)",
|
||||
"email" => "E-mail",
|
||||
"gravatarLink" => 'Nastavte si avatar na <a href="http://gravatar.com">gravatar.com</a>',
|
||||
"moreUserActions" => "Zobraziť viac...",
|
||||
"name" => "Celé meno",
|
||||
"noActions" => "Užívateľ zatiaľ v systéme nič neurobil.",
|
||||
"noUsers" => "Žiadni užívatelia.",
|
||||
"overview" => "Zoznam všetkých užívateľov",
|
||||
"password" => "Heslo",
|
||||
"passwordLeaveEmpty" => "Nevyplňujte, pokiaľ heslo nechcete zmeniť.",
|
||||
"profile" => "Profil užívateľa",
|
||||
"register" => "Vytvoriť užívateľa",
|
||||
"registrationSuccessfull" => "Nový užívateľ bol úspešne pridaný.",
|
||||
"role_admin" => "Administrátor",
|
||||
"role_editor" => "Editor",
|
||||
"role_visitor" => "Návštevník",
|
||||
"roles" => "Prosím, vyberte rolu pre užívateľa.",
|
||||
"status" => "Stav",
|
||||
"status_active" => "Aktívny",
|
||||
"status_blocked" => "Zablokovaný",
|
||||
"status_deleted" => "Zmazaný",
|
||||
"update" => "Upraviť informácie",
|
||||
"userDetail" => "Informácie",
|
||||
"userSuccessfullyEdited" => "Užívateľ úspešne upravený.",
|
||||
"usersActions" => "Akcie užívateľa",
|
||||
];
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
return [
|
||||
"actions" => "Akcie",
|
||||
"associateWidgets" => "Priradiť widgety k tejto ploche",
|
||||
"code" => "Unikátny kód (používa sa v šablónach pre vykreslenie)",
|
||||
"createNew" => "Vytvoriť novú plochu",
|
||||
"delete" => "Zmazať widget plochu",
|
||||
"description" => "Popis",
|
||||
"edit" => "Upravujem plochu :name",
|
||||
"editButton" => "Upraviť",
|
||||
"editSuccessfull" => "Zmeny boli úspešne uložené.",
|
||||
"editTooltip" => "Upraviť plochu pre widgety",
|
||||
"invalidArea" => "Zvolená plocha pre widgety nie je platná. Vyberte prosím inú.",
|
||||
"name" => "Názov",
|
||||
"new" => "Nová plocha pre widgety",
|
||||
"noEntries" => "Zatiaľ nebola definovaná žiadna plocha pre widgety.",
|
||||
"notDeletableArea" => "Táto plocha pre widgety sa nedá zmazať. Táto plocha je dôležitá pre nainštalovanú tému.",
|
||||
"overview" => "Zoznam všetkých plôch pre widgety",
|
||||
"save" => "Uložiť",
|
||||
"successfullyCreated" => "Plocha pre widgety úspešne vytvorená",
|
||||
"successfullyDeleted" => "Úspešne zmazané",
|
||||
"uniqueCode" => "Unikátny kód",
|
||||
];
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
return [
|
||||
"actions" => "Akcie",
|
||||
"associate" => "Pridať",
|
||||
"associationDoesNotExists" => "Toto spojenie widgetu s plochou neexistuje.",
|
||||
"associationExists" => "Tento widget už je priradený k tejto ploche pre widgety.",
|
||||
"cannotSave" => "Widget sa nepodarilo uložiť. Nastala neočakávaná výnimka. Správa: :exception",
|
||||
"createdAt" => "Vytvorené",
|
||||
"delete" => "Zmazať",
|
||||
"deleteAssociation" => "Odstrániť",
|
||||
"description" => "Popis",
|
||||
"descriptionOfWidgets" => "Widgety sa zobrazujú v plochách pre widgety. Tieto plochy je možné umiestniť na ľubovoľné miesto na webe.",
|
||||
"edit" => "Upraviť",
|
||||
"editTooltip" => "Upraviť tento widget",
|
||||
"missingValue" => "Nedá sa uložiť bez hodnoty pre pole :field",
|
||||
"name" => "Názov",
|
||||
"noEntries" => "Nie je dostupný žiadny weiget.",
|
||||
"notDeletable" => "Tento widget nejde zmazať. Je dôležitý pre nainštalovanú tému.",
|
||||
"overview" => "Zoznam všetkých widgetov",
|
||||
"preview" => "Náhľad",
|
||||
"successfullyAssociated" => "Widget úspešne vložený do plochy",
|
||||
"successfullyCreated" => "Widget úspešne vytvorený.",
|
||||
"successfullyDeassociated" => "Widget bol úspešne odobraný z plochy",
|
||||
"successfullyDeleted" => "Widget bol úspešne zmazaný",
|
||||
"successfullyEdited" => "Widget bol úspešne upravený.",
|
||||
"unassociatedWidgets" => "Zoznam nepriradených widgetov",
|
||||
"updatedAt" => "Posledná úprava",
|
||||
"widgetExists" => "Widget :id už existuje.",
|
||||
"widgetType" => "Typ widgetu",
|
||||
];
|
||||
@@ -0,0 +1,6 @@
|
||||
<?php
|
||||
return [
|
||||
"accessDenied" => "K tomuto zdroju nemáte prístupové oprávnenie.",
|
||||
"failed" => "Prihlasovacie údaje nie sú správne.",
|
||||
"throttle" => "Príliš mnoho neplatných prihlásení. Skúste sa znovu prihlásiť o :seconds sekúnd.",
|
||||
];
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
return [
|
||||
"customize" => "Prispôsobiť",
|
||||
"footer" => "Pätička",
|
||||
"goToWeb" => "Prejsť na web",
|
||||
"graphics" => "Grafika",
|
||||
"header" => "Hlavička",
|
||||
"lang" => ["czech" => "Čeština",
|
||||
"english" => "Angličtina",
|
||||
"slovak" => "Slovenčina",
|
||||
],
|
||||
"positionFixed" => "fixné",
|
||||
"positionStatic" => "statické",
|
||||
"sidebar" => "Sidebar",
|
||||
];
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
return [
|
||||
"next" => "Nasledujúce »",
|
||||
"previous" => "« Predchádzajúce",
|
||||
];
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
return [
|
||||
"password" => "Heslo musí byť dlhé minimálne 6 znakov a musí byť zhodné s overovacím heslom.",
|
||||
"reset" => "Heslo úspešne obnovené!",
|
||||
"sent" => "Na e-mail Vám bol odoslaný odkaz na obnovu hesla.",
|
||||
"token" => "Token pre obnovu hesla nie je platný!",
|
||||
"user" => "Užívateľ so zadanou e-mailovou adresou neexistuje.",
|
||||
];
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
return [
|
||||
"content" => "Obsah",
|
||||
"emptyString" => "Nie je možné vyhľadávať prázdny reťazec!",
|
||||
"files" => "Súbory",
|
||||
"pageTitle" => "Vyhľadávanie",
|
||||
"results" => "Nájdené výsledky",
|
||||
"term" => "Vyhľadávanie",
|
||||
];
|
||||
@@ -0,0 +1,103 @@
|
||||
<?php
|
||||
return [
|
||||
"accepted" => ":attribute musí byť prijatý.",
|
||||
"active_url" => "Uvedený text nie je platná URL adresa.",
|
||||
"after" => ":attribute musí byť dátum po :date.",
|
||||
"alpha" => ":attribute môže obsahovať iba písmená.",
|
||||
"alpha_dash" => ":attribute môže obsahovať iba písmená, čísla a pomlčky.",
|
||||
"alpha_num" => ":attribute môže obsahovať iba písmená a čísla.",
|
||||
"array" => ":attribute musí byť pole.",
|
||||
"before" => ":attribute musí byť dátum pred :date.",
|
||||
"between" => [
|
||||
"array" => "Zadané pole musí mať minimálne :min a maximálne :max položiek.",
|
||||
"file" => "Veľkosť súboru musí byť v rozmedzí od :min do :max kilobajtov.",
|
||||
"numeric" => "Hodnota musí byť v rozmedzí od :min do :max.",
|
||||
"string" => "Zadaný text musí mať minimálne :min a maximálne :max znakov.",
|
||||
],
|
||||
"boolean" => ":attribute musí byť buď true alebo false.",
|
||||
"confirmed" => "Overenie nesúhlasí.",
|
||||
"csrf" => "Jejda! Formulár ste neodoslali príliš dlhú dobu. Skúste to prosím znovu (zlyhalo overenie CSRF tokenu).",
|
||||
"date" => ":attribute nie je platný dátum.",
|
||||
"date_format" => "Formát atribútu :attribute sa nezhoduje s formátom :format.",
|
||||
"different" => ":attribute a :other musia byť rozdielne.",
|
||||
"digits" => ":attribute musí mať presne :digits číslic.",
|
||||
"digits_between" => ":attribute musí mať minimálne :min a maximálne :max číslic.",
|
||||
"dimensions" => ":attribute má neplatné rozmery.",
|
||||
"distinct" => ":attribute má duplicitnú hodnotu.",
|
||||
"email" => ":attribute musí byť platná e-mailová adresa.",
|
||||
"exists" => "Vybraný atribút nie je platný.",
|
||||
"file" => ":attribute musí byť súbor.",
|
||||
"filled" => "Toto pole je povinné.",
|
||||
"image" => "Toto pole musí byť obrázok.",
|
||||
"in" => "Zvolený atribút je neplatný.",
|
||||
"in_array" => ":attribute nie je obsiahnutý v :other.",
|
||||
"integer" => "Toto musí byť číslo.",
|
||||
"ip" => "Toto pole musí byť platná IP adresa.",
|
||||
"json" => "Pole musí byť platný JSON reťazec.",
|
||||
"max" => [
|
||||
"array" => "Pole nesmie mať viac než :max položiek.",
|
||||
"file" => "Veľkosť súboru nesmie byť väčšia ako :max kilobajtov.",
|
||||
"numeric" => "Hodnota nesmie byť väčšia ako :max.",
|
||||
"string" => "Dĺžka textu nesmie presiahnuť :max znakov.",
|
||||
],
|
||||
"mimes" => "Nahrávaný súbor musí byť jedným z nasledujúcich typov: :values.",
|
||||
"min" => [
|
||||
"file" => "Veľkosť súboru musí byť aspoň :min kilobajtov.",
|
||||
"numeric" => "Hodnota musí byť aspoň :min.",
|
||||
"string" => "Text musí byť dlhý minimálne :min znakov.",
|
||||
],
|
||||
"not_in" => "Zvolená hodnota pre :attribute je neplatná.",
|
||||
'numeric' => ':attribute musí byť číslo.',
|
||||
'present' => ':attribute musí byť vyplnené.',
|
||||
'regex' => ':attribute nemá správny formát.',
|
||||
'required' => ':attribute musí byť vyplnené.',
|
||||
'required_if' => ':attribute musí byť vyplnené ak :other je :value.',
|
||||
'required_unless' => ':attribute musí byť vyplnené pokiaľ :other je v :values.',
|
||||
'required_with' => ':attribute musí byť vyplnené ak :values je vyplnené.',
|
||||
'required_with_all' => ':attribute musí byť vyplnené ak :values je zvolené.',
|
||||
'required_without' => ':attribute musí byť vyplnené ak :values nie je vyplnené.',
|
||||
'required_without_all' => ':attribute musí byť vyplnené ak nie je žiadne z :values zvolené.',
|
||||
'same' => ':attribute a :other sa musia zhodovať.',
|
||||
'size' => [
|
||||
'numeric' => ':attribute musí byť presne :size.',
|
||||
'file' => ':attribute musí mít presne :size Kilobytov.',
|
||||
'string' => ':attribute musí byť presne :size znakov dlhý.',
|
||||
'array' => ':attribute musí obsahovať práve :size prvkov.',
|
||||
],
|
||||
'string' => ':attribute musí byť reťazec znakov.',
|
||||
'timezone' => ':attribute musí byť platná časová zóna.',
|
||||
'unique' => ':attribute musí byť unikátny.',
|
||||
'url' => 'Formát :attribute je neplatný.',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => [
|
||||
'attribute-name' => [
|
||||
'rule-name' => 'custom-message',
|
||||
],
|
||||
],
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => [
|
||||
//
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,16 @@
|
||||
<?php
|
||||
return [
|
||||
"code" => "HTML kód",
|
||||
"containerClass" => "HTML třída pro obalový element tohoto widgetu",
|
||||
"createNew" => "Vytvořit nový HTML widget",
|
||||
"description" => "Popis",
|
||||
"edit" => "Edituji widget :name",
|
||||
"editExisting" => "Upravit widget",
|
||||
"name" => "Jméno",
|
||||
"new" => "Vytvořit nový HTML widget",
|
||||
"preview" => "Náhled",
|
||||
"successfullyEdited" => "Widget úspěšně upraven",
|
||||
"widgetDescription" => "Jednoduchý widget pro vkládání HTML kódu do obsahu stránky.",
|
||||
"widgetName" => "HTML kód",
|
||||
'save' => 'Uložit'
|
||||
];
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php
|
||||
return [
|
||||
"addedPages" => "Odkazy v menu",
|
||||
"availablePages" => "Dostupné stránky",
|
||||
"containerClass" => "HTML třída pro obalový element tohoto widgetu",
|
||||
"description" => "Popis",
|
||||
"edit" => "Upravit menu",
|
||||
"name" => "Jméno menu",
|
||||
"new" => "Nové menu",
|
||||
"noLinks" => "Nelze uložit menu bez jediného odkazu!",
|
||||
"preview" => "Náhled",
|
||||
"save" => "Uložit",
|
||||
"widgetDescription" => "Menu s odkazy definovanými uživatelem.",
|
||||
"widgetName" => "Menu",
|
||||
];
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
return [
|
||||
"code" => "Dodatečný HTML/JS kód pro slider",
|
||||
"containerClass" => "HTML třída pro obalový element tohoto widgetu",
|
||||
"createNew" => "Vytvořit nový",
|
||||
"description" => "Popis",
|
||||
"displayBullets" => "Zobrazit odrážky?",
|
||||
"edit" => "Upravit :name",
|
||||
"editExisting" => "Uložit",
|
||||
"extraSettings" => "Další nastavení",
|
||||
"fullscreen" => "Zobrazit slider na celou obrazovku",
|
||||
"imagesPerSlide" => "Obrázků na slide",
|
||||
"name" => "Jméno slideru",
|
||||
"new" => "Vytvořit nový slider",
|
||||
"preview" => "Náhled",
|
||||
"showInFullscreen" => "Zobrazit na celou obrazovku",
|
||||
"slideContainerClass" => "HTML třída pro každý obrázek ve slideru",
|
||||
"upload" => "Přidat obrázky do slideru",
|
||||
"widgetDescription" => "Slider pro obrázky. Tento widget používá Foundation framework a jeho vlastní slider zvaný Orbit. (Nebude fungovat bez Foundation 6!)",
|
||||
"widgetName" => "Orbit slider",
|
||||
];
|
||||
@@ -2,33 +2,43 @@
|
||||
|
||||
@section('pageHeading', @trans('admin/actionLog.overview'))
|
||||
|
||||
@section('content')
|
||||
@if (!empty($actions))
|
||||
<ul class="timeline">
|
||||
<?php $odd = false; ?>
|
||||
@if($user)
|
||||
@section('pageDescription', @trans('admin/actionLog.displayingUsersActions', ['name' => $user->name, 'email' => $user->email]))
|
||||
@endif
|
||||
|
||||
@foreach($actions as $action)
|
||||
<li @if($odd) class="timeline-inverted" @endif>
|
||||
<?php $odd = !$odd;?>
|
||||
<div class="timeline-badge big" style="background: url('{{\App\Helpers\Gravatar::img($action->email, 40)}}') no-repeat center center" data-toggle="tooltip" data-placement="top" title="{{$action->user_name}} {{$action->email}}"></div>
|
||||
<div class="timeline-panel">
|
||||
<div class="timeline-heading">
|
||||
<h5 class="timeline-title">{{$action->name}} <small class="text-muted">
|
||||
@date($action->created_at)
|
||||
</small></h5>
|
||||
</div>
|
||||
<div class="timeline-body">
|
||||
<p>{!! $action->value !!}</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@else
|
||||
<div class="alert alert-info">
|
||||
<em>@lang('admin/userManagement.noActions')</em>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@section('content')
|
||||
@if (!empty($actions))
|
||||
<ul class="timeline">
|
||||
<?php $odd = false; ?>
|
||||
|
||||
@foreach($actions as $action)
|
||||
<li @if($odd) class="timeline-inverted" @endif>
|
||||
<?php $odd = !$odd;?>
|
||||
<div class="timeline-badge big"
|
||||
style="background: url('{{\App\Helpers\Gravatar::img($action->email, 40)}}') no-repeat center center"
|
||||
data-toggle="tooltip" data-placement="top"
|
||||
title="{{$action->user_name}} {{$action->email}}"></div>
|
||||
<div class="timeline-panel">
|
||||
<div class="timeline-heading">
|
||||
<h5 class="timeline-title">{{$action->name}}
|
||||
<small class="text-muted">
|
||||
@date($action->created_at)
|
||||
</small>
|
||||
</h5>
|
||||
</div>
|
||||
<div class="timeline-body">
|
||||
<p>{!! $action->value !!}</p>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
@else
|
||||
<div class="alert alert-info">
|
||||
<em>@lang('admin/userManagement.noActions')</em>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<div class="row text-center">
|
||||
{!! $actions->render() !!}
|
||||
|
||||
@@ -1,9 +1,15 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', @trans('admin/contents.edit', ['name' => e($page->title)]))
|
||||
@section('pageHeading', $pageHeading)
|
||||
|
||||
@section('content')
|
||||
|
||||
@if(!count($templates))
|
||||
<div class="alert alert-warning">
|
||||
@lang('admin/contents.noTemplates')
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" enctype="multipart/form-data" action="{{route('content.editPost', ['pageId' => $page->id])}}">
|
||||
{!! csrf_field() !!}
|
||||
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
@if($page->title_photo)
|
||||
<div class="row">
|
||||
<div class="col-lg-12 title-photo text-center">
|
||||
<img src="{{config('app.upload_url')}}/{{$page->title_photo}}" alt="" />
|
||||
<div id="titlePhotoContainer"
|
||||
class="col-lg-4 col-lg-offset-4 col-md-6 col-md-offset-3 col-sm-12 title-photo text-center">
|
||||
<input type="hidden" id="existingTitlePhoto" value="{{$page->title_photo}}" name="existingTitlePhoto">
|
||||
<p><img src="@thumbnail($page->title_photo)" alt="" /></p>
|
||||
<p>
|
||||
<a href="javascript:void(0)" id="removeTitlePhoto" class="btn btn-warning" data-toggle="tooltip"
|
||||
title="@lang('admin/contents.deleteTitlePhoto')"><i
|
||||
class="fa fa-trash"></i></a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@@ -11,32 +18,34 @@
|
||||
<label class="control-label">
|
||||
@lang('admin/contents.uploadTitleImage')
|
||||
</label>
|
||||
<input type="file" id="titlePhoto" name="titlePhoto" class="form-control" />
|
||||
<input type="file" id="titlePhoto" accept=".jpg,.jpeg,.png" name="titlePhoto" class="form-control" />
|
||||
|
||||
@include('admin.snippets.hasError', ['field' => 'titlePhoto'])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<label class="control-label">
|
||||
@lang('admin/contents.template')
|
||||
</label>
|
||||
@if (count($templates))
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<label class="control-label">
|
||||
@lang('admin/contents.template')
|
||||
</label>
|
||||
|
||||
|
||||
<select class="form-control" name="template">
|
||||
@foreach($templates as $template)
|
||||
<option value="{{$template->template_name}}"
|
||||
@if(old('template', $page->template) == $template->template_name) selected @endif>
|
||||
{{$template->name}}
|
||||
@if($template->description != '')
|
||||
- {{str_limit($template->description, 60)}}
|
||||
@endif
|
||||
<select class="form-control" name="template">
|
||||
@foreach($templates as $template)
|
||||
<option value="{{$template->template_name}}"
|
||||
@if(old('template', $page->template) == $template->template_name) selected @endif>
|
||||
{{$template->name}}
|
||||
@if($template->description != '')
|
||||
- {{str_limit($template->description, 60)}}
|
||||
@endif
|
||||
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
|
||||
@include('admin.snippets.hasError', ['field' => 'template'])
|
||||
@include('admin.snippets.hasError', ['field' => 'template'])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
@@ -70,7 +70,7 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<textarea name="pageContent" id="pageContent" class="wysiwyg-editor">
|
||||
<textarea name="pageContent" id="pageContent" rows="15" class="wysiwyg-editor">
|
||||
{{old('pageContent', $page->content)}}
|
||||
</textarea>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', @trans('admin/contents.new', ['name' => $moduleName]))
|
||||
@section('pageHeading', trans($pageHeading))
|
||||
|
||||
@section('content')
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', @trans('admin/contents.overview'))
|
||||
@section('pageHeading', @trans(isset($pageHeading) ? $pageHeading : 'admin/contents.overview'))
|
||||
@section('headerButtons')
|
||||
|
||||
@if($module)
|
||||
@@ -35,11 +35,18 @@
|
||||
<div class="row p-tb-15">
|
||||
<div class="col-md-1 hidden-sm-down text-center with-placeholder">
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}">
|
||||
@if(!empty($page->title_photo))
|
||||
<img src="@upload($page->title_photo)" class="placeholder" alt="{{$page->title}}" />
|
||||
@if(!view()->exists(\App\Helpers\Template::name($page->template, false)))
|
||||
<i class="fa fa-2x text-warning fa-warning" data-toggle="tooltip"
|
||||
title="@lang('admin/contents.invalidTemplateSelected')"></i>
|
||||
@else
|
||||
<img src="{{asset('resources/assets/admin/img/placeholder.png')}}" class="placeholder"
|
||||
alt="{{$page->title}}" />
|
||||
@if(!empty($page->title_photo))
|
||||
<img src="@thumbnail($page->title_photo)" class="placeholder"
|
||||
alt="{{$page->title}}" />
|
||||
@else
|
||||
<img src="{{asset('resources/assets/admin/img/placeholder.png')}}"
|
||||
class="placeholder"
|
||||
alt="{{$page->title}}" />
|
||||
@endif
|
||||
@endif
|
||||
</a>
|
||||
</div>
|
||||
@@ -47,8 +54,14 @@
|
||||
<a href="{{route('content.edit', ['id' => $page->id])}}">
|
||||
{{$page->title}}
|
||||
</a>
|
||||
|
||||
@if($page->is_homepage) <span class="m-l-10 tag tag-primary">@lang('admin/contents.homepage')</span> @endif
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-3 hidden-sm-down">
|
||||
<span class="tag @if($page->status == \App\Models\Content::STATUS_PUBLIC) tag-success
|
||||
@elseif ($page->status == \App\Models\Content::STATUS_DRAFT) tag-danger
|
||||
@else tag-warning @endif">{{$statuses[$page->status]}}</span>
|
||||
</div>
|
||||
<div class="col-lg-2 col-md-3 hidden-sm-down">{{$statuses[$page->status]}}</div>
|
||||
<div class="col-lg-2 col-md-3 hidden-sm-down">
|
||||
<a href="{{route('content.overview', ['moduleId' => $page->module_id])}}">
|
||||
{{trans($page->module_name)}}
|
||||
@@ -71,14 +84,16 @@
|
||||
@if(!$page->is_homepage)
|
||||
<li>
|
||||
|
||||
<a href="{{route('content.setHomepage', ['id' => $page->id])}}" data-toggle="tooltip" title="@lang('admin/contents.setHomepage')">
|
||||
<a href="{{route('content.setHomepage', ['id' => $page->id])}}"
|
||||
data-toggle="tooltip" title="@lang('admin/contents.setHomepage')">
|
||||
<i class="fa fa-home"></i>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<li>
|
||||
<a class="edit" href="{{route('content.edit', ['id' => $page->id])}}" data-toggle="tooltip" title="@lang('admin/contents.editPlain')">
|
||||
<a class="edit" href="{{route('content.edit', ['id' => $page->id])}}"
|
||||
data-toggle="tooltip" title="@lang('admin/contents.editPlain')">
|
||||
<i class="fa fa-pencil"></i>
|
||||
</a>
|
||||
</li>
|
||||
@@ -86,7 +101,8 @@
|
||||
@if($page->status == \App\Models\Content::STATUS_DRAFT)
|
||||
<li>
|
||||
<a href="{{route('content.changeStatus', ['id' => $page->id, 'status' => \App\Models\Content::STATUS_PUBLIC])}}"
|
||||
class="confirm" data-toggle="tooltip" title="@lang('admin/contents.makePublic')">
|
||||
class="confirm" data-toggle="tooltip"
|
||||
title="@lang('admin/contents.makePublic')">
|
||||
<i class="fa fa-eye"></i>
|
||||
</a>
|
||||
</li>
|
||||
@@ -115,7 +131,8 @@
|
||||
|
||||
<li>
|
||||
<a href="{{route('content.delete', ['id' => $page->id])}}"
|
||||
class="button tiny alert remove confirm" data-toggle="tooltip" title="@lang('admin/contents.deletePage')"><i
|
||||
class="button tiny alert remove confirm" data-toggle="tooltip"
|
||||
title="@lang('admin/contents.deletePage')"><i
|
||||
class="fa fa-trash-o"></i>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -6,6 +6,13 @@
|
||||
<textarea name="description" class="form-control" placeholder="@lang('admin/fileManager.directoryDescription')"
|
||||
rows="3">{{old('description', $directory->description)}}</textarea>
|
||||
|
||||
<button type="submit" class="btn btn-primary">@lang('admin/fileManager.editDirectory')</button>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
@if ($directory->id)
|
||||
@lang('admin/fileManager.editDirectory')
|
||||
@else
|
||||
@lang('admin/fileManager.newDirectory')
|
||||
@endif
|
||||
|
||||
</button>
|
||||
|
||||
</form>
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
@section('pageHeading', @trans('admin/fileManager.edit', ['name' => $file->original_filename]))
|
||||
@section('headerButtons')
|
||||
<a href="{{route('upload.delete', ['id' => $file->id])}}" class="btn btn-danger btn-sm rounded" title="@lang('admin/fileManager.delete')">
|
||||
<i class="fa fa-remove"></i>
|
||||
<a href="{{route('upload.delete', ['id' => $file->id])}}" class="btn btn-danger btn-sm confirm rounded" title="@lang('admin/fileManager.delete')">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
|
||||
@@ -1,26 +1,18 @@
|
||||
<div class="row">
|
||||
@forelse($files as $file)
|
||||
<div class="col-sm-4 col-md-2 text-center file-preview">
|
||||
<div class="preview">
|
||||
<a href="{{route('upload.detail', ['id' => $file->id])}}">
|
||||
{!! \App\Helpers\FileManager::getPreview($file) !!}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<a href="{{route('upload.detail', ['id' => $file->id])}}">
|
||||
{{str_limit($file->original_filename, 10)}}
|
||||
</a>
|
||||
|
||||
@if(!isset($hideDelete) || !$hideDelete)
|
||||
<a href="{{route('upload.delete', ['id' => $file->id])}}" class="btn btn-sm btn-danger"
|
||||
title="@lang('admin/fileManager.delete')">
|
||||
<i class="fa fa-remove"></i>
|
||||
</a>
|
||||
@endif
|
||||
<div class="col-sm-4 col-md-3 text-center">
|
||||
@include('admin.snippets.card', [
|
||||
'body' => '<a href="'.route('upload.detail', ['id' => $file->id]).'">'.\App\Helpers\FileManager::getPreview($file).'</a>',
|
||||
'footerClass' => 'text-right',
|
||||
'cardClass' => 'file-preview',
|
||||
'footer' => (!isset($hideDelete) || !$hideDelete) ? '<a href="'.route('upload.delete', ['id' => $file->id]).'" data-toggle="tooltip"
|
||||
class="btn btn-sm btn-danger confirm"
|
||||
title="'.trans('admin/fileManager.delete').'">
|
||||
<i class="fa fa-trash"></i>
|
||||
</a>' : '',
|
||||
])
|
||||
</div>
|
||||
@empty
|
||||
<div class="alert alert-info">
|
||||
<em>@lang('admin/fileManager.noFiles')</em>
|
||||
</div>
|
||||
@endforelse
|
||||
</div>
|
||||
@endforelse
|
||||
@@ -60,40 +60,11 @@
|
||||
</h5>
|
||||
</div>
|
||||
<div id="new-dir" class="panel-collapse collapse" role="tabpanel"
|
||||
aria-labelledby="new-file-title">
|
||||
@include('admin.fileManager.directories.form', ['directory' => new \App\Models\Directory(), 'action' => route('upload.postEditDirectory', ['id' => $directory->id])])
|
||||
aria-labelledby="new-dir-title">
|
||||
@include('admin.fileManager.directories.form', ['directory' => new \App\Models\Directory(), 'action' => route('upload.postNewDirectory')])
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
{{--<ul class="accordion" data-accordion data-allow-all-closed="true">--}}
|
||||
{{--<li class="accordion-item is-active" data-accordion-item>--}}
|
||||
{{--<a href="#" class="accordion-title">@lang('admin/fileManager.newFile')</a>--}}
|
||||
|
||||
{{--<div class="accordion-content" data-tab-content>--}}
|
||||
{{--@include('admin.fileManager.newFileForm')--}}
|
||||
{{--</div>--}}
|
||||
{{--</li>--}}
|
||||
{{--<li class="accordion-item" data-accordion-item>--}}
|
||||
{{--<a href="#" class="accordion-title">@lang('admin/fileManager.editDirectory')</a>--}}
|
||||
|
||||
{{--<div class="accordion-content" data-tab-content>--}}
|
||||
{{--@include('admin.fileManager.directories.editForm')--}}
|
||||
{{--</div>--}}
|
||||
{{--</li>--}}
|
||||
{{--@endif--}}
|
||||
{{--<li class="accordion-item" data-accordion-item>--}}
|
||||
{{--<a href="#" class="accordion-title">@lang('admin/fileManager.newDirectory')</a>--}}
|
||||
|
||||
{{--<div class="accordion-content" data-tab-content>--}}
|
||||
{{--@include('admin.fileManager.directories.newForm')--}}
|
||||
{{--</div>--}}
|
||||
{{--</li>--}}
|
||||
{{--</ul>--}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@stop
|
||||
@endsection
|
||||
@@ -4,7 +4,7 @@
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<title>@yield('pageHeading') {{isset($pageName) ? ' | '.$pageName: ''}}</title>
|
||||
<title>@yield('pageHeading') {{setting('pageName')}}</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="{{asset('resources/assets/css/font-awesome.min.css')}}" />
|
||||
@@ -76,8 +76,10 @@
|
||||
<!-- /.modal-dialog -->
|
||||
</div>
|
||||
|
||||
<script src="{{asset('resources/assets/admin/js')}}/vendor.js"></script>
|
||||
<script src="{{asset('resources/assets/admin/js')}}/vendor.min.js"></script>
|
||||
<script src="{{asset('resources/assets/admin/js')}}/app.js"></script>
|
||||
|
||||
|
||||
@yield('javascripts')
|
||||
</body>
|
||||
|
||||
|
||||
@@ -23,23 +23,27 @@
|
||||
|
||||
<div class="header-block header-block-nav">
|
||||
<ul class="nav-profile">
|
||||
<li class="profile dropdown">
|
||||
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
@lang(LaravelLocalization::getCurrentLocaleName())
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
@foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
|
||||
<a hreflang="{{$localeCode}}"
|
||||
href="{{LaravelLocalization::getLocalizedURL($localeCode) }}"
|
||||
class="dropdown-item">
|
||||
{{ $properties['native'] }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
@if(count(LaravelLocalization::getSupportedLocales()) > 1)
|
||||
<li class="profile dropdown">
|
||||
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button"
|
||||
aria-haspopup="true" aria-expanded="false">
|
||||
@lang(LaravelLocalization::getCurrentLocaleName())
|
||||
</a>
|
||||
<div class="dropdown-menu">
|
||||
@foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
|
||||
<a hreflang="{{$localeCode}}"
|
||||
href="{{LaravelLocalization::getLocalizedURL($localeCode) }}"
|
||||
class="dropdown-item">
|
||||
{{ $properties['native'] }}
|
||||
</a>
|
||||
@endforeach
|
||||
</div>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<li class="profile">
|
||||
<a href="{{route('page.index')}}" target="_blank" class="nav-link" data-toggle="tooltip" data-placement="bottom" title="@lang('common.goToWeb')"><i class="fa fa-fw fa-globe"></i></a>
|
||||
<a href="{{route('page.index')}}" target="_blank" class="nav-link" data-toggle="tooltip"
|
||||
data-placement="bottom" title="@lang('common.goToWeb')"><i class="fa fa-fw fa-globe"></i></a>
|
||||
</li>
|
||||
|
||||
|
||||
@@ -59,12 +63,8 @@
|
||||
<aside class="sidebar">
|
||||
<div class="sidebar-container">
|
||||
<div class="sidebar-header">
|
||||
<div class="brand">
|
||||
<div class="logo">
|
||||
<span class="l l1"></span> <span class="l l2"></span> <span
|
||||
class="l l3"></span> <span class="l l4"></span> <span class="l l5"></span>
|
||||
</div>
|
||||
{{isset($pageName) ? str_limit($pageName, 15) : ''}}
|
||||
<div class="m-t-15 text-center text-primary">
|
||||
<h4>{{str_limit(setting('pageName'), 15)}}</h4>
|
||||
</div>
|
||||
</div>
|
||||
<nav class="menu">
|
||||
@@ -79,11 +79,14 @@
|
||||
<div class="customize-item">
|
||||
<div class="row customize-header">
|
||||
<div class="col-xs-4"></div>
|
||||
<div class="col-xs-4"><label class="title">@lang('common.positionFixed')</label></div>
|
||||
<div class="col-xs-4"><label class="title">@lang('common.positionStatic')</label></div>
|
||||
<div class="col-xs-4"><label
|
||||
class="title">@lang('common.positionFixed')</label></div>
|
||||
<div class="col-xs-4"><label
|
||||
class="title">@lang('common.positionStatic')</label></div>
|
||||
</div>
|
||||
<div class="row hidden-md-down">
|
||||
<div class="col-xs-4"><label class="title">@lang('common.sidebar')</label></div>
|
||||
<div class="col-xs-4"><label class="title">@lang('common.sidebar')</label>
|
||||
</div>
|
||||
<div class="col-xs-4"><label>
|
||||
<input class="radio" type="radio" name="sidebarPosition"
|
||||
value="sidebar-fixed">
|
||||
@@ -95,7 +98,8 @@
|
||||
</label></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-4"><label class="title">@lang('common.header')</label></div>
|
||||
<div class="col-xs-4"><label class="title">@lang('common.header')</label>
|
||||
</div>
|
||||
<div class="col-xs-4"><label>
|
||||
<input class="radio" type="radio" name="headerPosition"
|
||||
value="header-fixed">
|
||||
@@ -107,7 +111,8 @@
|
||||
</label></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-4"><label class="title">@lang('common.footer')</label></div>
|
||||
<div class="col-xs-4"><label class="title">@lang('common.footer')</label>
|
||||
</div>
|
||||
<div class="col-xs-4"><label>
|
||||
<input class="radio" type="radio" name="footerPosition"
|
||||
value="footer-fixed">
|
||||
@@ -166,5 +171,4 @@
|
||||
</footer>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
@@ -8,13 +8,6 @@
|
||||
<div class="card">
|
||||
<header class="auth-header">
|
||||
<h1 class="auth-title">
|
||||
<div class="logo">
|
||||
<span class="l l1"></span>
|
||||
<span class="l l2"></span>
|
||||
<span class="l l3"></span>
|
||||
<span class="l l4"></span>
|
||||
<span class="l l5"></span>
|
||||
</div>
|
||||
{{isset($pageName) ? $pageName : ''}}
|
||||
</h1>
|
||||
</header>
|
||||
|
||||
@@ -6,27 +6,32 @@
|
||||
<form action="{{route('settings.save')}}" method="POST">
|
||||
{!! csrf_field() !!}
|
||||
|
||||
<ul class="nav nav-tabs nav-tabs-bordered" role="tablist">
|
||||
@foreach($formSections as $id => $section)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if($section->getId() == reset($formSections)->getId()) active @endif"
|
||||
data-toggle="tab"
|
||||
href="#{{$section->getId()}}" role="tab"
|
||||
aria-controls="{{$section->getId()}}">{{trans($section->getName())}}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
<div class="card">
|
||||
<div class="card-block">
|
||||
<ul class="nav nav-pills nav-pills-bordered" role="tablist">
|
||||
@foreach($formSections as $id => $section)
|
||||
<li class="nav-item">
|
||||
<a class="nav-link @if($section->getId() == reset($formSections)->getId()) active @endif"
|
||||
data-toggle="tab"
|
||||
href="#{{$section->getId()}}" role="tab"
|
||||
aria-controls="{{$section->getId()}}">{{trans($section->getName())}}</a>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
|
||||
<div class="tab-content tabs-bordered card">
|
||||
|
||||
@foreach($formSections as $section => $view)
|
||||
<div class="tab-pane @if($view == reset($formSections)) active @endif" id="{{$section}}"
|
||||
role="tabpanel">
|
||||
@include($view->getView())
|
||||
<div class="tab-content">
|
||||
@foreach($formSections as $section => $view)
|
||||
<div class="tab-pane fade @if($view == reset($formSections)) in active @endif" id="{{$section}}"
|
||||
role="tabpanel">
|
||||
@include($view->getView())
|
||||
</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endforeach
|
||||
|
||||
<button type="submit" class="btn btn-primary">@lang('admin/settings.save')</button>
|
||||
</div>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">@lang('admin/settings.save')</button>
|
||||
|
||||
|
||||
</form>
|
||||
@stop
|
||||
@@ -2,28 +2,40 @@
|
||||
@lang('admin/settings.social.facebook')
|
||||
</label>
|
||||
|
||||
<input class="form-control" type="text" name="facebookProfile" value="{{old('facebookProfile', isset($settings->facebookProfile) ? $settings->facebookProfile['val'] : '')}}" />
|
||||
<input class="form-control" type="text" name="facebookProfile"
|
||||
value="{{old('facebookProfile', isset($settings->facebookProfile) ? $settings->facebookProfile['val'] : '')}}" />
|
||||
|
||||
<label class="label-control">
|
||||
@lang('admin/settings.social.linkedIn')
|
||||
</label>
|
||||
|
||||
<input class="form-control" type="text" name="linkedInProfile"
|
||||
value="{{old('linkedInProfile', isset($settings->linkedInProfile) ? $settings->linkedInProfile['val'] : '')}}" />
|
||||
|
||||
<label class="label-control">
|
||||
@lang('admin/settings.social.twitter')
|
||||
</label>
|
||||
|
||||
<input class="form-control" type="text" name="twitterProfile" value="{{old('twitterProfile', isset($settings->twitterProfile) ? $settings->twitterProfile['val'] : '')}}" />
|
||||
<input class="form-control" type="text" name="twitterProfile"
|
||||
value="{{old('twitterProfile', isset($settings->twitterProfile) ? $settings->twitterProfile['val'] : '')}}" />
|
||||
|
||||
<label class="label-control">
|
||||
@lang('admin/settings.social.pinterest')
|
||||
</label>
|
||||
|
||||
<input class="form-control" type="text" name="pinterestProfile" value="{{old('pinterestProfile', isset($settings->pinterestProfile) ? $settings->pinterestProfile['val'] : '')}}" />
|
||||
<input class="form-control" type="text" name="pinterestProfile"
|
||||
value="{{old('pinterestProfile', isset($settings->pinterestProfile) ? $settings->pinterestProfile['val'] : '')}}" />
|
||||
|
||||
<label class="label-control">
|
||||
@lang('admin/settings.social.gplus')
|
||||
</label>
|
||||
|
||||
<input class="form-control" type="text" name="gplusProfile" value="{{old('gplusProfile', isset($settings->gplusProfile) ? $settings->gplusProfile['val'] : '')}}" />
|
||||
<input class="form-control" type="text" name="gplusProfile"
|
||||
value="{{old('gplusProfile', isset($settings->gplusProfile) ? $settings->gplusProfile['val'] : '')}}" />
|
||||
|
||||
<label class="label-control">
|
||||
@lang('admin/settings.social.instagram')
|
||||
</label>
|
||||
|
||||
<input class="form-control" type="text" name="instagramProfile" value="{{old('instagramProfile', isset($settings->instagramProfile) ? $settings->instagramProfile['val'] : '')}}" />
|
||||
<input class="form-control" type="text" name="instagramProfile"
|
||||
value="{{old('instagramProfile', isset($settings->instagramProfile) ? $settings->instagramProfile['val'] : '')}}" />
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<div class="card {{isset($type) ? 'card-'.$type : 'card-default'}} {{$cardClass or ''}}">
|
||||
@if(!empty($title))
|
||||
<div class="card-header">
|
||||
<div class="header-block">
|
||||
<p class="title"> {!! $title !!} </p>
|
||||
</div>
|
||||
</div>
|
||||
@endif
|
||||
<div class="card-block">
|
||||
{!! $body !!}
|
||||
</div>
|
||||
<div class="card-footer {{$footerClass or ''}}">
|
||||
{!! $footer !!}
|
||||
</div>
|
||||
</div>
|
||||
@@ -8,8 +8,10 @@
|
||||
basicEntities: false,
|
||||
entities_greek: false,
|
||||
entities_latin: false,
|
||||
removePlugins: 'elementspath,about,scayt',
|
||||
height: 550,
|
||||
removePlugins: 'about,scayt', //elementspath
|
||||
extraPlugins: 'justify',
|
||||
enterMode: CKEDITOR.ENTER_DIV,
|
||||
toolbarGroups: [
|
||||
{name: 'undo', groups: ['undo']},
|
||||
{name: 'styles'},
|
||||
|
||||
@@ -8,13 +8,19 @@
|
||||
{!! csrf_field() !!}
|
||||
<div class="row">
|
||||
<div class="col-lg-8">
|
||||
@include('admin.snippets.aceEditor', [
|
||||
'value' => old('templateContent', $templateContent),
|
||||
'theme' => 'xcode',
|
||||
'mode' => 'html',
|
||||
'name' => 'templateContent',
|
||||
'rows' => '20'
|
||||
])
|
||||
@if($template->editable)
|
||||
@include('admin.snippets.aceEditor', [
|
||||
'value' => old('templateContent', $templateContent),
|
||||
'theme' => 'xcode',
|
||||
'mode' => 'html',
|
||||
'name' => 'templateContent',
|
||||
'rows' => '20'
|
||||
])
|
||||
@else
|
||||
<code>
|
||||
<pre>{{$templateContent}}</pre>
|
||||
</code>
|
||||
@endif
|
||||
</div>
|
||||
|
||||
<div class="col-lg-4">
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
<div class="tile-overview">
|
||||
<div class="tile-overview sameheight-container">
|
||||
@forelse($templates as $template)
|
||||
<div class="col-lg-3">
|
||||
<div class="text-center" title="{{$template->name}}">
|
||||
<div class="text-center bold" data-toggle="tooltip" title="{{$template->name}}">
|
||||
{{str_limit($template->name, 15)}}
|
||||
</div>
|
||||
<div>
|
||||
<div class="text-center sameheight-item">
|
||||
{{str_limit($template->description, 150)}}
|
||||
</div>
|
||||
|
||||
@if($isWritable)
|
||||
<a data-template-id="{{$template->id}}" data-template-name="{{$template->template_name}}"
|
||||
class="btn btn-pill-left btn-primary col-lg-6 copy-template"
|
||||
class="btn btn-pill-left btn-secondary col-lg-6 copy-template" data-toggle="tooltip"
|
||||
title="@lang('admin/templates.copy')">
|
||||
<i class="fa fa-copy"></i>
|
||||
</a>
|
||||
@else
|
||||
<a href="#" class="btn btn-pill-left btn-primary disabled col-lg-6"
|
||||
<a href="#" class="btn btn-pill-left btn-secondary disabled col-lg-6" data-toggle="tooltip"
|
||||
title="@lang('admin/templates.cannotCopy')">
|
||||
<i class="fa fa-copy"></i>
|
||||
</a>
|
||||
@endif
|
||||
|
||||
@if ($template->editable)
|
||||
<a href="{{route('templates.edit', ['id' => $template->id])}}"
|
||||
class="btn btn-primary btn-pill-right col-lg-6"
|
||||
class="btn btn-primary btn-pill-right col-lg-6" data-toggle="tooltip"
|
||||
title="@lang('admin/templates.edit', ['name' => $template->name])">
|
||||
<i class="fa fa-edit"></i>
|
||||
@if ($template->editable)
|
||||
<i class="fa fa-edit"></i>
|
||||
@else
|
||||
<i class="fa fa-info"></i>
|
||||
@endif
|
||||
|
||||
</a>
|
||||
@endif
|
||||
</div>
|
||||
@empty
|
||||
<div class="alert alert-info">
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
|
||||
@section('pageHeading', trans('admin/userManagement.profile'))
|
||||
@section('pageDescription', @trans('admin/userManagement.detail', ['name' => $user->name, 'email' => $user->email]))
|
||||
@section('headerButtons')
|
||||
<a href="{{route('users.overview')}}" class="btn btn-secondary btn-sm rounded"
|
||||
title="@lang('admin/userManagement.overview')">
|
||||
<i class="fa fa-list"></i>
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@@ -53,12 +59,12 @@
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="user-edit" role="tabpanel">
|
||||
@include('admin.userManagement.editForm')
|
||||
@include('admin.userManagement.editForm', ['states' => $statuses])
|
||||
</div>
|
||||
|
||||
<div class="tab-pane" id="user-actions" role="tabpanel">
|
||||
<ul class="timeline">
|
||||
@if (!empty($actions))
|
||||
@if (!empty($actions))
|
||||
<ul class="timeline">
|
||||
<?php $odd = false; ?>
|
||||
|
||||
@foreach($actions as $action)
|
||||
@@ -79,7 +85,15 @@
|
||||
</div>
|
||||
</li>
|
||||
@endforeach
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
<div class="text-center">
|
||||
<a href="{{route('log.overview', ['userId' => $user->id])}}"
|
||||
class="btn btn-secondary">@lang('admin/userManagement.moreUserActions')</a>
|
||||
</div>
|
||||
|
||||
|
||||
@else
|
||||
<div class="alert alert-info">
|
||||
<em>@lang('admin/userManagement.noActions')</em>
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
@extends('admin.layoutWithNavigation')
|
||||
|
||||
@section('pageHeading', @trans('admin/userManagement.editUser', ['name' => str_limit($user->name, 20), 'email' => $user->email]))
|
||||
@section('headerButtons')
|
||||
<a href="{{route('users.overview')}}" class="btn btn-secondary btn-sm rounded" title="@lang('admin/userManagement.overview')">
|
||||
<i class="fa fa-list"></i>
|
||||
</a>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
|
||||