This commit is contained in:
Alan
2026-02-14 19:34:54 +03:00
commit 5c3329238b
867 changed files with 214778 additions and 0 deletions

View File

@@ -0,0 +1,167 @@
$(function() {
$("<a href='simpla/' class='admin_bookmark'></a>").appendTo('body');
tooltip = $("<div class='tooltip'><div class='tooltipHeader'></div><div class='tooltipBody'></div><div class='tooltipFooter'></div></div>").appendTo($('body'));
$('.tooltip').live('mouseleave', function(){tooltipcanclose=true;setTimeout("close_tooltip();", 300);});
$('.tooltip').live('mouseover', function(){tooltipcanclose=false;});
$('[data-page]').live('mouseover', show_tooltip);
$('[data-service]').live('mouseover', show_tooltip);
$('[data-category]').live('mouseover', show_tooltip);
$('[data-brand]').live('mouseover', show_tooltip);
$('[data-product]').live('mouseover', show_tooltip);
$('[data-post]').live('mouseover', show_tooltip);
$('[data-act]').live('mouseover', show_tooltip);
$('[data-feature]').live('mouseover', show_tooltip);
});
function show_tooltip()
{
tooltipcanclose=false;
tooltip.show();
$(this).live('mouseleave', function(){tooltipcanclose=true;setTimeout("close_tooltip();", 500);});
flip = !($(this).offset().left+tooltip.width()+25 < $('body').width());
tooltip.css('top', $(this).height() + 5 + $(this).offset().top + 'px');
tooltip.css('left', ($(this).offset().left + $(this).outerWidth()*0.5 - (flip ? tooltip.width()-40 : 0) + 0) + 'px');
tooltip.find('.tooltipHeader').addClass(flip ? 'tooltipHeaderFlip' : 'tooltipHeaderDirect').removeClass(flip ? 'tooltipHeaderDirect' : 'tooltipHeaderFlip');
from = encodeURIComponent(window.location);
tooltipcontent = '';
if(id = $(this).attr('data-service'))
{
tooltipcontent = "<a href='simpla/index.php?module=ServiceAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
tooltipcontent += "<a href='simpla/index.php?module=ServiceAdmin&return="+from+"' class=admin_tooltip_add>Добавить услугу</a>";
}
if(id = $(this).attr('data-page'))
{
tooltipcontent = "<a href='simpla/index.php?module=PageAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
tooltipcontent += "<a href='simpla/index.php?module=PageAdmin&return="+from+"' class=admin_tooltip_add>Добавить страницу</a>";
}
if(id = $(this).attr('data-category'))
{
tooltipcontent = "<a href='simpla/index.php?module=CategoryAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
tooltipcontent += "<a href='simpla/index.php?module=ProductAdmin&category_id="+id+"&return="+from+"' class=admin_tooltip_add>Добавить товар</a>";
}
if(id = $(this).attr('data-brand'))
{
tooltipcontent = "<a href='simpla/index.php?module=BrandAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
}
if(id = $(this).attr('data-product'))
{
tooltipcontent = "<a href='simpla/index.php?module=ProductAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
}
if(id = $(this).attr('data-post'))
{
tooltipcontent = "<a href='simpla/index.php?module=PostAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
}
if(id = $(this).attr('data-act'))
{
tooltipcontent = "<a href='simpla/index.php?module=ActionsPostAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
}
if(id = $(this).attr('data-feature'))
{
tooltipcontent = "<a href='simpla/index.php?module=FeatureAdmin&id="+id+"&return="+from+"' class=admin_tooltip_edit>Редактировать</a>";
}
$('.tooltipBody').html(tooltipcontent);
}
function close_tooltip()
{
if(tooltipcanclose)
{
tooltipcanclose=false;
tooltip.hide();
}
}
function SetTooltips() {
elements = document.getElementsByTagName("body")[0].getElementsByTagName("*");
for (i = 0; i <elements.length; i++)
{
tooltip = elements[i].getAttribute('tooltip');
if(tooltip)
{
elements[i].onmouseout = function(e) {tooltipcanclose=true;setTimeout("CloseTooltip();", 1000);};
switch(tooltip)
{
case 'product':
elements[i].onmouseover = function(e) {AdminProductTooltip(this, this.getAttribute('product_id'));tooltipcanclose=false;}
break;
case 'hit':
elements[i].onmouseover = function(e) {AdminHitTooltip(this, this.getAttribute('product_id'));tooltipcanclose=false;tooltipcanclose=false;}
break;
case 'category':
elements[i].onmouseover = function(e) {AdminCategoryTooltip(this, this.getAttribute('category_id'));tooltipcanclose=false;}
break;
case 'news':
elements[i].onmouseover = function(e) {AdminNewsTooltip(this, this.getAttribute('news_id'));tooltipcanclose=false;}
break;
case 'article':
elements[i].onmouseover = function(e) {AdminArticleTooltip(this, this.getAttribute('article_id'));tooltipcanclose=false;}
break;
case 'page':
elements[i].onmouseover = function(e) {AdminPageTooltip(this, this.getAttribute('id')); tooltipcanclose=false;}
break;
case 'currency':
elements[i].onmouseover = function(e) {AdminCurrencyTooltip(this); tooltipcanclose=false;}
break;
}
}
}
}
function ShowTooltip(i, content) {
tooltip = document.getElementById('tooltip');
document.getElementById('tooltipBody').innerHTML = content;
tooltip.style.display = 'block';
var xleft=0;
var xtop=0;
o = i;
do {
xleft += o.offsetLeft;
xtop += o.offsetTop;
} while (o=o.offsetParent);
xwidth = i.offsetWidth ? i.offsetWidth : i.style.pixelWidth;
xheight = i.offsetHeight ? i.offsetHeight : i.style.pixelHeight;
bwidth = tooltip.offsetWidth ? tooltip.offsetWidth : tooltip.style.pixelWidth;
w = window;
xbody = document.compatMode=='CSS1Compat' ? w.document.documentElement : w.document.body;
dwidth = xbody.clientWidth ? xbody.clientWidth : w.innerWidth;
bwidth = tooltip.offsetWidth ? tooltip.offsetWidth : tooltip.style.pixelWidth;
flip = !( 25 + xleft + bwidth < dwidth);
tooltip.style.top = xheight - 3 + xtop + 'px';
tooltip.style.left = (xleft - (flip ? bwidth : 0) + 25) + 'px';
document.getElementById('tooltipHeader').className = flip ? 'tooltipHeaderFlip' : 'tooltipHeaderDirect';
return false;
}

View File

@@ -0,0 +1,93 @@
a.admin_bookmark
{
position:absolute;
left:3%;
top:0px;
width: 12px;
height: 35px;
background-image: url('../i/bookmark.gif');
background-repeat: no-repeat;
}
.tooltip a
{
display: block;
color: black;
padding:3px 2px 5px 20px;
background-position: left center;
background-repeat: no-repeat;
}
.tooltip a:hover
{
background-color: #f5f5f5;
}
a.admin_tooltip_edit { background-image:url('../i/edit.png'); }
a.admin_tooltip_delete { background-image:url('../i/invisible.png'); }
a.admin_tooltip_hit { background-image:url('../i/hit.png'); }
a.admin_tooltip_up { background-image:url('../i/up.png'); }
a.admin_tooltip_down { background-image:url('../i/down.png'); }
a.admin_tooltip_add { background-image:url('../i/add.png'); }
.tooltip {
width: 187px;
top: 0px;
left: 0px;
padding: 0;
margin: 0;
display: none;
position: absolute;
z-index: 64999;
filter: Alpha(Opacity='85');
-moz-opacity: 0.85;
opacity: 0.85;
}
.tooltipHeader {
width: 187px;
height: 19px;
padding: 0;
margin: 0;
font-size: 0;
line-height: 0;
background-repeat: no-repeat;
display: block;
}
.tooltipHeaderDirect {
background-image: url(../i/tooltip-header.gif);
}
.tooltipHeaderFlip {
background-image: url(../i/tooltip-header-flip.gif);
}
.tooltipFooter {
width: 187px;
height: 3px;
padding: 0;
margin: 0;
font-size: 0;
line-height: 0;
background-image: url(../i/tooltip-footer.gif);
background-repeat: no-repeat;
display: block;
}
.tooltipBody {
padding: 10px;
color: black;
background-color: #D0D0D0;
width: auto;
margin: 0;
font: normal normal 12px/14px Verdana, Arial, serif;
line-height: 140%;
background-image: url(../i/tooltip-body.gif);
background-repeat: repeat-y;
display: block;
}

BIN
js/admintooltip/i/add.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
js/admintooltip/i/down.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

BIN
js/admintooltip/i/edit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 570 B

BIN
js/admintooltip/i/hit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 664 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 715 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 554 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 525 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

BIN
js/admintooltip/i/up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

156
js/admintooltip/index.html Normal file
View File

@@ -0,0 +1,156 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Validate JS</TITLE>
<SCRIPT src="js/default.js" language="JavaScript" type="text/javascript"></SCRIPT>
<SCRIPT src="js/validate.js" language="JavaScript" type="text/javascript"></SCRIPT>
<SCRIPT src="js/baloon.js" language="JavaScript" type="text/javascript"></SCRIPT>
<LINK href="css/default.css" rel="stylesheet" type="text/css" />
<LINK href="css/baloon.css" rel="stylesheet" type="text/css" />
</HEAD>
<BODY>
<TABLE width="100%" border="0" cellpadding="10" cellspacing="0">
<FORM action="index.html" method="GET" enctype="multipart/form-data">
<TR valign="top">
<TD width="50%">
Текст сообщения об ошибке будет браться из атрибута <STRONG>notice</STRONG>, если тот есть. Если у формы есть атрибут <STRONG>onsubmit</STRONG>, то стандартный скрипт валидации подцепляться не будет.
Допустимые значения текстовых полей (<STRONG>text</STRONG>, <STRONG>password</STRONG> или <STRONG>textarea</STRONG>) определяются атрибутом <STRONG>pattern</STRONG>, значение которого в общем случае
представляет из себя регулярное выражение, соотвествующее корректному значению поля. Ограничители писать не надо.
Например значение этого поля должно начинаться с 'a', заканчиваться на 'c', и содержать внутри хотя бы один 'b' (<STRONG>^ab+c$</STRONG>).
<BR /><BR /> Кстати, в старых Opera&#146;ах (&lt; 7) регулярные выражения вроде бы отсутвуют как класс.
</TD>
<TD width="50%">
<INPUT type="text" name="count" pattern="^aq+c$" notice="skiri"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен number, то в поле ожидается неотрицательное целое число
</TD>
<TD>
<INPUT type="text" name="number" pattern="number" notice="В этом поле должно быть целое число"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен url, то в поле ожидается URL. К сожалению, в регулярных выражениях я не очень силен,
поэтому шаблон иногда сбоит. Так что перед использованием протестите
</TD>
<TD>
<INPUT type="text" name="url" pattern="url" notice="В этом поле должен быть URL"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен string, то поле просто не должно быть пустым
</TD>
<TD>
<INPUT type="text" name="string" pattern="string" notice="В этом поле хоть что-то надо вписать"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен email, то в поле ожидается email адрес
</TD>
<TD>
<INPUT type="text" name="email" pattern="email" notice="В этом поле должен быть email адрес"/>
</TD>
</TR>
<TR valign="top">
<TD>
Ошибка возникает при выборе OPTION&#146;а с атрибутом <STRONG>notselected</STRONG>.
Элемент с атрибутом <STRONG>select-multiple</STRONG> я еще не придумал как проверять (пока не было еще в этом нужды)
</TD>
<TD>
<SELECT name="choise" notice="Надо выбрать 1 элемент, причем не первый">
<OPTION value="1" notselected="notselected">Одын</OPTION>
<OPTION value="2">Две</OPTION>
<OPTION value="3">Три</OPTION>
<OPTION value="4">Четыре</OPTION>
</SELECT>
</TD>
</TR>
<TR valign="top">
<TD>
У любого из checkbox&#146;ов можно указать атрибуты <STRONG>min</STRONG>, <STRONG>max</STRONG> и
<STRONG>notice</STRONG>
</TD>
<TD>
<FIELDSET>
<LEGEND>Группа checkbox&#146;ов с одинаковым именем</LEGEND>
<INPUT class="radio" type="checkbox" name="rand" min="1" max="2" notice="Надо выбрать по краней мере 1 элемент, но не больше 2х"/>
<INPUT class="radio" type="checkbox" name="rand"/>
<INPUT class="radio" type="checkbox" name="rand"/>
<INPUT class="radio" type="checkbox" name="rand"/>
<INPUT class="radio" type="checkbox" name="rand"/>
</FIELDSET>
</TD>
</TR>
<TR valign="top">
<TD>
<STRONG>TEXTAREA</STRONG> проверяется так же, как и <STRONG>INPUT[@type = 'text']</STRONG>
</TD>
<TD>
<TEXTAREA name="text" pattern="string" notice="Сюда надо просто что то ввести"></TEXTAREA>
</TD>
</TR>
<TR valign="top">
<TD>
У любого из radiobutton&#146;ов можно указать атрибуты <STRONG>min</STRONG>, <STRONG>max</STRONG> и <STRONG>notice</STRONG>.
<BR>Причем, так как это radiobutton, а не checkbox, то <STRONG>min</STRONG> = <STRONG>max</STRONG> = 1
</TD>
<TD>
<FIELDSET>
<LEGEND>Группа radiobutton&#146;ов с одинаковым именем</LEGEND>
<INPUT class="radio" type="radio" name="mask"/>
<INPUT class="radio" type="radio" name="mask" min="1" max="1" notice="Надо выбрать какой то 1 элемент"/>
<INPUT class="radio" type="radio" name="mask"/>
<INPUT class="radio" type="radio" name="mask"/>
</FIELDSET>
</TD>
</TR>
<TR valign="top">
<TD>
Элемент типа <STRONG>file</STRONG> я не придумал как проверять. Да и проверять его редко когда надо, разве что при закачке картинок.
Но в их случае я пользуюсь превьюшками, а имя файла и расширение как правило интереса совсем не представляют
</TD>
<TD>
<INPUT type="file" name="photo"/>
</TD>
</TR>
<TR valign="top">
<TD>
Значения полей типа <STRONG>image</STRONG>, <STRONG>button</STRONG>, <STRONG>submit</STRONG>,
<STRONG>reset</STRONG> и <STRONG>hidden</STRONG> никак не проверяются
</TD>
<TD>
<INPUT type="submit" value="submit"/>
</TD>
</TR>
</FORM>
</TABLE>
</BODY>
</HTML>

17
js/ajax-cart.js Normal file
View File

@@ -0,0 +1,17 @@
// Аяксовая корзина
$('form.cart').live('submit', function(e) {
e.preventDefault();
button = $(this).find('input[type="submit"]');
$.ajax({
url: "ajax/cart.php",
data: {variant: $(this).find('select').val()},
dataType: 'json',
success: function(data){
$('#cart_informer').html(data);
if(button.attr('added_text'))
button.val(button.attr('added_text'));
}
});
$(this).find('input[type="submit"]').effect("transfer", { to: $("#cart_informer") }, 500);
return false;
});

View File

@@ -0,0 +1,352 @@
/**
* Ajax Autocomplete for jQuery, version 1.1.3
* (c) 2010 Tomas Kirda
*
* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
* For details, see the web site: http://www.devbridge.com/projects/autocomplete/jquery/
*
* Last Review: 04/19/2010
*/
(function(d) {
function l(b, a, c) {
a = "(" + c.replace(m, "\\$1") + ")";
return b.replace(new RegExp(a, "gi"), "<strong>$1</strong>")
}
function i(b, a) {
this.el = d(b);
this.el.attr("autocomplete", "off");
this.suggestions = [];
this.data = [];
this.badQueries = [];
this.selectedIndex = -1;
this.currentValue = this.el.val();
this.intervalId = 0;
this.cachedResponse = [];
this.onChangeInterval = null;
this.ignoreValueChange = false;
this.serviceUrl = a.serviceUrl;
this.isLocal = false;
this.options = {
autoSubmit: false,
minChars: 1,
maxHeight: 300,
deferRequestBy: 0,
width: 'auto',
highlight: true,
params: {},
fnFormatResult: l,
delimiter: null,
zIndex: 9999
};
this.initialize();
this.setOptions(a)
}
var m = new RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\)", "g");
d.fn.autocomplete = function(b) {
return new i(this.get(0) || d("<input />"), b)
};
i.prototype = {
killerFn: null,
initialize: function() {
var b, a, c;
b = this;
a = Math.floor(Math.random() * 1048576).toString(16);
c = "Autocomplete_" + a;
this.killerFn = function(e) {
if (d(e.target).parents(".autocomplete").size() === 0) {
b.killSuggestions();
b.disableKillerFn()
}
};
if (!this.options.width) this.options.width = this.el.width();
this.mainContainerId = "AutocompleteContainter_" + a;
d('<div id="' + this.mainContainerId + '" style="position:absolute;z-index:9999;"><div class="autocomplete-w1"><div class="autocomplete" id="' + c + '" style="display:none; width:300px;"></div></div></div>').appendTo("body");
this.container = d("#" + c);
this.fixPosition();
window.opera ? this.el.keypress(function(e) {
b.onKeyPress(e)
}) : this.el.keydown(function(e) {
b.onKeyPress(e)
});
this.el.keyup(function(e) {
b.onKeyUp(e)
});
this.el.blur(function() {
b.enableKillerFn()
});
this.el.focus(function() {
b.fixPosition();
if (b.el.val() == '') b.onValueChange();
})
},
setOptions: function(b) {
var a = this.options;
d.extend(a, b);
if (a.lookup) {
this.isLocal = true;
if (d.isArray(a.lookup)) a.lookup = {
suggestions: a.lookup,
data: []
}
}
d("#" + this.mainContainerId).css({
zIndex: a.zIndex
});
this.container.css({
maxHeight: a.maxHeight + "px",
width: a.width
})
},
clearCache: function() {
this.cachedResponse = [];
this.badQueries = []
},
disable: function() {
this.disabled = true
},
enable: function() {
this.disabled = false
},
fixPosition: function() {
var b = this.el.offset();
d("#" + this.mainContainerId).css({
top: b.top + this.el.innerHeight() + "px",
left: b.left + "px"
})
},
enableKillerFn: function() {
d(document).bind("click", this.killerFn)
},
disableKillerFn: function() {
d(document).unbind("click", this.killerFn)
},
killSuggestions: function() {
var b = this;
this.stopKillSuggestions();
this.intervalId = window.setInterval(function() {
b.hide();
b.stopKillSuggestions()
}, 300)
},
stopKillSuggestions: function() {
window.clearInterval(this.intervalId)
},
onKeyPress: function(b) {
if (!(this.disabled || !this.enabled)) {
switch (b.keyCode) {
case 27:
this.el.val(this.currentValue);
this.hide();
break;
case 9:
case 13:
if (this.selectedIndex === -1) {
this.hide();
return
}
this.select(this.selectedIndex);
if (b.keyCode === 9) return;
break;
case 38:
this.moveUp();
break;
case 40:
this.moveDown();
break;
default:
return
}
b.stopImmediatePropagation();
b.preventDefault()
}
},
onKeyUp: function(b) {
if (!this.disabled) {
switch (b.keyCode) {
case 38:
case 40:
return
}
clearInterval(this.onChangeInterval);
if (this.currentValue !== this.el.val())
if (this.options.deferRequestBy > 0) {
var a = this;
this.onChangeInterval = setInterval(function() {
a.onValueChange()
}, this.options.deferRequestBy)
} else this.onValueChange()
}
},
onValueChange: function() {
clearInterval(this.onChangeInterval);
this.currentValue = this.el.val();
var b = this.getQuery(this.currentValue);
this.selectedIndex = -1;
if (this.ignoreValueChange) this.ignoreValueChange = false;
else b.length < this.options.minChars ? this.hide() : this.getSuggestions(b)
},
getQuery: function(b) {
var a;
a = this.options.delimiter;
if (!a) return d.trim(b);
b = b.split(a);
return d.trim(b[b.length - 1])
},
getSuggestionsLocal: function(b) {
var a, c, e, g, f;
c = this.options.lookup;
e = c.suggestions.length;
a = {
suggestions: [],
data: []
};
b = b.toLowerCase();
for (f = 0; f < e; f++) {
g = c.suggestions[f];
if (g.toLowerCase().indexOf(b) === 0) {
a.suggestions.push(g);
a.data.push(c.data[f])
}
}
return a
},
getSuggestions: function(b) {
var a, c;
if ((a = this.isLocal ? this.getSuggestionsLocal(b) : this.cachedResponse[b]) && d.isArray(a.suggestions)) {
this.suggestions = a.suggestions;
this.data = a.data;
this.suggest()
} else if (!this.isBadQuery(b)) {
c = this;
c.options.params.query = b;
d.get(this.serviceUrl, c.options.params, function(e) {
c.processResponse(e)
}, "text")
}
},
isBadQuery: function(b) {
for (var a = this.badQueries.length; a--;)
if (b.indexOf(this.badQueries[a]) === 0) return true;
return false
},
hide: function() {
this.enabled = false;
this.selectedIndex = -1;
this.container.hide()
},
suggest: function() {
if (this.suggestions.length === 0) this.hide();
else {
var b, a, c, e, g, f, j, k;
b = this;
a = this.suggestions.length;
e = this.options.fnFormatResult;
g = this.getQuery(this.currentValue);
j = function(h) {
return function() {
b.activate(h)
}
};
k = function(h) {
return function() {
b.select(h)
}
};
this.container.hide().empty();
for (f = 0; f < a; f++) {
c = this.suggestions[f];
c = d((b.selectedIndex === f ? '<div class="selected"' : "<div") + ' title="' + c + '">' + e(c, this.data[f], g) + "</div>");
c.mouseover(j(f));
c.click(k(f));
this.container.append(c)
}
this.enabled = true;
this.container.show()
}
},
processResponse: function(b) {
var a;
try {
a = eval("(" + b + ")")
} catch (c) {
return
}
if (!d.isArray(a.data)) a.data = [];
if (!this.options.noCache) {
this.cachedResponse[a.query] = a;
a.suggestions.length === 0 && this.badQueries.push(a.query)
}
if (a.query === this.getQuery(this.currentValue)) {
this.suggestions = a.suggestions;
this.data = a.data;
this.suggest()
}
},
activate: function(b) {
var a, c;
a = this.container.children();
this.selectedIndex !== -1 && a.length > this.selectedIndex && d(a.get(this.selectedIndex)).removeClass();
this.selectedIndex = b;
if (this.selectedIndex !== -1 && a.length > this.selectedIndex) {
c = a.get(this.selectedIndex);
d(c).addClass("selected")
}
return c
},
deactivate: function(b, a) {
b.className = "";
if (this.selectedIndex === a) this.selectedIndex = -1
},
select: function(b) {
var a;
if (a = this.suggestions[b]) {
this.el.val(a);
if (this.options.autoSubmit) {
a = this.el.parents("form");
a.length > 0 && a.get(0).submit()
}
this.ignoreValueChange = true;
this.hide();
this.onSelect(b)
}
},
moveUp: function() {
if (this.selectedIndex !== -1)
if (this.selectedIndex === 0) {
this.container.children().get(0).className = "";
this.selectedIndex = -1;
this.el.val(this.currentValue)
} else this.adjustScroll(this.selectedIndex - 1)
},
moveDown: function() {
this.selectedIndex !== this.suggestions.length - 1 && this.adjustScroll(this.selectedIndex + 1)
},
adjustScroll: function(b) {
var a, c, e;
a = this.activate(b).offsetTop;
c = this.container.scrollTop();
e = c + this.options.maxHeight - 25;
if (a < c) this.container.scrollTop(a);
else a > e && this.container.scrollTop(a - this.options.maxHeight + 25);
this.el.val(this.getValue(this.suggestions[b]))
},
onSelect: function(b) {
var a, c;
a = this.options.onSelect;
c = this.suggestions[b];
b = this.data[b];
this.el.val(this.getValue(c));
d.isFunction(a) && a(c, b, this.el)
},
getValue: function(b) {
var a, c;
a = this.options.delimiter;
if (!a) return b;
c = this.currentValue;
a = c.split(a);
if (a.length === 1) return b;
return c.substr(0, c.length - a[a.length - 1].length) + b
}
}
})(jQuery);

View File

