redmine_apijs 6.9.6 → 6.9.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +4 -5
- data/README +7 -7
- data/app/controllers/apijs_controller.rb +1 -1
- data/app/views/application/_browser.html.erb +1 -1
- data/app/views/attachments/_links.html.erb +1 -1
- data/app/views/settings/_apijs.html.erb +1 -1
- data/assets/javascripts/apijs-redmine.js +4 -4
- data/assets/javascripts/apijs-redmine.min.js +2 -2
- data/assets/javascripts/apijs-redmine.min.js.map +1 -1
- data/assets/javascripts/apijs.min.js +3 -3
- data/assets/javascripts/apijs.min.js.map +1 -1
- data/assets/stylesheets/apijs-print.min.css +2 -2
- data/assets/stylesheets/apijs-print.min.css.map +1 -1
- data/assets/stylesheets/apijs-redmine-rtl.min.css +1 -1
- data/assets/stylesheets/apijs-redmine-rtl.min.css.map +1 -1
- data/assets/stylesheets/apijs-redmine.css +1 -1
- data/assets/stylesheets/apijs-redmine.min.css +1 -1
- data/assets/stylesheets/apijs-redmine.min.css.map +1 -1
- data/assets/stylesheets/apijs-screen-rtl.min.css +3 -3
- data/assets/stylesheets/apijs-screen-rtl.min.css.map +1 -1
- data/assets/stylesheets/apijs-screen.min.css +3 -3
- data/assets/stylesheets/apijs-screen.min.css.map +1 -1
- data/config/locales/ja.yml +1 -1
- data/config/routes.rb +1 -1
- data/init.rb +3 -3
- data/lib/apijs_attachment.rb +5 -3
- data/lib/apijs_files.rb +1 -1
- data/lib/image.py +1 -1
- data/lib/redmine_apijs.rb +1 -1
- data/lib/useragentparser.rb +15 -9
- data/redmine_apijs.gemspec +1 -1
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1045d2574c7857ca9bcb2b01484ef4be1c6d9fdd68e0f047274d5ad03e953e5
|
4
|
+
data.tar.gz: fc6a479a25b69c33bda077f01f6a2900ed14ba63c3b6e98b0358bc1485422adf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a82ee41ed1810e63a5c804aeee9f32254ce5144474fdc9fbe579eaf57d706e0228ec1695bb2bff80e50eb93d5215e70c87626e3d9e782182c20594b43415113e
|
7
|
+
data.tar.gz: ea7b4eedfec3f5564d6246652335be436fd15eabe7ce7d5c63c841c9a5d396ac2f51f634e0272f76f4639c14c13bf9c863694e861689163d7084223664721a20
|
data/LICENSE
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
Version 2, June 1991
|
3
3
|
|
4
4
|
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
5
|
-
|
5
|
+
<https://fsf.org/>
|
6
6
|
Everyone is permitted to copy and distribute verbatim copies
|
7
7
|
of this license document, but changing it is not allowed.
|
8
8
|
|
@@ -304,8 +304,7 @@ the "copyright" line and a pointer to where the full notice is found.
|
|
304
304
|
GNU General Public License for more details.
|
305
305
|
|
306
306
|
You should have received a copy of the GNU General Public License along
|
307
|
-
with this program; if not,
|
308
|
-
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
307
|
+
with this program; if not, see <https://www.gnu.org/licenses/>.
|
309
308
|
|
310
309
|
Also add information on how to contact you by electronic and paper mail.
|
311
310
|
|
@@ -329,8 +328,8 @@ necessary. Here is a sample; alter the names:
|
|
329
328
|
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
330
329
|
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
331
330
|
|
332
|
-
<signature of
|
333
|
-
|
331
|
+
<signature of Moe Ghoul>, 1 April 1989
|
332
|
+
Moe Ghoul, President of Vice
|
334
333
|
|
335
334
|
This General Public License does not permit incorporating your program into
|
336
335
|
proprietary programs. If your program is a subroutine library, you may
|
data/README
CHANGED
@@ -3,7 +3,7 @@ Tracker : https://github.com/luigifab/redmine-apijs
|
|
3
3
|
RubyGems : https://rubygems.org/gems/redmine_apijs
|
4
4
|
Plugin : Luigifab/Apijs (original)
|
5
5
|
License : GNU GPL 2.0+ (https://opensource.org/licenses/gpl-2.0)
|
6
|
-
Copyright : 2008-
|
6
|
+
Copyright : 2008-2025 Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
7
7
|
|
8
8
|
|
9
9
|
|
@@ -22,7 +22,7 @@ Depends
|
|
22
22
|
- python3
|
23
23
|
- python-pil
|
24
24
|
- python-scour
|
25
|
-
- libimage-exiftool-perl
|
25
|
+
- libimage-exiftool-perl
|
26
26
|
- ffmpegthumbnailer (optional)
|
27
27
|
- nproc
|
28
28
|
- du -hs | cut -f1
|
@@ -38,7 +38,7 @@ Translations in de-DE (deutsch/Deutschland) by:
|
|
38
38
|
- Philip Junietz <info~label-park~com> 2016
|
39
39
|
- Pamela Steinborn <st.pamela~laposte~net> 2016
|
40
40
|
Translations in en-US (english/United-States) by:
|
41
|
-
- Fabrice Creuzot (luigifab) <code~luigifab~fr> 2008-
|
41
|
+
- Fabrice Creuzot (luigifab) <code~luigifab~fr> 2008-2025
|
42
42
|
- Brian Legrand <mrbibi1987~gmail~com> 2012
|
43
43
|
- Pascale Scellier <scellier.pascale~orange~fr> 2016
|
44
44
|
Translations in es-ES (español/España) by:
|
@@ -48,7 +48,7 @@ Translations in es-ES (español/España) by:
|
|
48
48
|
- Hélène Vergine <vergineh~gmail~com> 2017, 2020
|
49
49
|
- Guillaume Genetet <genetet.incorporated~gmail~com> 2018 https://fr.tipeee.com/william-broome
|
50
50
|
Translations in fr-FR (français/France) by:
|
51
|
-
- Fabrice Creuzot (luigifab) <code~luigifab~fr> 2008-
|
51
|
+
- Fabrice Creuzot (luigifab) <code~luigifab~fr> 2008-2025
|
52
52
|
- Pascale Scellier <scellier.pascale~orange~fr> 2016
|
53
53
|
Translations in it-IT (italiano/Italia) by:
|
54
54
|
- Maria Grasso <mgrasso~outlook~fr> 2016-2017
|
@@ -64,9 +64,9 @@ If you like, take some of your time to improve the translations, go to https://b
|
|
64
64
|
|
65
65
|
|
66
66
|
File: /lib/useragentparser.rb
|
67
|
-
Source: https://github.com/donatj/PhpUserAgent + https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.
|
68
|
-
Copyright: 2013-
|
69
|
-
Copyright: 2019-
|
67
|
+
Source: https://github.com/donatj/PhpUserAgent + https://gist.github.com/luigifab/19a68d9aa98fa80f2961809d7cec59c0 (1.10.0-fork1)
|
68
|
+
Copyright: 2013-2024 Jesse G. Donat <donatj~gmail~com>
|
69
|
+
Copyright: 2019-2025 Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
70
70
|
License: MIT (https://opensource.org/licenses/mit)
|
71
71
|
|
72
72
|
Files: /assets/fonts/apijs/fontello.woff /assets/fonts/apijs/fontello.woff2
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Created J/12/12/2013
|
3
3
|
# Updated M/05/07/2022
|
4
4
|
#
|
5
|
-
# Copyright 2008-
|
5
|
+
# Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
6
6
|
# https://github.com/luigifab/redmine-apijs
|
7
7
|
#
|
8
8
|
# This program is free software, you can redistribute it or modify
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Created S/17/08/2019
|
3
3
|
# Updated L/25/05/2020
|
4
4
|
#
|
5
|
-
# Copyright 2008-
|
5
|
+
# Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
6
6
|
# https://github.com/luigifab/redmine-apijs
|
7
7
|
#
|
8
8
|
# This program is free software, you can redistribute it or modify
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Created L/21/05/2012
|
3
3
|
# Updated J/26/05/2022
|
4
4
|
#
|
5
|
-
# Copyright 2008-
|
5
|
+
# Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
6
6
|
# https://github.com/luigifab/redmine-apijs
|
7
7
|
#
|
8
8
|
# This program is free software, you can redistribute it or modify
|
@@ -2,7 +2,7 @@
|
|
2
2
|
# Created J/12/12/2013
|
3
3
|
# Updated V/22/12/2023
|
4
4
|
#
|
5
|
-
# Copyright 2008-
|
5
|
+
# Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
6
6
|
# https://github.com/luigifab/redmine-apijs
|
7
7
|
#
|
8
8
|
# This program is free software, you can redistribute it or modify
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/**
|
2
2
|
* Created D/15/12/2013
|
3
|
-
* Updated
|
3
|
+
* Updated L/28/07/2025
|
4
4
|
*
|
5
|
-
* Copyright 2008-
|
5
|
+
* Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
6
6
|
* https://github.com/luigifab/redmine-apijs
|
7
7
|
*
|
8
8
|
* This program is free software, you can redistribute it or modify
|
@@ -110,7 +110,7 @@ var apijsRedmine = new (function () {
|
|
110
110
|
apijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');
|
111
111
|
}
|
112
112
|
else {
|
113
|
-
apijs.dialog.remove('lock');
|
113
|
+
apijs.dialog.remove('lock');
|
114
114
|
self.location.reload();
|
115
115
|
}
|
116
116
|
};
|
@@ -313,7 +313,7 @@ var apijsRedmine = new (function () {
|
|
313
313
|
};
|
314
314
|
|
315
315
|
this.actionClearCache = function (args) {
|
316
|
-
apijs.dialog.remove('waiting', 'lock');
|
316
|
+
apijs.dialog.remove('waiting', 'lock');
|
317
317
|
self.location.href = args;
|
318
318
|
};
|
319
319
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
/*!
|
2
|
-
* Copyright 2008-
|
2
|
+
* Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
|
3
3
|
* https://github.com/luigifab/redmine-apijs
|
4
4
|
* This program is free software, you can redistribute it or modify
|
5
5
|
* it under the terms of the GNU General Public License (GPL).
|
6
6
|
*/
|
7
|
-
var apijsRedmine=new function(){
|
7
|
+
var apijsRedmine=new function(){this.init=function(){var e=apijs.i18n.data;e.frca||(e.frca={}),e.cs[250]="Smazat soubor",e.cs[251]="Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.",e.cs[252]="Chyba",e.de[250]="Eine Datei löschen",e.de[251]="Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.",e.de[252]="Fehler",e.de[253]="Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[254]="Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].",e.de[255]="Eine Beschreibung bearbeiten",e.de[256]="Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.",e.el[252]="Σφάλμα",e.en[250]="Remove file",e.en[251]="Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.",e.en[252]="Error",e.en[253]="You are not authorized to perform this operation, please [a §]refresh the page[/a].",e.en[254]="Sorry, the file no longer exists, please [a §]refresh the page[/a].",e.en[255]="Edit description",e.en[256]="Enter below the new description for the file. To remove the description, leave the field empty.",e.en[257]="Rename file",e.en[258]="Enter below the new name for the file.",e.en[259]="Clear cache",e.en[260]="Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.",e.es[250]="Borrar un archivo",e.es[251]="¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.",e.es[253]="No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].",e.es[254]="Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].",e.es[255]="Editar una descripción",e.es[256]="Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.",e.es[259]="Vaciar la caché",e.es[260]="¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.",e.fr[250]="Supprimer le fichier",e.fr[251]="Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.",e.fr[252]="Erreur",e.fr[253]="Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].",e.fr[254]="Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].",e.fr[255]="Modifier la description",e.fr[256]="Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.",e.fr[257]="Renommer le fichier",e.fr[258]="Saisissez ci-dessous le nouveau nom pour ce fichier.",e.fr[259]="Vider le cache",e.fr[260]="Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.",e.hu[252]="Hiba",e.it[250]="Cancella i file",e.it[251]="Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.",e.it[252]="Errore",e.it[253]="Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[254]="Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].",e.it[255]="Modificare una descrizione",e.it[256]="Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.",e.ja[250]="ファイルを削除",e.ja[252]="エラー",e.nl[252]="Fout",e.pl[250]="Usuń plik",e.pl[251]="Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.",e.pl[252]="Błąd",e.pt[250]="Suprimir um ficheiro",e.pt[251]="Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.",e.pt[252]="Erro",e.pt[253]="Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].",e.pt[254]="Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].",e.pt[255]="Modificar uma descrição",e.pt[256]="Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.",e.ro[252]="Eroare",e.ru[250]="Удалить файл",e.ru[251]="Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.",e.ru[252]="Ошибка",e.ru[253]="Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].",e.ru[254]="Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].",e.ru[255]="Редактировать описание",e.ru[256]="Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.",e.sk[252]="Chyba",e.tr[252]="Hata",e.tr[259]="Önbelleği temizle",e.uk[252]="Помилка",e.zh[252]="错误信息"},this.error=function(e){"string"==typeof e&&e.indexOf("<!DOCTYPE")<0?apijs.dialog.dialogInformation(apijs.i18n.translate(252),e,"error"):(apijs.dialog.remove("lock"),self.location.reload())},this.editAttachment=function(e,t,a,i){var r=apijs.i18n.translate(255),e=e.parentNode.parentNode.querySelector(".description").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(256)+'[/label][/p][input type="text" name="description" value="'+e+'" spellcheck="true" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionEditAttachment,[t,a,i],"editattach"),apijs.dialog.t1.querySelector("input").select()},this.actionEditAttachment=function(e,t){if("boolean"==typeof e)return!0;var a;"string"==typeof e&&((a=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),a.setRequestHeader("X-CSRF-Token",t[2]),a.onreadystatechange=function(){var e,t;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(t=a.responseText.slice(0,a.responseText.indexOf(":")),e=a.responseText.slice(a.responseText.indexOf(":")+1),(t=document.getElementById(t)).querySelector(".description").textContent=e,(t=t.querySelector("input"))&&(t.value=t.value.slice(0,t.value.lastIndexOf("|")+1)+e),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send("desc="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.renameAttachment=function(e,t,a,i){var r=apijs.i18n.translate(257),e=e.parentNode.parentNode.querySelector(".filename").textContent.trim(),e='[p][label for="apijsinput"]'+apijs.i18n.translate(258)+'[/label][/p][input type="text" name="name" value="'+e+'" spellcheck="false" id="apijsinput"]';apijs.dialog.dialogFormOptions(r,e,a,apijsRedmine.actionRenameAttachment,[t,a,i],"editattach")},this.actionRenameAttachment=function(e,t){if("boolean"==typeof e)return!0;var r;"string"==typeof e&&((r=new XMLHttpRequest).open("POST",t[1]+"?id="+t[0]+"&isAjax=true",!0),r.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),r.setRequestHeader("X-CSRF-Token",t[2]),r.onreadystatechange=function(){var e,t,a,i;4===r.readyState&&([0,200].has(r.status)?0===r.responseText.indexOf("attachmentId")?(i=r.responseText.slice(0,r.responseText.indexOf(":")),a=r.responseText.slice(r.responseText.indexOf(":")+1),(i=document.getElementById(i)).querySelector(".filename").textContent=a,(e=i.querySelector("input"))&&(t=e.getAttribute("value"),e.setAttribute("value",a+t.substring(t.indexOf("|")))),(e=i.querySelector("a"))&&(t=e.getAttribute("href"),e.setAttribute("href",t.substring(0,t.lastIndexOf("/")+1)+a)),(e=i.querySelector("button.download"))&&(t=e.getAttribute("onclick"),e.setAttribute("onclick",t.substring(0,t.lastIndexOf("/")+1)+a+"';")),(e=i.querySelector("button.show"))&&(t=e.getAttribute("onclick"),e.setAttribute("onclick",t.substring(0,t.lastIndexOf("/")+1)+a+"';")),apijs.dialog.actionClose()):apijsRedmine.error(r.responseText):apijsRedmine.error(r.status))},r.send("name="+encodeURIComponent(document.getElementById("apijsinput").value)))},this.removeAttachment=function(e,t,a,i){apijs.dialog.dialogConfirmation(apijs.i18n.translate(250),apijs.i18n.translate(251),apijsRedmine.actionRemoveAttachment,[t,a,i])},this.actionRemoveAttachment=function(e){var i=new XMLHttpRequest;i.open("POST",e[1]+"?id="+e[0]+"&isAjax=true",!0),i.setRequestHeader("X-CSRF-Token",e[2]),i.onreadystatechange=function(){var e,t,a;4===i.readyState&&([0,200].has(i.status)?0===i.responseText.indexOf("attachmentId")?(t=(e=document.getElementById(i.responseText)).parentNode,a=0,e.remove(),t.querySelectorAll("dl, li").length<1?t.remove():t.querySelectorAll("a[id][type]").forEach(function(e){e.setAttribute("id",e.getAttribute("id").slice(0,e.getAttribute("id").lastIndexOf(".")+1)+a++)}),apijs.dialog.actionClose()):apijsRedmine.error(i.responseText):apijsRedmine.error(i.status))},i.send()},this.clearCache=function(e){apijs.dialog.dialogConfirmation(apijs.i18n.translate(259),apijs.i18n.translate(260),apijsRedmine.actionClearCache,e)},this.actionClearCache=function(e){apijs.dialog.remove("waiting","lock"),self.location.href=e}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsRedmine.init.bind(apijsRedmine));
|
8
8
|
//# sourceMappingURL=apijs-redmine.min.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["apijs-redmine.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated D/03/12/2023\n *\n * Copyright 2008-2024 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://github.com/luigifab/redmine-apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nvar apijsRedmine = new (function () {\n\n\t\"use strict\";\n\n\tthis.init = function () {\n\n\t\tvar d = apijs.i18n.data;\n\t\tif (!d.frca) d.frca = {};\n\t\t// @see https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\td.cs[250] = \"Smazat soubor\";\n\t\td.cs[251] = \"Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[252] = \"Chyba\";\n\t\td.de[250] = \"Eine Datei löschen\";\n\t\td.de[251] = \"Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.\";\n\t\td.de[252] = \"Fehler\";\n\t\td.de[253] = \"Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[254] = \"Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[255] = \"Eine Beschreibung bearbeiten\";\n\t\td.de[256] = \"Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.\";\n\t\td.el[252] = \"Σφάλμα\";\n\t\td.en[250] = \"Remove file\";\n\t\td.en[251] = \"Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[252] = \"Error\";\n\t\td.en[253] = \"You are not authorized to perform this operation, please [a §]refresh the page[/a].\";\n\t\td.en[254] = \"Sorry, the file no longer exists, please [a §]refresh the page[/a].\";\n\t\td.en[255] = \"Edit description\";\n\t\td.en[256] = \"Enter below the new description for the file. To remove the description, leave the field empty.\";\n\t\td.en[257] = \"Rename file\";\n\t\td.en[258] = \"Enter below the new name for the file.\";\n\t\td.en[259] = \"Clear cache\";\n\t\td.en[260] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\n\t\td.es[250] = \"Borrar un archivo\";\n\t\td.es[251] = \"¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.\";\n\t\td.es[253] = \"No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].\";\n\t\td.es[254] = \"Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].\";\n\t\td.es[255] = \"Editar una descripción\";\n\t\td.es[256] = \"Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.\";\n\t\td.es[259] = \"Vaciar la caché\";\n\t\td.es[260] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.fr[250] = \"Supprimer le fichier\";\n\t\td.fr[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[252] = \"Erreur\";\n\t\td.fr[253] = \"Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[254] = \"Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[255] = \"Modifier la description\";\n\t\td.fr[256] = \"Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.\";\n\t\td.fr[257] = \"Renommer le fichier\";\n\t\td.fr[258] = \"Saisissez ci-dessous le nouveau nom pour ce fichier.\";\n\t\td.fr[259] = \"Vider le cache\";\n\t\td.fr[260] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.hu[252] = \"Hiba\";\n\t\td.it[250] = \"Cancella i file\";\n\t\td.it[251] = \"Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[252] = \"Errore\";\n\t\td.it[253] = \"Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[254] = \"Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[255] = \"Modificare una descrizione\";\n\t\td.it[256] = \"Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.\";\n\t\td.ja[250] = \"ファイルを削除\";\n\t\td.ja[252] = \"エラー\";\n\t\td.nl[252] = \"Fout\";\n\t\td.pl[250] = \"Usuń plik\";\n\t\td.pl[251] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[252] = \"Błąd\";\n\t\td.pt[250] = \"Suprimir um ficheiro\";\n\t\td.pt[251] = \"Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.\";\n\t\td.pt[252] = \"Erro\";\n\t\td.pt[253] = \"Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].\";\n\t\td.pt[254] = \"Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].\";\n\t\td.pt[255] = \"Modificar uma descrição\";\n\t\td.pt[256] = \"Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.\";\n\t\td.ro[252] = \"Eroare\";\n\t\td.ru[250] = \"Удалить файл\";\n\t\td.ru[251] = \"Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.\";\n\t\td.ru[252] = \"Ошибка\";\n\t\td.ru[253] = \"Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[254] = \"Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[255] = \"Редактировать описание\";\n\t\td.ru[256] = \"Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.\";\n\t\td.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.tr[259] = \"Önbelleği temizle\";\n\t\td.uk[252] = \"Помилка\";\n\t\td.zh[252] = \"错误信息\";\n\t\t// auto end\n\t};\n\n\tthis.error = function (data) {\n\n\t\tif ((typeof data == 'string') && (data.indexOf('<!DOCTYPE') < 0)) {\n\t\t\tapijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');\n\t\t}\n\t\telse {\n\t\t\tapijs.dialog.remove('lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\t\tself.location.reload();\n\t\t}\n\t};\n\n\tthis.editAttachment = function (elem, id, action, token) {\n\n\t\tvar desc, text, title = apijs.i18n.translate(255);\n\n\t\tdesc = elem.parentNode.parentNode.querySelector('.description').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(256) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"description\" value=\"' + desc + '\" spellcheck=\"true\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattach');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionEditAttachment = function (action, args) {\n\n\t\t// vérification de la nouvelle description\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde de la nouvelle description\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et la description du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\ttext = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// description\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.description').textContent = text;\n\n\t\t\t\t\t\t\t// input type hidden\n\t\t\t\t\t\t\telem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (elem)\n\t\t\t\t\t\t\t\telem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('desc=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.renameAttachment = function (elem, id, action, token) {\n\n\t\tvar name, text, title = apijs.i18n.translate(257);\n\n\t\tname = elem.parentNode.parentNode.querySelector('.filename').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(258) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"name\" value=\"' + name + '\" spellcheck=\"false\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionRenameAttachment, [id, action, token], 'editattach');\n\t};\n\n\tthis.actionRenameAttachment = function (action, args) {\n\n\t\t// vérification du nouveau nom\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et le nom du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, name, subelem, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\tname = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// nom\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.filename').textContent = name;\n\n\t\t\t\t\t\t\t// URLs sur a/href et input/value et button.download/onclick et button.show/onclick\n\t\t\t\t\t\t\t// pas de maj de src et srcset sur img pour éviter un appel réseau inutile\n\t\t\t\t\t\t\tsubelem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('value');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('value', name + text.substring(text.indexOf('|')));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('a');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('href');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('href', text.substring(0, text.lastIndexOf('/') + 1) + name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.download');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substring(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.show');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substring(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeAttachment = function (elem, id, action, token) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = [id, action, token]\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\txhr.onreadystatechange = function () {\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t// supprime le fichier de la page grâce à son id\n\t\t\t\t\t\tvar attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;\n\t\t\t\t\t\tattachment.remove();\n\n\t\t\t\t\t\t// supprime la liste des fichiers\n\t\t\t\t\t\tif (elems.querySelectorAll('dl, li').length < 1) {\n\t\t\t\t\t\t\telems.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\telems.querySelectorAll('a[id][type]').forEach(function (elem) {\n\t\t\t\t\t\t\t\telem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + idx++);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t};\n\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(259), apijs.i18n.translate(260), apijsRedmine.actionClearCache, action);\n\t};\n\n\tthis.actionClearCache = function (args) {\n\t\tapijs.dialog.remove('waiting', 'lock'); // obligatoire sinon demande de confirmation de quitter la page\n\t\tself.location.href = args;\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('apijsload', apijsRedmine.init.bind(apijsRedmine));"],"names":["apijsRedmine","this","init","d","apijs","i18n","data","frca","cs","de","el","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sk","tr","uk","zh","error","indexOf","dialog","dialogInformation","translate","remove","self","location","reload","editAttachment","elem","id","action","token","title","desc","parentNode","querySelector","textContent","trim","text","dialogFormOptions","actionEditAttachment","t1","select","args","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","has","status","responseText","slice","document","getElementById","value","lastIndexOf","actionClose","send","encodeURIComponent","renameAttachment","name","actionRenameAttachment","subelem","getAttribute","setAttribute","substring","removeAttachment","dialogConfirmation","actionRemoveAttachment","attachment","elems","idx","querySelectorAll","length","forEach","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":"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"}
|
1
|
+
{"version":3,"sources":["apijs-redmine.js"],"sourcesContent":["/**\n * Created D/15/12/2013\n * Updated L/28/07/2025\n *\n * Copyright 2008-2025 | Fabrice Creuzot (luigifab) <code~luigifab~fr>\n * https://github.com/luigifab/redmine-apijs\n *\n * This program is free software, you can redistribute it or modify\n * it under the terms of the GNU General Public License (GPL) as published\n * by the free software foundation, either version 2 of the license, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but without any warranty, without even the implied warranty of\n * merchantability or fitness for a particular purpose. See the\n * GNU General Public License (GPL) for more details.\n */\n\nvar apijsRedmine = new (function () {\n\n\t\"use strict\";\n\n\tthis.init = function () {\n\n\t\tvar d = apijs.i18n.data;\n\t\tif (!d.frca) d.frca = {};\n\t\t// @see https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing\n\t\t// auto start\n\t\td.cs[250] = \"Smazat soubor\";\n\t\td.cs[251] = \"Opravdu chcete tento soubor smazat?[br]Pozor, tuto operaci nelze vrátit zpět.\";\n\t\td.cs[252] = \"Chyba\";\n\t\td.de[250] = \"Eine Datei löschen\";\n\t\td.de[251] = \"Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.\";\n\t\td.de[252] = \"Fehler\";\n\t\td.de[253] = \"Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[254] = \"Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].\";\n\t\td.de[255] = \"Eine Beschreibung bearbeiten\";\n\t\td.de[256] = \"Bitte geben Sie weiter unten die neue Beschreibung für diese Datei an. Um die Beschreibung zu löschen lassen Sie das Feld leer.\";\n\t\td.el[252] = \"Σφάλμα\";\n\t\td.en[250] = \"Remove file\";\n\t\td.en[251] = \"Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.\";\n\t\td.en[252] = \"Error\";\n\t\td.en[253] = \"You are not authorized to perform this operation, please [a §]refresh the page[/a].\";\n\t\td.en[254] = \"Sorry, the file no longer exists, please [a §]refresh the page[/a].\";\n\t\td.en[255] = \"Edit description\";\n\t\td.en[256] = \"Enter below the new description for the file. To remove the description, leave the field empty.\";\n\t\td.en[257] = \"Rename file\";\n\t\td.en[258] = \"Enter below the new name for the file.\";\n\t\td.en[259] = \"Clear cache\";\n\t\td.en[260] = \"Are you sure you want to clear the cache?[br]Be careful, you can't cancel this operation.\";\n\t\td.es[250] = \"Borrar un archivo\";\n\t\td.es[251] = \"¿Está usted seguro(a) de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.\";\n\t\td.es[253] = \"No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].\";\n\t\td.es[254] = \"Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].\";\n\t\td.es[255] = \"Editar una descripción\";\n\t\td.es[256] = \"Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.\";\n\t\td.es[259] = \"Vaciar la caché\";\n\t\td.es[260] = \"¿Está usted seguro(a) de querer vaciar la caché?[br]Cuidado, esta operación no puede ser cancelada.\";\n\t\td.fr[250] = \"Supprimer le fichier\";\n\t\td.fr[251] = \"Êtes-vous sûr(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.fr[252] = \"Erreur\";\n\t\td.fr[253] = \"Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[254] = \"Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].\";\n\t\td.fr[255] = \"Modifier la description\";\n\t\td.fr[256] = \"Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.\";\n\t\td.fr[257] = \"Renommer le fichier\";\n\t\td.fr[258] = \"Saisissez ci-dessous le nouveau nom pour ce fichier.\";\n\t\td.fr[259] = \"Vider le cache\";\n\t\td.fr[260] = \"Êtes-vous certain(e) de vouloir vider le cache ?[br]Attention, cette opération n'est pas annulable.\";\n\t\td.hu[252] = \"Hiba\";\n\t\td.it[250] = \"Cancella i file\";\n\t\td.it[251] = \"Sei sicura di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.\";\n\t\td.it[252] = \"Errore\";\n\t\td.it[253] = \"Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[254] = \"Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].\";\n\t\td.it[255] = \"Modificare una descrizione\";\n\t\td.it[256] = \"Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.\";\n\t\td.ja[250] = \"ファイルを削除\";\n\t\td.ja[252] = \"エラー\";\n\t\td.nl[252] = \"Fout\";\n\t\td.pl[250] = \"Usuń plik\";\n\t\td.pl[251] = \"Jesteś pewny, że chcesz usunąć ten plik?[br]Uwaga! Nie ma odwrotu od tej operacji.\";\n\t\td.pl[252] = \"Błąd\";\n\t\td.pt[250] = \"Suprimir um ficheiro\";\n\t\td.pt[251] = \"Tem certeza de que quer suprimir este ficheiro?[br]Cuidado, não pode cancelar esta operação.\";\n\t\td.pt[252] = \"Erro\";\n\t\td.pt[253] = \"Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].\";\n\t\td.pt[254] = \"Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].\";\n\t\td.pt[255] = \"Modificar uma descrição\";\n\t\td.pt[256] = \"Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.\";\n\t\td.ro[252] = \"Eroare\";\n\t\td.ru[250] = \"Удалить файл\";\n\t\td.ru[251] = \"Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.\";\n\t\td.ru[252] = \"Ошибка\";\n\t\td.ru[253] = \"Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[254] = \"Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].\";\n\t\td.ru[255] = \"Редактировать описание\";\n\t\td.ru[256] = \"Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.\";\n\t\td.sk[252] = \"Chyba\";\n\t\td.tr[252] = \"Hata\";\n\t\td.tr[259] = \"Önbelleği temizle\";\n\t\td.uk[252] = \"Помилка\";\n\t\td.zh[252] = \"错误信息\";\n\t\t// auto end\n\t};\n\n\tthis.error = function (data) {\n\n\t\tif ((typeof data == 'string') && (data.indexOf('<!DOCTYPE') < 0)) {\n\t\t\tapijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');\n\t\t}\n\t\telse {\n\t\t\tapijs.dialog.remove('lock');\n\t\t\tself.location.reload();\n\t\t}\n\t};\n\n\tthis.editAttachment = function (elem, id, action, token) {\n\n\t\tvar desc, text, title = apijs.i18n.translate(255);\n\n\t\tdesc = elem.parentNode.parentNode.querySelector('.description').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(256) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"description\" value=\"' + desc + '\" spellcheck=\"true\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattach');\n\t\tapijs.dialog.t1.querySelector('input').select();\n\t};\n\n\tthis.actionEditAttachment = function (action, args) {\n\n\t\t// vérification de la nouvelle description\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde de la nouvelle description\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et la description du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\ttext = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// description\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.description').textContent = text;\n\n\t\t\t\t\t\t\t// input type hidden\n\t\t\t\t\t\t\telem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (elem)\n\t\t\t\t\t\t\t\telem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('desc=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.renameAttachment = function (elem, id, action, token) {\n\n\t\tvar name, text, title = apijs.i18n.translate(257);\n\n\t\tname = elem.parentNode.parentNode.querySelector('.filename').textContent.trim();\n\t\ttext = '[p][label for=\"apijsinput\"]' + apijs.i18n.translate(258) + '[/label][/p]' +\n\t\t\t\t'[input type=\"text\" name=\"name\" value=\"' + name + '\" spellcheck=\"false\" id=\"apijsinput\"]';\n\n\t\tapijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionRenameAttachment, [id, action, token], 'editattach');\n\t};\n\n\tthis.actionRenameAttachment = function (action, args) {\n\n\t\t// vérification du nouveau nom\n\t\tif (typeof action == 'boolean') {\n\t\t\treturn true;\n\t\t}\n\t\t// sauvegarde du nouveau nom\n\t\telse if (typeof action == 'string') {\n\n\t\t\t// args = [id, action, token]\n\t\t\tvar xhr = new XMLHttpRequest();\n\t\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\t\txhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n\t\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\t\txhr.onreadystatechange = function () {\n\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t\t// extrait l'id et le nom du fichier enregistré\n\t\t\t\t\t\t\tvar elem, id, name, subelem, text;\n\t\t\t\t\t\t\tid = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));\n\t\t\t\t\t\t\tname = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);\n\n\t\t\t\t\t\t\t// nom\n\t\t\t\t\t\t\telem = document.getElementById(id);\n\t\t\t\t\t\t\telem.querySelector('.filename').textContent = name;\n\n\t\t\t\t\t\t\t// URLs sur a/href et input/value et button.download/onclick et button.show/onclick\n\t\t\t\t\t\t\t// pas de maj de src et srcset sur img pour éviter un appel réseau inutile\n\t\t\t\t\t\t\tsubelem = elem.querySelector('input');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('value');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('value', name + text.substring(text.indexOf('|')));\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('a');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('href');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('href', text.substring(0, text.lastIndexOf('/') + 1) + name);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.download');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substring(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tsubelem = elem.querySelector('button.show');\n\t\t\t\t\t\t\tif (subelem) {\n\t\t\t\t\t\t\t\ttext = subelem.getAttribute('onclick');\n\t\t\t\t\t\t\t\tsubelem.setAttribute('onclick', text.substring(0, text.lastIndexOf('/') + 1) + name + \"';\");\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\n\t\t\txhr.send('name=' + encodeURIComponent(document.getElementById('apijsinput').value));\n\t\t}\n\t};\n\n\tthis.removeAttachment = function (elem, id, action, token) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);\n\t};\n\n\tthis.actionRemoveAttachment = function (args) {\n\n\t\t// args = [id, action, token]\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);\n\t\txhr.setRequestHeader('X-CSRF-Token', args[2]);\n\n\t\txhr.onreadystatechange = function () {\n\n\t\t\tif (xhr.readyState === 4) {\n\t\t\t\tif ([0, 200].has(xhr.status)) {\n\t\t\t\t\tif (xhr.responseText.indexOf('attachmentId') === 0) {\n\n\t\t\t\t\t\t// supprime le fichier de la page grâce à son id\n\t\t\t\t\t\tvar attachment = document.getElementById(xhr.responseText), elems = attachment.parentNode, idx = 0;\n\t\t\t\t\t\tattachment.remove();\n\n\t\t\t\t\t\t// supprime la liste des fichiers\n\t\t\t\t\t\tif (elems.querySelectorAll('dl, li').length < 1) {\n\t\t\t\t\t\t\telems.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// ou réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\telems.querySelectorAll('a[id][type]').forEach(function (elem) {\n\t\t\t\t\t\t\t\telem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + idx++);\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tapijs.dialog.actionClose();\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tapijsRedmine.error(xhr.responseText);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tapijsRedmine.error(xhr.status);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\txhr.send();\n\t};\n\n\tthis.clearCache = function (action) {\n\t\tapijs.dialog.dialogConfirmation(apijs.i18n.translate(259), apijs.i18n.translate(260), apijsRedmine.actionClearCache, action);\n\t};\n\n\tthis.actionClearCache = function (args) {\n\t\tapijs.dialog.remove('waiting', 'lock');\n\t\tself.location.href = args;\n\t};\n\n})();\n\nif (typeof self.addEventListener == 'function')\n\tself.addEventListener('apijsload', apijsRedmine.init.bind(apijsRedmine));"],"names":["apijsRedmine","this","init","d","apijs","i18n","data","frca","cs","de","el","en","es","fr","hu","it","ja","nl","pl","pt","ro","ru","sk","tr","uk","zh","error","indexOf","dialog","dialogInformation","translate","remove","self","location","reload","editAttachment","elem","id","action","token","title","desc","parentNode","querySelector","textContent","trim","text","dialogFormOptions","actionEditAttachment","t1","select","args","xhr","XMLHttpRequest","open","setRequestHeader","onreadystatechange","readyState","has","status","responseText","slice","document","getElementById","value","lastIndexOf","actionClose","send","encodeURIComponent","renameAttachment","name","actionRenameAttachment","subelem","getAttribute","setAttribute","substring","removeAttachment","dialogConfirmation","actionRemoveAttachment","attachment","elems","idx","querySelectorAll","length","forEach","clearCache","actionClearCache","href","addEventListener","bind"],"mappings":"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"}
|