@@ -0,0 +1,954 @@
/**
* Ajax Autocomplete for jQuery, version 1.2.14
* (c) 2014 Tomas Kirda
*
* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
*/
/*jslint browser: true, white: true, plusplus: true */
/*global define, window, document, jQuery, exports */
// Expose plugin as an AMD module if AMD loader is present:
(function (factory) {
'use strict';
if (typeof define === 'function' && define.amd) {
// AMD. Register as an anonymous module.
define(['jquery'], factory);
} else if (typeof exports === 'object' && typeof require === 'function') {
// Browserify
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
'use strict';
var
utils = (function () {
return {
escapeRegExChars: function (value) {
return value.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
},
createNode: function (containerClass) {
var div = document.createElement('div');
div.className = containerClass;
div.style.position = 'absolute';
div.style.display = 'none';
return div;
}
};
}()),
keys = {
ESC: 27,
TAB: 9,
RETURN: 13,
LEFT: 37,
UP: 38,
RIGHT: 39,
DOWN: 40
};
function Autocomplete(el, options) {
var noop = function () { },
that = this,
defaults = {
ajaxSettings: {},
autoSelectFirst: false,
appendTo: document.body,
serviceUrl: null,
lookup: null,
onSelect: null,
width: 'auto',
minChars: 1,
maxHeight: 300,
deferRequestBy: 0,
params: {},
formatResult: Autocomplete.formatResult,
delimiter: null,
zIndex: 9999,
type: 'GET',
noCache: false,
onSearchStart: noop,
onSearchComplete: noop,
onSearchError: noop,
containerClass: 'autocomplete-suggestions',
tabDisabled: false,
dataType: 'text',
currentRequest: null,
triggerSelectOnValidInput: true,
preventBadQueries: true,
lookupFilter: function (suggestion, originalQuery, queryLowerCase) {
return suggestion.value.toLowerCase().indexOf(queryLowerCase) !== -1;
},
paramName: 'query',
transformResult: function (response) {
return typeof response === 'string' ? $.parseJSON(response) : response;
},
showNoSuggestionNotice: false,
noSuggestionNotice: 'No results',
orientation: 'bottom',
forceFixPosition: false
};
// Shared variables:
that.element = el;
that.el = $(el);
that.suggestions = [];
that.badQueries = [];
that.selectedIndex = -1;
that.currentValue = that.element.value;
that.intervalId = 0;
that.cachedResponse = {};
that.onChangeInterval = null;
that.onChange = null;
that.isLocal = false;
that.suggestionsContainer = null;
that.noSuggestionsContainer = null;
that.options = $.extend({}, defaults, options);
that.classes = {
selected: 'autocomplete-selected',
suggestion: 'autocomplete-suggestion'
};
that.hint = null;
that.hintValue = '';
that.selection = null;
// Initialize and set options:
that.initialize();
that.setOptions(options);
}
Autocomplete.utils = utils;
$.Autocomplete = Autocomplete;
Autocomplete.formatResult = function (suggestion, currentValue) {
var pattern = '(' + utils.escapeRegExChars(currentValue) + ')';
return suggestion.value.replace(new RegExp(pattern, 'gi'), '<strong>$1<\/strong>');
};
Autocomplete.prototype = {
killerFn: null,
initialize: function () {
var that = this,
suggestionSelector = '.' + that.classes.suggestion,
selected = that.classes.selected,
options = that.options,
container;
// Remove autocomplete attribute to prevent native suggestions:
that.element.setAttribute('autocomplete', 'off');
that.killerFn = function (e) {
if ($(e.target).closest('.' + that.options.containerClass).length === 0) {
that.killSuggestions();
that.disableKillerFn();
}
};
// html() deals with many types: htmlString or Element or Array or jQuery
that.noSuggestionsContainer = $('<div class="autocomplete-no-suggestion"></div>')
.html(this.options.noSuggestionNotice).get(0);
that.suggestionsContainer = Autocomplete.utils.createNode(options.containerClass);
container = $(that.suggestionsContainer);
container.appendTo(options.appendTo);
// Only set width if it was provided:
if (options.width !== 'auto') {
container.width(options.width);
}
// Listen for mouse over event on suggestions list:
container.on('mouseover.autocomplete', suggestionSelector, function () {
that.activate($(this).data('index'));
});
// Deselect active element when mouse leaves suggestions container:
container.on('mouseout.autocomplete', function () {
that.selectedIndex = -1;
container.children('.' + selected).removeClass(selected);
});
// Listen for click event on suggestions list:
container.on('click.autocomplete', suggestionSelector, function () {
that.select($(this).data('index'));
});
that.fixPositionCapture = function () {
if (that.visible) {
that.fixPosition();
}
};
$(window).on('resize.autocomplete', that.fixPositionCapture);
that.el.on('keydown.autocomplete', function (e) { that.onKeyPress(e); });
that.el.on('keyup.autocomplete', function (e) { that.onKeyUp(e); });
that.el.on('blur.autocomplete', function () { that.onBlur(); });
that.el.on('focus.autocomplete', function () { that.onFocus(); });
that.el.on('change.autocomplete', function (e) { that.onKeyUp(e); });
},
onFocus: function () {
var that = this;
that.fixPosition();
if (that.options.minChars <= that.el.val().length) {
that.onValueChange();
}
},
onBlur: function () {
this.enableKillerFn();
},
setOptions: function (suppliedOptions) {
var that = this,
options = that.options;
$.extend(options, suppliedOptions);
that.isLocal = $.isArray(options.lookup);
if (that.isLocal) {
options.lookup = that.verifySuggestionsFormat(options.lookup);
}
options.orientation = that.validateOrientation(options.orientation, 'bottom');
// Adjust height, width and z-index:
$(that.suggestionsContainer).css({
'max-height': options.maxHeight + 'px',
'width': options.width + 'px',
'z-index': options.zIndex
});
},
clearCache: function () {
this.cachedResponse = {};
this.badQueries = [];
},
clear: function () {
this.clearCache();
this.currentValue = '';
this.suggestions = [];
},
disable: function () {
var that = this;
that.disabled = true;
clearInterval(that.onChangeInterval);
if (that.currentRequest) {
that.currentRequest.abort();
}
},
enable: function () {
this.disabled = false;
},
fixPosition: function () {
// Use only when container has already its content
var that = this,
$container = $(that.suggestionsContainer),
containerParent = $container.parent().get(0);
// Fix position automatically when appended to body.
// In other cases force parameter must be given.
if (containerParent !== document.body && !that.options.forceFixPosition)
return;
// Choose orientation
var orientation = that.options.orientation,
containerHeight = $container.outerHeight(),
height = that.el.outerHeight(),
offset = that.el.offset(),
styles = { 'top': offset.top, 'left': offset.left };
if (orientation == 'auto') {
var viewPortHeight = $(window).height(),
scrollTop = $(window).scrollTop(),
topOverflow = -scrollTop + offset.top - containerHeight,
bottomOverflow = scrollTop + viewPortHeight - (offset.top + height + containerHeight);
orientation = (Math.max(topOverflow, bottomOverflow) === topOverflow)
? 'top'
: 'bottom';
}
if (orientation === 'top') {
styles.top += -containerHeight;
} else {
styles.top += height;
}
// If container is not positioned to body,
// correct its position using offset parent offset
if(containerParent !== document.body) {
var opacity = $container.css('opacity'),
parentOffsetDiff;
if (!that.visible){
$container.css('opacity', 0).show();
}
parentOffsetDiff = $container.offsetParent().offset();
styles.top -= parentOffsetDiff.top;
styles.left -= parentOffsetDiff.left;
if (!that.visible){
$container.css('opacity', opacity).hide();
}
}
// -2px to account for suggestions border.
if (that.options.width === 'auto') {
styles.width = (that.el.outerWidth() - 2) + 'px';
}
$container.css(styles);
},
enableKillerFn: function () {
var that = this;
$(document).on('click.autocomplete', that.killerFn);
},
disableKillerFn: function () {
var that = this;
$(document).off('click.autocomplete', that.killerFn);
},
killSuggestions: function () {
var that = this;
that.stopKillSuggestions();
that.intervalId = window.setInterval(function () {
that.hide();
that.stopKillSuggestions();
}, 50);
},
stopKillSuggestions: function () {
window.clearInterval(this.intervalId);
},
isCursorAtEnd: function () {
var that = this,
valLength = that.el.val().length,
selectionStart = that.element.selectionStart,
range;
if (typeof selectionStart === 'number') {
return selectionStart === valLength;
}
if (document.selection) {
range = document.selection.createRange();
range.moveStart('character', -valLength);
return valLength === range.text.length;
}
return true;
},
onKeyPress: function (e) {
var that = this;
// If suggestions are hidden and user presses arrow down, display suggestions:
if (!that.disabled && !that.visible && e.which === keys.DOWN && that.currentValue) {
that.suggest();
return;
}
if (that.disabled || !that.visible) {
return;
}
switch (e.which) {
case keys.ESC:
that.el.val(that.currentValue);
that.hide();
break;
case keys.RIGHT:
if (that.hint && that.options.onHint && that.isCursorAtEnd()) {
that.selectHint();
break;
}
return;
case keys.TAB:
if (that.hint && that.options.onHint) {
that.selectHint();
return;
}
// Fall through to RETURN
case keys.RETURN:
if (that.selectedIndex === -1) {
that.hide();
return;
}
that.select(that.selectedIndex);
if (e.which === keys.TAB && that.options.tabDisabled === false) {
return;
}
break;
case keys.UP:
that.moveUp();
break;
case keys.DOWN:
that.moveDown();
break;
default:
return;
}
// Cancel event if function did not return:
e.stopImmediatePropagation();
e.preventDefault();
},
onKeyUp: function (e) {
var that = this;
if (that.disabled) {
return;
}
switch (e.which) {
case keys.UP:
case keys.DOWN:
return;
}
clearInterval(that.onChangeInterval);
if (that.currentValue !== that.el.val()) {
that.findBestHint();
if (that.options.deferRequestBy > 0) {
// Defer lookup in case when value changes very quickly:
that.onChangeInterval = setInterval(function () {
that.onValueChange();
}, that.options.deferRequestBy);
} else {
that.onValueChange();
}
}
},
onValueChange: function () {
var that = this,
options = that.options,
value = that.el.val(),
query = that.getQuery(value),
index;
if (that.selection && that.currentValue !== query) {
that.selection = null;
(options.onInvalidateSelection || $.noop).call(that.element);
}
clearInterval(that.onChangeInterval);
that.currentValue = value;
that.selectedIndex = -1;
// Check existing suggestion for the match before proceeding:
if (options.triggerSelectOnValidInput) {
index = that.findSuggestionIndex(query);
if (index !== -1) {
that.select(index);
return;
}
}
if (query.length < options.minChars) {
that.hide();
} else {
that.getSuggestions(query);
}
},
findSuggestionIndex: function (query) {
var that = this,
index = -1,
queryLowerCase = query.toLowerCase();
$.each(that.suggestions, function (i, suggestion) {
if (suggestion.value.toLowerCase() === queryLowerCase) {
index = i;
return false;
}
});
return index;
},
getQuery: function (value) {
var delimiter = this.options.delimiter,
parts;
if (!delimiter) {
return value;
}
parts = value.split(delimiter);
return $.trim(parts[parts.length - 1]);
},
getSuggestionsLocal: function (query) {
var that = this,
options = that.options,
queryLowerCase = query.toLowerCase(),
filter = options.lookupFilter,
limit = parseInt(options.lookupLimit, 10),
data;
data = {
suggestions: $.grep(options.lookup, function (suggestion) {
return filter(suggestion, query, queryLowerCase);
})
};
if (limit && data.suggestions.length > limit) {
data.suggestions = data.suggestions.slice(0, limit);
}
return data;
},
getSuggestions: function (q) {
var response,
that = this,
options = that.options,
serviceUrl = options.serviceUrl,
params,
cacheKey,
ajaxSettings;
options.params[options.paramName] = q;
params = options.ignoreParams ? null : options.params;
if (options.onSearchStart.call(that.element, options.params) === false) {
return;
}
if (that.isLocal) {
response = that.getSuggestionsLocal(q);
} else {
if ($.isFunction(serviceUrl)) {
serviceUrl = serviceUrl.call(that.element, q);
}
cacheKey = serviceUrl + '?' + $.param(params || {});
response = that.cachedResponse[cacheKey];
}
if (response && $.isArray(response.suggestions)) {
that.suggestions = response.suggestions;
that.suggest();
options.onSearchComplete.call(that.element, q, response.suggestions);
} else if (!that.isBadQuery(q)) {
if (that.currentRequest) {
that.currentRequest.abort();
}
ajaxSettings = {
url: serviceUrl,
data: params,
type: options.type,
dataType: options.dataType
};
$.extend(ajaxSettings, options.ajaxSettings);
that.currentRequest = $.ajax(ajaxSettings).done(function (data) {
var result;
that.currentRequest = null;
result = options.transformResult(data);
that.processResponse(result, q, cacheKey);
options.onSearchComplete.call(that.element, q, result.suggestions);
}).fail(function (jqXHR, textStatus, errorThrown) {
options.onSearchError.call(that.element, q, jqXHR, textStatus, errorThrown);
});
} else {
options.onSearchComplete.call(that.element, q, []);
}
},
isBadQuery: function (q) {
if (!this.options.preventBadQueries){
return false;
}
var badQueries = this.badQueries,
i = badQueries.length;
while (i--) {
if (q.indexOf(badQueries[i]) === 0) {
return true;
}
}
return false;
},
hide: function () {
var that = this;
that.visible = false;
that.selectedIndex = -1;
clearInterval(that.onChangeInterval);
$(that.suggestionsContainer).hide();
that.signalHint(null);
},
suggest: function () {
if (this.suggestions.length === 0) {
this.options.showNoSuggestionNotice ? this.noSuggestions() : this.hide();
return;
}
var that = this,
options = that.options,
groupBy = options.groupBy,
formatResult = options.formatResult,
value = that.getQuery(that.currentValue),
className = that.classes.suggestion,
classSelected = that.classes.selected,
container = $(that.suggestionsContainer),
noSuggestionsContainer = $(that.noSuggestionsContainer),
beforeRender = options.beforeRender,
html = '',
category,
formatGroup = function (suggestion, index) {
var currentCategory = suggestion.data[groupBy];
if (category === currentCategory){
return '';
}
category = currentCategory;
return '<div class="autocomplete-group"><strong>' + category + '</strong></div>';
},
index;
if (options.triggerSelectOnValidInput) {
index = that.findSuggestionIndex(value);
if (index !== -1) {
that.select(index);
return;
}
}
// Build suggestions inner HTML:
$.each(that.suggestions, function (i, suggestion) {
if (groupBy){
html += formatGroup(suggestion, value, i);
}
html += '<div class="' + className + '" data-index="' + i + '">' + formatResult(suggestion, value) + '</div>';
});
this.adjustContainerWidth();
noSuggestionsContainer.detach();
container.html(html);
// Select first value by default:
if (options.autoSelectFirst) {
that.selectedIndex = 0;
container.children().first().addClass(classSelected);
}
if ($.isFunction(beforeRender)) {
beforeRender.call(that.element, container);
}
that.fixPosition();
container.show();
that.visible = true;
that.findBestHint();
},
noSuggestions: function() {
var that = this,
container = $(that.suggestionsContainer),
noSuggestionsContainer = $(that.noSuggestionsContainer);
this.adjustContainerWidth();
// Some explicit steps. Be careful here as it easy to get
// noSuggestionsContainer removed from DOM if not detached properly.
noSuggestionsContainer.detach();
container.empty(); // clean suggestions if any
container.append(noSuggestionsContainer);
that.fixPosition();
container.show();
that.visible = true;
},
adjustContainerWidth: function() {
var that = this,
options = that.options,
width,
container = $(that.suggestionsContainer);
// If width is auto, adjust width before displaying suggestions,
// because if instance was created before input had width, it will be zero.
// Also it adjusts if input width has changed.
// -2px to account for suggestions border.
if (options.width === 'auto') {
width = that.el.outerWidth() - 2;
container.width(width > 0 ? width : 300);
}
},
findBestHint: function () {
var that = this,
value = that.el.val().toLowerCase(),
bestMatch = null;
if (!value) {
return;
}
$.each(that.suggestions, function (i, suggestion) {
var foundMatch = suggestion.value.toLowerCase().indexOf(value) === 0;
if (foundMatch) {
bestMatch = suggestion;
}
return !foundMatch;
});
that.signalHint(bestMatch);
},
signalHint: function (suggestion) {
var hintValue = '',
that = this;
if (suggestion) {
hintValue = that.currentValue + suggestion.value.substr(that.currentValue.length);
}
if (that.hintValue !== hintValue) {
that.hintValue = hintValue;
that.hint = suggestion;
(this.options.onHint || $.noop)(hintValue);
}
},
verifySuggestionsFormat: function (suggestions) {
// If suggestions is string array, convert them to supported format:
if (suggestions.length && typeof suggestions[0] === 'string') {
return $.map(suggestions, function (value) {
return { value: value, data: null };
});
}
return suggestions;
},
validateOrientation: function(orientation, fallback) {
orientation = $.trim(orientation || '').toLowerCase();
if($.inArray(orientation, ['auto', 'bottom', 'top']) === -1){
orientation = fallback;
}
return orientation;
},
processResponse: function (result, originalQuery, cacheKey) {
var that = this,
options = that.options;
result.suggestions = that.verifySuggestionsFormat(result.suggestions);
// Cache results if cache is not disabled:
if (!options.noCache) {
that.cachedResponse[cacheKey] = result;
if (options.preventBadQueries && result.suggestions.length === 0) {
that.badQueries.push(originalQuery);
}
}
// Return if originalQuery is not matching current query:
if (originalQuery !== that.getQuery(that.currentValue)) {
return;
}
that.suggestions = result.suggestions;
that.suggest();
},
activate: function (index) {
var that = this,
activeItem,
selected = that.classes.selected,
container = $(that.suggestionsContainer),
children = container.find('.' + that.classes.suggestion);
container.find('.' + selected).removeClass(selected);
that.selectedIndex = index;
if (that.selectedIndex !== -1 && children.length > that.selectedIndex) {
activeItem = children.get(that.selectedIndex);
$(activeItem).addClass(selected);
return activeItem;
}
return null;
},
selectHint: function () {
var that = this,
i = $.inArray(that.hint, that.suggestions);
that.select(i);
},
select: function (i) {
var that = this;
that.hide();
that.onSelect(i);
},
moveUp: function () {
var that = this;
if (that.selectedIndex === -1) {
return;
}
if (that.selectedIndex === 0) {
$(that.suggestionsContainer).children().first().removeClass(that.classes.selected);
that.selectedIndex = -1;
that.el.val(that.currentValue);
that.findBestHint();
return;
}
that.adjustScroll(that.selectedIndex - 1);
},
moveDown: function () {
var that = this;
if (that.selectedIndex === (that.suggestions.length - 1)) {
return;
}
that.adjustScroll(that.selectedIndex + 1);
},
adjustScroll: function (index) {
var that = this,
activeItem = that.activate(index),
offsetTop,
upperBound,
lowerBound,
heightDelta = 25;
if (!activeItem) {
return;
}
offsetTop = activeItem.offsetTop;
upperBound = $(that.suggestionsContainer).scrollTop();
lowerBound = upperBound + that.options.maxHeight - heightDelta;
if (offsetTop < upperBound) {
$(that.suggestionsContainer).scrollTop(offsetTop);
} else if (offsetTop > lowerBound) {
$(that.suggestionsContainer).scrollTop(offsetTop - that.options.maxHeight + heightDelta);
}
that.el.val(that.getValue(that.suggestions[index].value));
that.signalHint(null);
},
onSelect: function (index) {
var that = this,
onSelectCallback = that.options.onSelect,
suggestion = that.suggestions[index];
that.currentValue = that.getValue(suggestion.value);
if (that.currentValue !== that.el.val()) {
that.el.val(that.currentValue);
}
that.signalHint(null);
that.suggestions = [];
that.selection = suggestion;
if ($.isFunction(onSelectCallback)) {
onSelectCallback.call(that.element, suggestion);
}
},
getValue: function (value) {
var that = this,
delimiter = that.options.delimiter,
currentValue,
parts;
if (!delimiter) {
return value;
}
currentValue = that.currentValue;
parts = currentValue.split(delimiter);
if (parts.length === 1) {
return value;
}
return currentValue.substr(0, currentValue.length - parts[parts.length - 1].length) + value;
},
dispose: function () {
var that = this;
that.el.off('.autocomplete').removeData('autocomplete');
that.disableKillerFn();
$(window).off('resize.autocomplete', that.fixPositionCapture);
$(that.suggestionsContainer).remove();
}
};
// Create chainable jQuery plugin:
$.fn.autocomplete = $.fn.devbridgeAutocomplete = function (options, args) {
var dataKey = 'autocomplete';
// If function invoked without argument return
// instance of the first matched element:
if (arguments.length === 0) {
return this.first().data(dataKey);
}
return this.each(function () {
var inputElement = $(this),
instance = inputElement.data(dataKey);
if (typeof options === 'string') {
if (instance && typeof instance[options] === 'function') {
instance[options](args);
}
} else {
// If instance already exists, destroy it:
if (instance && instance.dispose) {
instance.dispose();
}
instance = new Autocomplete(this, options);
inputElement.data(dataKey, instance);
}
});
};
}));

File diff suppressed because one or more lines are too long

BIN
js/autocomplete/shadow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,6 @@
.autocomplete-w1 { background:url(img/shadow.png) no-repeat bottom right; position:absolute; top:0px; left:0px; margin:8px 0 0 6px; /* IE6 fix: */ _background:none; _margin:0; }
.autocomplete { border:1px solid #999; background:#FFF; cursor:default; text-align:left; max-height:350px; overflow:auto; margin:-6px 6px 6px -6px; /* IE6 specific: */ _height:350px; _margin:0; _overflow-x:hidden; }
.autocomplete .selected { background:#F0F0F0; }
.autocomplete div { padding:2px 5px; white-space:nowrap; }
.autocomplete strong { font-weight:normal; color:#3399FF; }

63
js/baloon/css/baloon.css Normal file
View File

@@ -0,0 +1,63 @@
#baloon {
width: 187px;
top: 0px;
left: 0px;
padding: 0;
margin: 0;
display: none;
position: absolute;
z-index: 64999;
filter: Alpha(Opacity='75');
-moz-opacity: 0.75;
opacity: 0.8;
}
#baloonHeader {
width: 187px;
height: 19px;
padding: 0;
margin: 0;
font-size: 0;
line-height: 0;
background-repeat: no-repeat;
display: block;
}
.baloonHeaderDirect {
background-image: url(../i/baloon-header.gif);
}
.baloonHeaderFlip {
background-image: url(../i/baloon-header-flip.gif);
}
#baloonFooter {
width: 187px;
height: 3px;
padding: 0;
margin: 0;
font-size: 0;
line-height: 0;
background-image: url(../i/baloon-footer.gif);
background-repeat: no-repeat;
display: block;
}
#baloonBody {
padding: 10px;
color:#000;
background-color: #D0D0D0;
width: auto;
margin: 0;
font: normal normal 10px/14px Verdana, Arial, serif;
line-height: 140%;
background-image: url(../i/baloon-body.gif);
background-repeat: repeat-y;
display: block;
}

BIN
js/baloon/i/baloon-body.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 B

156
js/baloon/index.html Normal file
View File

@@ -0,0 +1,156 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<TITLE>Validate JS</TITLE>
<SCRIPT src="js/default.js" language="JavaScript" type="text/javascript"></SCRIPT>
<SCRIPT src="js/validate.js" language="JavaScript" type="text/javascript"></SCRIPT>
<SCRIPT src="js/baloon.js" language="JavaScript" type="text/javascript"></SCRIPT>
<LINK href="css/default.css" rel="stylesheet" type="text/css" />
<LINK href="css/baloon.css" rel="stylesheet" type="text/css" />
</HEAD>
<BODY>
<TABLE width="100%" border="0" cellpadding="10" cellspacing="0">
<FORM action="index.html" method="GET" enctype="multipart/form-data">
<TR valign="top">
<TD width="50%">
Текст сообщения об ошибке будет браться из атрибута <STRONG>notice</STRONG>, если тот есть. Если у формы есть атрибут <STRONG>onsubmit</STRONG>, то стандартный скрипт валидации подцепляться не будет.
Допустимые значения текстовых полей (<STRONG>text</STRONG>, <STRONG>password</STRONG> или <STRONG>textarea</STRONG>) определяются атрибутом <STRONG>pattern</STRONG>, значение которого в общем случае
представляет из себя регулярное выражение, соотвествующее корректному значению поля. Ограничители писать не надо.
Например значение этого поля должно начинаться с 'a', заканчиваться на 'c', и содержать внутри хотя бы один 'b' (<STRONG>^ab+c$</STRONG>).
<BR /><BR /> Кстати, в старых Opera&#146;ах (&lt; 7) регулярные выражения вроде бы отсутвуют как класс.
</TD>
<TD width="50%">
<INPUT type="text" name="count" pattern="^aq+c$" notice="skiri"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен number, то в поле ожидается неотрицательное целое число
</TD>
<TD>
<INPUT type="text" name="number" pattern="number" notice="В этом поле должно быть целое число"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен url, то в поле ожидается URL. К сожалению, в регулярных выражениях я не очень силен,
поэтому шаблон иногда сбоит. Так что перед использованием протестите
</TD>
<TD>
<INPUT type="text" name="url" pattern="url" notice="В этом поле должен быть URL"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен string, то поле просто не должно быть пустым
</TD>
<TD>
<INPUT type="text" name="string" pattern="string" notice="В этом поле хоть что-то надо вписать"/>
</TD>
</TR>
<TR valign="top">
<TD>
Если атрибут <STRONG>pattern</STRONG> равен email, то в поле ожидается email адрес
</TD>
<TD>
<INPUT type="text" name="email" pattern="email" notice="В этом поле должен быть email адрес"/>
</TD>
</TR>
<TR valign="top">
<TD>
Ошибка возникает при выборе OPTION&#146;а с атрибутом <STRONG>notselected</STRONG>.
Элемент с атрибутом <STRONG>select-multiple</STRONG> я еще не придумал как проверять (пока не было еще в этом нужды)
</TD>
<TD>
<SELECT name="choise" notice="Надо выбрать 1 элемент, причем не первый">
<OPTION value="1" notselected="notselected">Одын</OPTION>
<OPTION value="2">Две</OPTION>
<OPTION value="3">Три</OPTION>
<OPTION value="4">Четыре</OPTION>
</SELECT>
</TD>
</TR>
<TR valign="top">
<TD>
У любого из checkbox&#146;ов можно указать атрибуты <STRONG>min</STRONG>, <STRONG>max</STRONG> и
<STRONG>notice</STRONG>
</TD>
<TD>
<FIELDSET>
<LEGEND>Группа checkbox&#146;ов с одинаковым именем</LEGEND>
<INPUT class="radio" type="checkbox" name="rand" min="1" max="2" notice="Надо выбрать по краней мере 1 элемент, но не больше 2х"/>
<INPUT class="radio" type="checkbox" name="rand"/>
<INPUT class="radio" type="checkbox" name="rand"/>
<INPUT class="radio" type="checkbox" name="rand"/>
<INPUT class="radio" type="checkbox" name="rand"/>
</FIELDSET>
</TD>
</TR>
<TR valign="top">
<TD>
<STRONG>TEXTAREA</STRONG> проверяется так же, как и <STRONG>INPUT[@type = 'text']</STRONG>
</TD>
<TD>
<TEXTAREA name="text" pattern="string" notice="Сюда надо просто что то ввести"></TEXTAREA>
</TD>
</TR>
<TR valign="top">
<TD>
У любого из radiobutton&#146;ов можно указать атрибуты <STRONG>min</STRONG>, <STRONG>max</STRONG> и <STRONG>notice</STRONG>.
<BR>Причем, так как это radiobutton, а не checkbox, то <STRONG>min</STRONG> = <STRONG>max</STRONG> = 1
</TD>
<TD>
<FIELDSET>
<LEGEND>Группа radiobutton&#146;ов с одинаковым именем</LEGEND>
<INPUT class="radio" type="radio" name="mask"/>
<INPUT class="radio" type="radio" name="mask" min="1" max="1" notice="Надо выбрать какой то 1 элемент"/>
<INPUT class="radio" type="radio" name="mask"/>
<INPUT class="radio" type="radio" name="mask"/>
</FIELDSET>
</TD>
</TR>
<TR valign="top">
<TD>
Элемент типа <STRONG>file</STRONG> я не придумал как проверять. Да и проверять его редко когда надо, разве что при закачке картинок.
Но в их случае я пользуюсь превьюшками, а имя файла и расширение как правило интереса совсем не представляют
</TD>
<TD>
<INPUT type="file" name="photo"/>
</TD>
</TR>
<TR valign="top">
<TD>
Значения полей типа <STRONG>image</STRONG>, <STRONG>button</STRONG>, <STRONG>submit</STRONG>,
<STRONG>reset</STRONG> и <STRONG>hidden</STRONG> никак не проверяются
</TD>
<TD>
<INPUT type="submit" value="submit"/>
</TD>
</TR>
</FORM>
</TABLE>
</BODY>
</HTML>

228
js/baloon/js/baloon.js Normal file
View File

@@ -0,0 +1,228 @@
// (C) Netlogic, 2003
function CreateBaloon() {
baloon = document.createElement('DIV');
baloon.setAttribute('id', 'baloon');
baloonHeader = document.createElement('DIV');
baloonHeader.setAttribute('id', 'baloonHeader');
baloonHeader.setAttribute('class', 'direct');
baloonBody = document.createElement('DIV');
baloonBody.setAttribute('id', 'baloonBody');
baloonFooter = document.createElement('DIV');
baloonFooter.setAttribute('id', 'baloonFooter');
baloonBody.innerText = 'baloon';
baloon.appendChild(baloonHeader);
baloon.appendChild(baloonBody);
baloon.appendChild(baloonFooter);
baloon.onmouseover = function(e) { this.style.filter = "Alpha(Opacity='100')"; this.style.cursor = 'pointer'; this.style.MozOpacity = '1';}
baloon.onmouseout = function(e) { this.style.filter = "Alpha(Opacity='75')"; this.style.cursor = 'auto'; this.style.MozOpacity = '0.75'; }
baloon.onselectstart = function(e) { return false; }
baloon.onclick = function(e) { this.style.display = 'none'; }
document.body.appendChild(baloon);
window.onresize = function(e) { document.getElementById('baloon').style.display = 'none'; }
}
function ShowBaloon(i) {
baloon = document.getElementById('baloon');
document.getElementById('baloonBody').innerHTML = i.getAttribute('data-notice') && i.getAttribute('data-notice').length ? i.getAttribute('data-notice') : 'ERROR';
baloon.style.display = 'block';
var xleft=0;
var xtop=0;
o = i;
do {
xleft += o.offsetLeft;
xtop += o.offsetTop;
} while (o=o.offsetParent);
xwidth = i.offsetWidth ? i.offsetWidth : i.style.pixelWidth;
xheight = i.offsetHeight ? i.offsetHeight : i.style.pixelHeight;
bwidth = baloon.offsetWidth ? baloon.offsetWidth : baloon.style.pixelWidth;
w = window;
xbody = document.compatMode=='CSS1Compat' ? w.document.documentElement : w.document.body;
dwidth = xbody.clientWidth ? xbody.clientWidth : w.innerWidth;
bwidth = baloon.offsetWidth ? baloon.offsetWidth : baloon.style.pixelWidth;
flip = !(xwidth - 10 + xleft + bwidth < dwidth);
baloon.style.top = xheight - 10 + xtop + 'px';
baloon.style.left = (xleft + xwidth - (flip ? bwidth : 0) - 25) + 'px';
document.getElementById('baloonHeader').className = flip ? 'baloonHeaderFlip' : 'baloonHeaderDirect';
i.focus();
return false;
}
// (C) Netlogic, 2003
function ValidateForms() {
for (i = 0; i < document.forms.length; i++) {
if(document.forms[i].onsubmit) continue;
document.forms[i].onsubmit = function(e) {
var form = e ? e.target : window.event.srcElement;
for(var i=0; i<form.elements.length; i++) {
var value = form.elements[i].value;
switch(form.elements[i].type) {
case 'text':
case 'password':
case 'textarea':
pattern = form.elements[i].getAttribute('data-format');
if(pattern) {
switch(pattern) {
case 'string':
if(!value.length) {
return ValidateNotice(form.elements[i]);
}
break;
case 'number':
if(!isNumeric(value)) {
return ValidateNotice(form.elements[i]);
}
break;
case 'url':
if(!isUrl(value)) {
return ValidateNotice(form.elements[i]);
}
break;
case 'email':
if(!isEmail(value)) {
return ValidateNotice(form.elements[i]);
}
break;
default:
/*if(!isPattern(pattern, value)) {
return ValidateNotice(form.elements[i]);
}*/
break;
}
}
break;
case 'radio':
case 'checkbox':
min = form.elements[i].getAttribute('min') ? form.elements[i].getAttribute('min') : 0;
max = form.elements[i].getAttribute('max') ? form.elements[i].getAttribute('max') : document.getElementsByName(form.elements[i].getAttribute('name')).length;
if(min || max) {
var items = document.getElementsByName(form.elements[i].getAttribute('name'));
var count = 0;
for(var l=0; l<items.length; l++){
if(items[l].checked) {
count++;
}
}
if(count < min || count > max) {
return ValidateNotice(form.elements[i]);
}
}
break;
case 'select-one':
case 'select-multiple':
selected = form.elements[i].options[form.elements[i].selectedIndex];
if(selected && selected.getAttribute('notselected')) {
return ValidateNotice(form.elements[i]);
}
break;
break;
case 'file':
break;
case 'image':
case 'button':
case 'submit':
case 'reset':
break;
default:
break;
}
}
return (typeof eCommerceSubmit == 'function') ? eCommerceSubmit() : true;
return true;
}
}
}
function isUrl(str) {
return isPattern("^https?:\\/\\/(?:[a-z0-9_-]{1,32}(?::[a-z0-9_-]{1,32})?@)?(?:(?:[a-z0-9-]{1,128}\\.)+(?:com|net|org|mil|edu|arpa|gov|biz|info|aero|inc|name|[a-z]{2})|(?!0)(?:(?!0[^.]|255)[0-9]{1,3}\\.){3}(?!0|255)[0-9]{1,3})(?:\\/[a-z0-9.,_@%&?+=\\~\\/-]*)?(?:#[^ '\"&<>]*)?$", str.toLowerCase());
}
function isNumeric(str) {
return isPattern("^[0-9]+$", str);
}
function isInteger(str) {
return isNumeric(str);
}
function isFloat(str) {
return isPattern("^[1-9]?[0-9]+(\\.[0-9]+)?$", str);
}
function isEmail(str) {
return isPattern("^([a-z0-9_-]+)(\\.[a-z0-9_-]+)*@((([a-z0-9-]+\\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2}))|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))$", str.toLowerCase());
}
function isPattern(pattern, str) {
if(str.length && pattern.length) {
var re = new RegExp(pattern, "g");
return re.test(str);
}
return false;
}
function ValidateNotice(input) {
ShowBaloon(input);
return false;
}
function init_balloon()
{
return;
ValidateForms();
CreateBaloon();
}
if (window.attachEvent) {
window.attachEvent("onload", init_balloon);
} else if (window.addEventListener) {
window.addEventListener("DOMContentLoaded", init_balloon, false);
} else {
document.addEventListener("DOMContentLoaded", init_balloon, false);
}

26
js/ctrlnavigate.js Normal file
View File

@@ -0,0 +1,26 @@
document.onkeydown = NavigateThrough;
function NavigateThrough (event)
{
if (!document.getElementsByClassName) return;
if (window.event) event = window.event;
if (event.ctrlKey)
{
var link = null;
var href = null;
switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
{
case 0x25:
link = document.getElementsByClassName('prev_page_link')[0];
break;
case 0x27:
link = document.getElementsByClassName('next_page_link')[0];
break;
}
if (link && link.href) document.location = link.href;
if (href) document.location = href;
}
}

BIN
js/fancybox/blank.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 B

BIN
js/fancybox/fancy_close.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 347 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 340 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 503 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 506 B

BIN
js/fancybox/fancybox-x.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

BIN
js/fancybox/fancybox-y.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 176 B

BIN
js/fancybox/fancybox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@@ -0,0 +1,72 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('h.i[\'1a\']=h.i[\'z\'];h.O(h.i,{y:\'D\',z:9(x,t,b,c,d){6 h.i[h.i.y](x,t,b,c,d)},17:9(x,t,b,c,d){6 c*(t/=d)*t+b},D:9(x,t,b,c,d){6-c*(t/=d)*(t-2)+b},13:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t+b;6-c/2*((--t)*(t-2)-1)+b},X:9(x,t,b,c,d){6 c*(t/=d)*t*t+b},U:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t+1)+b},R:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t+b;6 c/2*((t-=2)*t*t+2)+b},N:9(x,t,b,c,d){6 c*(t/=d)*t*t*t+b},M:9(x,t,b,c,d){6-c*((t=t/d-1)*t*t*t-1)+b},L:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t+b;6-c/2*((t-=2)*t*t*t-2)+b},K:9(x,t,b,c,d){6 c*(t/=d)*t*t*t*t+b},J:9(x,t,b,c,d){6 c*((t=t/d-1)*t*t*t*t+1)+b},I:9(x,t,b,c,d){e((t/=d/2)<1)6 c/2*t*t*t*t*t+b;6 c/2*((t-=2)*t*t*t*t+2)+b},G:9(x,t,b,c,d){6-c*8.C(t/d*(8.g/2))+c+b},15:9(x,t,b,c,d){6 c*8.n(t/d*(8.g/2))+b},12:9(x,t,b,c,d){6-c/2*(8.C(8.g*t/d)-1)+b},Z:9(x,t,b,c,d){6(t==0)?b:c*8.j(2,10*(t/d-1))+b},Y:9(x,t,b,c,d){6(t==d)?b+c:c*(-8.j(2,-10*t/d)+1)+b},W:9(x,t,b,c,d){e(t==0)6 b;e(t==d)6 b+c;e((t/=d/2)<1)6 c/2*8.j(2,10*(t-1))+b;6 c/2*(-8.j(2,-10*--t)+2)+b},V:9(x,t,b,c,d){6-c*(8.o(1-(t/=d)*t)-1)+b},S:9(x,t,b,c,d){6 c*8.o(1-(t=t/d-1)*t)+b},Q:9(x,t,b,c,d){e((t/=d/2)<1)6-c/2*(8.o(1-t*t)-1)+b;6 c/2*(8.o(1-(t-=2)*t)+1)+b},P:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6-(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b},H:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d)==1)6 b+c;e(!p)p=d*.3;e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);6 a*8.j(2,-10*t)*8.n((t*d-s)*(2*8.g)/p)+c+b},T:9(x,t,b,c,d){f s=1.l;f p=0;f a=c;e(t==0)6 b;e((t/=d/2)==2)6 b+c;e(!p)p=d*(.3*1.5);e(a<8.w(c)){a=c;f s=p/4}m f s=p/(2*8.g)*8.r(c/a);e(t<1)6-.5*(a*8.j(2,10*(t-=1))*8.n((t*d-s)*(2*8.g)/p))+b;6 a*8.j(2,-10*(t-=1))*8.n((t*d-s)*(2*8.g)/p)*.5+c+b},F:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*(t/=d)*t*((s+1)*t-s)+b},E:9(x,t,b,c,d,s){e(s==u)s=1.l;6 c*((t=t/d-1)*t*((s+1)*t+s)+1)+b},16:9(x,t,b,c,d,s){e(s==u)s=1.l;e((t/=d/2)<1)6 c/2*(t*t*(((s*=(1.B))+1)*t-s))+b;6 c/2*((t-=2)*t*(((s*=(1.B))+1)*t+s)+2)+b},A:9(x,t,b,c,d){6 c-h.i.v(x,d-t,0,c,d)+b},v:9(x,t,b,c,d){e((t/=d)<(1/2.k)){6 c*(7.q*t*t)+b}m e(t<(2/2.k)){6 c*(7.q*(t-=(1.5/2.k))*t+.k)+b}m e(t<(2.5/2.k)){6 c*(7.q*(t-=(2.14/2.k))*t+.11)+b}m{6 c*(7.q*(t-=(2.18/2.k))*t+.19)+b}},1b:9(x,t,b,c,d){e(t<d/2)6 h.i.A(x,t*2,0,c,d)*.5+b;6 h.i.v(x,t*2-d,0,c,d)*.5+c*.5+b}});',62,74,'||||||return||Math|function|||||if|var|PI|jQuery|easing|pow|75|70158|else|sin|sqrt||5625|asin|||undefined|easeOutBounce|abs||def|swing|easeInBounce|525|cos|easeOutQuad|easeOutBack|easeInBack|easeInSine|easeOutElastic|easeInOutQuint|easeOutQuint|easeInQuint|easeInOutQuart|easeOutQuart|easeInQuart|extend|easeInElastic|easeInOutCirc|easeInOutCubic|easeOutCirc|easeInOutElastic|easeOutCubic|easeInCirc|easeInOutExpo|easeInCubic|easeOutExpo|easeInExpo||9375|easeInOutSine|easeInOutQuad|25|easeOutSine|easeInOutBack|easeInQuad|625|984375|jswing|easeInOutBounce'.split('|'),0,{}))
/*
*
* TERMS OF USE - EASING EQUATIONS
*
* Open source under the BSD License.
*
* Copyright © 2001 Robert Penner
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

View File

@@ -0,0 +1,359 @@
/*
* FancyBox - jQuery Plugin
* Simple and fancy lightbox alternative
*
* Examples and documentation at: http://fancybox.net
*
* Copyright (c) 2008 - 2010 Janis Skarnelis
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
*
* Version: 1.3.4 (11/11/2010)
* Requires: jQuery v1.3+
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
#fancybox-loading {
position: fixed;
top: 50%;
left: 50%;
width: 40px;
height: 40px;
margin-top: -20px;
margin-left: -20px;
cursor: pointer;
overflow: hidden;
z-index: 1104;
display: none;
}
#fancybox-loading div {
position: absolute;
top: 0;
left: 0;
width: 40px;
height: 480px;
background-image: url('fancybox.png');
}
#fancybox-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
z-index: 1100;
display: none;
}
#fancybox-tmp {
padding: 0;
margin: 0;
border: 0;
overflow: auto;
display: none;
}
#fancybox-wrap {
position: absolute;
top: 0;
left: 0;
padding: 20px;
z-index: 1101;
outline: none;
display: none;
}
#fancybox-outer {
position: relative;
width: 100%;
height: 100%;
background: #fff;
}
#fancybox-content {
width: 0;
height: 0;
padding: 0;
outline: none;
position: relative;
overflow: hidden;
z-index: 1102;
border: 0px solid #fff;
}
#fancybox-hide-sel-frame {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: transparent;
z-index: 1101;
}
#fancybox-close {
position: absolute;
top: -15px;
right: -15px;
width: 30px;
height: 30px;
background: transparent url('fancybox.png') -40px 0px;
cursor: pointer;
z-index: 1103;
display: none;
}
#fancybox-error {
color: #444;
font: normal 12px/20px Arial;
padding: 14px;
margin: 0;
}
#fancybox-img {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
border: none;
outline: none;
line-height: 0;
vertical-align: top;
}
#fancybox-frame {
width: 100%;
height: 100%;
border: none;
display: block;
}
#fancybox-left, #fancybox-right {
position: absolute;
bottom: 0px;
height: 100%;
width: 35%;
cursor: pointer;
outline: none;
background: transparent url('blank.gif');
z-index: 1102;
display: none;
}
#fancybox-left {
left: 0px;
}
#fancybox-right {
right: 0px;
}
#fancybox-left-ico, #fancybox-right-ico {
position: absolute;
top: 50%;
left: -9999px;
width: 30px;
height: 30px;
margin-top: -15px;
cursor: pointer;
z-index: 1102;
display: block;
}
#fancybox-left-ico {
background-image: url('fancybox.png');
background-position: -40px -30px;
}
#fancybox-right-ico {
background-image: url('fancybox.png');
background-position: -40px -60px;
}
#fancybox-left:hover, #fancybox-right:hover {
visibility: visible; /* IE6 */
}
#fancybox-left:hover span {
left: 20px;
}
#fancybox-right:hover span {
left: auto;
right: 20px;
}
.fancybox-bg {
position: absolute;
padding: 0;
margin: 0;
border: 0;
width: 20px;
height: 20px;
z-index: 1001;
}
#fancybox-bg-n {
top: -20px;
left: 0;
width: 100%;
background-image: url('fancybox-x.png');
}
#fancybox-bg-ne {
top: -20px;
right: -20px;
background-image: url('fancybox.png');
background-position: -40px -162px;
}
#fancybox-bg-e {
top: 0;
right: -20px;
height: 100%;
background-image: url('fancybox-y.png');
background-position: -20px 0px;
}
#fancybox-bg-se {
bottom: -20px;
right: -20px;
background-image: url('fancybox.png');
background-position: -40px -182px;
}
#fancybox-bg-s {
bottom: -20px;
left: 0;
width: 100%;
background-image: url('fancybox-x.png');
background-position: 0px -20px;
}
#fancybox-bg-sw {
bottom: -20px;
left: -20px;
background-image: url('fancybox.png');
background-position: -40px -142px;
}
#fancybox-bg-w {
top: 0;
left: -20px;
height: 100%;
background-image: url('fancybox-y.png');
}
#fancybox-bg-nw {
top: -20px;
left: -20px;
background-image: url('fancybox.png');
background-position: -40px -122px;
}
#fancybox-title {
font-family: Helvetica;
font-size: 12px;
z-index: 1102;
}
.fancybox-title-inside {
padding-bottom: 10px;
text-align: center;
color: #333;
background: #fff;
position: relative;
}
.fancybox-title-outside {
padding-top: 10px;
color: #fff;
}
.fancybox-title-over {
position: absolute;
bottom: 0;
left: 0;
color: #FFF;
text-align: left;
}
#fancybox-title-over {
padding: 10px;
background-image: url('fancy_title_over.png');
display: block;
}
.fancybox-title-float {
position: absolute;
left: 0;
bottom: -20px;
height: 32px;
}
#fancybox-title-float-wrap {
border: none;
border-collapse: collapse;
width: auto;
}
#fancybox-title-float-wrap td {
border: none;
white-space: nowrap;
}
#fancybox-title-float-left {
padding: 0 0 0 15px;
background: url('fancybox.png') -40px -90px no-repeat;
}
#fancybox-title-float-main {
color: #FFF;
line-height: 29px;
font-weight: bold;
padding: 0 0 3px 0;
background: url('fancybox-x.png') 0px -40px;
}
#fancybox-title-float-right {
padding: 0 0 0 15px;
background: url('fancybox.png') -55px -90px no-repeat;
}
/* IE6 */
.fancybox-ie6 #fancybox-close { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_close.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-left-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-right-ico { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_nav_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-over { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_over.png', sizingMethod='scale'); zoom: 1; }
.fancybox-ie6 #fancybox-title-float-left { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_left.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-main { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_main.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-title-float-right { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_title_right.png', sizingMethod='scale'); }
.fancybox-ie6 #fancybox-bg-w, .fancybox-ie6 #fancybox-bg-e, .fancybox-ie6 #fancybox-left, .fancybox-ie6 #fancybox-right, #fancybox-hide-sel-frame {
height: expression(this.parentNode.clientHeight + "px");
}
#fancybox-loading.fancybox-ie6 {
position: absolute; margin-top: 0;
top: expression( (-20 + (document.documentElement.clientHeight ? document.documentElement.clientHeight/2 : document.body.clientHeight/2 ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop )) + 'px');
}
#fancybox-loading.fancybox-ie6 div { background: transparent; filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_loading.png', sizingMethod='scale'); }
/* IE6, IE7, IE8 */
.fancybox-ie .fancybox-bg { background: transparent !important; }
.fancybox-ie #fancybox-bg-n { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_n.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-ne { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_ne.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-e { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_e.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-se { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_se.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-s { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_s.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-sw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_sw.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-w { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_w.png', sizingMethod='scale'); }
.fancybox-ie #fancybox-bg-nw { filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='fancybox/fancy_shadow_nw.png', sizingMethod='scale'); }

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,46 @@
/*
* FancyBox - jQuery Plugin
* Simple and fancy lightbox alternative
*
* Examples and documentation at: http://fancybox.net
*
* Copyright (c) 2008 - 2010 Janis Skarnelis
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated.
*
* Version: 1.3.4 (11/11/2010)
* Requires: jQuery v1.3+
*
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>');
F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)||
c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick=
false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel",
function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+
'"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win==
"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+
";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor,
opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length?
d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding});
y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height==
i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents());
f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode==
37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto");
s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j);
f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c);
j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type==
"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"),
10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)};
b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("data-rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[data-rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k=
0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+
1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h=
true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1;
b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5-
d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f);
D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()});
b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}};
b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing",
easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery);

View File

@@ -0,0 +1,14 @@
/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.4
*
* Requires: 1.2.2+
*/
(function(d){function g(a){var b=a||window.event,i=[].slice.call(arguments,1),c=0,h=0,e=0;a=d.event.fix(b);a.type="mousewheel";if(a.wheelDelta)c=a.wheelDelta/120;if(a.detail)c=-a.detail/3;e=c;if(b.axis!==undefined&&b.axis===b.HORIZONTAL_AXIS){e=0;h=-1*c}if(b.wheelDeltaY!==undefined)e=b.wheelDeltaY/120;if(b.wheelDeltaX!==undefined)h=-1*b.wheelDeltaX/120;i.unshift(a,c,h,e);return d.event.handle.apply(this,i)}var f=["DOMMouseScroll","mousewheel"];d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=
f.length;a;)this.addEventListener(f[--a],g,false);else this.onmousewheel=g},teardown:function(){if(this.removeEventListener)for(var a=f.length;a;)this.removeEventListener(f[--a],g,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery);

771
js/fancybox3/jquery.fancybox.css vendored Normal file
View File

@@ -0,0 +1,771 @@
@charset "UTF-8";
body.fancybox-active {
overflow: hidden; }
body.fancybox-iosfix {
position: fixed;
left: 0;
right: 0; }
.fancybox-is-hidden {
position: absolute;
top: -9999px;
left: -9999px;
visibility: hidden; }
.fancybox-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 99992;
-webkit-tap-highlight-color: transparent;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-transform: translateZ(0);
transform: translateZ(0);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; }
.fancybox-outer,
.fancybox-inner,
.fancybox-bg,
.fancybox-stage {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0; }
.fancybox-outer {
overflow-y: auto;
-webkit-overflow-scrolling: touch; }
.fancybox-bg {
background: #1e1e1e;
opacity: 0;
transition-duration: inherit;
transition-property: opacity;
transition-timing-function: cubic-bezier(0.47, 0, 0.74, 0.71); }
.fancybox-is-open .fancybox-bg {
opacity: 0.87;
transition-timing-function: cubic-bezier(0.22, 0.61, 0.36, 1); }
.fancybox-infobar,
.fancybox-toolbar,
.fancybox-caption-wrap {
position: absolute;
direction: ltr;
z-index: 99997;
opacity: 0;
visibility: hidden;
transition: opacity .25s, visibility 0s linear .25s;
box-sizing: border-box; }
.fancybox-show-infobar .fancybox-infobar,
.fancybox-show-toolbar .fancybox-toolbar,
.fancybox-show-caption .fancybox-caption-wrap {
opacity: 1;
visibility: visible;
transition: opacity .25s, visibility 0s; }
.fancybox-infobar {
top: 0;
left: 0;
font-size: 13px;
padding: 0 10px;
height: 44px;
min-width: 44px;
line-height: 44px;
color: #ccc;
text-align: center;
pointer-events: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-touch-callout: none;
-webkit-tap-highlight-color: transparent;
-webkit-font-smoothing: subpixel-antialiased;
mix-blend-mode: exclusion; }
.fancybox-toolbar {
top: 0;
right: 0;
margin: 0;
padding: 0; }
.fancybox-stage {
overflow: hidden;
direction: ltr;
z-index: 99994;
-webkit-transform: translate3d(0, 0, 0); }
.fancybox-is-closing .fancybox-stage {
overflow: visible; }
.fancybox-slide {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: auto;
outline: none;
white-space: normal;
box-sizing: border-box;
text-align: center;
z-index: 99994;
-webkit-overflow-scrolling: touch;
display: none;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
transition-property: opacity, -webkit-transform;
transition-property: transform, opacity;
transition-property: transform, opacity, -webkit-transform; }
.fancybox-slide::before {
content: '';
display: inline-block;
vertical-align: middle;
height: 100%;
width: 0; }
.fancybox-is-sliding .fancybox-slide,
.fancybox-slide--previous,
.fancybox-slide--current,
.fancybox-slide--next {
display: block; }
.fancybox-slide--image {
overflow: visible; }
.fancybox-slide--image::before {
display: none; }
.fancybox-slide--video .fancybox-content,
.fancybox-slide--video iframe {
background: #000; }
.fancybox-slide--map .fancybox-content,
.fancybox-slide--map iframe {
background: #E5E3DF; }
.fancybox-slide--next {
z-index: 99995; }
.fancybox-slide > * {
display: inline-block;
position: relative;
padding: 24px;
margin: 44px 0 44px;
border-width: 0;
vertical-align: middle;
text-align: left;
background-color: #fff;
overflow: auto;
box-sizing: border-box; }
.fancybox-slide > title,
.fancybox-slide > style,
.fancybox-slide > meta,
.fancybox-slide > link,
.fancybox-slide > script,
.fancybox-slide > base {
display: none; }
.fancybox-slide .fancybox-image-wrap {
position: absolute;
top: 0;
left: 0;
margin: 0;
padding: 0;
border: 0;
z-index: 99995;
background: transparent;
cursor: default;
overflow: visible;
-webkit-transform-origin: top left;
-ms-transform-origin: top left;
transform-origin: top left;
background-size: 100% 100%;
background-repeat: no-repeat;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
transition-property: opacity, -webkit-transform;
transition-property: transform, opacity;
transition-property: transform, opacity, -webkit-transform; }
.fancybox-can-zoomOut .fancybox-image-wrap {
cursor: -webkit-zoom-out;
cursor: zoom-out; }
.fancybox-can-zoomIn .fancybox-image-wrap {
cursor: -webkit-zoom-in;
cursor: zoom-in; }
.fancybox-can-drag .fancybox-image-wrap {
cursor: -webkit-grab;
cursor: grab; }
.fancybox-is-dragging .fancybox-image-wrap {
cursor: -webkit-grabbing;
cursor: grabbing; }
.fancybox-image,
.fancybox-spaceball {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
border: 0;
max-width: none;
max-height: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; }
.fancybox-spaceball {
z-index: 1; }
.fancybox-slide--iframe .fancybox-content {
padding: 0;
width: 80%;
height: 80%;
max-width: calc(100% - 100px);
max-height: calc(100% - 88px);
overflow: visible;
background: #fff; }
.fancybox-iframe {
display: block;
margin: 0;
padding: 0;
border: 0;
width: 100%;
height: 100%;
background: #fff; }
.fancybox-error {
margin: 0;
padding: 40px;
width: 100%;
max-width: 380px;
background: #fff;
cursor: default; }
.fancybox-error p {
margin: 0;
padding: 0;
color: #444;
font-size: 16px;
line-height: 20px; }
/* Buttons */
.fancybox-button {
box-sizing: border-box;
display: inline-block;
vertical-align: top;
width: 44px;
height: 44px;
margin: 0;
padding: 10px;
border: 0;
border-radius: 0;
background: rgba(30, 30, 30, 0.6);
transition: color .3s ease;
cursor: pointer;
outline: none; }
.fancybox-button,
.fancybox-button:visited,
.fancybox-button:link {
color: #ccc; }
.fancybox-button:focus,
.fancybox-button:hover {
color: #fff; }
.fancybox-button[disabled] {
color: #ccc;
cursor: default;
opacity: 0.6; }
.fancybox-button svg {
display: block;
position: relative;
overflow: visible;
shape-rendering: geometricPrecision; }
.fancybox-button svg path {
fill: currentColor;
stroke: currentColor;
stroke-linejoin: round;
stroke-width: 3; }
.fancybox-button--share svg path {
stroke-width: 1; }
.fancybox-button--play svg path:nth-child(2) {
display: none; }
.fancybox-button--pause svg path:nth-child(1) {
display: none; }
.fancybox-button--zoom svg path {
fill: transparent; }
/* Navigation arrows */
.fancybox-navigation {
display: none; }
.fancybox-show-nav .fancybox-navigation {
display: block; }
.fancybox-navigation button {
position: absolute;
top: 50%;
margin: -50px 0 0 0;
z-index: 99997;
background: transparent;
width: 60px;
height: 100px;
padding: 17px; }
.fancybox-navigation button:before {
content: "";
position: absolute;
top: 30px;
right: 10px;
width: 40px;
height: 40px;
background: rgba(30, 30, 30, 0.6); }
.fancybox-navigation .fancybox-button--arrow_left {
left: 0; }
.fancybox-navigation .fancybox-button--arrow_right {
right: 0; }
/* Close button on the top right corner of html content */
.fancybox-close-small {
position: absolute;
top: 0;
right: 0;
width: 40px;
height: 40px;
padding: 0;
margin: 0;
border: 0;
border-radius: 0;
background: transparent;
z-index: 10;
cursor: pointer; }
.fancybox-close-small:after {
content: '×';
position: absolute;
top: 5px;
right: 5px;
width: 30px;
height: 30px;
font: 22px/30px Arial,"Helvetica Neue",Helvetica,sans-serif;
color: #888;
font-weight: 300;
text-align: center;
border-radius: 50%;
border-width: 0;
background-color: transparent;
transition: background-color .25s;
box-sizing: border-box;
z-index: 2; }
.fancybox-close-small:focus {
outline: none; }
.fancybox-close-small:focus:after {
outline: 1px dotted #888; }
.fancybox-close-small:hover:after {
color: #555;
background: #eee; }
.fancybox-slide--image .fancybox-close-small,
.fancybox-slide--iframe .fancybox-close-small {
top: 0;
right: -40px; }
.fancybox-slide--image .fancybox-close-small:after,
.fancybox-slide--iframe .fancybox-close-small:after {
font-size: 35px;
color: #aaa; }
.fancybox-slide--image .fancybox-close-small:hover:after,
.fancybox-slide--iframe .fancybox-close-small:hover:after {
color: #fff;
background: transparent; }
.fancybox-is-scaling .fancybox-close-small,
.fancybox-is-zoomable.fancybox-can-drag .fancybox-close-small {
display: none; }
/* Caption */
.fancybox-caption-wrap {
bottom: 0;
left: 0;
right: 0;
padding: 60px 2vw 0 2vw;
background: linear-gradient(to bottom, transparent 0%, rgba(0, 0, 0, 0.1) 20%, rgba(0, 0, 0, 0.2) 40%, rgba(0, 0, 0, 0.6) 80%, rgba(0, 0, 0, 0.8) 100%);
pointer-events: none; }
.fancybox-caption {
padding: 30px 0;
border-top: 1px solid rgba(255, 255, 255, 0.4);
font-size: 14px;
color: #fff;
line-height: 20px;
-webkit-text-size-adjust: none; }
.fancybox-caption a,
.fancybox-caption button,
.fancybox-caption select {
pointer-events: all;
position: relative;
/* Fix IE11 */ }
.fancybox-caption a {
color: #fff;
text-decoration: underline; }
/* Loading indicator */
.fancybox-slide > .fancybox-loading {
border: 6px solid rgba(100, 100, 100, 0.4);
border-top: 6px solid rgba(255, 255, 255, 0.6);
border-radius: 100%;
height: 50px;
width: 50px;
-webkit-animation: fancybox-rotate .8s infinite linear;
animation: fancybox-rotate .8s infinite linear;
background: transparent;
position: absolute;
top: 50%;
left: 50%;
margin-top: -30px;
margin-left: -30px;
z-index: 99999; }
@-webkit-keyframes fancybox-rotate {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
to {
-webkit-transform: rotate(359deg);
transform: rotate(359deg); } }
@keyframes fancybox-rotate {
from {
-webkit-transform: rotate(0deg);
transform: rotate(0deg); }
to {
-webkit-transform: rotate(359deg);
transform: rotate(359deg); } }
/* Transition effects */
.fancybox-animated {
transition-timing-function: cubic-bezier(0, 0, 0.25, 1); }
/* transitionEffect: slide */
.fancybox-fx-slide.fancybox-slide--previous {
-webkit-transform: translate3d(-100%, 0, 0);
transform: translate3d(-100%, 0, 0);
opacity: 0; }
.fancybox-fx-slide.fancybox-slide--next {
-webkit-transform: translate3d(100%, 0, 0);
transform: translate3d(100%, 0, 0);
opacity: 0; }
.fancybox-fx-slide.fancybox-slide--current {
-webkit-transform: translate3d(0, 0, 0);
transform: translate3d(0, 0, 0);
opacity: 1; }
/* transitionEffect: fade */
.fancybox-fx-fade.fancybox-slide--previous,
.fancybox-fx-fade.fancybox-slide--next {
opacity: 0;
transition-timing-function: cubic-bezier(0.19, 1, 0.22, 1); }
.fancybox-fx-fade.fancybox-slide--current {
opacity: 1; }
/* transitionEffect: zoom-in-out */
.fancybox-fx-zoom-in-out.fancybox-slide--previous {
-webkit-transform: scale3d(1.5, 1.5, 1.5);
transform: scale3d(1.5, 1.5, 1.5);
opacity: 0; }
.fancybox-fx-zoom-in-out.fancybox-slide--next {
-webkit-transform: scale3d(0.5, 0.5, 0.5);
transform: scale3d(0.5, 0.5, 0.5);
opacity: 0; }
.fancybox-fx-zoom-in-out.fancybox-slide--current {
-webkit-transform: scale3d(1, 1, 1);
transform: scale3d(1, 1, 1);
opacity: 1; }
/* transitionEffect: rotate */
.fancybox-fx-rotate.fancybox-slide--previous {
-webkit-transform: rotate(-360deg);
-ms-transform: rotate(-360deg);
transform: rotate(-360deg);
opacity: 0; }
.fancybox-fx-rotate.fancybox-slide--next {
-webkit-transform: rotate(360deg);
-ms-transform: rotate(360deg);
transform: rotate(360deg);
opacity: 0; }
.fancybox-fx-rotate.fancybox-slide--current {
-webkit-transform: rotate(0deg);
-ms-transform: rotate(0deg);
transform: rotate(0deg);
opacity: 1; }
/* transitionEffect: circular */
.fancybox-fx-circular.fancybox-slide--previous {
-webkit-transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
opacity: 0; }
.fancybox-fx-circular.fancybox-slide--next {
-webkit-transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
opacity: 0; }
.fancybox-fx-circular.fancybox-slide--current {
-webkit-transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
opacity: 1; }
/* transitionEffect: tube */
.fancybox-fx-tube.fancybox-slide--previous {
-webkit-transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg);
transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); }
.fancybox-fx-tube.fancybox-slide--next {
-webkit-transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg);
transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg); }
.fancybox-fx-tube.fancybox-slide--current {
-webkit-transform: translate3d(0, 0, 0) scale(1);
transform: translate3d(0, 0, 0) scale(1); }
/* Share */
.fancybox-share {
padding: 30px;
border-radius: 3px;
background: #f4f4f4;
max-width: 90%;
text-align: center; }
.fancybox-share h1 {
color: #222;
margin: 0 0 20px 0;
font-size: 35px;
font-weight: 700; }
.fancybox-share p {
margin: 0;
padding: 0; }
p.fancybox-share__links {
margin-right: -10px; }
.fancybox-share__button {
display: inline-block;
text-decoration: none;
margin: 0 10px 10px 0;
padding: 0 15px;
min-width: 130px;
border: 0;
border-radius: 3px;
background: #fff;
white-space: nowrap;
font-size: 14px;
font-weight: 700;
line-height: 40px;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
color: #fff;
transition: all .2s; }
.fancybox-share__button:hover {
text-decoration: none; }
.fancybox-share__button--fb {
background: #3b5998; }
.fancybox-share__button--fb:hover {
background: #344e86; }
.fancybox-share__button--pt {
background: #bd081d; }
.fancybox-share__button--pt:hover {
background: #aa0719; }
.fancybox-share__button--tw {
background: #1da1f2; }
.fancybox-share__button--tw:hover {
background: #0d95e8; }
.fancybox-share__button svg {
position: relative;
top: -1px;
width: 25px;
height: 25px;
margin-right: 7px;
vertical-align: middle; }
.fancybox-share__button svg path {
fill: #fff; }
.fancybox-share__input {
box-sizing: border-box;
width: 100%;
margin: 10px 0 0 0;
padding: 10px 15px;
background: transparent;
color: #5d5b5b;
font-size: 14px;
outline: none;
border: 0;
border-bottom: 2px solid #d7d7d7; }
/* Thumbs */
.fancybox-thumbs {
display: none;
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 212px;
margin: 0;
padding: 2px 2px 4px 2px;
background: #fff;
-webkit-tap-highlight-color: transparent;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
box-sizing: border-box;
z-index: 99995; }
.fancybox-thumbs-x {
overflow-y: hidden;
overflow-x: auto; }
.fancybox-show-thumbs .fancybox-thumbs {
display: block; }
.fancybox-show-thumbs .fancybox-inner {
right: 212px; }
.fancybox-thumbs > ul {
list-style: none;
position: absolute;
position: relative;
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow-x: hidden;
overflow-y: auto;
font-size: 0;
white-space: nowrap; }
.fancybox-thumbs-x > ul {
overflow: hidden; }
.fancybox-thumbs-y > ul::-webkit-scrollbar {
width: 7px; }
.fancybox-thumbs-y > ul::-webkit-scrollbar-track {
background: #fff;
border-radius: 10px;
box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3); }
.fancybox-thumbs-y > ul::-webkit-scrollbar-thumb {
background: #2a2a2a;
border-radius: 10px; }
.fancybox-thumbs > ul > li {
float: left;
overflow: hidden;
padding: 0;
margin: 2px;
width: 100px;
height: 75px;
max-width: calc(50% - 4px);
max-height: calc(100% - 8px);
position: relative;
cursor: pointer;
outline: none;
-webkit-tap-highlight-color: transparent;
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
box-sizing: border-box; }
li.fancybox-thumbs-loading {
background: rgba(0, 0, 0, 0.1); }
.fancybox-thumbs > ul > li > img {
position: absolute;
top: 0;
left: 0;
max-width: none;
max-height: none;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none; }
.fancybox-thumbs > ul > li:before {
content: '';
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
border: 4px solid #4ea7f9;
z-index: 99991;
opacity: 0;
transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94); }
.fancybox-thumbs > ul > li.fancybox-thumbs-active:before {
opacity: 1; }
/* Styling for Small-Screen Devices */
@media all and (max-width: 800px) {
.fancybox-thumbs {
width: 110px; }
.fancybox-show-thumbs .fancybox-inner {
right: 110px; }
.fancybox-thumbs > ul > li {
max-width: calc(100% - 10px); } }

12
js/fancybox3/jquery.fancybox.min.js vendored Normal file

File diff suppressed because one or more lines are too long

128
js/file/.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1,128 @@
Contributing to bootstrap-fileinput
===================================
Looking to contribute something to bootstrap-fileinput? **Here's how you can help.**
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
Using the issue tracker
-----------------------
When [reporting bugs][reporting-bugs] or
[requesting features][requesting-features], the
[issue tracker on GitHub][issue-tracker] is the recommended channel to use.
The issue tracker **is not** a place for support requests. Refer the
[plugin documentation](http://plugins.krajee.com/file-input),
[plugin demos](http://plugins.krajee.com/file-input/demo), and / or refer to the
[webtips Q & A forum](http://webtips.krajee.com/questions) which are the better places to get help.
Reporting bugs with bootstrap-fileinput
---------------------------------------
We really appreciate clear bug reports that _consistently_ show an issue
_within bootstrap-fileinput_.
The ideal bug report follows these guidelines:
1. **Use the [GitHub issue search][issue-search]** &mdash; Check if the issue
has already been reported.
2. **Check if the issue has been fixed** &mdash; Try to reproduce the problem
using the code in the `master` branch.
3. **Isolate the problem** &mdash; Try to create an
[isolated js fiddle][isolated-case] that consistently reproduces the problem.
Please try to be as detailed as possible in your bug report, especially if an
isolated test case cannot be made. Some useful questions to include the answer
to are:
- What steps can be used to reproduce the issue?
- What is the bug and what is the expected outcome?
- What browser(s) and Operating System have you tested with?
- Does the bug happen consistently across all tested browsers?
- What version of jQuery are you using? And what version of bootstrap-fileinput?
- Are you using bootstrap-fileinput with other plugins?
All of these questions will help others fix and identify any potential bugs.
Requesting features in bootstrap-fileinput
------------------------------------------
Before starting work on a major feature for bootstrap-fileinput, **read the
[documentation](http://plugins.krajee.com/file-input) first** or you may risk spending a considerable amount of
time on something which the project developers are not interested in bringing into the project.
### Submitting a pull request
We use GitHub's pull request system for submitting patches. Here are some
guidelines to follow when creating the pull request for your fix.
1. Make sure to create a ticket for your pull request. This will serve as the
bug ticket, and any discussion about the bug will take place there. Your pull
request will be focused on the specific changes that fix the bug.
2. Make sure to reference the ticket you are fixing within your pull request.
This will allow us to close off the ticket once we merge the pull request, or
follow up on the ticket if there are any related blocking issues.
3. Explain why the specific change was made. Not everyone who is reviewing your
pull request will be familiar with the problem it is fixing.
4. Run your tests first. If your tests aren't passing, the pull request won't
be able to be merged. If you're breaking existing tests, make sure that you
aren't causing any breaking changes.
5. Only include source changes. While it's not required, only including changes
from the `src` directory will prevent merge conflicts from occuring. Making
this happen can be as a simple as not committing changes from the `dist`
directory.
By following these steps, you will make it easier for your pull request to be
reviewed and eventually merged.
Triaging issues and pull requests
---------------------------------
Anyone can help the project maintainers triage issues and review pull requests.
### Handling new issues
bootstrap-fileinput regularly receives new issues which need to be tested and organized.
When a new issue that comes in that is similar to another existing issue, it
should be checked to make sure it is not a duplicate. Duplicates issues should
be marked by replying to the issue with "Duplicate of #[issue number]" where
`[issue number]` is the url or issue number for the existing issue. This will
allow the project maintainers to quickly close off additional issues and keep
the discussion focused within a single issue.
If you can test issues that are reported to bootstrap-fileinput that contain test cases and
confirm under what conditions bugs happen, that will allow others to identify
what causes a bug quicker.
### Reviewing pull requests
It is very common for pull requests to be opened for issues that contain a clear
solution to the problem. These pull requests should be rigorously reviewed by
the community before being accepted. If you are not sure about a piece of
submitted code, or know of a better way to do something, do not hesitate to make
a comment on the pull request.
### Reviving old tickets
If you come across tickets which have not been updated for a while, you are
encouraged to revive them. While this can be as simple as saying `:+1:`, it is
best if you can include more information on the issue. Common bugs and feature
requests are more likely to be fixed, whether it is by the community or the
developers, so keeping tickets up to date is encouraged.
Licensing
---------
It should also be made clear that **all code contributed to bootstrap-fileinput** must be
licensable under the [BSD-3 license][licensing]. Code that cannot be released
under this license **cannot be accepted** into the project.
[isolated-case]: https://jsfiddle.net/
[issue-search]: https://github.com/kartik-v/bootstrap-fileinput/search?q=&type=Issues
[issue-tracker]: https://github.com/kartik-v/bootstrap-fileinput/issues
[licensing]: https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
[reporting-bugs]: #reporting-bugs-with-bootstrap-fileinput
[requesting-features]: #requesting-features-in-bootstrap-fileinput

48
js/file/.github/ISSUE_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,48 @@
## Prerequisites
- [ ] I have searched for similar issues in both open and closed tickets and cannot find a duplicate.
- [ ] The issue still exists against the latest `master` branch of bootstrap-fileinput.
- [ ] This is not an usage question. I confirm having read the plugin [documentation](http://plugins.krajee.com/file-input) and [demos](http://plugins.krajee.com/file-input/demo).
- [ ] This is not a general programming / coding question. (Those should be directed to the [webtips Q & A forum](http://webtips.krajee.com/questions)).
- [ ] I have attempted to find the simplest possible steps to reproduce the issue.
- [ ] I have included a failing test as a pull request (Optional).
## Steps to reproduce the issue
1.
2.
3.
## Expected behavior and actual behavior
When I follow those steps, I see...
I was expecting...
## Environment
Browsers
- [ ] Google Chrome
- [ ] Mozilla Firefox
- [ ] Internet Explorer
- [ ] Safari
Operating System
- [ ] Windows
- [ ] Mac OS X
- [ ] Linux
- [ ] Mobile
Libraries
- jQuery version:
- bootstrap-fileinput version:
## Isolating the problem
- [ ] This bug happens [on the plugin demos page](http://plugins.krajee.com/file-input/demo)
- [ ] The bug happens consistently across all tested browsers
- [ ] This bug happens when using bootstrap-fileinput without other plugins
- [ ] I can reproduce this bug in [a jsbin](https://jsbin.com/)

View File

@@ -0,0 +1,16 @@
## Scope
This pull request includes a
- [ ] Bug fix
- [ ] New feature
- [ ] Translation
## Changes
The following changes were made
-
-
-
## Related Issues
If this is related to an existing ticket, include a link to it as well.

4
js/file/.gitignore vendored Normal file
View File

@@ -0,0 +1,4 @@
nuget/content/
nuget/bootstrap-fileinput.*.nupkg
.DS_Store
.idea

938
js/file/CHANGE.md Normal file
View File

@@ -0,0 +1,938 @@
Change Log: `bootstrap-fileinput`
=================================
## version 4.4.3 (_under development_)
**Date:** 28-Jun-2017
- (enh #1006): Update Farsi Translations.
## version 4.4.2
**Date:** 24-Jun-2017
- (enh #1005): Update Dutch Translations.
- (enh #1004): New Krajee Explorer Font Awesome Theme.
- (bug #995): Correct and fix image load jquery event triggering for browser cache scenarios.
- (enh #991): Add Azerbaijan Translations.
- (enh #990): Ability to hide thumbnail content (`hideThumbnailContent`) and display only file name/size.
- (enh #989): Update Chinese Translations.
- (enh #987): Zoom preview arrows orientation for RTL.
- (enh #986): Image width parsing and styling enhancements.
- (enh #985): Do not reset input when upload fails (single-upload mode).
- (enh #981): Update Hungarian Translations.
- (enh #977): Add RTL capability (new property `rtl` to be set) - includes new `fileinput-rtl.css` (to be loaded after `fileinput.css` for RTL styling).
- (enh #973): Add SCSS image path variable and file-image alt style updates.
## version 4.4.1
**Date:** 25-May-2017
- (enh #980): Add new method `getFrames` to get all thumbnail frames as jQuery objects.
- (enh #979): Add new method `getExif` to retrieve exif data for a selected jpeg image.
- (enh #978, #974): Implement exif restoration for resized images via [`piexif` plugin](https://github.com/hMatoba/piexifjs).
- (enh #968): Update Turkish Translations.
- (enh #967): Correct file caption display for ajax upload mode when `showPreview` is `false`.
## version 4.4.0
**Date:** 13-May-2017
- (enh #966): Add Estonian Translations.
- (enh #965): New `required` and `msgFileRequired` properties.
- (bug #958): Create `setTokens` string helper for easier replacement of tokens.
- (bug #956): Correct initial preview file thumb deletions.
- (bug #955): Remove unnecessary `sourceMappingUrl` in `purify.min.js`.
- (enh #954): Add minified theme assets.
- (enh #952): Auto orientation of image based on EXIF data (new property `autoOrientImage`).
- (enh #950, #930): Add responsive support for Krajee Explorer theme for mobile devices.
- (enh #949): Sortable plugin enhancements and prevent scroll when dragging on mobile devices.
- Chronological ordering of issues for change log.
- (enh #947): Correct `showDelete` validation in `fileActionSettings`.
- (enh #946): Enhance iconic preview validation to ignore extension case if possible.
- (enh #944): Publish v4.3.9 release to NPM.
- (enh #942): Enhance indicator and drag templates. New layout template `indicator`.
- (enh #941): Correct `data-fileindex` validation.
- (bug #940): Correct validation of `initialPreviewShowDelete`.
- (enh #936): Enhance custom validation when ajax abort is triggered via event manipulation.
- (enh #934): Update Russian translations.
- (enh #929): Add Norwegian translations.
- (enh #926): Add Galician translations and update Spanish translations.
- (enh #924): Update Farsi Translations.
- (enh #921): Enhance zoom preview slide-show to show loading indicator during image change.
- (enh #920): Cancel ajax abort action more correctly.
- (bug #919): Fix resize validation.
- Parse all numeric properties correctly.
- (enh #915): Update default styling for zoom preview for object.
- (enh #910): New property `resizeIfMoreThan` to control image resize conditionally.
- (bug #899): Fix multiple file selection for non-ajax scenario.
- (enh #477): Enhance and correct IE10 fileinput click misbehavior.
## version 4.3.9
**Date:** 02-Apr-2017
- (enh #914): Update Portuguese BR translations.
- (enh #913): Better id parsing and resetting of uploaded file thumbnails.
- Enhance zoom preview styling for Krajee Explorer theme.
- More correct validation of `allowedFileTypes` to accept null values.
- (enh #909): Update German Translations.
- (enh #906): Add Swedish Translations.
- (enh #905): Prevent duplicate files to be dragged and dropped.
- (enh #902): Enhance zoom preview styling for large height images.
- (bug #900): Correct `overwriteInitial` validation for async batch uploads returning dynamic initial preview post upload.
- (enh #898): New plugin method to get files in preview and config.
- (enh #894, #895): Correct file size validation for empty files.
- (bug #893): Correct `file-success-remove` event handling.
- (bug #890): Fix doubling of images for async bulk uploads when initial preview is returned via ajax response.
- Enhance uploaded thumb frames to not reset or change the frame identifier after successful upload.
- (enh #887): New properties `msgUploadBegin` and `msgUploadEnd` to display a better progress status. The `layoutTemplates.progress` will support a new token `{status}`.
- Enhance events like `fileclear` and `filepreajax` to be aborted via `event.preventDefault()`.
- (enh #886): Append zoom modal dialog to `body` element if available to avoid multiple BS modals conflict.
- (bug #885): Correct validation for `allowedFileTypes`.
- (enh #875): Reset form based events more correctly to allow multiple bootstrap file inputs within forms.
- (bug #882): Correct image resize validation.
- (enh #881): Update Spanish Translations.
- (enh #863): New plugin method `zoom` with parameter `frameId` to allow custom triggering of zoomed preview for each thumbnail frame.
## version 4.3.8
**Date:** 21-Feb-2017
- (enh #879): Update Russian Translations.
- (enh #876): Update Spanish Translations.
- (enh #874): Enhance/Standardize CSS Styles for Krajee Default Theme.
- (bug #872): Correct typo in `bootstrap.min.css`.
- (bug #870): Correct config.width parsing.
## version 4.3.7
**Date:** 11-Feb-2017
- (enh #862): Launch a brand new Krajee theme: `explorer`.
- (enh #861): New properties within `layoutTemplates`.
- (enh #860): Initialize template defaults in a better manner.
- (enh #859): Enhance and revamp preview caching.
- (enh #858): Thumb Frame CSS class as configurable property.
- (enh #857): Default error handling for unknown ajax errors.
- (enh #854): Better file size calculation and display.
- (bug #852): Ensure `frameClass` setting in `initialPreviewConfig` is considered.
- (enh #851): Create Kazakh Translations.
- (enh #847): Update German Translations.
- (enh #662, #725): Enhance preview modal to be appended to body before each zoom action (if `body` tag exists).
- (enh #844): Display zoom preview navigation buttons only when multiple files exist.
- (bug #839): Correct `initialPreview` generation and sortable behavior for async uploads.
- (enh #837): Update Czech Translations.
- (enh #835): Update Polish Translations.
- (bug #834): Correct clearing of file preview including zoom cache.
- (bug #833): Correct validation and defaults init for `allowedPreviewTypes`.
- (enh #831): Update Finnish Translations.
- (enh #828): Allow drag sort of single uploaded thumbnails with `initialPreview` config set (post upload).
- (bug #826): Extend language configuration to consider defaults.
- (bug #825): Correct `fileimagesresized` event triggering.
- (enh #824): Add Korean Translations.
- (enh #823): Correct file indices assignment during validation of images.
- (enh #822): Enhancement for preventing upload when data is empty. New property `msgUploadEmpty` has been incorporated.
- (enh #820): Prevent resize if image is smaller than allowed dimensions.
- (bug #819): Correct init preview auto replace post `uploadSingle` action in thumbnails.
- (enh #816): New property `msgFileTypes` to control descriptions/localizations of file types displayed.
- (enh #815): Enhance parsing of thumbnails that are visible in preview (will allow plugin to be
initialized in hidden containers like tabs).
- (enh #812): Update Greek Translations.
## version 4.3.6
**Date:** 17-Dec-2016
- (enh #809): Various enhancements for preview control and iconic thumbnails.
- add ability to control and render different previews for file thumbnails and zoomed preview content
- new property `preferIconicPreview` will try to parse the `previewFileIconSettings` and `previewFileExtSettings` to automatically force iconic previews for file thumbnails.
- new property `preferIconicZoomPreview` will try to parse the `previewFileIconSettings` and `previewFileExtSettings` to automatically force iconic previews in the zoomed content.
- the above properties will be applied and parsed for `initialPreview` content as well.
- (enh #804): Add Slovenian Translations.
- (enh #803): Update Hungarian Translations.
- (enh #802): Allow MOV files preview for supported devices and browsers.
- (enh #800): Update Spanish Translations.
- (enh #799): Fix IE memory issue on image load.
- (enh #791): Auto orientation of images based on EXIF data.
- (enh #788): New validation for minimum file size:
- new property `minFileSize` which validates the minimum file size in KB for upload, else throws
a validation error using `msgSizeTooSmall`. This defaults to `0`.
- if `minFileSize` is set to `null`, then above validation is skipped and no minimum file size
check is performed.
- (enh #782): New validation for invalid slug file name (caption):
- if slug callback returns an empty string, then an error will be thrown using `msgInvalidFileName`.
- if slug callback returns `false` then the next file will be read and current file skipped.
- (enh #779, #789): More correct thumbnail identification post rearrange.
- (enh #769, #785, #786, #787): Better image resized event handling.
- (enh #771): Update Chinese Translations.
- (enh #764): Update Russian Translations.
- (enh #696): Better default preview zoom settings.
## version 4.3.5
**Date:** 20-Sep-2016
- (bug #758): Correct file slug name parsing for an invalid file extension.
- (bug #753): Correct IE11 file clear bug when using without ajax.
- (enh #745): Update Russian Translations.
- (enh #741): Update Vietnamese Translations.
- (enh #736): Update Portugese Brazilian Translations.
- (bug #734): Correct right parsing of `fileuploaded` event params.
## version 4.3.4
**Date:** 07-Aug-2016
- (enh #731): New method `getFilesCount` for returning upl + non-upl files count.
- (enh #730): Correct Romanian Translations.
- (enh #729): Implement `progressUploadThreshold` to show processing when waiting for server response.
- (enh #728): Change sortable plugin name to avoid conflict with JUI Sortable.
- (bug #722): Correctly concat ajax output in initial preview.
- (enh #721): Update Turkish Translations.
- (enh #719): Pass right `previewId` to `fileuploaded` event.
- (enh #718): Update Japanese Translations.
- (enh #715): Reset caption correctly on clear.
- Add contribution templates.
- (bug #710): Fix bug for `ifSet` validation.
## version 4.3.3
**Date:** 09-Jul-2016
- (enh #706): Remove invalid files from filestack correctly for validation errors.
- (enh #704): Add grammatically correct "No files selected" message.
- (enh #702): Add files to stack correctly for max & min preview size validation.
- (bug #700): Fix custom preview icons to be displayed and validated correctly.
- (enh #698): Re-enable drag and drop support for IE Edge.
- (enh #695): Update Spanish Translations.
- (enh #680): Populate filestack for files greater than maxFilePreviewSize.
## version 4.3.2
**Date:** 11-Jun-2016
- (enh #674): Organize all themes in a separate `themes` folder.
- (enh #666): Update sortable draggable selector.
- (enh #655): Include sass styling configuration.
- (enh #654): Update Spanish Translations.
- (enh #650, #676): Ability to configure browse button display and file select via zone click.
- New boolean property `showBrowse` that allows you to control the display of the browse button
- New boolean property `browseOnZoneClick` that allows you to select a file:
- **for ajax uploads** - by clicking on the preview drag/drop zone
- **for form based/non-ajax uploads** - by setting `defaultPreviewContent` and that will be clickable to browse files
- New string message property `dropZoneClickTitle` that will be appended to the `dragZoneTitle` for ajax uploads when `browseOnZoneClick` is `true`.
- New template `actionDrag` will be available within `layoutTemplates` to configure your drag indicator markup.
- (enh #647): Display file size in previews and templates.
- Enhancements to file preview icons (`other` template).
- Simpler naming for files in locales and themes folders.
- (enh #643):Implement rearranging / sorting functionality for initial preview.
- Add ability to rearrange and sort thumbnails by drag & drop. This feature will use the [Sortable plugin](https://github.com/RubaXa/Sortable) which will be included in the `js/plugins` folder.
- This feature will be available only for **initial preview thumbnails** for both ajax and form uploads.
- New property for drag indicator and drag behavior configurations will be included in `fileActionSettings`:
- `showDrag`
- `dragIcon`
- `dragClass`
- `dragTitle`
- `dragSettings`
- (enh #642): Reorganize JS code into proper folders. Following folders will be added/maintained
- `locales`: all translation JS files will be located here
- `themes`: all theme JS files will be located here
- `plugins`: third party JS plugins that will be used to work with bootstrap-fileinput
- (enh #641): Wrap readFile(index + 1) in a function to prevent 'unsafe-eval' blocking with CSP.
- (enh #640): Ability to theme and provide font awesome theme. New property `theme` added.
- (enh #639): Add ability to just require package in nodejs
- (enh #636): File action enhancements.
- Zoom and Drag buttons will be shown as an additional file action buttons in addition to `upload` and `remove`
- New boolean properties `showZoom`, `showDrag`, `showRemove`, `showUpload` are now added to `fileActionSettings` to control display of these buttons
- New properties `zoomIcon`, `zoomClass`, `zoomTitle` are available within `fileActionSettings` for controlling the zoom button styles and display.
- New properties `dragIcon`, `dragClass`, `dragTitle` are available within `fileActionSettings` for controlling the drag indicator styles and display.
- New properties `actionZoom` and `actionDrag` are available within `layoutTemplates` to configure the markup of the zoom and drag buttons.
- (enh #635): Various preview enhancements. Previews will be revamped with various functionality:
- Add ability to zoom every thumbnail to a modal preview. So all types of files (images, videos, pdf, text etc) can be previewed in a larger zoom dialog window.
- Automatic slideshow like interface for zoom preview modal. One can navigate left or right to view previous or next content in the preview. In addition to button navigation, keyboard navigation (via left/right arrow keys) is also available.
- Borderless maximized mode and Full Screen mode available for preview.
- Auto disable the previous or next button when the first or last file/image is reached.
- Now `initialPreview` can be setup MORE easier without writing or returning entire markup. Thus the new functionality will enable to use built in `previewTemplates`.
- A new boolean property `initialPreviewAsData` is available to control the above. If set to `true`, it will allow developers to now pass just the data within `initialPreview` (instead of complete markup) and the markup will be auto generated using `previewTemplates`.
- New property `initialPreviewFileType` to set the default file type for initial preview. Defaults to `image`. Must be on of the keys in `fileTypeSettings`.
- All the other settings can be controlled via `initialPreviewConfig`. The new properties available within `initialPreviewConfig` are:
- `type`: Override `initialPreviewFileType` at global level and set a separate type for each file in the initial preview.
- `previewAsData`: boolean property to override the `initialPreviewAsData` setting at global level
- New zoom preview control buttons:
- `prev`
- `next`
- `fullscreen`
- `borderless`
- `toggleheader`
- `close`
- The other new settings to control zoomed preview:
- `previewZoomSettings`: Will allow to set the CSS style (e.g. width, height and other CSS style settings) for each zoomed content type (i.e. `image`, `pdf`, `video` etc.).
- `previewZoomButtonIcons`: Ability to set the labels for previous, next, fullscreen, borderless, and close buttons.
- `previewZoomButtonTitles`: Ability to set the titles for previous, next, fullscreen, borderless, and close buttons.
- `previewZoomButtonClasses`: Ability to set the CSS classes for previous, next, fullscreen, borderless, and close buttons.
- Modifications to all language locales JS for accomodating new translations
- (enh #634): Enhance ability for PDF and HTML preview.
- Enhanced PDF support as PDF embedding is now possible for `initialPreview`. In addition a new template for PDF is available within `previewTemplates`.
- HTML Preview is enhanced with a better template. The plugin also now includes support for `DOMPurify` plugin (and available in plugins folder). This processes and cleans the HTML from XSS before previewing. This behavior can be controlled via `purifyHtml` property that defaults to `true`.
- (enh #633): New property `maxFilePreviewSize` to control preview of large size files.
- (enh #632): Find correct filename in IE9.
- (enh #618): Update German Translations.
- (enh #615): Correct Finnish Localizations.
- (enh #605): Fixed previewCache tags reset.
- (enh #604): Fixed unset method in deleting previewCache index.
- (enh #600): Synchronize latest package on NuGet.
- (bug #595): Correct initialization of `allowedPreviewTypes`.
## version 4.3.1
**Date:** 28-Feb-2016
- (bug #577): Better label spacing for default browse icon.
- (bug #576): Correct previewCache initialization.
- (enh #575): Implement public method chaining and update docs for methods.
- (enh #574): Change naming convention for private / internal methods. Prepend internal plugin methods with underscore `_`.
- (enh #573): Update package.json to include `peerDependencies`.
- (enh #572): Add Finnish Translations.
- (enh #567): New properties and improved messages.
- (enh #565): Enhance progress bar display when upload is aborted or cancelled.
- (enh #560): Update French Translations.
- (enh #559): Allow custom error display styles (e.g. via bootstrap dialog) through these changes:
- added `msg` param in `fileerror`, `fileuploaderror`, and `filefoldererror` events.
- (enh #557): Enhance default file type parsing to intelligently not render unpreviewable content.
- (enh #555): Set default value for `removeFromPreviewOnError` to `false`.
- (enh #554): Update documentation and demos to include `webkitdirectory` for upload.
- (enh #514): Set default value for `removeFromPreviewOnError` to `false`.
## version 4.3.0
**Date:** 25-Jan-2016
- (enh #550): Correct Drag and drop issue with v4.2.9.
## version 4.2.9
**Date:** 22-Jan-2016
- (enh #545): Refactor code to deep extend options correctly.
- (enh #541): Improve default slug callback to accept most characters.
- (enh #534, enh #535): Ability to remove errored file thumbnails via `removeFromPreviewOnError`.
- (enh #531): Enhance/Fix typos of Arabic translation.
- (enh #530): Error alert box and preview thumbnail styling enhancements.
- (enh #523): Add new branch `sass` for `bootstrap-sass-official` support.
- (enh #521): Update Dutch Translations.
- (enh #489): Update documentation for `change` and `fileselect` events.
## version 4.2.8
**Date:** 18-Nov-2015
- (enh #494): Add Indonesian translations.
- (enh #490): Fix `zh-TW` translation `browseLabel` wording.
- (enh #488): Publish to npm.
- (bug #483): Clear and reset native input after uploading each single file thumbnail.
- (enh #481): Universal Module Definition for use with CommonJS, AMD or browser globals.
- (enh #474): Upload via button within each preview thumbnail skips last file for async uploads.
- (enh #477): Fix IE10 specific styling bug for file input block button.
- (enh #465): Add Català translations.
- (enh #462): Responsive buttons and new property `buttonLabelClass`.
- (enh #460): Update CSS selectors prefix to start with `file`.
- (enh #454): Update Turkish Translations.
- (enh #449): Add Arabic Translations.
- Implement package.json.
- Update bootstrap bower version to support only 3.x variants.
## version 4.2.7
**Date**: 13-Sep-2015
- (bug #442); Enhance the filenames parsing in the filestack and slug conversion.
- (enh #437): New property `defaultPreviewContent` to control a default preview.
- (enh #436): New property `showClose` and new layout template `close` to control close icon display.
- (enh #434): Added Japanese translations.
- (enh #433): Added new events for image handling.
- `fileimageloaded` (fires after each image is loaded in preview) - this is an existing event
- `fileimagesloaded` (fires after all images are loaded in preview)
- `fileimageresized` (fires after each image in preview is resized)
- `fileimagesresized` (fires after all images in preview are resized)
- `fileimageresizeerror` (fires when any image resize error is faced)
- (enh #432): Send slugged file names with the file blob when uploading via ajax.
- (enh #431): Add Danish locale translations.
- (bug #429): Fix for MS Edge bug that does not support drag and drop.
- (enh #428): Enhancements to asynchronous uploads when `showPreview` is `false`.
- (enh #427): Add image resizing capability before upload.
- (bug #420): Revamp file status progress and positioning updates for asynchronous upload.
## version 4.2.6
**Date**: 26-Aug-2015
- (enh #426): Enhancements to progress bar and display thumbnail specific progress.
- (enh #413): Various updates to translations.
- (enh #412): Enhancements to file upload cancellation.
- (enh #410): Better validation for IE 10 and below.
- (enh #405): Create traditional Chinese translations.
- (enh #401): Various enhancements to preview file thumbnails and error validations.
- (bug #398): Validate `data.errorkeys` more correctly.
- (enh #393): Minor enhancements to abort events before upload.
- (enh #392): Enhancements to allow using plugin functions directly.
- (enh #391): Thumbnail styling enhancements for flash, html, and object types.
- (enh #390): Thumbnail error display enhancements.
- (enh #389): New templates and styling enhancements to caption and main buttons.
- (enh #387): Reset `initialCaption` better when preview is cleared.
- (enh #385): Updated Russian & Ukranian translations.
- (enh #382): Better implementation for parsing text in `parseError` method.
- Update translations to include `fileActionSettings`.
- (enh #380, #381): Consistent styling for thumbnails.
- (enh #379): Combine more translatable settings and update locale js files.
- (enh #378): Ability to configure different icon thumbnails for preview files.
- (enh #377): Various enhancements to text preview.
- (enh #373): Default delete ajax request type to POST (instead of DELETE).
## version 4.2.5
**Date**: 27-Jul-2015
- (enh #372): Create new event `filepreajax`.
- (enh #371): Ability to replace files in the preview. New `autoReplace` property.
- (bug #370): Reverts #342 with better fix.
- (enh #362): Add Bulgarian translations.
## version 4.2.4
**Date**: 22-Jul-2015
- (enh #358): Implement event namespaces and enhance event handling process.
- (enh #357): Enhanced and better `refresh` method.
- (enh #356): Implement `destroy` method.
- (enh #351): Updates to Ukranian & Russian translations.
- (enh #342): Add ability to modify extra data before ajax upload in `beforeSend` events.
- (enh #340): Receive `previewId` and `index` in extra data for individual thumbnail uploads (ajax).
## version 4.2.3
**Date**: 21-Jun-2015
- (enh #336): Fixes to reset preview via `initUploadSuccess`.
## version 4.2.2
**Date**: 18-Jun-2015
- (enh #332): Bump nuget and bower package versions.
## version 4.2.1
**Date**: 15-Jun-2015
- (enh #330): Minor enhancements in validating preview and progress bar display.
- (enh #329): Message translation updates.
- (bug #328): Implement image dimension validations.
- New properties added to the plugin:
- `minImageWidth`
- `minImageHeight`
- `maxImageWidth`
- `maxImageHeight`
- `msgImageWidthSmall`
- `msgImageHeightSmall`
- `msgImageWidthLarge`
- `msgImageHeightLarge`
- (bug #327): More correct clearing of preview.
- (bug #315): Fix parsing of preview settings for default (other) preview.
- (bug #310): Set missing caption icon on error.
- (enh #309): Fixes for older browsers.
- (enh #308): Better check for `data.error` being empty.
- (enh #307): Allow setting thumbnail frame css class and attributes via `initialPreviewConfig`.
- (enh #305): Implement better cleanup of memory with `revokeObjectURL`.
- (enh #303): Validate only files to be dragged and dropped.
- (enh #302): Add Greek (el) translations.
- (enh #299): Enhancements for displaying uploaded file thumbnails.
- New property `showUploadedThumbs` that will display uploaded thumbnails until the remove/clear button is explicitly pressed.
- New event `filesuccessremove`. This will be triggered on removing the uploaded thumbnail using the thumbnail delete button. The event shares the following parameters:
- `id`: the HTML id attribute of the thumbnail container
The `event` can be set to return `false` to abort the thumbnail removal.
- (enh #297): Add Romanian translations.
- (enh #296): Fixed license identifiers in bower.json and composer.json.
- (bug #295): Validate `overwriteInitial` correctly for ajax uploads.
- (enh #287): Add Brazilian Portugese (pt-BR) translations.
- (enh #279, #280): Fixed error for failed response types.
## version 4.2.0
**Date**: 11-May-2015
- (enh #277): New `language` property to allow configuring multi lang widgets on same page.
- (enh #275): Add Czech & Slovakian translations.
## version 4.1.9
**Date**: 02-May-2015
- (bug #273): Reset caption correctly after all initial preview is deleted.
- (enh #271): Add Dutch translations.
- (enh #270): Add Portugese translations.
- (enh #269, #272): Add Turkish translations.
- (enh #264): Validate input type of file before initializing plugin.
- (enh #263): Enhance parsing of file preview thumbnails and actions.
- (enh #259): Add Polish translations.
- (enh #258): Enhance messages to include file plural and single.
- (bug #257): Fix upload single to replace thumbs correctly.
- (bug #253): Fix initial preview delete cache initialization.
- (enh #252): Enhance async batch completion.
- (enh #251): Add Italian localizations.
- (enh #250): Change default slug routine to allow umlauts in filenames.
- (bug #249): Fix error message content display.
- (enh #248): keep chinese characters in file caption.
- (bug #247): Correct mime types validation.
- (enh #245): Allow initial caption to be set without initial preview.
- (enh #244): Add Serbian translations.
- (bug #243): Correct sending of `deleteExtraData`.
- (enh #241): Enhancements to initial preview delete to perform validations before delete.
- (bug #238): Correct initialization of plugin variables when other than maxFileCount & maxFileSize.
- (enh #237): Better styling of file caption icon.
- (enh #232): Update docs to reflect updated bootstrap CDN domain.
## version 4.1.8
**Date**: 30-Mar-2015
- (enh #230): More correct initial preview delete reset.
- (enh #229): Created French translations.
- (enh #228): Created Thai translations.
- (enh #227): Created Ukranian translations and updated Russian translations.
- (enh #226): Create Spanish (Latin American) translations.
- (enh #225): Create Russian translations.
- (enh #222): Enhance to include dynamically replaceable thumbnail tags. Two new properties `previewThumbTags` and `initialPreviewThumbTags` will be available for configuration.
- (enh #218): Do not clear preview for ajaxuploads until remove button clicked.
- (enh #217): Ensure `filebatchselected` event is triggered after FileReader completes reading files selected.
- (enh #216): Add Hungarian Translations.
- (enh #215): Set default delete method REST compliant.
- (enh #213): Code cleanup, eliminate change event on clear and properly reset preview cache after ajax deletes.
- (enh #212): Revamp preview to use a new preview caching object.
- (enh #211): Add ability to show detailed server error stack via `showAjaxErrorDetails`.
- (enh #209): Better validation for folder drag and drop and auto-skip any dropped folders. New property `msgFoldersNotAllowed` added to the plugin to allow configuring the message shown. The event `filefoldererror` is triggered when a folder is dragged.
- (enh #206): Ability to add custom validation and trigger custom error to abort upload.
- This enhancement will enable you to add your additional custom validations to enhance the fileinput to be used for innumerous scenarios. It will allow an ability to return an associative object with any of the fileinput events (except the error events and the `filebatchuploadsuccess` or `filebatchuploadcomplete`) e.g. `change`, `fileselect`, `filepreupload`, `filebatchpreupload` etc. The object can return the following keys:
- `message`: _string_, the validation error message to be displayed before upload. If this is set the plugin will automatically abort the upload whenever called and display this as an error message. You can use this property for example to read a file and perform your own custom validation.
- `data`: _object_, an optional associative array of additional data that you can pass for usage later.
- You can get this data by reading `abortData` in the parameters for the new `filecustomerror` event. This new event will be triggered during upload, when you have triggered an abort from any of the other events.
- (enh #205): Allow to auto set initialPreview within `filebatchuploadcomplete` & `filebatchuploadsuccess`.
- Allows you to auto define the `initialPreview` and `initialPreviewConfig` after an ajax upload by returning these within the data object from your ajax response on `fileuploaded` & `filebatchuploadsuccess`.
- (enh #204): New properties `fileMinCount` and `msgFilesTooLess` (useful to make file input mandatory).
- The `fileMinCount` property will allow to set the minimum file count needed before triggering upload. It will work for both `ajax` uploads and `normal form based submission`.
- This will enable you to set the file input to be a mandatory / required input. (e.g. `fileMinCount` = `1`). The `msgFilesTooLess` will be displayed and error raised.
- If `fileMinCount` is set to `0` it will be treated as files are optional and no error will be triggered.
- (enh #203): Enhancements and revamp of all error events.
- fileerror
- fileuploaderror
- filebatchuploaderror
- filedeleteerror
- filefoldererror (new event - see #209)
- filecustomerror (new event - see #206)
- (enh #202): Ability to add Translations / Locales.
- Identify and group all messages that need to be translated configurable via `$.fn.fileinput.locales['<lang-code>']`
- Set default english messages configuration `$.fn.fileinput.locales['en']` within the plugin core code
- Individual locale files need to be created as separate js files e.g. `<lang>.js`
- (bug #193): Better validation for triggering `filebatchuploadcomplete` on async batch upload completion.
- (enh #192): Ability to extend and add one's own ajax settings.
- New property `ajaxDeleteSettings` to help extend and add to delete ajax settings.
- `ajaxSettings` to help extend and add upload ajax settings
- (enh #189): Reinitialize initial preview delete events correctly on file selection.
- (enh #188): Clear fileinput more correctly for all browsers when initialPreview is set enhancement
- (enh #187): New property `previewFileIcon` to configure file icon shown in preview for unreadable file types.
- (enh #184): Fix documentation for filedeleted event.
- (enh #183): Delete extra data enhancements.
- (enh #181): Fix change event triggered for IE 11 when file input is set to empty.
- (enh #179): Validate and cast `maxFileSize` and `maxFileCount` to numeric - even if they have been setup as a string.
- (enh #178): Updated README for cancel button configuration.
- (enh #177): Trigger filebatchpreupload if showPreview is `false`.
- (enh #176): Wrong file in README installation steps fixed.
- (enh #175): Ability to override delete extra data in `initialPreviewConfig`.
- (enh #174): New `deleteUrl` property.
- (enh #167, #173): New `deleteExtraData` property for ajax deletions.
- (bug #171): Fix typo for files validation.
## version 4.1.7
**Date**: 13-Feb-2015
- Relocate sample files from examples directory to [bootstrap-fileinput-samples](https://github.com/kartik-v/bootstrap-fileinput-samples) repo.
- Set copyright year to current.
- (enh #162): New property ajaxSettings to allow configuring ajax params.
- (bug #160): Correct documentation typo for usage.
- (bug #159): Ensure filestack is passed correctly with `outData` for events.
- (enh #157): Upload progress bar styling enhancements.
- Allow upload progress bar css class to be configurable
- Create and allow two different styles/css classes for progress bar
- `progressClass`: styling for progress bar when upload is in process
- `progressCompleteClass`: styling for progress bar when upload is complete
- (enh #156): Fix reset of file stack for various upload modes (single, batch async and batch sync).
- (enh #155): Allow display of long file names without spaces/word breaks.
- (enh #154): Code cleanup and restructure for JS lint changes (using JSHint Code cleanup library).
- (enh #153): Improve error handler for trapping FileReader security exceptions and new property `msgFileSecured` will display the security exception message.
- (enh #152): New faster `replaceAll` method instead of regexp parsing to replace tags in templates.
- (enh #151): New `filebatchselected` event triggered after every batch of files are selected.
- (enh #149): Custom tags support for layoutTemplates and previewTemplates (new properties `customLayoutTags` and `customPreviewTags` included).
## version 4.1.6
**Date:** 20-Jan-2015
- (enh #139): Reset file stack correctly on ajax upload completion.
- (enh #137): Trigger new events - `filedisabled` and `fileenabled`.
- (enh #136):Create new upload method that can be called externally.
- (enh #131): Allow empty values in extra data to be submitted.
## version 4.1.5
**Date:** 12-Jan-2015
- (enh #121): Animate progress bars by default for upload progress.
- (bug #120): Correct multiple iterations of upload for async batch uploads.
- (enh #119): Enhance caption to include ellipsis for long file names
- (enh #116): Hide remove and upload buttons until unless file(s) are selected.
- (enh #115): Autosize file caption responsively on window resize.
- (bug #114): Prevent multiple file selection when using single file configuration.
- (bug #113): Icon layout template undefined when using user template.
- (bug #112): Fix undefined filestack for individual file upload within preview.
- (enh #108): Add nuget package.
- (enh #106): Enhance events for ajax requests and enable cancelling sync uploads
- (enh #105): Expose current jqXHR object on ajax events.
- (bug #104): Fix formdata not defined.
- (bug #100, #101): Set right params for error thrown during reading of files.
## version 4.1.4
**Date:** 26-Dec-2014
- (bug #97): Reset events correctly with plugin refresh method.
- (bug #95): Correct event off for drag & drop in plugin refresh method.
- Code cleanup with reusable methods for event raising and outData generation.
- (enh #93): Better styling of file upload icon indicators in thumbnails.
- (enh #92): Realign event triggering timing for batch uploads to ensure outData is available.
- (enh #91): Pass FileReader instance with outData in events.
- (enh #90): New event `filebatchpreupload` for both synchronous and asynchronous batch uploads.
- (enh #89): New `otherActionButtons` to allow adding customized initial preview content actions.
- (enh #88): Allow uploadExtraData to be passed as a callback.
## version 4.1.3
**Date:** 20-Dec-2014
- (enh #87): More correct progress indicator percentage for asynchronous upload.
- `filepreupload`
- `fileuploaded`
- `fileuploaderror`
- `filebatchuploaderror`
- `filebatchuploadsuccess`
- `filebatchuploadcomplete`
- (enh #86): Disable thumbnail action buttons when upload is in progress.
- (enh #85): Combine output data as a single object, that is sent for various file upload events.
## version 4.1.2
**Date:** 19-Dec-2014
- (enh #81): Add new events:
- `filebatchuploadsuccess`
- `filebatchuploadcomplete`
- (enh #80): Allow access to `uploadExtraData` and `responseData` to following events
- `filepreupload`
- `fileuploaded`
- `fileuploaderror`
- `filebatchuploaderror`
- `filebatchuploadsuccess`
- `filebatchuploadcomplete`
- `filelock`
- `fileunlock`
## version 4.1.1
**Date:** 18-Dec-2014
- (bug #78): Set uploadExtraData parameters to be correctly sent via POST.
- (bug #76): Update filestack when `showPreview` is false.
- (enh #58): Set a new property `textEncoding` for reading the text files with right encoding.
## version 4.1.0
**Date:** 17-Dec-2014
- (enh #75): Better validation of browser support for drag and drop.
- (enh #74): Enhancements to file validation errors for both FORM and AJAX uploads.
- For normal Form based uploads automatically disable the Upload button
- Display a separate error styled thumbnail for the file that faced the validation error.
- Reset errors correctly to overwrite files with a new change or drag/drop
## version 4.0.0
**Date:** 14-Dec-2014
- (bug #72): Fix bootstrap ## version constraint.
- Renamed `initialDelimiter` to `initialPreviewDelimiter`
- (enh #70): Version 4.0 enhancements.
### Version 4.0 Features
- Add functionality for AJAX based UPLOAD using HTML5 FormData (most modern browsers support it). Will degrade to normal Form Based File submission if this is not supported.
- To use AJAX Upload, the `uploadUrl` property is MANDATORY and must be set.
- Enhance plugin to now allow files to be added, appended, removed (based on FEEDBACK from many). Thus one can append files to preview.
- New DRAG & DROP zone available in preview to drag and drop files and append.
- Delete or upload files one by one OR in batch.
- If `showPreview` is set to false, or uploadUrl is not supported plugin will degrade to normal form based upload.
- Configurable indicators for file awaiting upload, file successfully uploaded, files errored in upload.
- Ability to add extra form data with ajax based uploads.
- Upload progress bar and individual thumbnail upload indicators.
- Ability to cancel and abort ongoing AJAX uploads.
- Templates have been revamped and enhanced for each file type.
- Ensure plugin is still lean in size and optimized for performance inspite of the above features by optimally utilizing HTML5 & jquery features only.
### New properties added
- `showCancel`: shows a cancel button for aborting ajax uploads (defaults to `true`).
- `cancelLabel`: label for the cancel button.
- `cancelTitle`: title for the cancel button on hover.
- `cancelIcon`: icon markup for the cancel button
- `cancelClass`: CSS class for the cancel button.
- `removeTitle`: title for the remove button on hover.
- `uploadTitle`: title for the upload button on hover.
- `uploadUrl`: the url that will be used to process AJAX based uploads (using FormData XHR2).
- `uploadExtraData`: extra data that will be passed as data to the url/AJAX server call via POST
- `uploadAsync`: whether the batch upload of multiple files will be asynchronous/in parallel. Defaults to `true`.
- `initialPreviewShowDelete`: shows a delete button for each initial preview content's thumbnail (defaults to `true`).
- `initialPreviewConfig`: configuration for setting up each `initialPreviewContent` item (associative array/object)
- `caption`: The caption or filename to display for each initial preview item content.
- `width`: The CSS width of the image/content displayed.
- `url`: The URL for deleting the image/content via AJAX (shown only for `initialPreviewContent`).
- `key`: The key that will be passed to the URL via POST (shown only for `initialPreviewContent`).
- `dropZoneEnabled`: Enable a drag and drop zone for dragging files and is available only for ajax based uploads (defaults to `true`).
- `dropZoneTitle`: Title to be displayed in the drag & drop zone.
- `dropZoneTitleClass`: CSS class for the drag & drop zone title.
- `fileActionSettings`: configuration for setting up actions for newly selected file thumbnails in the preview (associative array/object)
- `removeIcon`: icon for remove button to be displayed in each file thumbnail.
- `removeClass`: CSS class for the remove button in each file thumbnail.
- `removeTitle`: title for remove button in each file thumbnail.
- `uploadIcon`: icon for upload button to be displayed in each file thumbnail.
- `uploadClass`: CSS class for the remove button in each file thumbnail.
- `uploadTitle`: title for remove button in each file thumbnail.
- `indicatorNew`: an indicator (HTML markup) for new pending upload displayed in each file thumbnail.
- `indicatorSuccess`: an indicator (HTML markup) for successful upload displayed in each file thumbnail.
- `indicatorError`: an indicator (HTML markup) for error in upload displayed in each file thumbnail.
- `indicatorLoading`: an indicator (HTML markup) for ongoing upload displayed in each file thumbnail.
- `indicatorNewTitle`: title to display on hover of indicator for new pending upload in each file thumbnail.
- `indicatorSuccessTitle`: title to display on hover of indicator for successful in each file thumbnail.
- `indicatorErrorTitle`: title to display on hover of indicator for error in upload in each file thumbnail.
- `indicatorLoadingTitle`: title to display on hover of indicator for ongoing upload in each file thumbnail.
## version 3.0.0
**Date:** 08-Dec-2014
- (bug #68): Fix refresh method of the fileinput to trigger change correctly.
- (enh #67): Enhance support for IE browsers
- Add specific validations for parsing IE versions rightly
- Enhance plugin to extend styling support to IE 9 (with the limitation that IE 9 does not support HTML 5 features like multiple file upload)
- Fix clearing of file input rightly for IE 9 & IE 10
- Degrade plugin automatically to a native file input for older IE versions
- Prevent change method firing twice when file is cleared after error is encountered in IE 11.
- (enh #65): Correct validation of `refreshPreview` using `updateFileDetails`.
- (enh #64): Add ability to override the slug method with a `slugCallback` property.
- (bug #61): Refresh preview to show errors correctly after each file is validated.
- (enh #60): Enhance upload button for disable/enable when used with `<a>` tag.
## version 2.9.0
**Date:** 23-Nov-2014
- (enh #56): Trigger new events `filebrowse` and `fileselectnone`.
- (enh #55): Clear the files when file browse dialog is cancelled only if the browser clears the native file input.
- (enh #53): Validations and events for right reset of files when browse button is clicked.
## version 2.8.0
**Date:** 13-Nov-2014
- (enh #52): Raise new `fileimageloaded` event.
- (enh #51): Autosize preview images when they exceed the size of the preview container.
- (enh #50): Dynamically auto size file captions for long file names exceeding container width. New property `autoFitCaption`
is added which defaults to `true`. When this is `true` the plugin will auto fit caption text within the container dynamically
and responsively based on window size.
## version 2.7.0
**Date:** 11-Nov-2014
- (enh #49): Set image preview dimensions to auto fit and center
- (enh #48): Trigger `fileloaded` event when `showPreview` is `false`.
- Set release to stable in composer.json.
## version 2.6.0
**Date:** 15-Oct-2014
- (bug #44): Browser IE10 hangs on file clear.
- (bug #43): Validate special characters in filename before generating caption.
- (enh #42): Enhance plugin to configure the `elErrorContainer` for displaying validation errors.
- Templatize errorContainer for display within the preview window.
- (bug #40): More correct fix for IE (ver < 11) inability to clear fileinput values.
## version 2.5.0
**Date:** 09-Oct-2014
- (bug #40): Fix IE (ver < 11) inability to clear fileinput values.
- (bug #39): HTML encode caption hover title.
- (enh #38): Highlight error CSS in file caption on validation error.
- (bug #37): HTML encode text content for preview in modal.
- (enh #36): New feature. Validation routine for checking allowed file types and extensions.
## version 2.4.0
**Date:** 20-Sep-2014
- (enh #33): Better text format validation and correct modal preview.
- (enh #32): Added checks for file api support.
- (enh #31): Better control and configuration of preview templates.
- (enh #30): Enhanced generic support for more preview formats (audio, video, html, flash, and other objects).
> **Note:** There are BC Breaking Changes with release v2.4.0.
With release v2.4.0, the plugin has been revamped to support and configure a wide variety of file formats for preview. This may break some
backward compatibility (BC) for older versions that use custom templates.
The following are the major changes with release v2.4.0:
- Plugin has been revamped to build preview intelligence based on various file preview types. The inbuilt file support types are categorized as
`image`, `text`, `html`, `video`, `audio`, `flash`, `object`, and `other`.
- `allowedPreviewTypes`: You can now configure which all file types are allowed to be shown as a preview. This defaults to `['image', 'html', 'text', 'video', 'audio', 'flash', 'object']`.
Thus all file types are treated as an object to preview by default. For exampleTo preview only `image` and `video`, you can set this to `['image', 'video']`.
- `allowedPreviewMimeTypes`: In addition to `allowedPreviewTypes`, you can also control which all mime types can be displayed for preview. This defaults to null,
meaning all mime types are supported.
- `layoutTemplates`: Allows you to configure all layout template settings within one property. The layout objects that can be configured are: `main1`, `main2`,
`preview`, `caption`, and `modal`.
- `previewTemplates`: All preview templates for **each preview type** have been combined into one property, instead of separate templates for image, text etc.
The keys are the formats as set in `allowedPreviewTypes` and values are the templates used for previewing. There are default prebuilt templates for each
preview file type (`generic`, `image`, `text`, `html`, `video`, `audio`, `flash`, `object`, and `other`). The `generic` template is used only for displaying
`initialPreview` content using direct markup.
- `previewSettings`: Allows you to configure width and height for each preview image type. The plugin has default widths and heights predefined for each type i.e
`image`, `text`, `html`, `video`, `audio`, `flash`, and `object`.
- `fileTypeSettings`: Allows you to configure and identify each preview file type using a callback. The plugin has default callbacks predefined to identify each type i.e
`image`, `text`, `html`, `video`, `audio`, `flash`, and `object`.
- Replacing tags within templates has been enhanced. With this release it will automatically check for multiple occurrences of each tag to replace within a template string.
> NOTE: Flash preview will require Shockwave flash to be installed and supported by the client browser. The flash preview currently works successfully with webkit browsers only. Video & Audio formats are however supported by all modern browsers
that support the HTML5 `video`/`audio` tags. Note that browsers have limited number of video/audio formats supported by the HTML5 video element (e.g. mp4, webm, ogg, mp3, wav). The size of video files are recommended to be small (to be controlled
through `maxFileSize` property) so that it does not affect the preview performance. You can copy a few files from the `examples` directory of this plugin repo, to test a few examples of flash and video files.
## version 2.3.0
**Date:** 19-Sep-2014
- Better replacement of tags in templates. Replaces all tag occurences with this new release.
- (enh #28, #29): Added support for previewing flash and video files.
## version 2.2.0
**Date:** 19-Aug-2014
- (enh #25): Graceful degrade to normal file input for older browsers (including previous versions of Safari).
- (enh #24): Update readAsBinaryString to readAsArrayBuffer
## version 2.1.0
**Date:** 11-Aug-2014
- Other minor bug fixes.
- (enh #22): Enhance file caption message display for validation errors.
- (enh #21): Enhance loading progress message and message templates for multiple file uploads.
- (enh #21): Enhance multiple file upload and preview performance using setTimeout.
- (enh #20): Fix `fileloaded` event to increment `previewId` and enhance to return file index.
- (enh #19): Synchronize preview with file browse dialog behavior, when cancel button is pressed in file dialog window.
- (enh #18): Better validation for older browsers (not supporting HTML5) to degrade to normal file input.
- Enhanced plugin to improve browser performance when loading and previewing multiple image files.
- New configurable error messages added: `msgFilesTooMany`, `msgFileNotFound`, `msgFileNotReadable`, `msgFilePreviewAborted`, and `msgFilePreviewError`.
- New configuration property added: `maxFilesCount`. Defaults to `0` which means unlimited.
- (enh #16, #17): Added exception handling for trapping FileReader API errors
## version 2.0.0
**Date:** 25-Jul-2014
- Added delimiter option for `initialPreview` to pass multiple content delimited as a string.
- Automatic scale images for preview, when images are too wide to fit in container.
- Correct calculation of files selected when `initPreview` is false.
- Make caption text configurable through a new parameter `msgSelected`.
- Enhanced configurable templates for previewing image, text, and other files (and a generic template).
- New plugin methods added: `disable`, `enable`
- New plugin events added: `fileerror`, `fileloaded`, `filecleared`.
- (enh #15): Enhanced validation of file size through `maxFileSize` configuration.
- (enh #12, #13, #14): Various enhancements and fixes.
## version 1.9.0
**Date:** 21-Jul-2014
- (enh #10): Ability to display initial caption, when initialPreview is false.
- (enh #9): Enhanced caption template and styling for captions to prevent overflow of long file names out of the caption container.
## version 1.8.0
**Date:** 15-Jul-2014
- (enh #9): Enhanced caption template and styling for captions to prevent overflow of long file names out of the caption container.
## version 1.7.0
**Date:** 02-Jul-2014
- The plugin now offers an additional `overwriteInitial` option. This is by default set to `true`, whereby, any `initialPreview`
content set will be overwritten, when new file is uploaded or when files are cleared. Setting it to `false` will help displaying
a saved image or file from database always - useful especially when using the `multiple` file upload feature.
## version 1.6.0
**Date:** 03-Jun-2014
- The plugin now offers an additional `refresh` method. This enables you to dynamically change element attributes or plugin options
at runtime and refresh the widget.
## version 1.5.0
**Date:** 23-May-2014
- The plugin now offers an option to display initial preview of images/text/other files. This is useful
for record update scenarios. This can be a single image/file or an array of images/files.
- Extending to the above feature, the plugin also allows you to set a preview caption for the initial preview field.
- The following element identifiers need to be passed as a string like '#id' instead of a JQuery object:
- elCaptionContainer
- elCaptionText
- elPreviewContainer
- elPreviewImage
- elPreviewStatus
## version 1.0.0
**Date:** 01-Jan-2014
Initial release. The following features are included in this release:
- The plugin will convert a simple HTML file input to an advanced file picker control. Will help fallback to a file input for browsers not supporting JQuery or Javascript.
- The file input consists of the following three sections with options and templates to control the display:
- file caption section: to display a brief information of the file(s) selected
- file action buttons section: to browse, remove, and upload files.
- file preview section: to display the selected files on client for preview (supports images and text file types). Other file types will be displayed as normal thumbnails.
- The plugin automatically converts an input with `type = file` to an advanced file picker input if you set its `class = file`. All options to the input can be passed as HTML5 `data` attributes.
- Ability to select and preview multiple files. Uses HTML 5 File reader API to read and preview files. Displays the progress of files being being loaded onto the preview zone, in case many files are chosen.
- Offers predefined templates and CSS classes which can be changed to style your file-input display as per your needs.
- Option to show/hide any or all of the following:
- caption section
- preview section
- upload button
- remove button
- Customise the location of the target container elements to display the entire plugin, the caption container, the caption text, the preview container, preview image, and preview status.
- For text file previews, autowrap the text to the thumbnail width, and show a wrap indicator link to display complete text on hover. You can customize the wrap indicator (which defaults to &hellip;).
- Customise the messages for preview, progress, and files selected.
- Upload action defaults to form submit. Supports an upload route/server action parameter for custom ajax based upload.
- Triggers JQuery events for advanced development. Events currently available are `filereset` and `fileclear`.
- Disabled and readonly file input support.
- Size of the entire plugin is less than 11KB (about 9KB for the minified JS and 2KB for the minified CSS).

28
js/file/LICENSE.md Normal file
View File

@@ -0,0 +1,28 @@
Copyright (c) 2014 - 2017, Kartik Visweswaran
Krajee.com
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
* Neither the names of Kartik Visweswaran or Krajee nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

116
js/file/README.md Normal file
View File

@@ -0,0 +1,116 @@
bootstrap-fileinput
===================
[![Bower version](https://badge.fury.io/bo/bootstrap-fileinput.svg)](http://badge.fury.io/bo/bootstrap-fileinput)
[![Latest Stable Version](https://poser.pugx.org/kartik-v/bootstrap-fileinput/v/stable)](https://packagist.org/packages/kartik-v/bootstrap-fileinput)
[![License](https://poser.pugx.org/kartik-v/bootstrap-fileinput/license)](https://packagist.org/packages/kartik-v/bootstrap-fileinput)
[![Packagist Downloads](https://poser.pugx.org/kartik-v/bootstrap-fileinput/downloads)](https://packagist.org/packages/kartik-v/bootstrap-fileinput)
[![Monthly Downloads](https://poser.pugx.org/kartik-v/bootstrap-fileinput/d/monthly)](https://packagist.org/packages/kartik-v/bootstrap-fileinput)
An enhanced HTML 5 file input for Bootstrap 3.x with file preview for various files, offers multiple selection, and more. The plugin allows you a simple way to setup an advanced file picker/upload control built to work specially with Bootstrap CSS3 styles. It enhances the file input functionality further, by offering support to preview a wide variety of files i.e. images, text, html, video, audio, flash, and objects. In addition, it includes AJAX based uploads, dragging &amp; dropping files, viewing upload progress, and selectively previewing, adding, or deleting files.
![Krajee Default Theme](https://lh3.googleusercontent.com/-e_E3qNVdEMg/WKvYxZ3W-CI/AAAAAAAAAWs/KJIdNxDpLR8pkqiflpmMAS3KMFkQIab3QCJoC/w530-h430-p-rw/BootstrapFileInput-01.jpg)
> NOTE: An alternative new [Krajee Explorer Theme](http://plugins.krajee.com/file-krajee-explorer-demo) (preview shown below) for `bootstrap-fileinput` has been released and available since v4.3.7. For more theming options and suggestions refer the [theming demos](http://plugins.krajee.com/file-theme-demo).
![Krajee Explorer Theme](https://lh3.googleusercontent.com/-cQpItvVFhjY/WKvb0ARaI-I/AAAAAAAAAXA/moGMDgujK8EnYEyDnBReRgt_xw-V4JQ8wCJoC/w530-h318-p-rw/BootstrapFileInput-02.jpg)
## Documentation and Demo
View the [plugin documentation](http://plugins.krajee.com/file-input) and [plugin demos](http://plugins.krajee.com/file-input/demo) at Krajee JQuery plugins.
## Pre-requisites
1. [Bootstrap 3.x](http://getbootstrap.com/)
2. Latest [JQuery](http://jquery.com/)
3. Most modern browsers supporting HTML5 (inputs and FileReader API) including CSS3 & JQuery. For Internet Explorer, one must use IE versions 10 and above. IE9 and below will work as a normal file input, and will not support multiple file selection or the HTML 5 FileReader API.
4. With release 4.0, AJAX uploads are supported. AJAX uploads require that the browser support HTML5 FormData and XHR2 (XMLHttpRequest 2). Most modern browsers support FormData and XHR2. The plugin will automatically degrade to normal form based submission for browsers not supporting AJAX uploads
> NOTE:
> - The latest version of the plugin is v4.4.3 (under development). Refer the [CHANGE LOG](https://github.com/kartik-v/bootstrap-fileinput/blob/master/CHANGE.md) for details.
> - You can use the [sass branch](https://github.com/kartik-v/bootstrap-fileinput/tree/sass) for installation using `bootstrap-sass` dependency.
The [master branch](https://github.com/kartik-v/bootstrap-fileinput/tree/master) can be used for installation using plain `bootstrap` dependency.
## Installation
### Using Bower
You can use the `bower` package manager to install. Run:
bower install bootstrap-fileinput
### Using Composer
You can use the `composer` package manager to install. Either run:
$ php composer.phar require kartik-v/bootstrap-fileinput "@dev"
or add:
"kartik-v/bootstrap-fileinput": "@dev"
to your composer.json file
### Manual Install
You can also manually install the plugin easily to your project. Just download the source [ZIP](https://github.com/kartik-v/bootstrap-fileinput/zipball/master) or [TAR ball](https://github.com/kartik-v/bootstrap-fileinput/tarball/master) and extract the plugin assets (css and js folders) into your project.
## Usage
Step 1: Load the following assets in your header.
```html
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="path/to/css/fileinput.min.css" media="all" rel="stylesheet" type="text/css" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<!-- piexif.min.js is only needed if you wish to resize images before upload to restore exif data.
This must be loaded before fileinput.min.js -->
<script src="path/to/js/plugins/piexif.min.js" type="text/javascript"></script>
<!-- sortable.min.js is only needed if you wish to sort / rearrange files in initial preview.
This must be loaded before fileinput.min.js -->
<script src="path/to/js/plugins/sortable.min.js" type="text/javascript"></script>
<!-- purify.min.js is only needed if you wish to purify HTML content in your preview for HTML files.
This must be loaded before fileinput.min.js -->
<script src="path/to/js/plugins/purify.min.js" type="text/javascript"></script>
<!-- the main fileinput plugin file -->
<script src="path/to/js/fileinput.min.js"></script>
<!-- bootstrap.js below is needed if you wish to zoom and view file content
in a larger detailed modal dialog -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
<!-- optionally if you need a theme like font awesome theme you can include
it as mentioned below -->
<script src="path/to/themes/fa/theme.js"></script>
<!-- optionally if you need translation for your language then include
locale file as mentioned below -->
<script src="path/to/js/locales/<lang>.js"></script>
```
If you noticed, you need to load the `jquery.min.js` and `bootstrap.min.css` in addition to the `fileinput.min.css` and `fileinput.min.js`. The theme file `themes/fa/theme.js` can be optionally included for the font awesome icons styling. The locale file `<lang>.js` can be optionally included for translating for your language if needed.
**Optional Dependent Plugins**
- The `piexif.min.js` file is the source for the [Piexifjs plugin by hMatoba](https://github.com/hMatoba/piexifjs). It is required to be loaded before `fileinput.min.js` if you wish to use the image resize feature of the **bootstrap-fileinput** plugin.
- The `sortable.min.js` file is the source for the [Sortable plugin by rubaxa](https://github.com/rubaxa/Sortable). It is required to be loaded before `fileinput.min.js` if you wish to sort the thumbnails in the initial preview.
- The `purify.min.js` file is the source for the [DomPurify plugin by cure53](https://github.com/cure53/DOMPurify). It is required to be loaded before `fileinput.min.js` if you wish to purify your HTML for HTML content preview.
For ease of access, the sources for the above plugins are included in the `js/plugins` folder of this project repository.
Step 2: Initialize the plugin on your page. For example,
```js
// initialize with defaults
$("#input-id").fileinput();
// with plugin options
$("#input-id").fileinput({'showUpload':false, 'previewFileType':'any'});
```
The `#input-id` is the identifier for the input (e.g. `type = file`) on your page, which is hidden automatically by the plugin.
Alternatively, you can directly call the plugin options by setting data attributes to your input field.
```html
<input id="input-id" type="file" class="file" data-preview-file-type="text" >
```
## License
**bootstrap-fileinput** is released under the BSD 3-Clause License. See the bundled `LICENSE.md` for details.

40
js/file/bower.json Normal file
View File

@@ -0,0 +1,40 @@
{
"name": "bootstrap-fileinput",
"version": "4.4.3",
"homepage": "https://github.com/kartik-v/bootstrap-fileinput",
"authors": [
"Kartik Visweswaran <kartikv2@gmail.com>"
],
"description": "An enhanced HTML 5 file input for Bootstrap 3.x with file preview, multiple selection, ajax uploads, and more features.",
"main": [
"./css/fileinput.min.css",
"./js/fileinput.min.js"
],
"keywords": [
"bootstrap",
"file",
"input",
"preview",
"image",
"upload",
"ajax",
"multiple",
"delete",
"progress",
"gallery"
],
"dependencies": {
"jquery": ">= 1.9.0",
"bootstrap": "~3"
},
"license": "BSD-3-Clause",
"ignore": [
"**/.*",
"node_modules",
"composer.json",
"examples",
"bower_components",
"test",
"tests"
]
}

24
js/file/composer.json Normal file
View File

@@ -0,0 +1,24 @@
{
"name": "kartik-v/bootstrap-fileinput",
"description": "An enhanced HTML 5 file input for Bootstrap 3.x with features for file preview for many file types, multiple selection, ajax uploads, and more.",
"keywords": ["bootstrap", "jquery", "file", "input", "preview", "upload", "image", "multiple", "ajax", "delete", "progress"],
"homepage": "https://github.com/kartik-v/bootstrap-fileinput",
"license": "BSD-3-Clause",
"authors": [
{
"name": "Kartik Visweswaran",
"email": "kartikv2@gmail.com",
"homepage": "http://www.krajee.com/"
}
],
"autoload": {
"psr-4": {
"kartik\\plugins\\fileinput\\": ""
}
},
"extra": {
"branch-alias": {
"dev-master": "4.4.x-dev"
}
}
}

View File

@@ -0,0 +1,121 @@
/*!
* bootstrap-fileinput v4.4.3
* http://plugins.krajee.com/file-input
*
* Krajee RTL (Right To Left) default styling for bootstrap-fileinput.
*
* Author: Kartik Visweswaran
* Copyright: 2014 - 2017, Kartik Visweswaran, Krajee.com
*
* Licensed under the BSD 3-Clause
* https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
*/
.kv-rtl {
direction: rtl;
}
.kv-rtl .close {
float: left;
}
.kv-rtl .input-group-btn:last-child >.btn {
border-top-right-radius: 0 !important;
border-bottom-right-radius: 0 !important;
border-top-left-radius: 4px !important;
border-bottom-left-radius: 4px !important;
}
.kv-rtl .input-group .form-control:first-child {
border-top-right-radius: 4px !important;
border-bottom-right-radius: 4px !important;
border-top-left-radius: 0px !important;
border-bottom-left-radius: 0px !important;
}
.kv-rtl .file-loading {
right: auto;
left: 0;
text-align: left;
}
.kv-rtl .btn-file input[type=file] {
right: auto;
left: 0;
text-align: left;
background: none repeat scroll 100% 0 transparent;
}
.kv-rtl .file-zoom-dialog {
text-align: right;
}
.kv-rtl .file-error-message pre,
.kv-rtl .file-error-message ul {
text-align: right;
}
.kv-rtl .krajee-default.file-preview-frame {
box-shadow: -1px 1px 5px 0 #a2958a;
float: right;
}
.kv-rtl .krajee-default.file-preview-frame:not(.file-preview-error):hover {
box-shadow: -3px 3px 5px 0 #333;
}
.kv-rtl .krajee-default .file-actions,
.kv-rtl .krajee-default .file-other-error {
text-align: right;
}
.kv-rtl .krajee-default .file-footer-buttons {
float: left;
}
.kv-rtl .krajee-default .file-drag-handle,
.kv-rtl .krajee-default .file-upload-indicator {
left: auto;
right: -6px;
padding: 8px 3px 1px 8px;
border-top-left-radius: 24px;
border-top-right-radius: 0;
}
.kv-rtl .file-drop-zone {
margin: 12px 12px 12px 15px;
}
.kv-rtl .floating-buttons {
left: 10px;
right: auto;
}
.kv-rtl .kv-zoom-actions .btn,
.kv-rtl .floating-buttons .btn {
margin-right: 3px;
}
.kv-rtl .btn-prev {
right: 1px;
left: auto;
}
.kv-rtl .btn-next {
left: 1px;
right: auto;
}
.kv-rtl .pull-right {
float: left!important;
}
.kv-rtl .pull-left {
float: right!important;
}
.kv-rtl .modal-title {
float: right;
direction: ltr;
}

12
js/file/css/fileinput-rtl.min.css vendored Normal file
View File

@@ -0,0 +1,12 @@
/*!
* bootstrap-fileinput v4.4.3
* http://plugins.krajee.com/file-input
*
* Krajee RTL (Right To Left) default styling for bootstrap-fileinput.
*
* Author: Kartik Visweswaran
* Copyright: 2014 - 2017, Kartik Visweswaran, Krajee.com
*
* Licensed under the BSD 3-Clause
* https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
*/.kv-rtl{direction:rtl}.kv-rtl .close{float:left}.kv-rtl .input-group-btn:last-child>.btn{border-radius:4px 0 0 4px!important}.kv-rtl .input-group .form-control:first-child{border-radius:0 4px 4px 0!important}.kv-rtl .file-loading{right:auto;left:0;text-align:left}.kv-rtl .btn-file input[type=file]{right:auto;left:0;text-align:left;background:100% 0 none}.kv-rtl .file-error-message pre,.kv-rtl .file-error-message ul,.kv-rtl .file-zoom-dialog,.kv-rtl .krajee-default .file-actions,.kv-rtl .krajee-default .file-other-error{text-align:right}.kv-rtl .krajee-default.file-preview-frame{box-shadow:-1px 1px 5px 0 #a2958a;float:right}.kv-rtl .krajee-default.file-preview-frame:not(.file-preview-error):hover{box-shadow:-3px 3px 5px 0 #333}.kv-rtl .krajee-default .file-footer-buttons{float:left}.kv-rtl .krajee-default .file-drag-handle,.kv-rtl .krajee-default .file-upload-indicator{left:auto;right:-6px;padding:8px 3px 1px 8px;border-top-left-radius:24px;border-top-right-radius:0}.kv-rtl .file-drop-zone{margin:12px 12px 12px 15px}.kv-rtl .floating-buttons{left:10px;right:auto}.kv-rtl .floating-buttons .btn,.kv-rtl .kv-zoom-actions .btn{margin-right:3px}.kv-rtl .btn-prev{right:1px;left:auto}.kv-rtl .btn-next{left:1px;right:auto}.kv-rtl .pull-right{float:left!important}.kv-rtl .pull-left{float:right!important}.kv-rtl .modal-title{float:right;direction:ltr}

524
js/file/css/fileinput.css Normal file
View File

@@ -0,0 +1,524 @@
/*!
* bootstrap-fileinput v4.4.3
* http://plugins.krajee.com/file-input
*
* Krajee default styling for bootstrap-fileinput.
*
* Author: Kartik Visweswaran
* Copyright: 2014 - 2017, Kartik Visweswaran, Krajee.com
*
* Licensed under the BSD 3-Clause
* https://github.com/kartik-v/bootstrap-fileinput/blob/master/LICENSE.md
*/
.file-loading {
top: 0;
right: 0;
width: 25px;
height: 25px;
font-size: 999px;
text-align: right;
color: #fff;
background: transparent url('../img/loading.gif') top left no-repeat;
border: none;
}
.file-object {
margin: 0 0 -5px 0;
padding: 0;
}
.btn-file {
position: relative;
overflow: hidden;
}
.btn-file input[type=file] {
position: absolute;
top: 0;
right: 0;
min-width: 100%;
min-height: 100%;
text-align: right;
opacity: 0;
background: none repeat scroll 0 0 transparent;
cursor: inherit;
display: block;
}
.file-caption-name {
display: inline-block;
overflow: hidden;
height: 20px;
word-break: break-all;
}
.input-group-lg .file-caption-name {
height: 25px;
}
.file-zoom-dialog {
text-align: left;
}
.file-error-message {
color: #a94442;
background-color: #f2dede;
margin: 5px;
border: 1px solid #ebccd1;
border-radius: 4px;
padding: 15px;
}
.file-error-message pre, .file-error-message ul {
margin: 0;
text-align: left;
}
.file-error-message pre {
margin: 5px 0;
}
.file-caption-disabled {
background-color: #EEEEEE;
cursor: not-allowed;
opacity: 1;
}
.file-preview {
border-radius: 5px;
border: 1px solid #ddd;
padding: 5px;
width: 100%;
margin-bottom: 5px;
}
.file-preview-image {
font: 40px Impact, Charcoal, sans-serif;
color: green;
}
.krajee-default.file-preview-frame {
position: relative;
display: table;
margin: 8px;
border: 1px solid #ddd;
box-shadow: 1px 1px 5px 0 #a2958a;
padding: 6px;
float: left;
text-align: center;
}
.krajee-default.file-preview-frame:not(.file-preview-error):hover {
box-shadow: 3px 3px 5px 0 #333;
}
.krajee-default.file-preview-frame .kv-file-content {
height: 170px;
}
.krajee-default.file-preview-frame .file-thumbnail-footer {
height: 70px;
}
.krajee-default .file-preview-image {
vertical-align: middle;
}
.krajee-default .file-preview-text {
display: block;
color: #428bca;
border: 1px solid #ddd;
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
outline: none;
padding: 8px;
resize: none;
}
.krajee-default .file-preview-html {
border: 1px solid #ddd;
padding: 8px;
overflow: auto;
}
.krajee-default[data-template="audio"] .file-preview-audio {
display: table-cell;
vertical-align: middle;
height: 170px;
border: 1px solid #ddd;
border-radius: 5px;
}
.krajee-default .file-preview-audio audio {
vertical-align: middle;
}
.krajee-default .file-zoom-dialog .file-preview-text {
font-size: 1.2em;
}
.krajee-default .file-preview-other {
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
text-align: center;
vertical-align: middle;
padding: 10px;
}
.krajee-default .file-preview-other:hover {
opacity: 0.8;
}
.krajee-default .file-actions, .krajee-default .file-other-error {
text-align: left;
}
.krajee-default .file-other-icon {
font-size: 8em;
}
.krajee-default .file-actions {
margin-top: 15px;
}
.krajee-default .file-footer-buttons {
float: right;
}
.krajee-default .file-footer-caption {
display: block;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
width: 160px;
text-align: center;
padding-top: 4px;
font-size: 11px;
color: #777;
margin: 5px auto;
}
.krajee-default .file-preview-error {
opacity: 0.65;
box-shadow: none;
}
.krajee-default .file-preview-frame:not(.file-preview-error) .file-footer-caption:hover {
color: #000;
}
.krajee-default .file-drag-handle, .krajee-default .file-upload-indicator {
position: absolute;
text-align: center;
bottom: -6px;
left: -6px;
padding: 8px 8px 1px 3px;
border-left: none;
border-bottom: none;
border-right: 1px solid #8a6d3b;
border-top: 1px solid #8a6d3b;
border-top-right-radius: 24px;
font-size: 12px;
}
.krajee-default .file-drag-handle {
background-color: #d9edf7;
border-color: #bce8f1;
}
.krajee-default .file-upload-indicator {
font-size: 13px;
background-color: #fcf8e3;
border-color: #faebcc;
padding-bottom: 0;
}
.krajee-default.file-preview-error .file-upload-indicator {
background-color: #f2dede;
border-color: #ebccd1;
}
.krajee-default.file-preview-success .file-upload-indicator {
background-color: #dff0d8;
border-color: #d6e9c6;
}
.krajee-default.file-preview-loading .file-upload-indicator {
background-color: #e5e5e5;
border-color: #777;
}
.krajee-default .file-thumb-progress {
height: 10px;
}
.krajee-default .file-thumb-progress .progress, .krajee-default .file-thumb-progress .progress-bar {
height: 10px;
font-size: 9px;
line-height: 10px;
}
.krajee-default .file-thumbnail-footer {
position: relative;
}
.krajee-default .file-thumb-progress {
position: absolute;
top: 35px;
left: 0;
right: 0;
}
.krajee-default.kvsortable-ghost {
background: #e1edf7;
border: 2px solid #a1abff;
}
/* noinspection CssOverwrittenProperties */
.file-zoom-dialog .file-other-icon {
font-size: 22em;
font-size: 50vmin;
}
.file-input-new .file-preview, .file-input-new .close, .file-input-new .glyphicon-file,
.file-input-new .fileinput-remove-button, .file-input-new .fileinput-upload-button,
.file-input-ajax-new .fileinput-remove-button, .file-input-ajax-new .fileinput-upload-button {
display: none;
}
.file-caption-main {
width: 100%;
}
.file-input-ajax-new .no-browse .input-group-btn,
.file-input-new .no-browse .input-group-btn {
display: none;
}
.file-input-ajax-new .no-browse .form-control,
.file-input-new .no-browse .form-control {
border-top-right-radius: 4px;
border-bottom-right-radius: 4px;
}
.file-thumb-loading {
background: transparent url('../img/loading.gif') no-repeat scroll center center content-box !important;
}
.file-sortable .file-drag-handle {
cursor: move;
cursor: -webkit-grabbing;
opacity: 1;
}
.file-sortable .file-drag-handle:hover {
opacity: 0.7;
}
.file-drop-zone {
border: 1px dashed #aaa;
border-radius: 4px;
height: 100%;
text-align: center;
vertical-align: middle;
margin: 12px 15px 12px 12px;
padding: 5px;
}
.file-drop-zone-title {
color: #aaa;
font-size: 1.6em;
padding: 85px 10px;
cursor: default;
}
.file-preview .clickable,
.clickable .file-drop-zone-title {
cursor: pointer;
}
.file-drop-zone.clickable:hover {
border: 2px dashed #999;
}
.file-drop-zone.clickable:focus {
border: 2px solid #5acde2;
}
.file-drop-zone .file-preview-thumbnails {
cursor: default;
}
.file-highlighted {
border: 2px dashed #999 !important;
background-color: #f0f0f0;
}
.file-uploading {
background: url('../img/loading-sm.gif') no-repeat center bottom 10px;
opacity: 0.65;
}
.file-zoom-fullscreen.modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
.file-zoom-fullscreen .modal-dialog {
position: fixed;
margin: 0;
width: 100%;
height: 100%;
padding: 0;
}
.file-zoom-fullscreen .modal-content {
border-radius: 0;
box-shadow: none;
}
.file-zoom-fullscreen .modal-body {
overflow-y: auto;
}
.file-zoom-dialog .modal-body {
position: relative !important;
}
.file-zoom-dialog .btn-navigate {
position: absolute;
padding: 0;
margin: 0;
background: transparent;
text-decoration: none;
outline: none;
opacity: 0.7;
top: 45%;
font-size: 4em;
color: #1c94c4;
}
.file-zoom-dialog .floating-buttons {
position: absolute;
top: 5px;
right: 10px;
}
.floating-buttons, .floating-buttons .btn {
z-index: 3000;
}
.file-zoom-dialog .kv-zoom-actions .btn,
.floating-buttons .btn {
margin-left: 3px;
}
.file-zoom-dialog .btn-navigate:not([disabled]):hover,
.file-zoom-dialog .btn-navigate:not([disabled]):focus {
outline: none;
box-shadow: none;
opacity: 0.5;
}
.file-zoom-dialog .btn-navigate[disabled] {
opacity: 0.3;
}
.file-zoom-dialog .btn-prev {
left: 1px;
}
.file-zoom-dialog .btn-next {
right: 1px;
}
.file-zoom-content {
height: 480px;
text-align: center;
}
.file-zoom-content .file-preview-image,
.file-zoom-content .file-preview-video {
max-height: 100%
}
.file-zoom-content > .file-object.type-image {
width: auto;
height: auto;
min-height: inherit;
max-width: 100%;
max-height: 100%;
}
.file-zoom-content > .file-object.type-video,
.file-zoom-content > .file-object.type-flash {
width: auto;
height: 100%;
max-width: 100%;
max-height: 100%;
}
.file-zoom-content > .file-object.type-audio {
width: auto;
height: 30px;
}
.file-zoom-content > .file-object.type-pdf,
.file-zoom-content > .file-object.type-html,
.file-zoom-content > .file-object.type-text,
.file-zoom-content > .file-object.type-default {
width: 100%;
}
.file-preview-initial.sortable-chosen {
background-color: #d9edf7;
}
.hide-content .kv-file-content {
display: none;
}
/* IE 10 fix */
.btn-file ::-ms-browse {
font-size: 10000px;
width: 100%;
height: 100%;
}
/* exif orientations */
.rotate-2 {
transform: rotateY(180deg);
}
.rotate-3 {
transform: rotate(180deg);
}
.rotate-4 {
transform: rotate(180deg) rotateY(180deg);
}
.rotate-5 {
transform: rotate(270deg) rotateY(180deg);
}
.rotate-6 {
transform: rotate(90deg);
}
.rotate-7 {
transform: rotate(90deg) rotateY(180deg);
}
.rotate-8 {
transform: rotate(270deg);
}
.file-zoom-content .is-portrait-gt4 {
margin-top: 60px;
}

12
js/file/css/fileinput.min.css vendored Normal file

File diff suppressed because one or more lines are too long

201
js/file/examples/index.html Normal file
View File

@@ -0,0 +1,201 @@
<!DOCTYPE html>
<!-- release v4.4.3, copyright 2014 - 2017 Kartik Visweswaran -->
<!--suppress JSUnresolvedLibraryURL -->
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Krajee JQuery Plugins - &copy; Kartik</title>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<link href="../css/fileinput.css" media="all" rel="stylesheet" type="text/css"/>
<link href="../themes/explorer/theme.css" media="all" rel="stylesheet" type="text/css"/>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="../js/plugins/sortable.js" type="text/javascript"></script>
<script src="../js/fileinput.js" type="text/javascript"></script>
<script src="../js/locales/fr.js" type="text/javascript"></script>
<script src="../js/locales/es.js" type="text/javascript"></script>
<script src="../themes/explorer/theme.js" type="text/javascript"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" type="text/javascript"></script>
</head>
<body>
<div class="container kv-main">
<div class="page-header">
<h1>Bootstrap File Input Example
<small><a href="https://github.com/kartik-v/bootstrap-fileinput-samples"><i
class="glyphicon glyphicon-download"></i> Download Sample Files</a></small>
</h1>
</div>
<form enctype="multipart/form-data">
<input id="kv-explorer" type="file" multiple>
<br>
<input id="file-0a" class="file" type="file" multiple data-min-file-count="1">
<br>
<button type="submit" class="btn btn-primary">Submit</button>
<button type="reset" class="btn btn-default">Reset</button>
</form>
<hr>
<form enctype="multipart/form-data">
<label for="file-0b">Test invalid input type</label>
<input id="file-0b" name="file-0b" class="file" type="text" multiple data-min-file-count="1">
<script>
$(document).on('ready', function () {
$("#file-0b").fileinput();
});
</script>
</form>
<hr>
<form enctype="multipart/form-data">
<input id="file-0c" class="file" type="file" multiple data-min-file-count="3">
<hr>
<div class="form-group">
<input id="file-0d" class="file" type="file">
</div>
<hr>
<div class="form-group">
<input id="file-1" type="file" multiple class="file" data-overwrite-initial="false" data-min-file-count="2">
</div>
<hr>
<div class="form-group">
<input id="file-2" type="file" class="file" readonly data-show-upload="false">
</div>
<hr>
<div class="form-group">
<label>Preview File Icon</label>
<input id="file-3" type="file" multiple>
</div>
<hr>
<div class="form-group">
<input id="file-4" type="file" class="file" data-upload-url="#">
</div>
<hr>
<div class="form-group">
<button class="btn btn-warning" type="button">Disable Test</button>
<button class="btn btn-info" type="reset">Refresh Test</button>
<button class="btn btn-primary">Submit</button>
<button class="btn btn-default" type="reset">Reset</button>
</div>
<hr>
<div class="form-group">
<input type="file" class="file" id="test-upload" multiple>
<div id="errorBlock" class="help-block"></div>
</div>
<hr>
<div class="form-group">
<input id="file-5" class="file" type="file" multiple data-preview-file-type="any" data-upload-url="#">
</div>
</form>
<hr>
<h4>Multi Language Inputs</h4>
<form enctype="multipart/form-data">
<label>French Input</label>
<input id="file-fr" name="file-fr[]" type="file" multiple>
<hr style="border: 2px dotted">
<label>Spanish Input</label>
<input id="file-es" name="file-es[]" type="file" multiple>
</form>
<hr>
<br>
</div>
</body>
<script>
$('#file-fr').fileinput({
language: 'fr',
uploadUrl: '#',
allowedFileExtensions: ['jpg', 'png', 'gif']
});
$('#file-es').fileinput({
language: 'es',
uploadUrl: '#',
allowedFileExtensions: ['jpg', 'png', 'gif']
});
$("#file-0").fileinput({
'allowedFileExtensions': ['jpg', 'png', 'gif']
});
$("#file-1").fileinput({
uploadUrl: '#', // you must set a valid URL here else you will get an error
allowedFileExtensions: ['jpg', 'png', 'gif'],
overwriteInitial: false,
maxFileSize: 1000,
maxFilesNum: 10,
//allowedFileTypes: ['image', 'video', 'flash'],
slugCallback: function (filename) {
return filename.replace('(', '_').replace(']', '_');
}
});
/*
$(".file").on('fileselect', function(event, n, l) {
alert('File Selected. Name: ' + l + ', Num: ' + n);
});
*/
$("#file-3").fileinput({
showUpload: false,
showCaption: false,
browseClass: "btn btn-primary btn-lg",
fileType: "any",
previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",
overwriteInitial: false,
initialPreviewAsData: true,
initialPreview: [
"http://lorempixel.com/1920/1080/transport/1",
"http://lorempixel.com/1920/1080/transport/2",
"http://lorempixel.com/1920/1080/transport/3"
],
initialPreviewConfig: [
{caption: "transport-1.jpg", size: 329892, width: "120px", url: "{$url}", key: 1},
{caption: "transport-2.jpg", size: 872378, width: "120px", url: "{$url}", key: 2},
{caption: "transport-3.jpg", size: 632762, width: "120px", url: "{$url}", key: 3}
]
});
$("#file-4").fileinput({
uploadExtraData: {kvId: '10'}
});
$(".btn-warning").on('click', function () {
var $el = $("#file-4");
if ($el.attr('disabled')) {
$el.fileinput('enable');
} else {
$el.fileinput('disable');
}
});
$(".btn-info").on('click', function () {
$("#file-4").fileinput('refresh', {previewClass: 'bg-info'});
});
/*
$('#file-4').on('fileselectnone', function() {
alert('Huh! You selected no files.');
});
$('#file-4').on('filebrowse', function() {
alert('File browse clicked for #file-4');
});
*/
$(document).ready(function () {
$("#test-upload").fileinput({
'showPreview': false,
'allowedFileExtensions': ['jpg', 'png', 'gif'],
'elErrorContainer': '#errorBlock'
});
$("#kv-explorer").fileinput({
'theme': 'explorer',
'uploadUrl': '#',
overwriteInitial: false,
initialPreviewAsData: true,
initialPreview: [
"http://lorempixel.com/1920/1080/nature/1",
"http://lorempixel.com/1920/1080/nature/2",
"http://lorempixel.com/1920/1080/nature/3"
],
initialPreviewConfig: [
{caption: "nature-1.jpg", size: 329892, width: "120px", url: "{$url}", key: 1},
{caption: "nature-2.jpg", size: 872378, width: "120px", url: "{$url}", key: 2},
{caption: "nature-3.jpg", size: 632762, width: "120px", url: "{$url}", key: 3}
]
});
/*
$("#test-upload").on('fileloaded', function(event, file, previewId, index) {
alert('i = ' + index + ', id = ' + previewId + ', file = ' + file.name);
});
*/
});
</script>
</html>

BIN
js/file/img/loading-sm.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

BIN
js/file/img/loading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

3932
js/file/js/fileinput.js Normal file

File diff suppressed because it is too large Load Diff

12
js/file/js/fileinput.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,96 @@
/*!
* FileInput <_LANG_> Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['_LANG_'] = {
fileSingle: 'file',
filePlural: 'files',
browseLabel: 'Browse &hellip;',
removeLabel: 'Remove',
removeTitle: 'Clear selected files',
cancelLabel: 'Cancel',
cancelTitle: 'Abort ongoing upload',
uploadLabel: 'Upload',
uploadTitle: 'Upload selected files',
msgNo: 'No',
msgNoFilesSelected: 'No files selected',
msgCancelled: 'Cancelled',
msgZoomModalHeading: 'Detailed Preview',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'File "{name}" (<b>{size} KB</b>) exceeds maximum allowed upload size of <b>{maxSize} KB</b>.',
msgFilesTooLess: 'You must select at least <b>{n}</b> {files} to upload.',
msgFilesTooMany: 'Number of files selected for upload <b>({n})</b> exceeds maximum allowed limit of <b>{m}</b>.',
msgFileNotFound: 'File "{name}" not found!',
msgFileSecured: 'Security restrictions prevent reading the file "{name}".',
msgFileNotReadable: 'File "{name}" is not readable.',
msgFilePreviewAborted: 'File preview aborted for "{name}".',
msgFilePreviewError: 'An error occurred while reading the file "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Invalid type for file "{name}". Only "{types}" files are supported.',
msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'The file upload was aborted',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Validation Error',
msgLoading: 'Loading file {index} of {files} &hellip;',
msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.',
msgSelected: '{n} {files} selected',
msgFoldersNotAllowed: 'Drag & drop files only! Skipped {n} dropped folder(s).',
msgImageWidthSmall: 'Width of image file "{name}" must be at least {size} px.',
msgImageHeightSmall: 'Height of image file "{name}" must be at least {size} px.',
msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.',
msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.',
msgImageResizeError: 'Could not get the image dimensions to resize.',
msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Drag & drop files here &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Remove file',
uploadTitle: 'Upload file',
zoomTitle: 'View details',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Not uploaded yet',
indicatorSuccessTitle: 'Uploaded',
indicatorErrorTitle: 'Upload Error',
indicatorLoadingTitle: 'Uploading ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

97
js/file/js/locales/ar.js Normal file
View File

@@ -0,0 +1,97 @@
/*!
* FileInput Arabic Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Yasser Lotfy <y_l@live.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['ar'] = {
fileSingle: 'ملف',
filePlural: 'ملفات',
browseLabel: 'تصفح &hellip;',
removeLabel: 'إزالة',
removeTitle: 'إزالة الملفات المختارة',
cancelLabel: 'إلغاء',
cancelTitle: 'إنهاء الرفع الحالي',
uploadLabel: 'رفع',
uploadTitle: 'رفع الملفات المختارة',
msgNo: 'لا',
msgNoFilesSelected: '',
msgCancelled: 'ألغيت',
msgZoomModalHeading: 'معاينة تفصيلية',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'الملف "{name}" (<b>{size} ك.ب</b>) تعدى الحد الأقصى المسموح للرفع <b>{maxSize} ك.ب</b>.',
msgFilesTooLess: 'يجب عليك اختيار <b>{n}</b> {files} على الأقل للرفع.',
msgFilesTooMany: 'عدد الملفات المختارة للرفع <b>({n})</b> تعدت الحد الأقصى المسموح به لعدد <b>{m}</b>.',
msgFileNotFound: 'الملف "{name}" غير موجود!',
msgFileSecured: 'قيود أمنية تمنع قراءة الملف "{name}".',
msgFileNotReadable: 'الملف "{name}" غير قابل للقراءة.',
msgFilePreviewAborted: 'تم إلغاء معاينة الملف "{name}".',
msgFilePreviewError: 'حدث خطأ أثناء قراءة الملف "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'نوعية غير صالحة للملف "{name}". فقط هذه النوعيات مدعومة "{types}".',
msgInvalidFileExtension: 'امتداد غير صالح للملف "{name}". فقط هذه الملفات مدعومة "{extensions}".',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'تم إلغاء رفع الملف',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'خطأ التحقق من صحة',
msgLoading: 'تحميل ملف {index} من {files} &hellip;',
msgProgress: 'تحميل ملف {index} من {files} - {name} - {percent}% منتهي.',
msgSelected: '{n} {files} مختار(ة)',
msgFoldersNotAllowed: 'اسحب وأفلت الملفات فقط! تم تخطي {n} مجلد(ات).',
msgImageWidthSmall: 'عرض ملف الصورة "{name}" يجب أن يكون على الأقل {size} px.',
msgImageHeightSmall: 'طول ملف الصورة "{name}" يجب أن يكون على الأقل {size} px.',
msgImageWidthLarge: 'عرض ملف الصورة "{name}" لا يمكن أن يتعدى {size} px.',
msgImageHeightLarge: 'طول ملف الصورة "{name}" لا يمكن أن يتعدى {size} px.',
msgImageResizeError: 'لم يتمكن من معرفة أبعاد الصورة لتغييرها.',
msgImageResizeException: 'حدث خطأ أثناء تغيير أبعاد الصورة.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'اسحب وأفلت الملفات هنا &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'إزالة الملف',
uploadTitle: 'رفع الملف',
zoomTitle: 'مشاهدة التفاصيل',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'لم يتم الرفع بعد',
indicatorSuccessTitle: 'تم الرفع',
indicatorErrorTitle: 'خطأ بالرفع',
indicatorLoadingTitle: 'جارٍ الرفع ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

97
js/file/js/locales/az.js Normal file
View File

@@ -0,0 +1,97 @@
/*!
* FileInput Azerbaijan Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Elbrus <elbrusnt@gmail.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['az'] = {
fileSingle: 'fayl',
filePlural: 'fayl',
browseLabel: 'Seç &hellip;',
removeLabel: 'Sil',
removeTitle: 'Seçilmiş faylları təmizlə',
cancelLabel: 'İmtina et',
cancelTitle: 'Cari yükləməni dayandır',
uploadLabel: 'Yüklə',
uploadTitle: 'Seçilmiş faylları yüklə',
msgNo: 'xeyir',
msgNoFilesSelected: 'Heç bir fayl seçilməmişdir',
msgCancelled: 'İmtina edildi',
msgZoomModalHeading: 'İlkin baxış',
msgFileRequired: 'Yükləmə üçün fayl seçməlisiniz.',
msgSizeTooSmall: 'Seçdiyiniz "{name}" faylının həcmi (<b>{size} KB</b>)-dır, minimum <b>{minSize} KB</b> olmalıdır.',
msgSizeTooLarge: 'Seçdiyiniz "{name}" faylının həcmi (<b>{size} KB</b>)-dır, maksimum <b>{maxSize} KB</b> olmalıdır.',
msgFilesTooLess: 'Yükləmə üçün minimum <b>{n}</b> {files} seçməlisiniz.',
msgFilesTooMany: 'Seçilmiş fayl sayı <b>({n})</b>. Maksimum <b>{m}</b> fayl seçmək mümkündür.',
msgFileNotFound: 'Fayl "{name}" tapılmadı!',
msgFileSecured: '"{name}" faylının istifadəsinə yetginiz yoxdur.',
msgFileNotReadable: '"{name}" faylının istifadəsi mümkün deyil.',
msgFilePreviewAborted: '"{name}" faylı üçün ilkin baxış ləğv olunub.',
msgFilePreviewError: '"{name}" faylının oxunması mümkün olmadı.',
msgInvalidFileName: '"{name}" faylının adında qadağan olunmuş simvollardan istifadə olunmuşdur.',
msgInvalidFileType: '"{name}" faylının tipi dəstəklənmir. Yalnız "{types}" tipli faylları yükləmək mümkündür.',
msgInvalidFileExtension: '"{name}" faylının genişlənməsi yanlışdır. Yalnız "{extensions}" fayl genişlənmə(si / ləri) qəbul olunur.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Yükləmə dayandırılmışdır',
msgUploadThreshold: 'Yükləmə...',
msgUploadBegin: 'Yoxlama...',
msgUploadEnd: 'Fayl(lar) yükləndi',
msgUploadEmpty: 'Yükləmə üçün verilmiş məlumatlar yanlışdır',
msgValidationError: 'Yoxlama nəticəsi səhvir',
msgLoading: '{files} fayldan {index} yüklənir &hellip;',
msgProgress: '{files} fayldan {index} - {name} - {percent}% yükləndi.',
msgSelected: 'Faylların sayı: {n}',
msgFoldersNotAllowed: 'Ancaq faylların daşınmasına icazə verilir! {n} qovluq yüklənmədi.',
msgImageWidthSmall: '{name} faylının eni {size} px -dən kiçik olmamalıdır.',
msgImageHeightSmall: '{name} faylının hündürlüyü {size} px -dən kiçik olmamalıdır.',
msgImageWidthLarge: '"{name}" faylının eni {size} px -dən böyük olmamalıdır.',
msgImageHeightLarge: '"{name}" faylının hündürlüyü {size} px -dən böyük olmamalıdır.',
msgImageResizeError: 'Faylın ölçülərini dəyişmək üçün ölçüləri hesablamaq mümkün olmadı.',
msgImageResizeException: 'Faylın ölçülərini dəyişmək mümkün olmadı.<pre>{errors}</pre>',
msgAjaxError: '{operation} əməliyyatı zamanı səhv baş verdi. Təkrar yoxlayın!',
msgAjaxProgressError: '{operation} əməliyyatı yerinə yetirmək mümkün olmadı.',
ajaxOperations: {
deleteThumb: 'faylı sil',
uploadThumb: 'faylı yüklə',
uploadBatch: 'bir neçə faylı yüklə',
uploadExtra: 'məlumatların yüklənməsi'
},
dropZoneTitle: 'Faylları bura daşıyın &hellip;',
dropZoneClickTitle: '<br>(Və ya seçin {files})',
fileActionSettings: {
removeTitle: 'Faylı sil',
uploadTitle: 'Faylı yüklə',
zoomTitle: 'məlumatlara bax',
dragTitle: 'Yerini dəyiş və ya sırala',
indicatorNewTitle: 'Davam edir',
indicatorSuccessTitle: 'Tamamlandı',
indicatorErrorTitle: 'Yükləmə xətası',
indicatorLoadingTitle: 'Yükləmə ...'
},
previewZoomButtonTitles: {
prev: 'Əvvəlki fayla bax',
next: 'Növbəti fayla bax',
toggleheader: 'Başlığı dəyiş',
fullscreen: 'Tam ekranı dəyiş',
borderless: 'Bölmələrsiz rejimi dəyiş',
close: 'Ətraflı baxışı bağla'
}
};
})(window.jQuery);

96
js/file/js/locales/bg.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Bulgarian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['bg'] = {
fileSingle: 'файл',
filePlural: 'файла',
browseLabel: 'Избери &hellip;',
removeLabel: 'Премахни',
removeTitle: 'Изчисти избраните',
cancelLabel: 'Откажи',
cancelTitle: 'Откажи качването',
uploadLabel: 'Качи',
uploadTitle: 'Качи избраните файлове',
msgNo: 'Не',
msgNoFilesSelected: '',
msgCancelled: 'Отменен',
msgZoomModalHeading: 'Детайлен преглед',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Файла "{name}" (<b>{size} KB</b>) надвишава максималните разрешени <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Трябва да изберете поне <b>{n}</b> {files} файла.',
msgFilesTooMany: 'Броя файлове избрани за качване <b>({n})</b> надвишава ограниченито от максимум <b>{m}</b>.',
msgFileNotFound: 'Файлът "{name}" не може да бъде намерен!',
msgFileSecured: 'От съображения за сигурност не може да прочетем файла "{name}".',
msgFileNotReadable: 'Файлът "{name}" не е четим.',
msgFilePreviewAborted: 'Прегледа на файла е прекратен за "{name}".',
msgFilePreviewError: 'Грешка при опит за четене на файла "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Невалиден тип на файла "{name}". Разрешени са само "{types}".',
msgInvalidFileExtension: 'Невалидно разрешение на "{name}". Разрешени са само "{extensions}".',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Качите файла, бе прекратена',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'утвърждаване грешка',
msgLoading: 'Зареждане на файл {index} от общо {files} &hellip;',
msgProgress: 'Зареждане на файл {index} от общо {files} - {name} - {percent}% завършени.',
msgSelected: '{n} {files} избрани',
msgFoldersNotAllowed: 'Само пуснати файлове! Пропуснати {n} пуснати папки.',
msgImageWidthSmall: 'Широчината на изображението "{name}" трябва да е поне {size} px.',
msgImageHeightSmall: 'Височината на изображението "{name}" трябва да е поне {size} px.',
msgImageWidthLarge: 'Широчината на изображението "{name}" не може да е по-голяма от {size} px.',
msgImageHeightLarge: 'Височината на изображението "{name}" нее може да е по-голяма от {size} px.',
msgImageResizeError: 'Не може да размерите на изображението, за да промените размера.',
msgImageResizeException: 'Грешка при промяна на размера на изображението.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Пуснете файловете тук &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Махни файл',
uploadTitle: 'Качване на файл',
zoomTitle: 'Вижте детайли',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Все още не е качил',
indicatorSuccessTitle: 'Качено',
indicatorErrorTitle: 'Качи Error',
indicatorLoadingTitle: 'Качва се ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

96
js/file/js/locales/ca.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Català Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['ca'] = {
fileSingle: 'arxiu',
filePlural: 'arxius',
browseLabel: 'Examinar &hellip;',
removeLabel: 'Treure',
removeTitle: 'Treure arxius seleccionats',
cancelLabel: 'Cancel',
cancelTitle: 'Avortar la pujada en curs',
uploadLabel: 'Pujar arxiu',
uploadTitle: 'Pujar arxius seleccionats',
msgNo: 'No',
msgNoFilesSelected: '',
msgCancelled: 'cancel·lat',
msgZoomModalHeading: 'Vista prèvia detallada',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Arxiu "{name}" (<b>{size} KB</b>) excedeix la mida màxima permès de <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Heu de seleccionar almenys <b>{n}</b> {files} a carregar.',
msgFilesTooMany: 'El nombre d\'arxius seleccionats a carregar <b>({n})</b> excedeix el límit màxim permès de <b>{m}</b>.',
msgFileNotFound: 'Arxiu "{name}" no trobat.',
msgFileSecured: 'No es pot accedir a l\'arxiu "{name}" perquè estarà sent usat per una altra aplicació o no tinguem permisos de lectura.',
msgFileNotReadable: 'No es pot accedir a l\'arxiu "{name}".',
msgFilePreviewAborted: 'Previsualització de l\'arxiu "{name}" cancel·lada.',
msgFilePreviewError: 'S\'ha produït un error mentre es llegia el fitxer "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Tipus de fitxer no vàlid per a "{name}". Només arxius "{types}" són permesos.',
msgInvalidFileExtension: 'Extensió de fitxer no vàlid per a "{name}". Només arxius "{extensions}" són permesos.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'La càrrega d\'arxius s\'ha cancel·lat',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Error de validació',
msgLoading: 'Pujant fitxer {index} de {files} &hellip;',
msgProgress: 'Pujant fitxer {index} de {files} - {name} - {percent}% completat.',
msgSelected: '{n} {files} seleccionat(s)',
msgFoldersNotAllowed: 'Arrossegueu i deixeu anar únicament arxius. Omesa(es) {n} carpeta(es).',
msgImageWidthSmall: 'L\'ample de la imatge "{name}" ha de ser almenys {size} px.',
msgImageHeightSmall: 'L\'alçada de la imatge "{name}" ha de ser almenys {size} px.',
msgImageWidthLarge: 'L\'ample de la imatge "{name}" no pot excedir de {size} px.',
msgImageHeightLarge: 'L\'alçada de la imatge "{name}" no pot excedir de {size} px.',
msgImageResizeError: 'No s\'ha pogut obtenir les dimensions d\'imatge per canviar la mida.',
msgImageResizeException: 'Error en canviar la mida de la imatge.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Arrossegueu i deixeu anar aquí els arxius &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Eliminar arxiu',
uploadTitle: 'Pujar arxiu',
zoomTitle: 'Veure detalls',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'No pujat encara',
indicatorSuccessTitle: 'Subido',
indicatorErrorTitle: 'Pujar Error',
indicatorLoadingTitle: 'Pujant ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

97
js/file/js/locales/cr.js Normal file
View File

@@ -0,0 +1,97 @@
/*!
* FileInput Croatian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Milos Stojanovic <stojanovic.loshmi@gmail.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['cr'] = {
fileSingle: 'datoteka',
filePlural: 'datoteke',
browseLabel: 'Izaberi &hellip;',
removeLabel: 'Ukloni',
removeTitle: 'Ukloni označene datoteke',
cancelLabel: 'Odustani',
cancelTitle: 'Prekini trenutno otpremanje',
uploadLabel: 'Otpremi',
uploadTitle: 'Otpremi označene datoteke',
msgNo: 'Ne',
msgNoFilesSelected: '',
msgCancelled: 'Otkazan',
msgZoomModalHeading: 'Detaljni pregled',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Datoteka "{name}" (<b>{size} KB</b>) prekoračuje maksimalnu dozvoljenu veličinu datoteke od <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Morate odabrati najmanje <b>{n}</b> {files} za otpremanje.',
msgFilesTooMany: 'Broj datoteka označenih za otpremanje <b>({n})</b> prekoračuje maksimalni dozvoljeni limit od <b>{m}</b>.',
msgFileNotFound: 'Datoteka "{name}" nije pronađena!',
msgFileSecured: 'Datoteku "{name}" nije moguće pročitati zbog bezbednosnih ograničenja.',
msgFileNotReadable: 'Datoteku "{name}" nije moguće pročitati.',
msgFilePreviewAborted: 'Generisanje prikaza nije moguće za "{name}".',
msgFilePreviewError: 'Došlo je do greške prilikom čitanja datoteke "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Datoteka "{name}" je pogrešnog formata. Dozvoljeni formati su "{types}".',
msgInvalidFileExtension: 'Ekstenzija datoteke "{name}" nije dozvoljena. Dozvoljene ekstenzije su "{extensions}".',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Prijenos datoteka je prekinut',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Provjera pogrešaka',
msgLoading: 'Učitavanje datoteke {index} od {files} &hellip;',
msgProgress: 'Učitavanje datoteke {index} od {files} - {name} - {percent}% završeno.',
msgSelected: '{n} {files} je označeno',
msgFoldersNotAllowed: 'Moguće je prevlačiti samo datoteke! Preskočeno je {n} fascikla.',
msgImageWidthSmall: 'Širina slikovnu datoteku "{name}" moraju biti najmanje {size} px.',
msgImageHeightSmall: 'Visina slikovnu datoteku "{name}" moraju biti najmanje {size} px.',
msgImageWidthLarge: 'Širina slikovnu datoteku "{name}" ne može prelaziti {size} px.',
msgImageHeightLarge: 'Visina slikovnu datoteku "{name}" ne može prelaziti {size} px.',
msgImageResizeError: 'Nije mogao dobiti dimenzije slike na veličinu.',
msgImageResizeException: 'Greška prilikom promjene veličine slike.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Prevucite datoteke ovde &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Uklonite datoteku',
uploadTitle: 'Postavi datoteku',
zoomTitle: 'Pregledavati pojedinosti',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Još nije učitao',
indicatorSuccessTitle: 'Preneseno',
indicatorErrorTitle: 'Postavi Greška',
indicatorLoadingTitle: 'Prijenos ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

86
js/file/js/locales/cz.js Normal file
View File

@@ -0,0 +1,86 @@
/*!
* FileInput Czech Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['cz'] = {
fileSingle: 'soubor',
filePlural: 'soubory',
browseLabel: 'Vybrat &hellip;',
removeLabel: 'Odstranit',
removeTitle: 'Vyčistit vybrané soubory',
cancelLabel: 'Storno',
cancelTitle: 'Přerušit nahrávání',
uploadLabel: 'Nahrát',
uploadTitle: 'Nahrát vybrané soubory',
msgNo: 'Ne',
msgNoFilesSelected: 'Nevybrány žádné soubory',
msgCancelled: 'Zrušeno',
msgZoomModalHeading: 'Detailní náhled',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'Soubor "{name}" (<b>{size} KB</b>) je příliš malý, musí mít velikost nejméně <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Soubor "{name}" (<b>{size} KB</b>): je příliš velký - maximální povolená velikost <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Musíte vybrat nejméně <b>{n}</b> {files} souborů.',
msgFilesTooMany: 'Počet vybraných souborů <b>({n})</b> překročil maximální povolený limit <b>{m}</b>.',
msgFileNotFound: 'Soubor "{name}" nebyl nalezen!',
msgFileSecured: 'Zabezpečení souboru znemožnilo číst soubor "{name}".',
msgFileNotReadable: 'Soubor "{name}" není čitelný.',
msgFilePreviewAborted: 'Náhled souboru byl přerušen pro "{name}".',
msgFilePreviewError: 'Nastala chyba při načtení souboru "{name}".',
msgInvalidFileName: 'Neplatné nebo nepovolené znaky ve jménu souboru "{name}".',
msgInvalidFileType: 'Neplatný typ souboru "{name}". Pouze "{types}" souborů jsou podporovány.',
msgInvalidFileExtension: 'Neplatná extenze souboru "{name}". Pouze "{extensions}" souborů jsou podporovány.',
msgUploadAborted: 'Nahrávání souboru bylo přerušeno',
msgUploadThreshold: 'Zpracovávám...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Chyba ověření',
msgLoading: 'Nahrávání souboru {index} z {files} &hellip;',
msgProgress: 'Nahrávání souboru {index} z {files} - {name} - {percent}% dokončeno.',
msgSelected: '{n} {files} vybráno',
msgFoldersNotAllowed: 'Táhni a pusť pouze soubory! Vynechané {n} pustěné složk(y).',
msgImageWidthSmall: 'Šířka obrázku "{name}", musí být alespoň {size} px.',
msgImageHeightSmall: 'Výška obrázku "{name}", musí být alespoň {size} px.',
msgImageWidthLarge: 'Šířka obrázku "{name}" nesmí být větší než {size} px.',
msgImageHeightLarge: 'Výška obrázku "{name}" nesmí být větší než {size} px.',
msgImageResizeError: 'Nelze získat rozměry obrázku pro změnu velikosti.',
msgImageResizeException: 'Chyba při změně velikosti obrázku.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Přetáhni soubory sem &hellip;',
dropZoneClickTitle: '<br>(nebo klikni sem a vyber je)',
fileActionSettings: {
removeTitle: 'Odstranit soubor',
uploadTitle: 'nahrát soubor',
zoomTitle: 'zobrazit podrobnosti',
dragTitle: 'Posunout / Přeskládat',
indicatorNewTitle: 'Ještě nenahrál',
indicatorSuccessTitle: 'Nahraný',
indicatorErrorTitle: 'Chyba nahrávání',
indicatorLoadingTitle: 'Nahrávání ...'
},
previewZoomButtonTitles: {
prev: 'Zobrazit předchozí soubor',
next: 'Zobrazit následující soubor',
toggleheader: 'Přepnout záhlaví',
fullscreen: 'Přepnout celoobrazovkové zobrazení',
borderless: 'Přepnout bezrámečkové zobrazení',
close: 'Zavřít detailní náhled'
}
};
})(window.jQuery);

96
js/file/js/locales/da.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Danish Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['da'] = {
fileSingle: 'fil',
filePlural: 'filer',
browseLabel: 'Browse &hellip;',
removeLabel: 'Fjern',
removeTitle: 'Fjern valgte filer',
cancelLabel: 'Fortryd',
cancelTitle: 'Afbryd nuv&aelig;rende upload',
uploadLabel: 'Upload',
uploadTitle: 'Upload valgte filer',
msgNo: 'Ingen',
msgNoFilesSelected: '',
msgCancelled: 'aflyst',
msgZoomModalHeading: 'Detaljeret visning',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Fil "{name}" (<b>{size} KB</b>) er st&oslash;rre end de tilladte <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Du skal mindst v&aelig;lge <b>{n}</b> {files} til upload.',
msgFilesTooMany: '<b>({n})</b> filer valgt til upload, men maks. <b>{m}</b> er tilladt.',
msgFileNotFound: 'Filen "{name}" blev ikke fundet!',
msgFileSecured: 'Sikkerhedsrestriktioner forhindrer l&aelig;sning af "{name}".',
msgFileNotReadable: 'Filen "{name}" kan ikke indl&aelig;ses.',
msgFilePreviewAborted: 'Filpreview annulleret for "{name}".',
msgFilePreviewError: 'Der skete en fejl under l&aelig;sningen af filen "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Ukendt type for filen "{name}". Kun "{types}" kan bruges.',
msgInvalidFileExtension: 'Ukendt filtype for filen "{name}". Kun "{extensions}" filer kan bruges.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Filupload annulleret',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Validering Fejl',
msgLoading: 'Henter fil {index} af {files} &hellip;',
msgProgress: 'Henter fil {index} af {files} - {name} - {percent}% f&aelig;rdiggjort.',
msgSelected: '{n} {files} valgt',
msgFoldersNotAllowed: 'Drag & drop kun filer! {n} mappe(r) sprunget over.',
msgImageWidthSmall: 'Bredden af billedet "{name}" skal v&aelig;re p&aring; mindst {size} px.',
msgImageHeightSmall: 'H&oslash;jden af billedet "{name}" skal v&aelig;re p&aring; mindst {size} px.',
msgImageWidthLarge: 'Bredden af billedet "{name}" m&aring; ikke v&aelig;re over {size} px.',
msgImageHeightLarge: 'H&oslash;jden af billedet "{name}" m&aring; ikke v&aelig;re over {size} px.',
msgImageResizeError: 'Kunne ikke få billedets dimensioner for at ændre størrelsen.',
msgImageResizeException: 'Fejl ved at ændre størrelsen på billedet.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Drag & drop filer her &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Fjern fil',
uploadTitle: 'Upload fil',
zoomTitle: 'Se detaljer',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Ikke uploadet endnu',
indicatorSuccessTitle: 'Uploadet',
indicatorErrorTitle: 'Upload fejl',
indicatorLoadingTitle: 'Uploader ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

94
js/file/js/locales/de.js Normal file
View File

@@ -0,0 +1,94 @@
/*!
* FileInput German Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['de'] = {
fileSingle: 'Datei',
filePlural: 'Dateien',
browseLabel: 'Auswählen &hellip;',
removeLabel: 'Löschen',
removeTitle: 'Ausgewählte löschen',
cancelLabel: 'Abbrechen',
cancelTitle: 'Hochladen abbrechen',
uploadLabel: 'Hochladen',
uploadTitle: 'Hochladen der ausgewählten Dateien',
msgNo: 'Keine',
msgNoFilesSelected: 'Keine Dateien ausgewählt',
msgCancelled: 'Abgebrochen',
msgZoomModalHeading: 'ausführliche Vorschau',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Datei "{name}" (<b>{size} KB</b>) überschreitet maximal zulässige Upload-Größe von <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Sie müssen mindestens <b>{n}</b> {files} zum Hochladen auswählen.',
msgFilesTooMany: 'Anzahl der Dateien für den Upload ausgewählt <b>({n})</b> überschreitet maximal zulässige Grenze von <b>{m}</b> Stück.',
msgFileNotFound: 'Datei "{name}" wurde nicht gefunden!',
msgFileSecured: 'Sicherheitseinstellungen verhindern das Lesen der Datei "{name}".',
msgFileNotReadable: 'Die Datei "{name}" ist nicht lesbar.',
msgFilePreviewAborted: 'Dateivorschau abgebrochen für "{name}".',
msgFilePreviewError: 'Beim Lesen der Datei "{name}" ein Fehler aufgetreten.',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Ungültiger Typ für Datei "{name}". Nur Dateien der Typen "{types}" werden unterstützt.',
msgInvalidFileExtension: 'Ungültige Erweiterung für Datei "{name}". Nur Dateien mit der Endung "{extensions}" werden unterstützt.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Der Datei-Upload wurde abgebrochen',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Validierungs fehler',
msgLoading: 'Lade Datei {index} von {files} hoch&hellip;',
msgProgress: 'Datei {index} von {files} - {name} - zu {percent}% fertiggestellt.',
msgSelected: '{n} {files} ausgewählt',
msgFoldersNotAllowed: 'Drag & Drop funktioniert nur bei Dateien! {n} Ordner übersprungen.',
msgImageWidthSmall: 'Breite der Bilddatei "{name}" muss mindestens {size} px betragen.',
msgImageHeightSmall: 'Höhe der Bilddatei "{name}" muss mindestens {size} px betragen.',
msgImageWidthLarge: 'Breite der Bilddatei "{name}" nicht überschreiten {size} px.',
msgImageHeightLarge: 'Höhe der Bilddatei "{name}" nicht überschreiten {size} px.',
msgImageResizeError: 'Konnte nicht die Bildabmessungen zu ändern.',
msgImageResizeException: 'Fehler beim Ändern der Größe des Bildes.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Dateien hierher ziehen &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Datei entfernen',
uploadTitle: 'Datei hochladen',
zoomTitle: 'Details anzeigen',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Noch nicht hochgeladen',
indicatorSuccessTitle: 'Hochgeladen',
indicatorErrorTitle: 'Upload Fehler',
indicatorLoadingTitle: 'Hochladen ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

96
js/file/js/locales/el.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Greek Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['el'] = {
fileSingle: 'αρχείο',
filePlural: 'αρχεία',
browseLabel: 'Αναζήτηση &hellip;',
removeLabel: 'Διαγραφή',
removeTitle: 'Εκκαθάριση αρχείων',
cancelLabel: 'Ακύρωση',
cancelTitle: 'Ακύρωση μεταφόρτωσης',
uploadLabel: 'Μεταφόρτωση',
uploadTitle: 'Μεταφόρτωση επιλεγμένων αρχείων',
msgNo: 'Όχι',
msgNoFilesSelected: 'Δεν επιλέχθηκαν αρχεία',
msgCancelled: 'Ακυρώθηκε',
msgZoomModalHeading: 'Λεπτομερής Προεπισκόπηση',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'Το "{name}" (<b>{size} KB</b>) είναι πολύ μικρό, πρέπει να είναι μεγαλύτερο από <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Το αρχείο "{name}" (<b>{size} KB</b>) υπερβαίνει το μέγιστο επιτρεπόμενο μέγεθος μεταφόρτωσης <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Πρέπει να επιλέξετε τουλάχιστον <b>{n}</b> {files} για να ξεκινήσει η μεταφόρτωση.',
msgFilesTooMany: 'Ο αριθμός των αρχείων που έχουν επιλεγεί για μεταφόρτωση <b>({n})</b> υπερβαίνει το μέγιστο επιτρεπόμενο αριθμό <b>{m}</b>.',
msgFileNotFound: 'Το αρχείο "{name}" δεν βρέθηκε!',
msgFileSecured: 'Περιορισμοί ασφαλείας εμπόδισαν την ανάγνωση του αρχείου "{name}".',
msgFileNotReadable: 'Το αρχείο "{name}" δεν είναι αναγνώσιμο.',
msgFilePreviewAborted: 'Η προεπισκόπηση του αρχείου "{name}" ακυρώθηκε.',
msgFilePreviewError: 'Παρουσιάστηκε σφάλμα κατά την ανάγνωση του αρχείου "{name}".',
msgInvalidFileName: 'Μη έγκυροι χαρακτήρες στο όνομα του αρχείου "{name}".',
msgInvalidFileType: 'Μη έγκυρος ο τύπος του αρχείου "{name}". Οι τύποι αρχείων που υποστηρίζονται είναι : "{types}".',
msgInvalidFileExtension: 'Μη έγκυρη η επέκταση του αρχείου "{name}". Οι επεκτάσεις που υποστηρίζονται είναι : "{extensions}".',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Η μεταφόρτωση του αρχείου ματαιώθηκε',
msgUploadThreshold: 'Μεταφόρτωση ...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Σφάλμα Επικύρωσης',
msgLoading: 'Φόρτωση αρχείου {index} από {files} &hellip;',
msgProgress: 'Φόρτωση αρχείου {index} απο {files} - {name} - {percent}% ολοκληρώθηκε.',
msgSelected: '{n} {files} επιλέχθηκαν',
msgFoldersNotAllowed: 'Μπορείτε να σύρετε μόνο αρχεία! Παραβλέφθηκαν {n} φάκελος(οι).',
msgImageWidthSmall: 'Το πλάτος του αρχείου εικόνας "{name}" πρέπει να είναι τουλάχιστον {size} px.',
msgImageHeightSmall: 'Το ύψος του αρχείου εικόνας "{name}" πρέπει να είναι τουλάχιστον {size} px.',
msgImageWidthLarge: 'Το πλάτος του αρχείου εικόνας "{name}" δεν μπορεί να υπερβαίνει το {size} px.',
msgImageHeightLarge: 'Το ύψος του αρχείου εικόνας "{name}" δεν μπορεί να υπερβαίνει το {size} px.',
msgImageResizeError: 'Δεν μπορούν να βρεθούν οι διαστάσεις της εικόνας για να αλλάγή μεγέθους.',
msgImageResizeException: 'Σφάλμα κατά την αλλαγή μεγέθους της εικόνας. <pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Σύρετε τα αρχεία εδώ &hellip;',
dropZoneClickTitle: '<br>(ή πατήστε για επιλογή {files})',
fileActionSettings: {
removeTitle: 'Αφαιρέστε το αρχείο',
uploadTitle: 'Μεταφορτώστε το αρχείο',
zoomTitle: 'Δείτε λεπτομέρειες',
dragTitle: 'Μετακίνηση/Προσπαρμογή',
indicatorNewTitle: 'Δεν μεταφορτώθηκε ακόμα',
indicatorSuccessTitle: 'Μεταφορτώθηκε',
indicatorErrorTitle: 'Σφάλμα Μεταφόρτωσης',
indicatorLoadingTitle: 'Μεταφόρτωση ...'
},
previewZoomButtonTitles: {
prev: 'Προηγούμενο αρχείο',
next: 'Επόμενο αρχείο',
toggleheader: 'Εμφάνιση/Απόκρυψη τίτλου',
fullscreen: 'Εναλλαγή πλήρους οθόνης',
borderless: 'Με ή χωρίς πλαίσιο',
close: 'Κλείσιμο προβολής'
}
};
})(window.jQuery);

96
js/file/js/locales/es.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Spanish Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['es'] = {
fileSingle: 'archivo',
filePlural: 'archivos',
browseLabel: 'Examinar &hellip;',
removeLabel: 'Quitar',
removeTitle: 'Quitar archivos seleccionados',
cancelLabel: 'Cancelar',
cancelTitle: 'Abortar la subida en curso',
uploadLabel: 'Subir archivo',
uploadTitle: 'Subir archivos seleccionados',
msgNo: 'No',
msgNoFilesSelected: 'No hay archivos seleccionados',
msgCancelled: 'Cancelado',
msgZoomModalHeading: 'Vista previa detallada',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'El archivo "{name}" (<b>{size} KB</b>) es demasiado pequeño y debe ser mayor de <b>{minSize} KB</b>.',
msgSizeTooLarge: 'El archivo "{name}" (<b>{size} KB</b>) excede el tamaño máximo permitido de <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Debe seleccionar al menos <b>{n}</b> {files} a cargar.',
msgFilesTooMany: 'El número de archivos seleccionados a cargar <b>({n})</b> excede el límite máximo permitido de <b>{m}</b>.',
msgFileNotFound: 'Archivo "{name}" no encontrado.',
msgFileSecured: 'No es posible acceder al archivo "{name}" porque estará siendo usado por otra aplicación o no tengamos permisos de lectura.',
msgFileNotReadable: 'No es posible acceder al archivo "{name}".',
msgFilePreviewAborted: 'Previsualización del archivo "{name}" cancelada.',
msgFilePreviewError: 'Ocurrió un error mientras se leía el archivo "{name}".',
msgInvalidFileName: 'Caracteres no válidos o no soportados en el nombre de archivo "{name}".',
msgInvalidFileType: 'Tipo de archivo no válido para "{name}". Sólo se permiten archivos de tipo "{types}".',
msgInvalidFileExtension: 'Extensión de archivo no válido para "{name}". Sólo se permiten archivos "{extensions}".',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'La carga de archivos se ha cancelado',
msgUploadThreshold: 'Procesando...',
msgUploadBegin: 'Inicializando...',
msgUploadEnd: 'Hecho',
msgUploadEmpty: 'No existen datos válidos para el envío.',
msgValidationError: 'Error de validación',
msgLoading: 'Subiendo archivo {index} de {files} &hellip;',
msgProgress: 'Subiendo archivo {index} de {files} - {name} - {percent}% completado.',
msgSelected: '{n} {files} seleccionado(s)',
msgFoldersNotAllowed: 'Arrastre y suelte únicamente archivos. Omitida(s) {n} carpeta(s).',
msgImageWidthSmall: 'El ancho de la imagen "{name}" debe ser de al menos {size} px.',
msgImageHeightSmall: 'La altura de la imagen "{name}" debe ser de al menos {size} px.',
msgImageWidthLarge: 'El ancho de la imagen "{name}" no puede exceder de {size} px.',
msgImageHeightLarge: 'La altura de la imagen "{name}" no puede exceder de {size} px.',
msgImageResizeError: 'No se pudieron obtener las dimensiones de la imagen para cambiar el tamaño.',
msgImageResizeException: 'Error al cambiar el tamaño de la imagen.<pre>{errors}</pre>',
msgAjaxError: 'Algo ha ido mal con la operación {operation}. Por favor, inténtelo de nuevo mas tarde.',
msgAjaxProgressError: 'La operación {operation} ha fallado',
ajaxOperations: {
deleteThumb: 'Archivo borrado',
uploadThumb: 'Archivo subido',
uploadBatch: 'Datos subidos en lote',
uploadExtra: 'Datos do formulario subidos '
},
dropZoneTitle: 'Arrastre y suelte aquí los archivos &hellip;',
dropZoneClickTitle: '<br>(o haga clic para seleccionar {files})',
fileActionSettings: {
removeTitle: 'Eliminar archivo',
uploadTitle: 'Subir archivo',
zoomTitle: 'Ver detalles',
dragTitle: 'Mover / Reordenar',
indicatorNewTitle: 'No subido todavía',
indicatorSuccessTitle: 'Subido',
indicatorErrorTitle: 'Error al subir',
indicatorLoadingTitle: 'Subiendo...'
},
previewZoomButtonTitles: {
prev: 'Ver archivo anterior',
next: 'Ver archivo siguiente',
toggleheader: 'Mostrar encabezado',
fullscreen: 'Mostrar a pantalla completa',
borderless: 'Activar el modo sin bordes',
close: 'Cerrar vista detallada'
}
};
})(window.jQuery);

96
js/file/js/locales/et.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Estonian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['et'] = {
fileSingle: 'fail',
filePlural: 'failid',
browseLabel: 'Sirvi &hellip;',
removeLabel: 'Eemalda',
removeTitle: 'Clear selected files',
cancelLabel: 'Tühista',
cancelTitle: 'Abort ongoing upload',
uploadLabel: 'Salvesta',
uploadTitle: 'Salvesta valitud failid',
msgNo: 'No',
msgNoFilesSelected: 'No files selected',
msgCancelled: 'Cancelled',
msgZoomModalHeading: 'Detailed Preview',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Fail "{name}" (<b>{size} KB</b>) ületab lubatu suuruse <b>{maxSize} KB</b>.',
msgFilesTooLess: 'You must select at least <b>{n}</b> {files} to upload.',
msgFilesTooMany: 'Number of files selected for upload <b>({n})</b> exceeds maximum allowed limit of <b>{m}</b>.',
msgFileNotFound: 'File "{name}" not found!',
msgFileSecured: 'Security restrictions prevent reading the file "{name}".',
msgFileNotReadable: 'File "{name}" is not readable.',
msgFilePreviewAborted: 'File preview aborted for "{name}".',
msgFilePreviewError: 'An error occurred while reading the file "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: '"{name}" on vale tüüpi. Ainult "{types}" on lubatud.',
msgInvalidFileExtension: 'Invalid extension for file "{name}". Only "{extensions}" files are supported.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'The file upload was aborted',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Validation Error',
msgLoading: 'Loading file {index} of {files} &hellip;',
msgProgress: 'Loading file {index} of {files} - {name} - {percent}% completed.',
msgSelected: '{n} {files} selected',
msgFoldersNotAllowed: 'Drag & drop files only! Skipped {n} dropped folder(s).',
msgImageWidthSmall: 'Pildi laius peab olema vähemalt {size} px.',
msgImageHeightSmall: 'Pildi kõrgus peab olema vähemalt {size} px.',
msgImageWidthLarge: 'Width of image file "{name}" cannot exceed {size} px.',
msgImageHeightLarge: 'Height of image file "{name}" cannot exceed {size} px.',
msgImageResizeError: 'Could not get the image dimensions to resize.',
msgImageResizeException: 'Error while resizing the image.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Lohista failid siia &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Eemalda fail',
uploadTitle: 'Salvesta fail',
zoomTitle: 'Vaata detaile',
dragTitle: 'Liiguta / Korralda',
indicatorNewTitle: 'Pole veel salvestatud',
indicatorSuccessTitle: 'Uploaded',
indicatorErrorTitle: 'Salvestamise viga',
indicatorLoadingTitle: 'Salvestan ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

97
js/file/js/locales/fa.js Normal file
View File

@@ -0,0 +1,97 @@
/*!
* FileInput Persian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Milad Nekofar <milad@nekofar.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['fa'] = {
fileSingle: 'فایل',
filePlural: 'فایل‌ها',
browseLabel: 'مرور &hellip;',
removeLabel: 'حذف',
removeTitle: 'پاکسازی فایل‌های انتخاب شده',
cancelLabel: 'لغو',
cancelTitle: 'لغو بارگزاری جاری',
uploadLabel: 'بارگذاری',
uploadTitle: 'بارگذاری فایل‌های انتخاب شده',
msgNo: 'نه',
msgNoFilesSelected: 'هیچ فایلی انتخاب نشده است',
msgCancelled: 'لغو شد',
msgZoomModalHeading: 'نمایش با جزییات',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'فایل "{name}" (<b>{size} کیلوبایت</b>) خیلی کوچک است و باید از <b>{minSize} کیلوبایت بزرگتر باشد</b>.',
msgSizeTooLarge: 'فایل "{name}" (<b>{size} کیلوبایت</b>) از حداکثر مجاز <b>{maxSize} کیلوبایت</b> بزرگتر است.',
msgFilesTooLess: 'شما باید حداقل <b>{n}</b> {files} فایل برای بارگذاری انتخاب کنید.',
msgFilesTooMany: 'تعداد فایل‌های انتخاب شده برای بارگذاری <b>({n})</b> از حداکثر مجاز عبور کرده است <b>{m}</b>.',
msgFileNotFound: 'فایل "{name}" یافت نشد!',
msgFileSecured: 'محدودیت های امنیتی مانع خواندن فایل "{name}" است.',
msgFileNotReadable: 'فایل "{name}" قابل نوشتن نیست.',
msgFilePreviewAborted: 'پیش نمایش فایل "{name}". به مشکل خورد',
msgFilePreviewError: 'در هنگام خواندن فایل "{name}" خطایی رخ داد.',
msgInvalidFileName: 'کاراکترهای غیرمجاز و یا ناشناخته در نام فایل "{name}".',
msgInvalidFileType: 'نوع فایل "{name}" معتبر نیست. فقط "{types}" پشیبانی می‌شوند.',
msgInvalidFileExtension: 'پسوند فایل "{name}" معتبر نیست. فقط "{extensions}" پشتیبانی می‌شوند.',
msgFileTypes: {
'image': 'عکس',
'html': 'اچ تا ام ال',
'text': 'متن',
'video': 'ویدئو',
'audio': 'صدا',
'flash': 'فلش',
'pdf': 'پی دی اف',
'object': 'دیگر'
},
msgUploadAborted: 'بارگذاری فایل به مشکل خورد.',
msgUploadThreshold: 'در حال پردازش...',
msgUploadBegin: 'در حال شروع...',
msgUploadEnd: 'انجام شد',
msgUploadEmpty: 'هیچ داده معتبری برای بارگذاری موجود نیست.',
msgValidationError: 'خطای اعتبار سنجی',
msgLoading: 'بارگیری فایل {index} از {files} &hellip;',
msgProgress: 'بارگیری فایل {index} از {files} - {name} - {percent}% تمام شد.',
msgSelected: '{n} {files} انتخاب شده',
msgFoldersNotAllowed: 'فقط فایل‌ها را بکشید و رها کنید! {n} پوشه نادیده گرفته شد.',
msgImageWidthSmall: 'عرض فایل تصویر "{name}" باید حداقل {size} پیکسل باشد.',
msgImageHeightSmall: 'ارتفاع فایل تصویر "{name}" باید حداقل {size} پیکسل باشد.',
msgImageWidthLarge: 'عرض فایل تصویر "{name}" نمیتواند از {size} پیکسل بیشتر باشد.',
msgImageHeightLarge: 'ارتفاع فایل تصویر "{name}" نمی‌تواند از {size} پیکسل بیشتر باشد.',
msgImageResizeError: 'یافت نشد ابعاد تصویر را برای تغییر اندازه.',
msgImageResizeException: 'خطا در هنگام تغییر اندازه تصویر.<pre>{errors}</pre>',
msgAjaxError: 'به نظر مشکلی در حین {operation} روی داده است. لطفا دوباره تلاش کنید!',
msgAjaxProgressError: '{operation} لغو شد',
ajaxOperations: {
deleteThumb: 'حذف فایل',
uploadThumb: 'بارگذاری فایل',
uploadBatch: 'بارگذاری جمعی فایلها',
uploadExtra: 'بارگذاری با کمک فُرم'
},
dropZoneTitle: 'فایل‌ها را بکشید و در اینجا رها کنید &hellip;',
dropZoneClickTitle: '<br>(یا برای انتخاب {files} کلیک کنید)',
fileActionSettings: {
removeTitle: 'حذف فایل',
uploadTitle: 'آپلود فایل',
zoomTitle: 'دیدن جزئیات',
dragTitle: 'جابجایی / چیدمان',
indicatorNewTitle: 'آپلود نشده است',
indicatorSuccessTitle: 'آپلود شده',
indicatorErrorTitle: 'بارگذاری خطا',
indicatorLoadingTitle: 'آپلود ...'
},
previewZoomButtonTitles: {
prev: 'مشاهده فایل قبلی',
next: 'مشاهده فایل بعدی',
toggleheader: 'نمایش عنوان',
fullscreen: 'نمایش تمام صفحه',
borderless: 'نمایش حاشیه',
close: 'بستن نمایش با جزییات'
}
};
})(window.jQuery);

88
js/file/js/locales/fi.js Normal file
View File

@@ -0,0 +1,88 @@
/*!
* FileInput Finnish Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales.fi = {
fileSingle: 'tiedosto',
filePlural: 'tiedostot',
browseLabel: 'Selaa &hellip;',
removeLabel: 'Poista',
removeTitle: 'Tyhj&auml;nn&auml; valitut tiedostot',
cancelLabel: 'Peruuta',
cancelTitle: 'Peruuta lataus',
uploadLabel: 'Lataa',
uploadTitle: 'Lataa valitut tiedostot',
msgNoFilesSelected: '',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Tiedosto "{name}" (<b>{size} Kt</b>) ylitt&auml;&auml; suurimman sallitun tiedoston koon, joka on <b>{maxSize} Kt</b>. Yrit&auml; uudelleen!',
msgFilesTooLess: 'V&auml;hint&auml;&auml;n <b>{n}</b> {files} tiedostoa on valittava ladattavaksi. Ole hyv&auml; ja yrit&auml; uudelleen!',
msgFilesTooMany: 'Valittujen tiedostojen lukum&auml;&auml;r&auml; <b>({n})</b> ylitt&auml;&auml; suurimman sallitun m&auml;&auml;r&auml;n <b>{m}</b>. Ole hyv&auml; ja yrit&auml; uudelleen!',
msgFileNotFound: 'Tiedostoa "{name}" ei l&ouml;ydy!',
msgFileSecured: 'Tietoturvarajoitukset est&auml;v&auml;t tiedoston "{name}" lukemisen.',
msgFileNotReadable: 'Tiedosto "{name}" ei ole luettavissa.',
msgFilePreviewAborted: 'Tiedoston "{name}" esikatselu keskeytetty.',
msgFilePreviewError: 'Virhe on tapahtunut luettaessa tiedostoa "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Tiedosto "{name}" on v&auml;&auml;r&auml;n tyyppinen. Ainoastaan tiedostot tyyppi&auml; "{types}" ovat tuettuja.',
msgInvalidFileExtension: 'Tiedoston "{name}" tarkenne on ep&auml;kelpo. Ainoastaan tarkenteet "{extensions}" ovat tuettuja.',
msgFileTypes: {
'image': 'Kuva',
'html': 'HTML',
'text': 'Teksti',
'video': 'Video',
'audio': 'Ääni',
'flash': 'Flash',
'pdf': 'PDF',
'object': 'Olio'
},
msgUploadThreshold: 'Käsitellään...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'Ei ladattavaa dataa.',
msgValidationError: 'Tiedoston latausvirhe',
msgLoading: 'Ladataan tiedostoa {index} / {files} &hellip;',
msgProgress: 'Ladataan tiedostoa {index} / {files} - {name} - {percent}% valmistunut.',
msgSelected: '{n} tiedostoa valittu',
msgFoldersNotAllowed: 'Raahaa ja pudota ainoastaan tiedostoja! Ohitettu {n} raahattua kansiota.',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Raahaa ja pudota tiedostot t&auml;h&auml;n &hellip;',
dropZoneClickTitle: '<br>(tai valitse hiirellä {files})',
fileActionSettings: {
removeTitle: 'Poista tiedosto',
uploadTitle: 'Upload file',
zoomTitle: 'Yksityiskohdat',
dragTitle: 'Siirrä / Järjestele',
indicatorNewTitle: 'Ei ladattu',
indicatorSuccessTitle: 'Ladattu',
indicatorErrorTitle: 'Lataus epäonnistui',
indicatorLoadingTitle: 'Ladataan ...'
},
previewZoomButtonTitles: {
prev: 'Seuraava tiedosto',
next: 'Edellinen tiedosto',
toggleheader: 'Näytä otsikko',
fullscreen: 'Kokonäytön tila',
borderless: 'Rajaton tila',
close: 'Sulje esikatselu'
}
};
$.extend($.fn.fileinput.defaults, $.fn.fileinputLocales.fi);
})(window.jQuery);

96
js/file/js/locales/fr.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput French Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['fr'] = {
fileSingle: 'fichier',
filePlural: 'fichiers',
browseLabel: 'Parcourir&hellip;',
removeLabel: 'Retirer',
removeTitle: 'Retirer les fichiers sélectionnés',
cancelLabel: 'Annuler',
cancelTitle: "Annuler l'envoi en cours",
uploadLabel: 'Transférer',
uploadTitle: 'Transférer les fichiers sélectionnés',
msgNo: 'Non',
msgNoFilesSelected: '',
msgCancelled: 'Annulé',
msgZoomModalHeading: 'Aperçu détaillé',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Le fichier "{name}" (<b>{size} Ko</b>) dépasse la taille maximale autorisée qui est de <b>{maxSize} Ko</b>.',
msgFilesTooLess: 'Vous devez sélectionner au moins <b>{n}</b> {files} à transmettre.',
msgFilesTooMany: 'Le nombre de fichier sélectionné <b>({n})</b> dépasse la quantité maximale autorisée qui est de <b>{m}</b>.',
msgFileNotFound: 'Le fichier "{name}" est introuvable !',
msgFileSecured: "Des restrictions de sécurité vous empêchent d'accéder au fichier \"{name}\".",
msgFileNotReadable: 'Le fichier "{name}" est illisble.',
msgFilePreviewAborted: 'Prévisualisation du fichier "{name}" annulée.',
msgFilePreviewError: 'Une erreur est survenue lors de la lecture du fichier "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Type de document invalide pour "{name}". Seulement les documents de type "{types}" sont autorisés.',
msgInvalidFileExtension: 'Extension invalide pour le fichier "{name}". Seules les extensions "{extensions}" sont autorisées.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Le téléchargement du fichier a été interrompu',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Erreur de validation',
msgLoading: 'Transmission du fichier {index} sur {files}&hellip;',
msgProgress: 'Transmission du fichier {index} sur {files} - {name} - {percent}% faits.',
msgSelected: '{n} {files} sélectionné(s)',
msgFoldersNotAllowed: 'Glissez et déposez uniquement des fichiers ! {n} répertoire(s) exclu(s).',
msgImageWidthSmall: 'Largeur de fichier image "{name}" doit être d\'au moins {size} px.',
msgImageHeightSmall: 'Hauteur de fichier image "{name}" doit être d\'au moins {size} px.',
msgImageWidthLarge: 'Largeur de fichier image "{name}" ne peut pas dépasser {size} px.',
msgImageHeightLarge: 'Hauteur de fichier image "{name}" ne peut pas dépasser {size} px.',
msgImageResizeError: "Impossible d'obtenir les dimensions de l'image à redimensionner.",
msgImageResizeException: "Erreur lors du redimensionnement de l'image.<pre>{errors}</pre>",
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Glissez et déposez les fichiers ici&hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Supprimer le fichier',
uploadTitle: 'Télécharger un fichier',
zoomTitle: 'Voir les détails',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Pas encore téléchargé',
indicatorSuccessTitle: 'Posté',
indicatorErrorTitle: 'Ajouter erreur',
indicatorLoadingTitle: 'ajout ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

96
js/file/js/locales/gl.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Galician Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['gl'] = {
fileSingle: 'arquivo',
filePlural: 'arquivos',
browseLabel: 'Examinar &hellip;',
removeLabel: 'Quitar',
removeTitle: 'Quitar aquivos seleccionados',
cancelLabel: 'Cancelar',
cancelTitle: 'Abortar a subida en curso',
uploadLabel: 'Subir arquivo',
uploadTitle: 'Subir arquivos seleccionados',
msgNo: 'Non',
msgNoFilesSelected: 'Non hay arquivos seleccionados',
msgCancelled: 'Cancelado',
msgZoomModalHeading: 'Vista previa detallada',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'O arquivo "{name}" (<b>{size} KB</b>) é demasiado pequeño e debe ser maior de <b>{minSize} KB</b>.',
msgSizeTooLarge: 'El arquivo "{name}" (<b>{size} KB</b>) excede o tamaño máximo permitido de <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Debe seleccionar al menos <b>{n}</b> {files} a cargar.',
msgFilesTooMany: 'O número de arquivos seleccionados a cargar <b>({n})</b> excede do límite máximo permitido de <b>{m}</b>.',
msgFileNotFound: 'Arquivo "{name}" non encontrado.',
msgFileSecured: 'Non é posible acceder o arquivo "{name}" porque estará sendo usado por outra aplicación ou non teñamos permisos de lectura.',
msgFileNotReadable: 'Non é posible acceder o archivo "{name}".',
msgFilePreviewAborted: 'Previsualización do arquivo "{name}" cancelada.',
msgFilePreviewError: 'Ocurriu un erro mentras se lía o arquivo "{name}".',
msgInvalidFileName: 'Caracteres non válidos o no soportados no nome do arquivos "{name}".',
msgInvalidFileType: 'Tipo de archivo no válido para "{name}". Sólo se permiten arquivos do tipo "{types}".',
msgInvalidFileExtension: 'Extensión de arquivo non válido para "{name}". Só se permiten arquivos "{extensions}".',
msgFileTypes: {
'image': 'imaxe',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'A carga de arquivos cancelouse',
msgUploadThreshold: 'Procesando...',
msgUploadBegin: 'Inicialicando...',
msgUploadEnd: 'Feito',
msgUploadEmpty: 'Non existen datos válidos para o envío.',
msgValidationError: 'Erro de validación',
msgLoading: 'Subindo arquivo {index} de {files} &hellip;',
msgProgress: 'Subiendo arquivo {index} de {files} - {name} - {percent}% completado.',
msgSelected: '{n} {files} seleccionado(s)',
msgFoldersNotAllowed: 'Arrastra e solta únicamente arquivoa. Omitida(s) {n} carpeta(s).',
msgImageWidthSmall: 'O ancho da imaxe "{name}" debe ser de al menos {size} px.',
msgImageHeightSmall: 'A altura de la imaxe "{name}" debe ser de al menos {size} px.',
msgImageWidthLarge: 'El ancho de la imaxe "{name}" no puede exceder de {size} px.',
msgImageHeightLarge: 'La altura de la imaxe "{name}" no puede exceder de {size} px.',
msgImageResizeError: 'No se pudieron obtener las dimensiones de la imaxe para cambiar el tamaño.',
msgImageResizeException: 'Erro o cambiar o tamaño da imaxe.<pre>{errors}</pre>',
msgAjaxError: 'Algo foi mal ca operación {operation}. Por favor, intentao de novo mais tarde.',
msgAjaxProgressError: 'A operación {operation} fallou',
ajaxOperations: {
deleteThumb: 'Arquivo borrado',
uploadThumb: 'Arquivo subido',
uploadBatch: 'Datos subidos en lote',
uploadExtra: 'Datos do formulario subidos'
},
dropZoneTitle: 'Arrasta e solte aquí os arquivos &hellip;',
dropZoneClickTitle: '<br>(ou fai clic para seleccionar {files})',
fileActionSettings: {
removeTitle: 'Eliminar arquivo',
uploadTitle: 'Subir arquivo',
zoomTitle: 'Ver detalles',
dragTitle: 'Mover / Reordenar',
indicatorNewTitle: 'Non subido todavía',
indicatorSuccessTitle: 'Subido',
indicatorErrorTitle: 'Erro o subir',
indicatorLoadingTitle: 'Subiendo...'
},
previewZoomButtonTitles: {
prev: 'Ver arquivo anterior',
next: 'Ver arquivo siguinte',
toggleheader: 'Mostrar encabezado',
fullscreen: 'Mostrar a pantalla completa',
borderless: 'Activar o modo sen bordes',
close: 'Cerrar vista detallada'
}
};
})(window.jQuery);

96
js/file/js/locales/hu.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Hungarian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['hu'] = {
fileSingle: 'fájl',
filePlural: 'fájlok',
browseLabel: 'Tallóz &hellip;',
removeLabel: 'Eltávolít',
removeTitle: 'Kijelölt fájlok törlése',
cancelLabel: 'Mégse',
cancelTitle: 'Feltöltés megszakítása',
uploadLabel: 'Feltöltés',
uploadTitle: 'Kijelölt fájlok feltöltése',
msgNo: 'Nem',
msgNoFilesSelected: 'Nincs fájl kiválasztva',
msgCancelled: 'Megszakítva',
msgZoomModalHeading: 'Részletes Előnézet',
msgFileRequired: 'Kötelező fájlt kiválasztani a feltöltéshez.',
msgSizeTooSmall: 'A fájl: "{name}" (<b>{size} KB</b>) mérete túl kicsi, nagyobbnak kell lennie, mint <b>{minSize} KB</b>.',
msgSizeTooLarge: '"{name}" fájl (<b>{size} KB</b>) mérete nagyobb a megengedettnél <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Legalább <b>{n}</b> {files} ki kell választania a feltöltéshez.',
msgFilesTooMany: 'A feltölteni kívánt fájlok száma <b>({n})</b> elérte a megengedett maximumot <b>{m}</b>.',
msgFileNotFound: '"{name}" fájl nem található!',
msgFileSecured: 'Biztonsági beállítások nem engedik olvasni a fájlt "{name}".',
msgFileNotReadable: '"{name}" fájl nem olvasható.',
msgFilePreviewAborted: '"{name}" fájl feltöltése megszakítva.',
msgFilePreviewError: 'Hiba lépett fel a "{name}" fájl olvasása közben.',
msgInvalidFileName: 'Hibás vagy nem támogatott karakterek a fájl nevében "{name}".',
msgInvalidFileType: 'Nem megengedett fájl "{name}". Csak a "{types}" fájl típusok támogatottak.',
msgInvalidFileExtension: 'Nem megengedett kiterjesztés / fájltípus "{name}". Csak a "{extensions}" kiterjesztés(ek) / fájltípus(ok) támogatottak.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'A fájl feltöltés megszakítva',
msgUploadThreshold: 'Folyamatban...',
msgUploadBegin: 'Inicializálás...',
msgUploadEnd: 'Kész',
msgUploadEmpty: 'Nincs érvényes adat a feltöltéshez.',
msgValidationError: 'Érvényesítés hiba',
msgLoading: '{index} / {files} töltése &hellip;',
msgProgress: 'Feltöltés: {index} / {files} - {name} - {percent}% kész.',
msgSelected: '{n} {files} kiválasztva.',
msgFoldersNotAllowed: 'Csak fájlokat húzzon ide! Kihagyva {n} könyvtár.',
msgImageWidthSmall: 'A kép szélességének "{name}" legalább {size} pixelnek kell lennie.',
msgImageHeightSmall: 'A kép magasságának "{name}" legalább {size} pixelnek kell lennie.',
msgImageWidthLarge: 'A kép szélessége "{name}" nem haladhatja meg a {size} pixelt.',
msgImageHeightLarge: 'A kép magassága "{name}" nem haladhatja meg a {size} pixelt.',
msgImageResizeError: 'Nem lehet megállapítani a kép méreteit az átméretezéshez.',
msgImageResizeException: 'Hiba történt a méretezés közben.<pre>{errors}</pre>',
msgAjaxError: 'Hiba történt a művelet közben ({operation}). Kérjük, próbálja később!',
msgAjaxProgressError: 'Hiba! ({operation})',
ajaxOperations: {
deleteThumb: 'fájl törlés',
uploadThumb: 'fájl feltöltés',
uploadBatch: 'csoportos fájl feltöltés',
uploadExtra: 'űrlap adat feltöltés'
},
dropZoneTitle: 'Húzzon ide fájlokat &hellip;',
dropZoneClickTitle: '<br>(vagy kattintson ide a {files} tallózásához...)',
fileActionSettings: {
removeTitle: 'A fájl eltávolítása',
uploadTitle: 'fájl feltöltése',
zoomTitle: 'Részletek megtekintése',
dragTitle: 'Mozgatás / Átrendezés',
indicatorNewTitle: 'Nem feltöltött',
indicatorSuccessTitle: 'Feltöltött',
indicatorErrorTitle: 'Feltöltés hiba',
indicatorLoadingTitle: 'Feltöltés ...'
},
previewZoomButtonTitles: {
prev: 'Elöző fájl megnézése',
next: 'Következő fájl megnézése',
toggleheader: 'Fejléc mutatása',
fullscreen: 'Teljes képernyős mód bekapcsolása',
borderless: 'Keret nélküli ablak mód bekapcsolása',
close: 'Részletes előnézet bezárása'
}
};
})(window.jQuery);

97
js/file/js/locales/id.js Normal file
View File

@@ -0,0 +1,97 @@
/*!
* FileInput Indonesian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Bambang Riswanto <bamz3r@gmail.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['id'] = {
fileSingle: 'berkas',
filePlural: 'berkas',
browseLabel: 'Pilih File &hellip;',
removeLabel: 'Hapus',
removeTitle: 'Hapus berkas terpilih',
cancelLabel: 'Batal',
cancelTitle: 'Batalkan proses pengunggahan',
uploadLabel: 'Unggah',
uploadTitle: 'Unggah berkas terpilih',
msgNo: 'Tidak',
msgNoFilesSelected: '',
msgCancelled: 'Dibatalkan',
msgZoomModalHeading: 'Pratinjau terperinci',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Berkas "{name}" (<b>{size} KB</b>) melebihi ukuran upload maksimal yaitu <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Anda harus memilih setidaknya <b>{n}</b> {files} untuk diunggah.',
msgFilesTooMany: '<b>({n})</b> berkas yang dipilih untuk diunggah melebihi ukuran upload maksimal yaitu <b>{m}</b>.',
msgFileNotFound: 'Berkas "{name}" tak ditemukan!',
msgFileSecured: 'Sistem keamanan mencegah untuk membaca berkas "{name}".',
msgFileNotReadable: 'Berkas "{name}" tak dapat dibaca.',
msgFilePreviewAborted: 'Pratinjau untuk berkas "{name}" dibatalkan.',
msgFilePreviewError: 'Kesalahan saat membaca berkas "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Jenis berkas "{name}" tidak sah. Hanya berkas "{types}" yang didukung.',
msgInvalidFileExtension: 'Ekstensi berkas "{name}" tidak sah. Hanya ekstensi "{extensions}" yang didukung.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Pengunggahan berkas dibatalkan',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Kesalahan validasi',
msgLoading: 'Memuat {index} dari {files} berkas &hellip;',
msgProgress: 'Memuat {index} dari {files} berkas - {name} - {percent}% selesai.',
msgSelected: '{n} {files} dipilih',
msgFoldersNotAllowed: 'Hanya tahan dan lepas file saja! {n} folder diabaikan.',
msgImageWidthSmall: 'Lebar dari gambar "{name}" harus sekurangnya {size} px.',
msgImageHeightSmall: 'Tinggi dari gambar "{name}" harus sekurangnya {size} px.',
msgImageWidthLarge: 'Lebar dari gambar "{name}" tak boleh melebihi {size} px.',
msgImageHeightLarge: 'Tinggi dari gambar "{name}" tak boleh melebihi {size} px.',
msgImageResizeError: 'Tak dapat menentukan dimensi gambar untuk mengubah ukuran.',
msgImageResizeException: 'Kesalahan saat mengubah ukuran gambar.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Tarik dan lepaskan berkas disini &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Hapus berkas',
uploadTitle: 'Unggah berkas',
zoomTitle: 'Tampilkan Rincian',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Belum diunggah',
indicatorSuccessTitle: 'Sudah diunggah',
indicatorErrorTitle: 'Kesalahan pengunggahan',
indicatorLoadingTitle: 'Mengunggah ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

98
js/file/js/locales/it.js Normal file
View File

@@ -0,0 +1,98 @@
/*!
* FileInput Italian Translation
*
* Author: Lorenzo Milesi <maxxer@yetopen.it>
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['it'] = {
fileSingle: 'file',
filePlural: 'file',
browseLabel: 'Sfoglia&hellip;',
removeLabel: 'Rimuovi',
removeTitle: 'Rimuovi i file selezionati',
cancelLabel: 'Annulla',
cancelTitle: 'Annulla i caricamenti in corso',
uploadLabel: 'Carica',
uploadTitle: 'Carica i file selezionati',
msgNo: 'No',
msgNoFilesSelected: '',
msgCancelled: 'Annullato',
msgZoomModalHeading: 'Anteprima dettagliata',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Il file "{name}" (<b>{size} KB</b>) eccede la dimensione massima di caricamento di <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Devi selezionare almeno <b>{n}</b> {files} da caricare.',
msgFilesTooMany: 'Il numero di file selezionati per il caricamento <b>({n})</b> eccede il numero massimo di file accettati <b>{m}</b>.',
msgFileNotFound: 'File "{name}" non trovato!',
msgFileSecured: 'Restrizioni di sicurezza impediscono la lettura del file "{name}".',
msgFileNotReadable: 'Il file "{name}" non \xE8 leggibile.',
msgFilePreviewAborted: 'Generazione anteprima per "{name}" annullata.',
msgFilePreviewError: 'Errore durante la lettura del file "{name}".',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: 'Tipo non valido per il file "{name}". Sono ammessi solo file di tipo "{types}".',
msgInvalidFileExtension: 'Estensione non valida per il file "{name}". Sono ammessi solo file con estensione "{extensions}".',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Il caricamento del file è stata interrotta',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Errore di convalida',
msgLoading: 'Caricamento file {index} di {files}&hellip;',
msgProgress: 'Caricamento file {index} di {files} - {name} - {percent}% completato.',
msgSelected: '{n} {files} selezionati',
msgFoldersNotAllowed: 'Trascina solo file! Ignorata/e {n} cartella/e.',
msgImageWidthSmall: 'Larghezza di file immagine "{name}" deve essere di almeno {size} px.',
msgImageHeightSmall: 'Altezza di file immagine "{name}" deve essere di almeno {size} px.',
msgImageWidthLarge: 'Larghezza di file immagine "{name}" non può superare {size} px.',
msgImageHeightLarge: 'Altezza di file immagine "{name}" non può superare {size} px.',
msgImageResizeError: "Impossibile ottenere le dimensioni dell'immagine per ridimensionare.",
msgImageResizeException: "Errore durante il ridimensionamento dell'immagine.<pre>{errors}</pre>",
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Trascina i file qui&hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Rimuovere il file',
uploadTitle: 'Caricare un file',
zoomTitle: 'Guarda i dettagli',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Non ancora caricato',
indicatorSuccessTitle: 'Caricati',
indicatorErrorTitle: 'Carica Errore',
indicatorLoadingTitle: 'Caricamento ...'
},
previewZoomButtonTitles: {
prev: 'View previous file',
next: 'View next file',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

106
js/file/js/locales/ja.js Normal file
View File

@@ -0,0 +1,106 @@
/*!
* FileInput Japanese Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Yuta Hoshina <hoshina@gmail.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
* slugCallback
* \u4e00-\u9fa5 : Kanji (Chinese characters)
* \u3040-\u309f : Hiragana (Japanese syllabary)
* \u30a0-\u30ff\u31f0-\u31ff : Katakana (including phonetic extension)
* \u3200-\u32ff : Enclosed CJK Letters and Months
* \uff00-\uffef : Halfwidth and Fullwidth Forms
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['ja'] = {
fileSingle: 'ファイル',
filePlural: 'ファイル',
browseLabel: 'ファイルを選択&hellip;',
removeLabel: '削除',
removeTitle: '選択したファイルを削除',
cancelLabel: 'キャンセル',
cancelTitle: 'アップロードをキャンセル',
uploadLabel: 'アップロード',
uploadTitle: '選択したファイルをアップロード',
msgNo: 'いいえ',
msgNoFilesSelected: 'ファイルが選択されていません',
msgCancelled: 'キャンセル',
msgZoomModalHeading: 'プレビュー',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'File "{name}" (<b>{size} KB</b>) is too small and must be larger than <b>{minSize} KB</b>.',
msgSizeTooLarge: 'ファイル"{name}" (<b>{size} KB</b>)はアップロード可能な上限容量<b>{maxSize} KB</b>を超えています',
msgFilesTooLess: '最低<b>{n}</b>個の{files}を選択してください',
msgFilesTooMany: '選択したファイルの数<b>({n}個)</b>はアップロード可能な上限数<b>({m}個)</b>を超えています',
msgFileNotFound: 'ファイル"{name}"はありませんでした',
msgFileSecured: 'ファイル"{name}"は読み取り権限がないため取得できません',
msgFileNotReadable: 'ファイル"{name}"は読み込めません',
msgFilePreviewAborted: 'ファイル"{name}"のプレビューを中止しました',
msgFilePreviewError: 'ファイル"{name}"の読み込み中にエラーが発生しました',
msgInvalidFileName: 'Invalid or unsupported characters in file name "{name}".',
msgInvalidFileType: '"{name}"は無効なファイル形式です。"{types}"形式のファイルのみサポートしています',
msgInvalidFileExtension: '"{name}"は無効なファイル拡張子です。拡張子が"{extensions}"のファイルのみサポートしています',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'ファイルのアップロードが中止されました',
msgUploadThreshold: 'Processing...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: '検証エラー',
msgLoading: '{files}個中{index}個目のファイルを読み込み中&hellip;',
msgProgress: '{files}個中{index}個のファイルを読み込み中 - {name} - {percent}% 完了',
msgSelected: '{n}個の{files}を選択',
msgFoldersNotAllowed: 'ドラッグ&ドロップが可能なのはファイルのみです。{n}個のフォルダ-は無視されました',
msgImageWidthSmall: '画像ファイル"{name}"の幅が小さすぎます。画像サイズの幅は少なくとも{size}px必要です',
msgImageHeightSmall: '画像ファイル"{name}"の高さが小さすぎます。画像サイズの高さは少なくとも{size}px必要です',
msgImageWidthLarge: '画像ファイル"{name}"の幅がアップロード可能な画像サイズ({size}px)を超えています',
msgImageHeightLarge: '画像ファイル"{name}"の高さがアップロード可能な画像サイズ({size}px)を超えています',
msgImageResizeError: 'リサイズ時に画像サイズが取得できませんでした',
msgImageResizeException: '画像のリサイズ時にエラーが発生しました。<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'ファイルをドラッグ&ドロップ&hellip;',
dropZoneClickTitle: '<br>(または クリックして{files}を選択 )',
slugCallback: function(text) {
return text ? text.split(/(\\|\/)/g).pop().replace(/[^\w\u4e00-\u9fa5\u3040-\u309f\u30a0-\u30ff\u31f0-\u31ff\u3200-\u32ff\uff00-\uffef\-.\\\/ ]+/g, '') : '';
},
fileActionSettings: {
removeTitle: 'ファイルを削除',
uploadTitle: 'ファイルをアップロード',
zoomTitle: 'プレビュー',
dragTitle: '移動 / 再配置',
indicatorNewTitle: 'まだアップロードされていません',
indicatorSuccessTitle: 'アップロード済み',
indicatorErrorTitle: 'アップロード失敗',
indicatorLoadingTitle: 'アップロード中...'
},
previewZoomButtonTitles: {
prev: '前のファイルを表示',
next: '次のファイルを表示',
toggleheader: 'ファイル情報の表示/非表示',
fullscreen: 'フルスクリーン表示の開始/終了',
borderless: 'フルウィンドウ表示の開始/終了',
close: 'プレビューを閉じる'
}
};
})(window.jQuery);

96
js/file/js/locales/kr.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Korean Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['kr'] = {
fileSingle: '파일',
filePlural: '파일들',
browseLabel: '찾기 &hellip;',
removeLabel: '지우기',
removeTitle: '선택한 파일들 지우기',
cancelLabel: '취소',
cancelTitle: '업로드 중단하기',
uploadLabel: '업로드',
uploadTitle: '선택한 파일 업로드하기',
msgNo: '아니요',
msgNoFilesSelected: '선택한 파일이 없습니다.',
msgCancelled: '취소되었습니다.',
msgZoomModalHeading: '자세한 미리보기',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: '파일 "{name}" (<b>{size} KB</b>)이 너무 작습니다. <b>{minSize} KB</b>보다 용량이 커야 합니다..',
msgSizeTooLarge: '파일 "{name}" (<b>{size} KB</b>)이 너무 큽니다. 허용 파일 사이즈는 <b>{maxSize} KB</b>.입니다.',
msgFilesTooLess: '업로드하기 위해 최소 <b>{n}</b> {files}개의 파일을 선택해야 합니다.',
msgFilesTooMany: '선택한 파일의 수 <b>({n})</b>가 업로드 허용 최고치인 <b>{m}</b>를 넘었습니다..',
msgFileNotFound: '파일 "{name}"을 찾을 수 없습니다.!',
msgFileSecured: '보안상의 이유로 파일 "{name}"을/를 읽을 수 없습니다..',
msgFileNotReadable: '파일 "{name}"은/는 읽을 수 없습니다.',
msgFilePreviewAborted: '파일 "{name}"의 미리보기가 중단되었습니다.',
msgFilePreviewError: '파일 "{name}"을/를 읽다가 에러가 발생했습니다.',
msgInvalidFileName: '파일 "{name}" 중 지원 불가능한 문자가 포함되어 있습니다.',
msgInvalidFileType: '파일 "{name}"의 타입은 지원하지 않습니다. "{types}" 타입의 파일을 선택해 주십시요.',
msgInvalidFileExtension: '파일 "{name}"의 익스텐션은 지원하지 않습니다. "{extensions}" 타입의 익스텐션을 선택해 주십시요.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: '파일 업로드가 중단되었습니다.',
msgUploadThreshold: '업로드 중...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: '업로드 가능 데이터가 존재하지 않습니다.',
msgValidationError: '유효성 오류',
msgLoading: '파일 {files} 중 {index}번째를 로딩하고 있습니다. &hellip;',
msgProgress: '파일 {files}의 {name}이 {percent}% 로딩되었습니다. ',
msgSelected: '{n} {files}이 선택 되었습니다.',
msgFoldersNotAllowed: '드래그 앤 드랍 파일만 가능합니다! 드랍한 {n}번째 폴더를 건너 뛰었습니다.',
msgImageWidthSmall: '이미지 파일 "{name}"의 가로는 최소 {size} px가 되어야 합니다.',
msgImageHeightSmall: '이미지 파일 "{name}"의 세로는 최소 {size} px가 되어야 합니다.',
msgImageWidthLarge: '이미지 파일 "{name}"의 가로는 최대 {size} px를 넘을수 없습니다.',
msgImageHeightLarge: '이미지 파일 "{name}"의 세로는 최대 {size} px를 넘을수 없습니다.',
msgImageResizeError: '이미지의 사이즈를 재조정을 위한 이미지 사이즈를 가져올 수 없습니다.',
msgImageResizeException: '이미지 사이즈 재조정이 다음 이유로 실패했습니다.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: '파일을 여기에 드래그인 드랍을 하십시요 &hellip;',
dropZoneClickTitle: '<br>(또는 {files} 선택을 위해 클릭하십시요)',
fileActionSettings: {
removeTitle: '파일 지우기',
uploadTitle: '파일 업로드 하기',
zoomTitle: '세부 정보 보기',
dragTitle: '옭기기 / 재배열하기',
indicatorNewTitle: '아직 업로드가 안되었습니다.',
indicatorSuccessTitle: '업로드가 성공하였습니다.',
indicatorErrorTitle: '업로드 중 에러가 발행했습니다.',
indicatorLoadingTitle: '업로드 중 ...'
},
previewZoomButtonTitles: {
prev: '전 파일 보기',
next: '다음 파일 보기',
toggleheader: '머릿글 토글하기',
fullscreen: '전채화면 토글하기',
borderless: '무 테두리 토글하기',
close: '세부 정보 미리보기 토글하기'
}
};
})(window.jQuery);

84
js/file/js/locales/kz.js Normal file
View File

@@ -0,0 +1,84 @@
/*!
* FileInput Kazakh Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
* @author Kali Toleugazy <almatytol@gmail.com>
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['kz'] = {
fileSingle: 'файл',
filePlural: 'файлдар',
browseLabel: 'Таңдау &hellip;',
removeLabel: 'Жою',
removeTitle: 'Таңдалған файлдарды жою',
cancelLabel: 'Күшін жою',
cancelTitle: 'Ағымдағы жүктеуді болдырмау',
uploadLabel: 'Жүктеу',
uploadTitle: 'Таңдалған файлдарды жүктеу',
msgNo: 'жоқ',
msgNoFilesSelected: 'Файл таңдалмады',
msgCancelled: 'Күші жойылған',
msgZoomModalHeading: 'Алдын ала толық көру',
msgSizeTooLarge: 'Файл "{name}" (<b>{size} KB</b>) ең үлкен <b>{maxSize} KB</b> өлшемінен асады.',
msgFilesTooLess: 'Жүктеу үшіy кемінде <b>{n}</b> {files} таңдау керек.',
msgFilesTooMany: 'Таңдалған <b>({n})</b> файлдардың саны берілген <b>{m}</b> саннан асып кетті.',
msgFileNotFound: 'Файл "{name}" табылмады!',
msgFileSecured: 'Шектеу қауіпсіздігі "{name}" файлын оқуға тыйым салады.',
msgFileNotReadable: '"{name}" файлды оқу мүмкін емес.',
msgFilePreviewAborted: '"{name}" файл үшін алдын ала қарап көру тыйым салынған.',
msgFilePreviewError: '"{name}" файлды оқығанда қате пайда болды.',
msgInvalidFileType: '"{name}" тыйым салынған файл түрі. Тек мынаналарға рұқсат етілген: "{types}"',
msgInvalidFileExtension: '"{name}" тыйым салынған файл кеңейтімі. Тек "{extensions}" рұқсат.',
msgUploadAborted: 'Файлды жүктеу доғарылды',
msgUploadThreshold: 'Өңдеу...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Тексеру қатесі',
msgLoading: '{index} файлды {files} &hellip; жүктеу',
msgProgress: '{index} файлды {files} - {name} - {percent}% жүктеу аяқталды.',
msgSelected: 'Таңдалған файлдар саны: {n}',
msgFoldersNotAllowed: 'Тек файлдарды сүйреу рұқсат! {n} папка өткізілген.',
msgImageWidthSmall: '{name} суреттің ені {size} px. аз болмау керек',
msgImageHeightSmall: '{name} суреттің биіктігі {size} px. аз болмау керек',
msgImageWidthLarge: '"{name}" суреттің ені {size} px. аспау керек',
msgImageHeightLarge: '"{name}" суреттің биіктігі {size} px. аспау керек',
msgImageResizeError: 'Суреттің өлшемін өзгерту үшін, мөлшері алынбады',
msgImageResizeException: 'Суреттің мөлшерлерін өзгерткен кезде қателік пайда болды.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Файлдарды осында сүйреу &hellip;',
dropZoneClickTitle: '<br>(or click to select {files})',
fileActionSettings: {
removeTitle: 'Файлды өшіру',
uploadTitle: 'Файлды жүктеу',
zoomTitle: 'мәліметтерді көру',
dragTitle: 'Орнын ауыстыру',
indicatorNewTitle: 'Жүктелген жоқ',
indicatorSuccessTitle: 'Жүктелген',
indicatorErrorTitle: 'Жүктелу қатесі ',
indicatorLoadingTitle: 'Жүктелу ...'
},
previewZoomButtonTitles: {
prev: 'Алдыңғы файлды қарау',
next: 'Келесі файлды қарау',
toggleheader: 'Тақырыпты ауыстыру',
fullscreen: 'Толық экран режимін қосу',
borderless: 'Жиексіз режиміне ауысу',
close: 'Толық көрінісін жабу'
}
};
})(window.jQuery);

96
js/file/js/locales/nl.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Dutch Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['nl'] = {
fileSingle: 'bestand',
filePlural: 'bestanden',
browseLabel: 'Zoek &hellip;',
removeLabel: 'Verwijder',
removeTitle: 'Verwijder geselecteerde bestanden',
cancelLabel: 'Annuleren',
cancelTitle: 'Annuleer upload',
uploadLabel: 'Upload',
uploadTitle: 'Upload geselecteerde bestanden',
msgNo: 'Nee',
msgNoFilesSelected: '',
msgCancelled: 'Geannuleerd',
msgZoomModalHeading: 'Gedetailleerd voorbeeld',
msgFileRequired: 'U moet een bestand kiezen om te uploaden.',
msgSizeTooSmall: 'Bestand "{name}" (<b>{size} KB</b>) is te klein en moet groter zijn dan <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Bestand "{name}" (<b>{size} KB</b>) is groter dan de toegestane <b>{maxSize} KB</b>.',
msgFilesTooLess: 'U moet minstens <b>{n}</b> {files} selecteren om te uploaden.',
msgFilesTooMany: 'Aantal geselecteerde bestanden <b>({n})</b> is meer dan de toegestane <b>{m}</b>.',
msgFileNotFound: 'Bestand "{name}" niet gevonden!',
msgFileSecured: 'Bestand kan niet gelezen worden in verband met beveiligings redenen "{name}".',
msgFileNotReadable: 'Bestand "{name}" is niet leesbaar.',
msgFilePreviewAborted: 'Bestand weergaven geannuleerd voor "{name}".',
msgFilePreviewError: 'Er is een fout opgetreden met het lezen van "{name}".',
msgInvalidFileName: 'Ongeldige of niet ondersteunde karakters in bestandsnaam "{name}".',
msgInvalidFileType: 'Geen geldig bestand "{name}". Alleen "{types}" zijn toegestaan.',
msgInvalidFileExtension: 'Geen geldige extensie "{name}". Alleen "{extensions}" zijn toegestaan.',
msgFileTypes: {
'image': 'afbeelding',
'html': 'HTML',
'text': 'tekst',
'video': 'video',
'audio': 'geluid',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Het uploaden van bestanden is afgebroken',
msgUploadThreshold: 'Verwerken...',
msgUploadBegin: 'Initialiseren...',
msgUploadEnd: 'Gedaan',
msgUploadEmpty: 'Geen geldige data beschikbaar voor upload.',
msgValidationError: 'Bevestiging fout',
msgLoading: 'Bestanden laden {index} van de {files} &hellip;',
msgProgress: 'Bestanden laden {index} van de {files} - {name} - {percent}% compleet.',
msgSelected: '{n} {files} geselecteerd',
msgFoldersNotAllowed: 'Drag & drop alleen bestanden! {n} overgeslagen map(pen).',
msgImageWidthSmall: 'Breedte van het foto-bestand "{name}" moet minstens {size} px zijn.',
msgImageHeightSmall: 'Hoogte van het foto-bestand "{name}" moet minstens {size} px zijn.',
msgImageWidthLarge: 'Breedte van het foto-bestand "{name}" kan niet hoger zijn dan {size} px.',
msgImageHeightLarge: 'Hoogte van het foto bestand "{name}" kan niet hoger zijn dan {size} px.',
msgImageResizeError: 'Kon de foto afmetingen niet lezen om te verkleinen.',
msgImageResizeException: 'Fout bij het verkleinen van de foto.<pre>{errors}</pre>',
msgAjaxError: 'Er ging iets mis met de {operation} actie. Gelieve later opnieuw te proberen!',
msgAjaxProgressError: '{operation} mislukt',
ajaxOperations: {
deleteThumb: 'bestand verwijderen',
uploadThumb: 'bestand uploaden',
uploadBatch: 'alle bestanden uploaden',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Drag & drop bestanden hier &hellip;',
dropZoneClickTitle: '<br>(of klik hier om {files} te selecteren)',
fileActionSettings: {
removeTitle: 'Verwijder bestand',
uploadTitle: 'bestand uploaden',
zoomTitle: 'Bekijk details',
dragTitle: 'Move / Rearrange',
indicatorNewTitle: 'Nog niet geupload',
indicatorSuccessTitle: 'geupload',
indicatorErrorTitle: 'fout uploaden',
indicatorLoadingTitle: 'uploaden ...'
},
previewZoomButtonTitles: {
prev: 'Toon vorig bestand',
next: 'Toon volgend bestand',
toggleheader: 'Toggle header',
fullscreen: 'Toggle full screen',
borderless: 'Toggle borderless mode',
close: 'Close detailed preview'
}
};
})(window.jQuery);

96
js/file/js/locales/no.js Normal file
View File

@@ -0,0 +1,96 @@
/*!
* FileInput Norwegian Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['no'] = {
fileSingle: 'fil',
filePlural: 'filer',
browseLabel: 'Bla gjennom &hellip;',
removeLabel: 'Fjern',
removeTitle: 'Fjern valgte filer',
cancelLabel: 'Avbryt',
cancelTitle: 'Stopp pågående opplastninger',
uploadLabel: 'Last opp',
uploadTitle: 'Last opp valgte filer',
msgNo: 'Nei',
msgNoFilesSelected: 'Ingen filer er valgt',
msgCancelled: 'Avbrutt',
msgZoomModalHeading: 'Detaljert visning',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'Filen "{name}" (<b>{size} KB</b>) er for liten og må være større enn <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Filen "{name}" (<b>{size} KB</b>) er for stor, maksimal filstørrelse er <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Du må velge minst <b>{n}</b> {files} for opplastning.',
msgFilesTooMany: 'For mange filer til opplastning, <b>({n})</b> overstiger maksantallet som er <b>{m}</b>.',
msgFileNotFound: 'Fant ikke filen "{name}"!',
msgFileSecured: 'Sikkerhetsrestriksjoner hindrer lesing av filen "{name}".',
msgFileNotReadable: 'Filen "{name}" er ikke lesbar.',
msgFilePreviewAborted: 'Filvisning avbrutt for "{name}".',
msgFilePreviewError: 'En feil oppstod under lesing av filen "{name}".',
msgInvalidFileName: 'Ugyldige tegn i filen "{name}".',
msgInvalidFileType: 'Ugyldig type for filen "{name}". Kun "{types}" filer er tillatt.',
msgInvalidFileExtension: 'Ugyldig endelse for filen "{name}". Kun "{extensions}" filer støttes.',
msgFileTypes: {
'image': 'image',
'html': 'HTML',
'text': 'text',
'video': 'video',
'audio': 'audio',
'flash': 'flash',
'pdf': 'PDF',
'object': 'object'
},
msgUploadAborted: 'Filopplastningen ble avbrutt',
msgUploadThreshold: 'Prosesserer...',
msgUploadBegin: 'Initialiserer...',
msgUploadEnd: 'Ferdig',
msgUploadEmpty: 'Ingen gyldige data tilgjengelig for opplastning.',
msgValidationError: 'Valideringsfeil',
msgLoading: 'Laster fil {index} av {files} &hellip;',
msgProgress: 'Laster fil {index} av {files} - {name} - {percent}% fullført.',
msgSelected: '{n} {files} valgt',
msgFoldersNotAllowed: 'Kun Dra & slipp filer! Hoppet over {n} mappe(r).',
msgImageWidthSmall: 'Bredde på bildefilen "{name}" må være minst {size} px.',
msgImageHeightSmall: 'Høyde på bildefilen "{name}" må være minst {size} px.',
msgImageWidthLarge: 'Bredde på bildefilen "{name}" kan ikke overstige {size} px.',
msgImageHeightLarge: 'Høyde på bildefilen "{name}" kan ikke overstige {size} px.',
msgImageResizeError: 'Fant ikke dimensjonene som skulle resizes.',
msgImageResizeException: 'En feil oppstod under endring av størrelse .<pre>{errors}</pre>',
msgAjaxError: 'Noe gikk galt med {operation} operasjonen. Vennligst prøv igjen senere!',
msgAjaxProgressError: '{operation} feilet',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Dra & slipp filer her &hellip;',
dropZoneClickTitle: '<br>(eller klikk for å velge {files})',
fileActionSettings: {
removeTitle: 'Fjern fil',
uploadTitle: 'Last opp fil',
zoomTitle: 'Vis detaljer',
dragTitle: 'Flytt / endre rekkefølge',
indicatorNewTitle: 'Opplastning ikke fullført',
indicatorSuccessTitle: 'Opplastet',
indicatorErrorTitle: 'Opplastningsfeil',
indicatorLoadingTitle: 'Laster opp ...'
},
previewZoomButtonTitles: {
prev: 'Vis forrige fil',
next: 'Vis neste fil',
toggleheader: 'Vis header',
fullscreen: 'Åpne fullskjerm',
borderless: 'Åpne uten kanter',
close: 'Lukk detaljer'
}
};
})(window.jQuery);

86
js/file/js/locales/pl.js Normal file
View File

@@ -0,0 +1,86 @@
/*!
* FileInput Polish Translations
*
* This file must be loaded after 'fileinput.js'. Patterns in braces '{}', or
* any HTML markup tags in the messages must not be converted or translated.
*
* @see http://github.com/kartik-v/bootstrap-fileinput
*
* NOTE: this file must be saved in UTF-8 encoding.
*/
(function ($) {
"use strict";
$.fn.fileinputLocales['pl'] = {
fileSingle: 'plik',
filePlural: 'pliki',
browseLabel: 'Przeglądaj &hellip;',
removeLabel: 'Usuń',
removeTitle: 'Usuń zaznaczone pliki',
cancelLabel: 'Przerwij',
cancelTitle: 'Anuluj wysyłanie',
uploadLabel: 'Wgraj',
uploadTitle: 'Wgraj zaznaczone pliki',
msgNo: 'Nie',
msgNoFilesSelected: 'Brak zaznaczonych plików',
msgCancelled: 'Odwołany',
msgZoomModalHeading: 'Szczegółowy podgląd',
msgFileRequired: 'You must select a file to upload.',
msgSizeTooSmall: 'Plik "{name}" (<b>{size} KB</b>) jest zbyt mały i musi być większy niż <b>{minSize} KB</b>.',
msgSizeTooLarge: 'Plik o nazwie "{name}" (<b>{size} KB</b>) przekroczył maksymalną dopuszczalną wielkość pliku wynoszącą <b>{maxSize} KB</b>.',
msgFilesTooLess: 'Minimalna liczba plików do wgrania: <b>{n}</b>.',
msgFilesTooMany: 'Liczba plików wybranych do wgrania w liczbie <b>({n})</b>, przekracza maksymalny dozwolony limit wynoszący <b>{m}</b>.',
msgFileNotFound: 'Plik "{name}" nie istnieje!',
msgFileSecured: 'Ustawienia zabezpieczeń uniemożliwiają odczyt pliku "{name}".',
msgFileNotReadable: 'Plik "{name}" nie jest plikiem do odczytu.',
msgFilePreviewAborted: 'Podgląd pliku "{name}" został przerwany.',
msgFilePreviewError: 'Wystąpił błąd w czasie odczytu pliku "{name}".',
msgInvalidFileName: 'Nieprawidłowe lub nieobsługiwane znaki w nazwie pliku "{name}".',
msgInvalidFileType: 'Nieznny typ pliku "{name}". Tylko następujące rodzaje plików są obsługiwane: "{types}".',
msgInvalidFileExtension: 'Złe rozszerzenie dla pliku "{name}". Tylko następujące rozszerzenia plików są obsługiwane: "{extensions}".',
msgUploadAborted: 'Przesyłanie pliku zostało przerwane',
msgUploadThreshold: 'Przetwarzanie...',
msgUploadBegin: 'Initializing...',
msgUploadEnd: 'Done',
msgUploadEmpty: 'No valid data available for upload.',
msgValidationError: 'Błąd walidacji',
msgLoading: 'Wczytywanie pliku {index} z {files} &hellip;',
msgProgress: 'Wczytywanie pliku {index} z {files} - {name} - {percent}% zakończone.',
msgSelected: '{n} Plików zaznaczonych',
msgFoldersNotAllowed: 'Metodą przeciągnij i upuść, można przenosić tylko pliki. Pominięto {n} katalogów.',
msgImageWidthSmall: 'Szerokość pliku obrazu "{name}" musi być co najmniej {size} px.',
msgImageHeightSmall: 'Wysokość pliku obrazu "{name}" musi być co najmniej {size} px.',
msgImageWidthLarge: 'Szerokość pliku obrazu "{name}" nie może przekraczać {size} px.',
msgImageHeightLarge: 'Wysokość pliku obrazu "{name}" nie może przekraczać {size} px.',
msgImageResizeError: 'Nie udało się uzyskać wymiaru obrazu, aby zmienić rozmiar.',
msgImageResizeException: 'Błąd podczas zmiany rozmiaru obrazu.<pre>{errors}</pre>',
msgAjaxError: 'Something went wrong with the {operation} operation. Please try again later!',
msgAjaxProgressError: '{operation} failed',
ajaxOperations: {
deleteThumb: 'file delete',
uploadThumb: 'file upload',
uploadBatch: 'batch file upload',
uploadExtra: 'form data upload'
},
dropZoneTitle: 'Przeciągnij i upuść pliki tutaj &hellip;',
dropZoneClickTitle: '<br>(lub kliknij tutaj i wybierz {files} z komputera)',
fileActionSettings: {
removeTitle: 'Usuń plik',
uploadTitle: 'Przesyłanie pliku',
zoomTitle: 'Pokaż szczegóły',
dragTitle: 'Przenies / Ponownie zaaranżuj',
indicatorNewTitle: 'Jeszcze nie przesłanych',
indicatorSuccessTitle: 'Dodane',
indicatorErrorTitle: 'Prześlij błąd',
indicatorLoadingTitle: 'Zamieszczanie ...'
},
previewZoomButtonTitles: {
prev: 'Pokaż poprzedni plik',
next: 'Pokaż następny plik',
toggleheader: 'Włącz / wyłącz nagłówek',
fullscreen: 'Włącz / wyłącz pełny ekran',
borderless: 'Włącz / wyłącz tryb bez ramek',
close: 'Zamknij szczegółowy widok'
}
};
})(window.jQuery);

Some files were not shown because too many files have changed in this diff Show More