redmine_apijs 6.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/LICENSE +339 -0
  4. data/README +74 -0
  5. data/app/controllers/apijs_controller.rb +326 -0
  6. data/app/views/application/_browser.html.erb +45 -0
  7. data/app/views/attachments/_links.html.erb +146 -0
  8. data/app/views/settings/_apijs.html.erb +256 -0
  9. data/assets/fonts/apijs/config.json +130 -0
  10. data/assets/fonts/apijs/fontello.woff +0 -0
  11. data/assets/fonts/apijs/fontello.woff2 +0 -0
  12. data/assets/images/apijs/player-black-200.png +0 -0
  13. data/assets/images/apijs/player-black-400.png +0 -0
  14. data/assets/images/apijs/player-white-200.png +0 -0
  15. data/assets/images/apijs/player-white-400.png +0 -0
  16. data/assets/images/apijs/tv.gif +0 -0
  17. data/assets/javascripts/apijs-redmine.min.js +7 -0
  18. data/assets/javascripts/apijs.min.js +7 -0
  19. data/assets/javascripts/app.js +224 -0
  20. data/assets/stylesheets/apijs-print.min.css +8 -0
  21. data/assets/stylesheets/apijs-redmine-rtl.min.css +8 -0
  22. data/assets/stylesheets/apijs-redmine.min.css +8 -0
  23. data/assets/stylesheets/apijs-screen-rtl.min.css +8 -0
  24. data/assets/stylesheets/apijs-screen.min.css +8 -0
  25. data/assets/stylesheets/styles.css +73 -0
  26. data/config/locales/cs.yml +30 -0
  27. data/config/locales/de.yml +30 -0
  28. data/config/locales/en.yml +30 -0
  29. data/config/locales/es.yml +30 -0
  30. data/config/locales/fr.yml +30 -0
  31. data/config/locales/it.yml +30 -0
  32. data/config/locales/ja.yml +30 -0
  33. data/config/locales/nl.yml +30 -0
  34. data/config/locales/pl.yml +30 -0
  35. data/config/locales/pt-BR.yml +30 -0
  36. data/config/locales/pt.yml +30 -0
  37. data/config/locales/ru.yml +30 -0
  38. data/config/locales/sk.yml +30 -0
  39. data/config/locales/tr.yml +30 -0
  40. data/config/locales/zh.yml +30 -0
  41. data/config/routes.rb +86 -0
  42. data/init.rb +69 -0
  43. data/lib/apijs_attachment.rb +252 -0
  44. data/lib/apijs_const.rb +35 -0
  45. data/lib/apijs_files.rb +55 -0
  46. data/lib/image.py +201 -0
  47. data/lib/redmine_apijs.rb +46 -0
  48. data/lib/useragentparser.rb +175 -0
  49. data/lib/video.py +78 -0
  50. data/redmine_apijs.gemspec +69 -0
  51. metadata +94 -0
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
+ * https://www.luigifab.fr/redmine/apijs
4
+ * This program is free software, you can redistribute it or modify
5
+ * it under the terms of the GNU General Public License (GPL).
6
+ */
7
+ var apijsRedmine=new function(){"use strict";this.start=function(){var e=apijs.i18n.data;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.en[250]="Remove a 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 a description",e.en[256]="Enter below the new description for the file. To remove the description, leave the field empty.",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.fr[250]="Supprimer un fichier",e.fr[251]="Êtes-vous certain(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 une description",e.fr[256]="Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.",e.it[250]="Eliminare un file",e.it[251]="Sicuri 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[252]="Błąd",e.pt[250]="Suprimir um ficheiro",e.pt[251]="Tem certeza de que quer suprimir este ficheiro?[br]Atenção, 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.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.tr[252]="Hata",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,i){var a=apijs.i18n.translate(255),r=document.getElementById("attachmentId"+e).querySelector("span.description")?document.getElementById("attachmentId"+e).querySelector("span.description").firstChild.nodeValue.trim():((r=document.createElement("span")).setAttribute("class","description"),r.appendChild(document.createTextNode("")),document.getElementById("attachmentId"+e).querySelector("dd").appendChild(r),""),n='[p][label for="apijsRedText"]'+apijs.i18n.translate(256)+'[/label][/p][input type="text" name="description" value="'+r+'" spellcheck="true" id="apijsRedText"]';apijs.dialog.dialogFormOptions(a,n,t,apijsRedmine.actionEditAttachment,[e,t,i],"editattachment"),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,i;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(e=a.responseText.slice(0,a.responseText.indexOf(":")),t=a.responseText.slice(a.responseText.indexOf(":")+1),(i=document.getElementById(e).querySelector("span.description").firstChild).replaceData(0,i.length,t),(i=document.getElementById(e).querySelector("input"))&&(i.value=i.value.slice(0,i.value.lastIndexOf("|")+1)+t),(i=document.getElementById(e).querySelector("img"))&&i.setAttribute("alt",t),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send("description="+encodeURIComponent(document.getElementById("apijsRedText").value)))},this.removeAttachment=function(e,t,i){apijs.dialog.dialogConfirmation(apijs.i18n.translate(250),apijs.i18n.translate(251),apijsRedmine.actionRemoveAttachment,[e,t,i])},this.actionRemoveAttachment=function(e){var a=new XMLHttpRequest;a.open("GET",e[1]+"?id="+e[0]+"&isAjax=true",!0),a.setRequestHeader("X-CSRF-Token",e[2]),a.onreadystatechange=function(){var e,t,i;4===a.readyState&&([0,200].has(a.status)?0===a.responseText.indexOf("attachmentId")?(t=(e=document.getElementById(a.responseText)).parentNode,i=0,t.removeChild(e),t.querySelectorAll("dl, li").length<1?t.parentNode.removeChild(t):t.querySelectorAll("a[id][type]").forEach(function(e){e.setAttribute("id",e.getAttribute("id").slice(0,e.getAttribute("id").lastIndexOf(".")+1)+i++)}),apijs.dialog.actionClose()):apijsRedmine.error(a.responseText):apijsRedmine.error(a.status))},a.send()}};"function"==typeof self.addEventListener&&self.addEventListener("apijsload",apijsRedmine.start.bind(apijsRedmine));
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Copyright 2008-2020 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
3
+ * https://www.luigifab.fr/apijs - 6.3.0
4
+ * This program is free software, you can redistribute it or modify
5
+ * it under the terms of the GNU General Public License (GPL).
6
+ */
7
+ Array.prototype.has||(Array.prototype.has=function(t,e){if(t instanceof Array){for(e in t)if(t.hasOwnProperty(e)&&this.has(t[e]))return!0}else for(e in this)if(this.hasOwnProperty(e)&&this[e]===t)return!0;return!1}),window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=function(t,e,i){for(e=e||window,i=0;i<this.length;i++)t.call(e,this[i],i,this)});var apijs=new function(){"use strict";this.core={},this.version=630,this.config={lang:"auto",debug:!1,dialog:{closeOnClick:!1,restrictNavigation:!0,player:!0},slideshow:{ids:"slideshow",anchor:!0},upload:{tokenName:"X-CSRF-Token",tokenValue:null}},this.start=function(){var t;if(console.info("APIJS "+this.version.toString().split("").join(".")+" - hello - 1 MB/Mo = 1024 kB/ko"),document.getElementById("oldBrowser"))throw new Error("APIJS canceled, #oldBrowser detected!");(t=document.querySelector('link[href*="apijs/fontello.woff2"]'))&&t.getAttribute("href").indexOf("?a3ab5acff3")<0&&console.error("APIJS warning invalid cachekey for link:fontello.woff2?x, it must be ?a3ab5acff3"),(t=document.querySelector('script[src*="apijs.min.js?v="]'))&&t.getAttribute("src").indexOf("?v="+this.version)<0&&console.error("APIJS warning invalid cachekey for script:apijs.min.js?x, it must be ?v="+this.version),this.i18n=new this.core.i18n,this.player=null,this.dialog=new this.core.dialog,this.upload=new this.core.upload,this.slideshow=new this.core.slideshow,self.dispatchEvent(new CustomEvent("apijsbeforeload")),this.i18n.init(),this.slideshow.init(),self.addEventListener("popstate",apijs.slideshow.onPopState),self.addEventListener("hashchange",apijs.slideshow.onPopState),this.config.debug&&(console.info("APIJS available languages: "+Object.keys(this.i18n.data).join(" ")),console.info("APIJS language loaded: "+this.config.lang),console.info("APIJS successfully started")),self.dispatchEvent(new CustomEvent("apijsload"))},this.formatNumber=function(e,t){var i,s="number"==typeof t?t:!1===t?0:2;try{i=new Intl.NumberFormat(this.config.lang,{minimumFractionDigits:s,maximumFractionDigits:s}).format(e)}catch(t){i=e.toFixed(s)}return"number"==typeof t?i:i.replace(/[.,]00$/,"")},this.toArray=function(t){return Array.prototype.slice.call(t,0)},this.log=function(t){this.config.debug&&console.info("APIJS "+t)},this.openTab=function(t){t.preventDefault(),0<this.href.length&&self.open(this.href)},this.html=function(t){return 0===t.indexOf("#")||0===t.indexOf(this.config.slideshow.ids)?document.getElementById(t.replace("#","apijs")):this.dialog.t1?this.dialog.t1.querySelector(t):null},this.serialize=function(t,i){var s=[];return i="string"==typeof i?i:"",Array.prototype.forEach.call(t.elements,function(t){if(t.name&&!t.disabled&&!["file","reset","submit","button"].has(t.type)&&0===t.name.indexOf(i))if("select-multiple"===t.type)for(var e=0;e<t.options.length;e++)t.options[e].selected&&s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.options[e].value));else["checkbox","radio"].has(t.type)&&!t.checked||s.push(encodeURIComponent(t.name)+"="+encodeURIComponent(t.value))}),s.join("&")}};"function"==typeof self.addEventListener&&self.addEventListener("load",apijs.start.bind(apijs)),apijs.core.i18n=function(){"use strict";this.data={cs:{103:"Zrušit",104:"Potvrzení",105:"Zavřít",106:"Předchozí",107:"Další",142:"předchozí/další"},de:{103:"Abbrechen",104:"Bestätigen",105:"Schließen",106:"Zurück",107:"Weiter",108:"Datei wählen",109:"Dateien wählen",124:"Verarbeitung läuft...",141:"anfang/ende",142:"zurück/weiter",143:"wiedergabe/pause",144:"rückwärts/vorwärts",145:"leiser/lauter",146:"stumm",147:"vollbild",148:"beenden",149:"Ende",150:"Esc",161:"Alle Dateien wurden akzeptiert.",162:"Akzeptiertes Dateiformat: §.",163:"Akzeptiertes Dateiformate: § und §.",164:"Maximale Größe: § MB.",167:"Unerlaubtes Format",168:"Format zu gross",169:"Leere Datei",181:"§% - § kB/s - Noch § Minuten",182:"§% - § kB/s - Noch § Minute",183:"§% - § kB/s - Noch § Sekunden",185:"§% - bis § kB/s in § Minuten",186:"§% - bis § kB/s in § Minute",187:"§% - bis § kB/s in § Sekunden",188:"§% - bis § kB/s",191:"Abbrechen",192:"Sind Sie sicher? [span]Ja[/span] - Nein",193:"Es ist ein unerwarteter Fehler aufgetreten... Bitte versuchen Sie es noch einmal.",194:"Es ist ein Fehler beim Senden.",195:"Es ist ein Fehler bei der Verarbeitung.",196:"Wir laden Sie ein es erneut zu [a §]versuchen[/a]."},en:{102:"Ok",103:"Cancel",104:"Confirm",105:"Close",106:"Previous",107:"Next",108:"Choose a file",109:"Choose one or multiple files",124:"Operation in progress...",125:"Upload in progress...",126:"Processing file in progress...",131:"video",132:"video track",133:"audio track",134:"subtitles",135:"off",141:"start/end",142:"previous/next",143:"play/pause",144:"backward/forward",145:"decrease/increase the volume",146:"mute",147:"full screen",148:"quit",149:"End",150:"Escape",161:"All files are accepted.",162:"Accepted file format: §.",163:"Accepted file formats: § and §.",164:"Maximum size: § MB.",165:"Maximum size by file: § MB.|Total maximum size: § MB.",166:"§ MB",167:"Format not allowed",168:"Size too large",169:"File empty",181:"§% - § kB/s - § minutes left",182:"§% - § kB/s - § minute left",183:"§% - § kB/s - § seconds left",184:"§% - § kB/s",185:"§% - at § kB/s in § minutes",186:"§% - at § kB/s in § minute",187:"§% - at § kB/s in § seconds",188:"§% - at § kB/s",191:"Interrupt",192:"Are you sure? [span]Yes[/span] - No",193:"It seems that an unlikely mistake just happened... Please try again.",194:"An error occurred while sending.",195:"An error occurred while processing.",196:"We invite you to [a §]try again[/a]."},es:{102:"Aceptar",103:"Cancelar",104:"Confirmar",105:"Cerrar",106:"Anterior",107:"Siguiente",108:"Elegir un fichero",109:"Elegir uno o varios ficheros",124:"Operación en curso...",125:"Envío en progreso...",126:"Tratamiento en curso...",132:"pista video",133:"pista audio",134:"subtítulos",141:"inicio/fin",142:"anterior/siguiente",143:"reproducir/pausa",144:"retroceder/avanzar",145:"bajar/subir el volumen",146:"silenciar",147:"pantalla completa",148:"salir",149:"Fin",150:"Esc",161:"Se aceptan todos los archivos.",162:"Formato de archivo aceptado: §.",163:"Formatos de archivos aceptados: § y §.",164:"Tamaño máximo: § MB.",165:"Tamaño máximo por fichero: § Mo.|Tamaño máximo total: § Mo.",167:"Formato no autorizado",168:"Tamaño demasiado importante",169:"Fichero vacío",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - a § kB/s en § minutos",186:"§% - a § kB/s en § minuto",187:"§% - a § kB/s en § segundos",188:"§% - a § kB/s",191:"Interrumpir",192:"¿Está seguro(a)? [span]Sí[/span] - No",193:"Parece que un error improbable acabo de ocurrir... Por favor, inténtelo de nuevo.",194:"Se produjo un error durante el envío.",195:"Se produjo un error durante el procesamiento.",196:"Le invitamos a [a §]intentar de nuevo[/a]."},fr:{103:"Annuler",104:"Valider",105:"Fermer",106:"Précédent",107:"Suivant",108:"Choisir un fichier",109:"Choisir un ou plusieurs fichiers",124:"Opération en cours...",125:"Envoi en cours...",126:"Traitement en cours...",131:"vidéo",132:"piste vidéo",133:"piste audio",134:"sous-titres",141:"début/fin",142:"précédent/suivant",143:"lecture/pause",144:"reculer/avancer",145:"baisser/augmenter le volume",146:"couper le son",147:"plein écran",148:"quitter",149:"Fin",150:"Échap",161:"Tous les fichiers sont acceptés.",162:"Format de fichier accepté : §.",163:"Formats de fichier acceptés : § et §.",164:"Taille maximale : § Mo.",165:"Taille maximale par fichier : § Mo.|Taille maximale total : § Mo.",166:"§ Mo",167:"Format non autorisé",168:"Taille trop importante",169:"Fichier vide",181:"§% - § ko/s - § minutes restantes",182:"§% - § ko/s - § minute restante",183:"§% - § ko/s - § secondes restantes",184:"§% - § ko/s",185:"§% - à § ko/s en § minutes",186:"§% - à § ko/s en § minute",187:"§% - à § ko/s en § secondes",188:"§% - à § ko/s",191:"Interrompre",192:"Êtes-vous sûr(e) ? [span]Oui[/span] - Non",193:"Il semblerait qu'une erreur improbable vient de se produire... Veuillez réessayer.",194:"Une erreur est survenue lors de l'envoi.",195:"Une erreur est survenue lors du traitement.",196:"Nous vous invitons à [a §]réessayer[/a]."},it:{103:"Annulla",104:"Conferma",105:"Chiudi",106:"Precedente",107:"Successivo",108:"Scegli un file",109:"Scegli uno o più file",124:"Operazione in corso...",125:"Invio in corso...",126:"Trattamento in corso...",141:"inizio/fine",142:"precedente/successivo",143:"riproduci/pausa",144:"indietro/avanti",145:"abbassare/aumentare il volume",146:"muto",147:"schermo intero",148:"esci",149:"Fine",150:"Esc",161:"Tutti i file sono accettati.",162:"Formato del file accettato: §.",163:"Formati accettati: § et §.",164:"Dimensione massima: § MB.",167:"Formato non autorizzato",168:"Dimensione troppo importante",169:"File vuoto",181:"§% - § kB/s - § minuti rimanenti",182:"§% - § kB/s - § minuto rimanente",183:"§% - § kB/s - § secondi rimanenti",185:"§% - a § kB/s in § minuti",186:"§% - a § kB/s in § minuto",187:"§% - a § kB/s in § secondi",188:"§% - a § kB/s",191:"Interrompere",192:"Sei sicuro? [span]Si[/span] - No",193:"Sembra che un errore inaspettato si sia verificato... Riprova.",194:"Un errore si è verificato durante l'invio.",195:"Un errore si è verificato durante il trattamento.",196:"Vi invitiamo a [a §]riprovare[/a]."},ja:{103:"キャンセル",104:"承認",105:"閉じる",106:"前へ",107:"次へ",142:"前へ/次へ",166:"§ Mo",184:"§% - § Ko/s",192:"よろしいですか?[span]はい[/span] - いいえ"},nl:{103:"Annuleren",104:"Bevestigen",105:"Sluiten",106:"Vorige",107:"Volgende",142:"vorige/volgende"},pl:{103:"Anuluj",104:"Potwierdź",105:"Zamknij",106:"Poprzedni",107:"Następne",142:"poprzedni/następne"},pt:{103:"Cancelar",104:"Confirmar",105:"Fechar",106:"Anterior",107:"Seguinte",108:"Escolher um ficheiro",109:"Escolher um ou vários ficheiros",124:"Operação em processo...",125:"Envio em processo...",126:"Tratamento em processo...",131:"vídeo",141:"início/fim",142:"anterior/seguinte",143:"reprodução/pausa",144:"recuar/avançar",145:"subir/baixar o volume",146:"silenciar",147:"ecrã completo",148:"sair",149:"Fim",150:"Esc",161:"Todos os ficheiros foram aceites.",162:"Formato do ficheiro aceite: §.",163:"Formatos de ficheiro aceites: § e §.",164:"Tamanho máximo: § MB.",181:"§% - § kB/s - § minutos restantes",182:"§% - § kB/s - § minuto restantes",183:"§% - § kB/s - § segundos restantes",185:"§% - § kB/s em § minutos",186:"§% - § kB/s em § minuto",187:"§% - § kB/s em § segundos",188:"§% - § kB/s",192:"Tem a certeza? [span]Sim[/span] - Não",193:"Parece ter acontecido um erro imprevisto. Por favor, tente novamente.",194:"Ocorreu um erro ao enviar.",195:"Ocorreu um erro ao processar.",196:"Convidamo-lo a [a §]tentar novamente[/a]."},ptbr:{107:"Próximo",124:"Operação em andamento...",125:"Envio em andamento...",126:"Tratamento em andamento...",142:"anterior/próximo"},ru:{102:"Ок",103:"Отмена",104:"Подтвердить",105:"Закрыть",106:"Предыдущий",107:"Следующий",108:"Выберите файл",124:"Операция в процессе...",141:"начало/конец",142:"предыдущий/следующий",143:"воспроизведение/пауза",144:"назад/вперед",145:"понизить/повысить громкость",146:"отключить звук",147:"на весь экран",148:"выйти",161:"Все файлы приняты.",162:"Формат файла: §.",163:"Форматы файлов: § и §.",164:"Максимальный размер: § MB.",181:"§% - § kB/s - осталось § минут",182:"§% - § kB/s - осталось § минут",183:"§% - § kB/s - осталось § секунд",185:"§% - § kB/s за § минут",186:"§% - § kB/s за § минут",187:"§% - § kB/s за § секунд",188:"§% - § kB/s",192:"Вы уверены? [span]Да[/span] - нет",193:"Кажется произошла не предусмотренная ошибка... Попробуйте еще раз.",194:"Возникла ошибка при отправке файла.",195:"Возникла ошибка при обработке файла."},sk:{103:"Zrušiť",105:"Zavrieť",106:"Predchádzajúci",107:"Ďalší",142:"predchádzajúci/ďalší"},tr:{103:"İptal",104:"Onayla",105:"Kapat",106:"Önceki",107:"Sonraki",142:"önceki/sonraki",192:"Emin misiniz ? [span]Evet[/span] - Hayır"},zh:{103:"取消",104:"确认",105:"关闭",106:"前页",107:"下一步",142:"前页/下一步",192:"您确定吗?[span]是[/span] - 否"}},this.init=function(){var t,e=apijs.config.lang,i=document.querySelector("html");-1<e.indexOf("auto")&&(i.getAttribute("xml:lang")?t=i.getAttribute("xml:lang").slice(0,2):i.getAttribute("lang")&&(t=i.getAttribute("lang").slice(0,2)),"string"==typeof t&&this.data.hasOwnProperty(t)&&(apijs.config.lang=t)),this.data.hasOwnProperty(apijs.config.lang)||(apijs.config.lang="en")},this.translate=function(t){var e=apijs.config.lang,i=1,s="";if("string"!=typeof this.data[e][t])if(3<e.length&&"string"==typeof this.data[e.slice(0,2)][t])e=e.slice(0,2);else{if("en"===e||"string"!=typeof this.data.en[t])return t;e="en"}return 1<arguments.length?(this.data[e][t].split("§").forEach(function(t){s+=i<this.length?t+this[i++]:t},arguments),s):this.data[e][t]},this.translateNode=function(){return document.createTextNode(this.translate.apply(this,arguments))},this.changeLang=function(t){if("string"==typeof t){if(this.data.hasOwnProperty(t))return apijs.config.lang=t,!0;if(-1<t.indexOf("auto"))return apijs.config.lang=t,this.init(),!0}return!1}},apijs.core.select=function(){"use strict";this.init=function(){}},apijs.core.player=function(){"use strict";this.root=null,this.video=null,this.stalled=!1,this.subload=!1,this.init=function(t,e,i){var s,a;if(this.root=t,(this.video=e).removeAttribute("controls"),e.onloadedmetadata=function(t){if(this.stalled=!1,this.onTimeupdate(t),this.onProgress(t),"object"==typeof this.video.videoTracks){if(1<(a=this.video.videoTracks).length){for(s=0;s<a.length;s++)this.createOption("videotrack",s,""===a[s].label?a[s].language:a[s].language+" - "+a[s].label);this.updateSelect("videotrack",a.length,0)}this.html(".tracks.videotrack select").selectedIndex=0}if("object"==typeof this.video.audioTracks){if(1<(a=this.video.audioTracks).length){for(s=0;s<a.length;s++)this.createOption("audiotrack",s,""===a[s].label?a[s].language:a[s].language+" - "+a[s].label);this.updateSelect("audiotrack",a.length,0)}this.html(".tracks.audiotrack select").selectedIndex=0}}.bind(this),e.onstalled=function(t){this.stalled=!0,this.onWaiting(t)}.bind(this),e.onplaying=apijs.player.onPlay.bind(this),e.onpause=apijs.player.onPlay.bind(this),e.onended=apijs.player.onEnded.bind(this),e.onprogress=apijs.player.onProgress.bind(this),e.ontimeupdate=apijs.player.onTimeupdate.bind(this),e.onseeking=apijs.player.onTimeupdate.bind(this),e.onseeked=apijs.player.onWaiting.bind(this),e.onwaiting=apijs.player.onWaiting.bind(this),e.onloadstart=apijs.player.onWaiting.bind(this),e.oncanplay=apijs.player.onWaiting.bind(this),e.onvolumechange=apijs.player.actionVolume.bind(this),i.indexOf("m3u")<0)return this.createTags([i]);var n=new XMLHttpRequest;return n.open("GET",i,!0),n.onreadystatechange=function(){4===n.readyState&&(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijs.player.init",xhr:n}})),[0,200].has(n.status)?apijs.player.createTags(n.responseText.trim().split("\n")):apijs.dialog.onMediaLoad({type:"error"}))},n.send(),this},this.createTags=function(t){var e,i,s;if(!(0<this.video.childNodes.length)){for(this.vv=0,this.tt=0;"string"==typeof(e=t.shift());)0===e.indexOf("#APIJS#attr")?(i=e.split("|"),this.video.setAttribute(i[1],i[2])):0===e.indexOf("#APIJS#track|subtitles")?(i=e.split("|"),this.createOption("text",this.tt++,i[3]+" - "+i[2]),(s=document.createElement("track")).setAttribute("kind",i[1]),s.setAttribute("label",i[2]),s.setAttribute("srclang",i[3]),s.setAttribute("src",i[4]),s.onload=function(t){"showing"===t.target.track.mode&&(apijs.log("player:track:onload"),this.onWaiting(t),this.subload=!1)}.bind(this),s.onerror=function(t){"showing"===t.target.track.mode&&(apijs.log("player:track:onerror"),this.onWaiting(t),this.subload=!1)}.bind(this),this.video.appendChild(s)):0===e.indexOf("#EXTINF")?i=e.replace(/#EXTINF:[0-9]+,/,""):5<e.length&&"#"!==e[0]&&(this.createOption("video",this.vv++,"string"==typeof i?i:this.vv),(s=document.createElement("source")).setAttribute("src",e),s.onerror=apijs.dialog.onMediaLoad,this.video.appendChild(s));return this.updateSelect("video",this.vv,0),"object"==typeof this.video.textTracks&&this.updateSelect("text",this.tt,1,!0),this}},this.createOption=function(t,e,i){var s=document.createElement("option");s.setAttribute("value",e),s.appendChild(document.createTextNode(i)),this.html(".tracks."+t+" select").appendChild(s)},this.updateSelect=function(t,e,i,s){(!0===s?0:1)<e?(this.html(".tracks."+t).removeAttribute("style"),this.html(".tracks."+t+" em").textContent="("+e+")",this.html(".tracks."+t+" select").setAttribute("size",e<10?e+i:10)):(this.html(".tracks."+t).setAttribute("style","display:none;"),this.html(".tracks."+t+" select").innerHTML="")},this.html=function(t){return this.root.querySelector(t)},this.onTimeupdate=function(t){var e,i,s,a,n="00:00",o=this.video.currentTime;0<o&&(e=Math.floor(o/3600),i=Math.floor(o%3600/60),(s=Math.floor(o%60))<10&&(s="0"+s),i<10&&(i="0"+i),n=(e=0<e?e+":":"")+i+":"+s),(a=this.video.duration)===1/0||isNaN(a)||(e=Math.floor(a/3600),i=Math.floor(a%3600/60),(s=Math.floor(a%60))<10&&(s="0"+s),i<10&&(i="0"+i),n+=" / "+(e=0<e?e+":":"")+i+":"+s,this.html("svg.bar rect").style.width=o/a*100+"%"),this.html("span.time").textContent=n,this.stalled&&!this.subload&&(this.stalled=!1,this.onWaiting(t))},this.onProgress=function(){var t,e,i=this.html("svg.bar"),s=this.video,a=s.buffered.length;if(0<a&&s.duration!==1/0&&!isNaN(s.duration))for(i.querySelectorAll(".buffer").forEach(function(t){t.parentNode.removeChild(t)});0<a--;)(t=document.createElement("rect")).setAttribute("class","buffer"),99.8<(e=(s.buffered.end(a)-s.buffered.start(a))/s.duration*100)?t.setAttribute("style","left:0%; width:100%;"):t.setAttribute("style","left:"+s.buffered.start(a)/s.duration*100+"%; width:"+e+"%;"),i.appendChild(t)},this.onPlay=function(){this.video.paused?(this.html("span.play").textContent="",apijs.dialog.remove("playing")):(this.html("span.play").textContent="",apijs.dialog.add("playing"))},this.onEnded=function(){this.html("span.play").textContent="⟲"},this.onWaiting=function(t){apijs.log("player:onWaiting:"+t.type+" stalled:"+this.stalled+"/subload:"+this.subload),apijs.dialog[["loadstart","waiting","seeking","stalled"].has(t.type)?"add":"remove"]("loading")},this.actionVolume=function(t){var e=this.html("svg.vol"),i=e.offsetWidth,s=0,a=this.video;if(3!==a.networkState){if("object"==typeof t&&!isNaN(t.clientX)){for(;s+=e.offsetLeft,e=e.offsetParent;);s=(s=100*(t.clientX-s)/i/100)<=.1?0:.92<s?1:s,a.volume=s,a.muted=!1}this.html("svg.vol rect").style.width=a.muted?0:100*a.volume+"%"}},this.actionPosition=function(t){var e=this.html("svg.bar"),i=e.offsetWidth,s=0,a=this.video;if(3!==a.networkState&&"object"==typeof t&&a.duration!==1/0&&!isNaN(a.duration)){for(;s+=e.offsetLeft,e=e.offsetParent;);s=(s=a.duration*(t.clientX-s)*100/i/100)<=1?0:s,a.currentTime=s}},this.actionVideo=function(t){this.html("svg.bar rect").style.width="0",this.html("svg.bar").querySelectorAll(".buffer").forEach(function(t){t.parentNode.removeChild(t)}),this.html("span.play").textContent="",this.updateSelect("videotrack",0,0),this.updateSelect("audiotrack",0,0),this.video.src=this.video.querySelectorAll("source")[t.value].src,t.blur()},this.actionVideotrack=function(t){for(var e=this.video.videoTracks,i=0;i<e.length;i++)e[i].enabled=i==t.value;t.blur()},this.actionAudiotrack=function(t){for(var e=this.video.audioTracks,i=0;i<e.length;i++)e[i].enabled=i==t.value;t.blur()},this.actionText=function(t){for(var e=this.video.textTracks,i=0;i<e.length;i++)e[i].mode=i==t.value?"showing":"hidden";t.blur(),this.subload=!0}},apijs.core.dialog=function(){"use strict";this.klass=[],this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null,this.ft=/information|confirmation|options|upload|progress|waiting|photo|video|iframe|ajax|start|ready|end|reduce|mobile|tiny|fullscreen/g,this.ti="a,area,button,input,textarea,select,object,iframe",this.ns="http://www.w3.org/2000/svg",this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,this.d=null,this.dialogInformation=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("information",i).htmlParent().htmlContent(t,e).htmlBtnOk().show("button.confirm"):(console.error("apijs.dialog.dialogInformation invalid arguments",apijs.toArray(arguments)),!1)},this.dialogConfirmation=function(t,e,i,s,a){return"string"==typeof t&&"string"==typeof e&&"function"==typeof i?(this.callback=i,this.args=s,this.init("confirmation",a).htmlParent().htmlContent(t,e).htmlBtnConfirm("button","apijs.dialog.actionConfirm();").show("button.confirm")):(console.error("apijs.dialog.dialogConfirmation invalid arguments",apijs.toArray(arguments)),!1)},this.dialogFormOptions=function(t,e,i,s,a,n){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"function"==typeof s?(this.callback=s,this.args=a,this.init("options",n).htmlParent(i,"apijs.dialog.actionConfirm();").htmlContent(t,e).htmlBtnConfirm("submit").show(!0)):(console.error("apijs.dialog.dialogFormOptions invalid arguments",apijs.toArray(arguments)),!1)},this.dialogFormUpload=function(t,e,i,s,a,n){return"string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("upload",n).htmlParent(i,"apijs.upload.actionConfirm();").htmlContent(t,e).htmlUpload(s,"boolean"==typeof a&&a).htmlBtnConfirm("submit").show("button.browse"):(console.error("apijs.dialog.dialogFormUpload invalid arguments",apijs.toArray(arguments)),!1)},this.dialogProgress=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("progress",i).htmlParent().htmlContent(t,e).htmlSvgProgress().show():(console.error("apijs.dialog.dialogProgress invalid arguments",apijs.toArray(arguments)),!1)},this.dialogWaiting=function(t,e,i){return"string"==typeof t&&"string"==typeof e?this.init("waiting",i).htmlParent().htmlContent(t,e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogWaiting invalid arguments",apijs.toArray(arguments)),!1)},this.dialogPhoto=function(t,e,i,s,a){var n="string"==typeof a;return a=n?"notransition slideshow loading "+a:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("photo",a).htmlParent().htmlMedia(t,e,i,s).htmlHelp(n,!1).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogPhoto invalid arguments",apijs.toArray(arguments)),!1)},this.dialogVideo=function(t,e,i,s,a){var n="string"==typeof a;return a=n?"notransition slideshow loading "+a:"notransition loading","string"==typeof t&&"string"==typeof e&&"string"==typeof i&&"string"==typeof s?this.init("video",a).htmlParent().htmlMedia(t,e,i,s).htmlHelp(n,t.indexOf("iframe")<0).htmlBtnClose().htmlBtnNavigation().htmlSvgLoader().show():(console.error("apijs.dialog.dialogVideo invalid arguments",apijs.toArray(arguments)),!1)},this.dialogIframe=function(t,e,i){return"string"==typeof t&&"boolean"==typeof e?this.init("iframe","string"==typeof i?i+" loading":"loading",!e).htmlParent().htmlIframe(t).htmlBtnClose(e).htmlSvgLoader(!1).show():(console.error("apijs.dialog.dialogIframe invalid arguments",apijs.toArray(arguments)),!1)},this.dialogAjax=function(t,e,i,s,a){if("string"!=typeof t||"boolean"!=typeof e||"function"!=typeof i)return console.error("apijs.dialog.dialogAjax invalid arguments",apijs.toArray(arguments)),!1;this.callback=i,this.args=s;var n=this.init("ajax","string"==typeof a?a+" loading":"loading",!e).htmlParent().htmlBtnClose(e).htmlSvgLoader(!1).show();return this.xhr=new XMLHttpRequest,this.xhr.open("GET",t,!0),this.xhr.onreadystatechange=function(){4===this.xhr.readyState&&"function"==typeof this.callback&&(this.callback(this.xhr,this.args),this.remove("loading"))}.bind(apijs.dialog),this.xhr.send(),n},this.update=function(){return this.has("start","ready","end")&&(apijs.dialog.t1&&apijs.dialog.t1.setAttribute("class",this.klass.join(" ")),apijs.dialog.t2&&apijs.dialog.t2.setAttribute("class",this.klass.join(" "))),this},this.add=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.add argument is not a string",t),this.klass.indexOf(t)<0&&this.klass.push(t)},this),this.update()},this.remove=function(){return Array.prototype.forEach.call(arguments,function(t){"string"!=typeof t&&console.error("apijs.dialog.remove argument is not a string",t),-1<this.klass.indexOf(t)&&this.klass.splice(this.klass.indexOf(t),1)},this),this.update()},this.toggle=function(t,e){return"string"==typeof t&&"string"==typeof e||console.error("apijs.dialog.toggle argument is not a string",t,e),this.has(t)&&this.remove(t),this.has(e)||this.add(e),this.update()},this.has=function(){return this.klass.has(apijs.toArray(arguments))},this.actionClose=function(t){new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)&&apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&history.pushState({},"",self.location.href.slice(0,self.location.href.indexOf("#"))),"object"==typeof t?"apijsDialog"!==t.target.getAttribute("id")||apijs.dialog.has("photo","video","progress","waiting","lock")||apijs.dialog.clear(!0):this.t1&&this.clear(!0)},this.onCloseBrowser=function(t){if(apijs.dialog.has("progress","waiting","lock"))return t.preventDefault(),t.stopPropagation(),t.m=apijs.i18n.translate(124),t.returnValue=t.m,t.m},this.onResizeBrowser=function(){var t=document.querySelector("body").clientWidth<=(apijs.dialog.has("photo","video")?900:460);apijs.dialog[t?"add":"remove"]("mobile"),t=document.querySelector("body").clientWidth<=300,apijs.dialog[t?"add":"remove"]("tiny")},this.onScrollBrowser=function(t){var e=t.target,i=!1;if(apijs.dialog.has("slideshow")&&!apijs.dialog.has("playing")&&!["OPTION","SELECT"].has(e.nodeName)&&["DOMMouseScroll","mousewheel","panleft","panright"].has(t.type))e=(new Date).getTime()/1e3,(apijs.dialog.scroll<1||e>1+apijs.dialog.scroll)&&(apijs.dialog.scroll=e,i=0<t.detail||t.wheelDelta<0,apijs.slideshow["panleft"===t.type||i?"actionNext":"actionPrev"]());else{if("OPTION"===e.nodeName)e=e.parentNode;else if(!["TEXTAREA","SELECT"].has(e.nodeName))for(;!0!==i&&"HTML"!==e.nodeName;)e.classList.contains("scrollable")?i=!0:e=e.parentNode;if("HTML"!==e.nodeName&&((i=0<t.detail||t.wheelDelta<0)&&e.scrollTop<e.scrollHeight-e.offsetHeight||!i&&0<e.scrollTop))return}apijs.dialog.stopScroll(t)},this.onScrollIframe=function(t){for(var e,i=t.target;i.parentNode;)i=i.parentNode;((e=0<t.detail||t.wheelDelta<0)&&i.defaultView.innerHeight+i.defaultView.pageYOffset>i.body.offsetHeight||!e&&i.defaultView.pageYOffset<=0)&&apijs.dialog.stopScroll(t)},this.onKey=function(t){var e=apijs.dialog,i=e.media,s=e.t1;isNaN(t)||(t={keyCode:t,ctrlKey:!1,altKey:!1,preventDefault:function(){}}),e.has("progress","waiting","lock")?(t.ctrlKey&&[81,87,82,115,116].has(t.keyCode)||t.altKey&&115===t.keyCode||[27,116].has(t.keyCode))&&t.preventDefault():e.has("photo","video")&&122===t.keyCode?(t.preventDefault(),document.webkitFullscreenElement?document.webkitCancelFullScreen():document.mozFullScreenElement?document.mozCancelFullScreen():document.fullscreenElement?document.cancelFullScreen():s.webkitRequestFullscreen?s.webkitRequestFullscreen():s.requestFullscreen?s.requestFullscreen():s.mozRequestFullScreen&&s.mozRequestFullScreen()):e.has("slideshow")?27===t.keyCode?(t.preventDefault(),e.actionClose()):35===t.keyCode?(t.preventDefault(),apijs.slideshow.actionLast()):36===t.keyCode?(t.preventDefault(),apijs.slideshow.actionFirst()):37===t.keyCode?(t.preventDefault(),apijs.slideshow.actionPrev()):39===t.keyCode&&(t.preventDefault(),apijs.slideshow.actionNext()):27===t.keyCode&&(t.preventDefault(),e.actionClose()),e.has("video")&&(32===t.keyCode||80===t.keyCode?(t.preventDefault(),3!==i.networkState&&(i.ended||i.paused?i.play():i.pause())):38===t.keyCode||33===t.keyCode?(t.preventDefault(),3!==i.networkState&&i.duration!==1/0&&i.currentTime<i.duration-10&&(i.currentTime+=10)):40===t.keyCode||34===t.keyCode?(t.preventDefault(),3!==i.networkState&&i.duration!==1/0&&(10<i.currentTime?i.currentTime-=10:i.currentTime=0)):107===t.keyCode?(t.preventDefault(),3!==i.networkState&&(i.muted&&(i.muted=!1),i.volume<.8?i.volume+=.2:i.volume=1)):109===t.keyCode?(t.preventDefault(),3!==i.networkState&&(i.muted&&(i.muted=!1),.21<i.volume?i.volume-=.2:i.volume=0)):77===t.keyCode&&(t.preventDefault(),3!==i.networkState&&(i.muted=!i.muted))),[32,33,34,35,36,38,40].has(t.keyCode)&&(t.target&&["INPUT","TEXTAREA","OPTION","SELECT"].has(t.target.nodeName)||e.stopScroll(t))},this.stopScroll=function(t){t.preventDefault(),"function"==typeof t.stopPropagation&&t.stopPropagation()},this.actionConfirm=function(){return this.has("options")&&!0!==this.callback(!1,this.args)||(this.add("lock","loading"),this.htmlSvgLoader(!1),apijs.html("div.btns").style.visibility="hidden",apijs.html("div.bbcode").style.visibility="hidden",self.setTimeout(function(){this.t2&&"FORM"===this.t2.nodeName?this.callback(this.t2.getAttribute("action"),this.args):this.t2&&this.callback(this.args)}.bind(this),12)),!1},this.onIframeLoad=function(t){t.removeAttribute("class"),apijs.dialog.remove("loading"),t.contentWindow.addEventListener("DOMMouseScroll",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("mousewheel",window.parent.apijs.dialog.onScrollIframe,{passive:!1}),t.contentWindow.addEventListener("touchmove",window.parent.apijs.dialog.onScrollIframe,{passive:!1})},this.onMediaLoad=function(t){var e,i,s,a=apijs.dialog,n=a.media;t&&t.target&&(e=t.target.currentSrc||t.target.src,apijs.log("dialog:onMediaLoad:"+t.type+" "+(e?e.slice(e.lastIndexOf("/")+1):""))),n&&["load","durationchange"].has(t.type)?(a.remove("loading","error"),n.style.visibility="visible",n.hasAttribute("src")||"IMG"!==n.nodeName||n.setAttribute("src",n.imageLoader.src)):n&&"error"===t.type&&(a.toggle("loading","error"),n.removeAttribute("style"),(i=apijs.html(".tracks.video select"))&&t&&t.target&&0<(s=i.querySelectorAll("option")).length&&0<i.value.length&&(s[i.value].setAttribute("disabled","disabled"),i.selectedIndex+=1,"VIDEO"===t.target.nodeName&&""!==i.value&&apijs.player.actionVideo(i)))},this.onFullscreen=function(t){var e=document.fullscreenElement||document.mozFullScreenElement||document.webkitFullscreenElement;t&&apijs.log("dialog:onFullscreen:"+(e?"in":"out")),apijs.dialog[e?"add":"remove"]("fullscreen")},this.init=function(t,e,i){return"string"==typeof e?e=0<(e=e.replace(this.ft,"").trim()).length?!0===i?e+" lock":e:!0===i?"lock":null:!0===i&&(e="lock"),this.t0&&this.clear(!1),this.klass.push("start"),this.klass.push(t),self.matchMedia("prefers-reduced-motion:reduce").matches&&this.klass.push("reduce"),"string"==typeof e&&(this.klass=this.klass.concat(e.split(" "))),this.t0=document.createDocumentFragment(),document.addEventListener("keydown",apijs.dialog.onKey),self.addEventListener("beforeunload",apijs.dialog.onCloseBrowser),self.addEventListener("DOMMouseScroll",apijs.dialog.onScrollBrowser,{passive:!1}),self.addEventListener("mousewheel",apijs.dialog.onScrollBrowser,{passive:!1}),self.addEventListener("touchmove",apijs.dialog.onScrollBrowser,{passive:!1}),self.addEventListener("resize",apijs.dialog.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.setAttribute("tabindex","-1")}),this},this.show=function(t){return this.onResizeBrowser(),this.onFullscreen(),0<this.height&&!this.has("photo","video")&&(this.t2.style.minHeight=this.height+"px"),apijs.html("#Dialog")?(this.toggle("start","ready"),this.t1=apijs.html("#Dialog"),this.t1.appendChild(this.t0.firstChild.firstChild),this.t1.setAttribute("class",this.t2.getAttribute("class"))):this.has("notransition")?(this.toggle("start","ready"),document.querySelector("body").appendChild(this.t0)):(document.querySelector("body").appendChild(this.t0),self.setTimeout(function(){apijs.dialog.toggle("start","ready")},12)),apijs.config.dialog.closeOnClick&&!this.has("progress","waiting","lock")&&document.addEventListener("click",apijs.dialog.actionClose),this.has("photo","video")&&(document.webkitFullscreenEnabled?document.addEventListener("webkitfullscreenchange",apijs.dialog.onFullscreen):document.fullscreenEnabled?document.addEventListener("fullscreenchange",apijs.dialog.onFullscreen):document.mozFullScreenEnabled&&document.addEventListener("mozfullscreenchange",apijs.dialog.onFullscreen)),!0===t?self.setTimeout(function(){apijs.html("input:not([readonly]),textarea:not([readonly]),select:not([disabled])").focus()},12):"string"==typeof t&&apijs.html(t).focus(),!0},this.clear=function(t){return t&&this.xhr&&(this.callback=null,this.xhr.abort()),document.removeEventListener("keydown",apijs.dialog.onKey),self.removeEventListener("beforeunload",apijs.dialog.onCloseBrowser),self.removeEventListener("DOMMouseScroll",apijs.dialog.onScrollBrowser,{passive:!1}),self.removeEventListener("mousewheel",apijs.dialog.onScrollBrowser,{passive:!1}),self.removeEventListener("touchmove",apijs.dialog.onScrollBrowser,{passive:!1}),self.removeEventListener("resize",apijs.dialog.onResizeBrowser),apijs.config.dialog.restrictNavigation&&document.querySelectorAll(this.ti).forEach(function(t){t.removeAttribute("tabindex")}),apijs.config.dialog.closeOnClick&&document.removeEventListener("click",apijs.dialog.actionClose),this.has("photo","video")&&(document.webkitFullscreenEnabled?document.removeEventListener("webkitfullscreenchange",apijs.dialog.onFullscreen):document.fullscreenEnabled?document.removeEventListener("fullscreenchange",apijs.dialog.onFullscreen):document.mozFullScreenEnabled&&document.removeEventListener("mozfullscreenchange",apijs.dialog.onFullscreen)),this.has("video")&&(this.media.ondurationchange=null,this.media.onerror=null),this.has("photo","video")||(this.height=parseFloat(self.getComputedStyle(this.t2).height)),t?(this.toggle("ready","end"),document.querySelector("body").removeChild(this.t1)):this.t1.removeChild(this.t2),this.klass=[],t&&(this.height=0,this.scroll=0,this.callback=null,this.args=null,this.xhr=null),this.media=null,this.t0=null,this.t1=null,this.t2=null,this.a=null,this.b=null,this.c=null,!(this.d=null)},this.htmlParent=function(t,e){return this.t1=document.createElement("div"),this.t1.setAttribute("id","apijsDialog"),"string"==typeof t?(this.t2=document.createElement("form"),this.t2.setAttribute("action",t),this.t2.setAttribute("method","post"),this.t2.setAttribute("enctype","multipart/form-data"),this.t2.setAttribute("onsubmit","return "+e)):this.t2=document.createElement("div"),this.t2.setAttribute("id","apijsBox"),this.t1.appendChild(this.t2),this.t0.appendChild(this.t1),this},this.htmlContent=function(t,e){return 0<t.length&&(this.a=document.createElement("h1"),this.a.innerHTML=t.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\[/g,"<").replace(/]/g,">"),this.t2.appendChild(this.a)),0<e.length&&(this.a=document.createElement("div"),this.a.setAttribute("class","bbcode"),"["!==e[0]&&(e="[p]"+e+"[/p]"),this.a.innerHTML=e.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\[/g,"<").replace(/]/g,">"),this.a.querySelectorAll("a.popup").forEach(function(t){t.addEventListener("click",apijs.openTab)}),this.t2.appendChild(this.a)),this},this.htmlBtnOk=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","confirm"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(102)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnConfirm=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns"),this.b=document.createElement("button"),this.b.setAttribute("type",t),this.b.setAttribute("class","confirm"),"submit"!==t&&this.b.setAttribute("onclick",e),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(104)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","cancel"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(103)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnNavigation=function(){return this.a=document.createElement("div"),this.a.setAttribute("class","navigation noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","prev"),this.b.setAttribute("id","apijsPrev"),this.b.setAttribute("onclick","apijs.slideshow.actionPrev();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("disabled","disabled"),this.b.setAttribute("class","next"),this.b.setAttribute("id","apijsNext"),this.b.setAttribute("onclick","apijs.slideshow.actionNext();"),this.c=document.createElement("span"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlBtnClose=function(t){return!1===t||(this.a=document.createElement("div"),this.a.setAttribute("class","close noplaying"),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","close"),this.b.setAttribute("onclick","apijs.dialog.actionClose();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(105)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a)),this},this.htmlUpload=function(t,e){return this.a=document.createElement("div"),this.a.setAttribute("class","btns upload"),this.b=document.createElement("input"),this.b.setAttribute("type","file"),this.b.setAttribute("name",t),this.b.setAttribute("id","apijsFile"),e&&this.b.setAttribute("multiple","multiple"),this.b.setAttribute("onchange","apijs.upload.actionChoose(this);"),this.a.appendChild(this.b),this.b=document.createElement("button"),this.b.setAttribute("type","button"),this.b.setAttribute("class","browse"),this.b.setAttribute("onclick","this.previousSibling.click();"),this.c=document.createElement("span"),this.c.appendChild(apijs.i18n.translateNode(e?109:108)),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("div"),this.b.setAttribute("class","filenames"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgProgress=function(){return this.a=document.createElement("span"),this.a.setAttribute("class","info"),this.t2.appendChild(this.a),this.a=document.createElement("svg"),this.a.setAttribute("id","apijsProgress"),this.b=document.createElement("rect"),this.b.setAttribute("class","auto"),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgLoader=function(t){return this.a=document.createElementNS(this.ns,"svg"),this.a.setAttribute("class","loader"),this.b=document.createElementNS(this.ns,"path"),!1!==t&&this.b.setAttribute("style","opacity:0;"),this.b.setAttribute("d","M75.4 126.63a11.43 11.43 0 0 1-2.1-22.65 40.9 40.9 0 0 0 30.5-30.6 11.4 11.4 0 1 1 22.27 4.87h.02a63.77 63.77 0 0 1-47.8 48.05v-.02a11.38 11.38 0 0 1-2.93.37z"),this.c=document.createElementNS(this.ns,"animateTransform"),this.c.setAttribute("attributeName","transform"),this.c.setAttribute("type","rotate"),this.c.setAttribute("from","0 64 64"),this.c.setAttribute("to","360 64 64"),this.c.setAttribute("dur","5s"),this.c.setAttribute("repeatCount","indefinite"),this.b.appendChild(this.c),this.c=document.createElementNS(this.ns,"animate"),this.c.setAttribute("attributeName","opacity"),this.c.setAttribute("to","1"),this.c.setAttribute("dur","0.01s"),this.c.setAttribute("begin","1s"),this.c.setAttribute("fill","freeze"),!1!==t&&this.b.appendChild(this.c),this.a.appendChild(this.b),this.t2.appendChild(this.a),this},this.htmlSvgPlayer=function(t){return this.a=document.createElement("span"),this.a.setAttribute("class","player noplaying"),this.b=document.createElement("span"),this.b.setAttribute("class","btn play fnt"),this.b.setAttribute("onclick","apijs.dialog.onKey(80);"),this.b.appendChild(document.createTextNode("")),this.a.appendChild(this.b),this.b=document.createElement("span"),this.b.setAttribute("class","svg bar"),this.c=document.createElement("svg"),this.c.setAttribute("class","bar"),this.c.setAttribute("onclick","apijs.player.actionPosition(event);"),this.d=document.createElement("rect"),this.c.appendChild(this.d),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("span"),this.b.setAttribute("class","time"),this.b.appendChild(document.createTextNode("00:00 / 00:00")),this.a.appendChild(this.b),this.b=document.createElement("span"),this.b.setAttribute("class","svg vol nomobile"),this.c=document.createElement("svg"),this.c.setAttribute("class","vol"),this.c.setAttribute("onclick","apijs.player.actionVolume(event);"),this.d=document.createElement("rect"),this.c.appendChild(this.d),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("label"),this.b.setAttribute("class","tracks audiotrack"),this.b.setAttribute("style","display:none;"),this.b.appendChild(apijs.i18n.translateNode(133)),this.c=document.createElement("em"),this.c.setAttribute("class","nomobile"),this.b.appendChild(this.c),this.c=document.createElement("select"),this.c.setAttribute("lang","mul"),this.c.setAttribute("onchange","apijs.player.actionAudiotrack(this);"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("label"),this.b.setAttribute("class","tracks videotrack"),this.b.setAttribute("style","display:none;"),this.b.appendChild(apijs.i18n.translateNode(132)),this.c=document.createElement("em"),this.c.setAttribute("class","nomobile"),this.b.appendChild(this.c),this.c=document.createElement("select"),this.c.setAttribute("lang","mul"),this.c.setAttribute("onchange","apijs.player.actionVideotrack(this);"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("label"),this.b.setAttribute("class","tracks video"),this.b.setAttribute("style","display:none;"),this.b.appendChild(apijs.i18n.translateNode(131)),this.c=document.createElement("em"),this.c.setAttribute("class","nomobile"),this.b.appendChild(this.c),this.c=document.createElement("select"),this.c.setAttribute("lang","mul"),this.c.setAttribute("onchange","apijs.player.actionVideo(this);"),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("label"),this.b.setAttribute("class","tracks text"),this.b.setAttribute("style","display:none;"),this.b.appendChild(apijs.i18n.translateNode(134)),this.c=document.createElement("em"),this.c.setAttribute("class","nomobile"),this.b.appendChild(this.c),this.c=document.createElement("select"),this.c.setAttribute("lang","mul"),this.c.setAttribute("onchange","apijs.player.actionText(this);"),this.d=document.createElement("option"),this.d.appendChild(apijs.i18n.translateNode(135)),this.c.appendChild(this.d),this.b.appendChild(this.c),this.a.appendChild(this.b),this.b=document.createElement("span"),this.b.setAttribute("class","btn full fnt nomobile"),this.b.setAttribute("onclick","apijs.dialog.onKey(122);"),this.b.appendChild(document.createTextNode("")),this.a.appendChild(this.b),t.appendChild(this.a),this},this.htmlMedia=function(t,e,i,s){var a;return this.a=document.createElement("dl"),this.a.setAttribute("class","media"),this.b=document.createElement("dt"),this.has("photo")?(this.media=document.createElement("img"),this.media.setAttribute("alt",s.replace('"',""))):0<t.indexOf("iframe")?(this.media=document.createElement("iframe"),this.media.setAttribute("type","text/html"),this.media.setAttribute("scrolling","no"),this.media.setAttribute("src",t)):(this.media=document.createElement("video"),this.media.setAttribute("controls","controls"),this.media.setAttribute("preload","metadata"),this.media.setAttribute("onclick","apijs.dialog.onKey(80);")),this.media.setAttribute("id","apijsMedia"),this.b.appendChild(this.media),this.a.appendChild(this.b),this.b=document.createElement("dd"),this.b.setAttribute("class","nomobile noplaying"),"false"===e&&"false"===i||(a=t.slice(t.lastIndexOf("/")+1),this.c=document.createElement("span"),"false"!==e&&"auto"!==e&&"false"!==i?this.c.appendChild(document.createTextNode(e+" ("+i+") ")):"false"!==e&&"auto"!==e?this.c.appendChild(document.createTextNode(e+" ")):"auto"===e&&"false"!==i?this.c.appendChild(document.createTextNode(a+" ("+i+") ")):"auto"===e?this.c.appendChild(document.createTextNode(a+" ")):"false"!==i&&this.c.appendChild(document.createTextNode("("+i+") ")),this.b.appendChild(this.c)),this.b.appendChild(document.createTextNode(s)),this.a.appendChild(this.b),this.t2.appendChild(this.a),this.has("photo")?(this.media.imageLoader=new Image,this.media.imageLoader.src=t,this.media.imageLoader.onload=apijs.dialog.onMediaLoad,this.media.imageLoader.onerror=apijs.dialog.onMediaLoad):0<t.indexOf("iframe")?this.media.onload=apijs.dialog.onMediaLoad:!0===apijs.config.dialog.player?(this.media.setAttribute("class","player"),this.htmlSvgPlayer(this.media.parentNode),apijs.player=new apijs.core.player,apijs.player.init(this.media.parentNode,this.media,t),this.media.ondurationchange=apijs.dialog.onMediaLoad,this.media.onerror=apijs.dialog.onMediaLoad):"function"==typeof apijs.config.dialog.player?apijs.config.dialog.player(this.media,t):(this.c=document.createElement("source"),this.c.setAttribute("src",t),this.c.onerror=apijs.dialog.onMediaLoad,this.media.appendChild(this.c),this.media.ondurationchange=apijs.dialog.onMediaLoad,this.media.onerror=apijs.dialog.onMediaLoad),this},this.htmlHelp=function(t,e){var i,s,a=[t?["start",149,141]:[],t?["left","right",142]:[],e?["bottom","topk",144]:[],e?["minus","plus",145]:[],e?["M",146]:[],e?["P",143]:[],["F11",147],[150,148]];for(this.a=document.createElement("ul"),this.a.setAttribute("class","kbd nomobile nofullscreen");i=a.shift();)if(0<i.length){for(this.b=document.createElement("li");s=i.shift();)0<i.length?(this.c=document.createElement("kbd"),["M","P","F11"].has(s)?this.c.appendChild(document.createTextNode(s)):"string"==typeof s?this.c.setAttribute("class",s):this.c.appendChild(apijs.i18n.translateNode(s)),this.b.appendChild(this.c)):this.b.appendChild(apijs.i18n.translateNode(s));this.a.appendChild(this.b)}return this.t2.appendChild(this.a),this},this.htmlIframe=function(t){return this.a=document.createElement("iframe"),this.a.setAttribute("src",t),this.a.setAttribute("class","loading"),this.a.setAttribute("onload","apijs.dialog.onIframeLoad(this);"),this.t2.appendChild(this.a),this}},apijs.core.slideshow=function(){"use strict";this.current=null,this.init=function(){for(var t,e,i,s=apijs.config.slideshow.ids,a=0;e=apijs.html(s+"."+a);a++){for(i=e.classList.contains("hoverload"),t=0;e=apijs.html(s+"."+a+"."+t);t++)e.addEventListener("click",apijs.slideshow.show),i&&e.addEventListener("mouseover",apijs.slideshow.show);(e=apijs.html(s+"."+a+".99999"))&&e.addEventListener("click",apijs.slideshow.show)}this.onPopState()},this.onPopState=function(){var t;new RegExp("#("+apijs.config.slideshow.ids+"[-\\.]\\d+[-\\.]\\d+)").test(self.location.href)?(t=RegExp.$1.replace(/-/g,"."),apijs.html(t)&&!apijs.dialog.has("slideshow")&&apijs.slideshow.show(t,!1)):apijs.slideshow.current&&apijs.dialog.actionClose()},this.show=function(t,e){var i,s,a,n,o,r,l,h=!1,d={};if("string"==typeof t)h=!0,i=apijs.html(t),d.id=t;else{for(t.preventDefault(),i=t.target;"A"!==i.nodeName;)i=i.parentNode;if("mouseover"===t.type&&i.classList.contains("current"))return!1;d.id=i.getAttribute("id")}return d.prefix=apijs.config.slideshow.ids+"."+d.id.split(".")[1],d.number=parseInt(d.id.split(".")[2],10),d.gallery=apijs.html(d.prefix+".99999"),99999!==d.number&&(r=apijs.html(d.prefix).querySelectorAll("a[id][type]"),l=apijs.html(d.prefix).querySelectorAll("dl"),d.gallery||r.length!==l.length?(r.forEach(function(t){t.classList.remove("current")}),i.setAttribute("class","current")):(l.forEach(function(t){t.classList.remove("current")}),i.parentNode.parentNode.setAttribute("class","current"))),d.gallery?(99999===d.number&&(h=!0,i=d.gallery.hasAttribute("class")?d.gallery.getAttribute("class"):d.prefix+".0",i=apijs.html(i),d.number=parseInt(i.getAttribute("id").split(".")[2],10),d.id=d.id.replace(99999,d.number)),d.config=i.querySelector("input").getAttribute("value").split("|"),0<(s=d.config.shift()).indexOf(";")&&(a=(s=s.split(";"))[1].trim(),s=s[0].trim()),d.gallery.setAttribute("href",i.getAttribute("href")),d.gallery.querySelector("img").setAttribute("src",s),d.gallery.querySelector("img").setAttribute("srcset",a||""),d.gallery.querySelector("img").setAttribute("alt",i.querySelector("img").getAttribute("alt")),d.gallery.setAttribute("class",d.id)):(h=!0,d.config=i.querySelector("input").getAttribute("value").split("|")),d.url=i.getAttribute("href"),d.type=i.getAttribute("type").substr(0,5).replace("image","dialogPhoto").replace("video","dialogVideo"),d.type=0===d.type.indexOf("dialog")?d.type:"dialogPhoto",d.styles=apijs.html(d.prefix).getAttribute("class").replace(/gallery|album/g,"").trim(),h&&(apijs.dialog[d.type](d.url,d.config[0],d.config[1],d.config[2],d.styles),n=apijs.html(d.prefix).querySelectorAll("a[id][type]").length-(d.gallery?2:1),apijs.slideshow.current={number:d.number,first:d.prefix+".0",prev:0<d.number?d.prefix+"."+(d.number-1):null,next:d.number<n?d.prefix+"."+(d.number+1):null,last:d.prefix+"."+n,total:n},apijs.slideshow.current.prev&&apijs.html("#Prev").removeAttribute("disabled"),apijs.slideshow.current.next&&apijs.html("#Next").removeAttribute("disabled"),apijs.config.slideshow.anchor&&"function"==typeof history.pushState&&("boolean"!=typeof e||e)&&(o=0<(o=self.location.href).indexOf("#")?o.slice(0,o.indexOf("#")):o,o+="#"+(d.prefix+"."+(99999===d.number?0:d.number)).replace(/\./g,"-"),history.pushState({},"",o))),h},this.actionFirst=function(){return!!(this.current&&0<this.current.number&&this.current.number<=this.current.total)&&this.show(this.current.first)},this.actionPrev=function(){return!!(this.current&&this.current.prev&&0<this.current.number)&&this.show(this.current.prev)},this.actionNext=function(){return!!(this.current&&this.current.next&&this.current.number<this.current.total)&&this.show(this.current.next)},this.actionLast=function(){return!!(this.current&&0<=this.current.number&&this.current.number<this.current.total)&&this.show(this.current.last)}},apijs.core.upload=function(){"use strict";this.title=null,this.action=null,this.input=null,this.onemax=0,this.allmax=0,this.exts=null,this.callback=null,this.args=null,this.icon=null,this.files=[],this.start=0,this.end=0,this.sendFile=function(t,e,i,s,a,n,o,r){var l=this.sendFiles(t,e,i,s,0,a,n,o,r);return l||console.error("apijs.upload.sendFile invalid arguments",apijs.toArray(arguments)),l},this.sendFiles=function(t,e,i,s,a,n,o,r,l){if(this.files=[],!0!==t&&(this.title=t,this.action=e,this.input=i,this.onemax=s,this.allmax=a,this.exts="string"==typeof n?n.split(","):["*"],this.callback=o,this.args=r,this.icon=l),"string"!=typeof this.title||"string"!=typeof this.action||"string"!=typeof this.input||"number"!=typeof this.onemax||"number"!=typeof this.allmax||"function"!=typeof this.callback)return("number"!=typeof this.allmax||0<this.allmax)&&console.error("apijs.upload.sendFiles invalid arguments",apijs.toArray(arguments)),!1;var h=0<this.allmax,d="*"===this.exts.join()?apijs.i18n.translate(161):1===this.exts.length?apijs.i18n.translate(162,this.exts.join()):apijs.i18n.translate(163,this.exts.slice(0,-1).join(", "),this.exts.slice(-1));return d+="[br]"+apijs.i18n.translate(h?165:164,apijs.formatNumber(this.onemax),h?apijs.formatNumber(this.allmax):"").replace("|","[br]"),apijs.dialog.dialogFormUpload(this.title,d,this.action,this.input,h,this.icon)},this.actionChoose=function(t){var e,i=[],s=0;this.files=[],this.exts&&(Array.prototype.forEach.call(t.files,function(t){e=t.name+' <span class="sz">'+apijs.i18n.translate(166,apijs.formatNumber(t.size/1048576))+"</span>","*"===this.exts.join()||this.exts.has(t.name.slice(t.name.lastIndexOf(".")+1).toLowerCase())?t.size>1048576*this.onemax?e+=' <span class="ee">'+apijs.i18n.translate(168)+"</span>":t.size<=0?e+=' <span class="ee">'+apijs.i18n.translate(169)+"</span>":this.files.push(t):e+=' <span class="ee">'+apijs.i18n.translate(167)+"</span>",i.push("<div>"+e+"</div>"),s+=t.size/1048576},this),0<this.allmax&&s>=this.allmax&&i.push('<div class="tt"> = <span class="sz">'+apijs.i18n.translate(166,apijs.formatNumber(s))+'</span> <span class="ee">'+apijs.i18n.translate(168)+"</span></div>"),this.files.length===t.files.length?(apijs.html("button.confirm").removeAttribute("disabled"),apijs.html("button.confirm").focus()):apijs.html("button.confirm").setAttribute("disabled","disabled"),apijs.html("div.filenames").innerHTML=i.join(" "))},this.actionConfirm=function(){var s,e;return 0<this.files.length?(s=new FormData,(e=new XMLHttpRequest).open("POST",this.action+(0<this.action.indexOf("?")?"&isAjax=true":"?isAjax=true"),!0),"string"==typeof apijs.config.upload.tokenValue&&(e.setRequestHeader(apijs.config.upload.tokenName,apijs.config.upload.tokenValue),s.append(apijs.config.upload.tokenName,apijs.config.upload.tokenValue)),this.files.forEach(function(t,e,i){s.append(1<i.length&&this.input.indexOf("[")<0?this.input+"_"+e:this.input,t)},this),e.onreadystatechange=function(t){4===e.readyState&&(t=e.responseText.trim(),[0,200].has(e.status)?(self.dispatchEvent(new CustomEvent("apijsajaxresponse",{detail:{from:"apijs.upload.send",xhr:e}})),apijs.log("upload:onreadystatechange status:200 message:"+t),0===t.indexOf("success-")?(apijs.upload.updateTitle(),apijs.upload.callback(t.slice(8),apijs.upload.args)):apijs.upload.onError(195,t)):(apijs.log("upload:onreadystatechange status:"+e.status+" message: "+t),apijs.upload.onError(194,e.status)))},e.upload.onloadstart=apijs.upload.onStart.bind(this),e.upload.onprogress=apijs.upload.onProgress.bind(this),e.upload.onload=apijs.upload.onProgress.bind(this),e.upload.onerror=apijs.upload.onError.bind(this),e.send(s)):apijs.html("button.browse").focus(),!1},this.onStart=function(){this.start=this.end=Math.round((new Date).getTime()/1e3),apijs.dialog.dialogProgress(this.title,apijs.i18n.translate(125),this.icon)},this.onError=function(t,e){this.updateTitle(),"number"==typeof t?e="[p]"+apijs.i18n.translate(t)+"[/p] "+e:"string"!=typeof e&&(e="[p]"+apijs.i18n.translate(193)+"[/p]"),e+="[p]"+apijs.i18n.translate(196,'href="apijs://restart" onclick="apijs.upload.sendFile(true); return false;"')+"[/p]",apijs.dialog.dialogInformation(this.title,e,"string"==typeof this.icon?"upload error "+this.icon:"upload error")},this.onProgress=function(t){var e,i,s,a,n,o,r,l=Math.round((new Date).getTime()/1e3);t.lengthComputable&&"progress"===t.type&&l>=this.end+2?(this.end=l,0<(e=Math.floor(100*t.loaded/t.total))&&e<100&&(this.updateTitle(e),o=100*(n=l-this.start)/e+10,24<n&&(a=Math.round(o-n),a=10*Math.ceil(a/10),r=Math.ceil(a/60),s=Math.round(t.loaded/n/1024),n<40||o<90?(i=184,a=null):1<r?(i=181,a=r):50<a?(i=182,a=1):i=183),this.updateProgress(e,i,s,a))):"load"===t.type&&(a=Math.round((new Date).getTime()/1e3)-this.start,r=Math.ceil(a/60),0<(s=Math.round(t.loaded/a/1024))&&s!==1/0?1<r?(i=185,a=r):50<a?(i=186,a=1):20<a?i=187:(i=188,a=null):a=s=null,this.updateTitle(100),this.updateProgress(100,i,s,a))},this.updateProgress=function(t,e,i,s){var a,n=apijs.html("rect"),o=apijs.html("span.info");99<t?(a="100%",n.setAttribute("class","end"),n.style.width="",apijs.html("p").textContent=apijs.i18n.translate(126)):(n.style.width=a=t+"%",n.hasAttribute("class")&&n.removeAttribute("class")),"number"==typeof e&&"number"==typeof i&&"number"==typeof s?a=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1),s):"number"==typeof e&&"number"==typeof i&&(a=apijs.i18n.translate(e,t,apijs.formatNumber(i,!1))),o.textContent=a},this.updateTitle=function(t){"number"==typeof t?document.title=/^\d{1,3}% - /.test(document.title)?t+"% - "+document.title.slice(document.title.indexOf(" - ")+3):t+"% - "+document.title:/^\d{1,3}% - /.test(document.title)&&(document.title=document.title.slice(document.title.indexOf(" - ")+3))}};
@@ -0,0 +1,224 @@
1
+ /**
2
+ * Created D/15/12/2013
3
+ * Updated L/06/07/2020
4
+ *
5
+ * Copyright 2008-2020 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
6
+ * https://www.luigifab.fr/redmine/apijs
7
+ *
8
+ * This program is free software, you can redistribute it or modify
9
+ * it under the terms of the GNU General Public License (GPL) as published
10
+ * by the free software foundation, either version 2 of the license, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but without any warranty, without even the implied warranty of
15
+ * merchantability or fitness for a particular purpose. See the
16
+ * GNU General Public License (GPL) for more details.
17
+ */
18
+
19
+ var apijsRedmine = new (function () {
20
+
21
+ "use strict";
22
+
23
+ this.start = function () {
24
+
25
+ var d = apijs.i18n.data;
26
+ // https://docs.google.com/spreadsheets/d/1UUpKZ-YAAlcfvGHYwt6aUM9io390j0-fIL0vMRh1pW0/edit?usp=sharing
27
+ // auto start
28
+ d.cs[252] = "Chyba";
29
+ d.de[250] = "Eine Datei löschen";
30
+ d.de[251] = "Sind Sie sicher, dass Sie diese Datei löschen möchten?[br]Achtung, diese Aktion ist unrückgängig.";
31
+ d.de[252] = "Fehler";
32
+ d.de[253] = "Sie verfügen nicht über die notwendigen Rechte um diese Operation durchzuführen, bitte [a §]aktualisieren Sie die Seite[/a].";
33
+ d.de[254] = "Es tut uns leid, diese Datei existiert nicht mehr, bitte [a §]aktualisieren Sie die Seite[/a].";
34
+ d.de[255] = "Eine Beschreibung bearbeiten";
35
+ d.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.";
36
+ d.en[250] = "Remove a file";
37
+ d.en[251] = "Are you sure you want to remove this file?[br]Be careful, you can't cancel this operation.";
38
+ d.en[252] = "Error";
39
+ d.en[253] = "You are not authorized to perform this operation, please [a §]refresh the page[/a].";
40
+ d.en[254] = "Sorry, the file no longer exists, please [a §]refresh the page[/a].";
41
+ d.en[255] = "Edit a description";
42
+ d.en[256] = "Enter below the new description for the file. To remove the description, leave the field empty.";
43
+ d.es[250] = "Borrar un archivo";
44
+ d.es[251] = "¿Está usted seguro-a de que desea eliminar este archivo?[br]Atención, pues no podrá cancelar esta operación.";
45
+ d.es[253] = "No está autorizado-a para llevar a cabo esta operación, por favor [a §]actualice la página[/a].";
46
+ d.es[254] = "Disculpe, pero el archivo ya no existe, por favor [a §]actualice la página[/a].";
47
+ d.es[255] = "Editar una descripción";
48
+ d.es[256] = "Introduzca a continuación la nueva descripción para el archivo. Para eliminar la descripción, deje el campo en blanco.";
49
+ d.fr[250] = "Supprimer un fichier";
50
+ d.fr[251] = "Êtes-vous certain(e) de vouloir supprimer ce fichier ?[br]Attention, cette opération n'est pas annulable.";
51
+ d.fr[252] = "Erreur";
52
+ d.fr[253] = "Vous n'êtes pas autorisé(e) à effectuer cette opération, veuillez [a §]actualiser la page[/a].";
53
+ d.fr[254] = "Désolé, le fichier n'existe plus, veuillez [a §]actualiser la page[/a].";
54
+ d.fr[255] = "Modifier une description";
55
+ d.fr[256] = "Saisissez ci-dessous la nouvelle description pour ce fichier. Pour supprimer la description, laissez le champ vide.";
56
+ d.it[250] = "Eliminare un file";
57
+ d.it[251] = "Sicuri di voler eliminare il file?[br]Attenzione, questa operazione non può essere annullata.";
58
+ d.it[252] = "Errore";
59
+ d.it[253] = "Non siete autorizzati a eseguire questa operazione, vi preghiamo di [a §]ricaricare la pagina[/a].";
60
+ d.it[254] = "Spiacenti, il file non esiste più, vi preghiamo di [a §]ricaricare la pagina[/a].";
61
+ d.it[255] = "Modificare una descrizione";
62
+ d.it[256] = "Inserire qui sotto la nuova descrizione del file. Per cancellare la descrizione, lasciate lo spazio vuoto.";
63
+ d.ja[250] = "ファイルを削除";
64
+ d.ja[252] = "エラー";
65
+ d.nl[252] = "Fout";
66
+ d.pl[252] = "Błąd";
67
+ d.pt[250] = "Suprimir um ficheiro";
68
+ d.pt[251] = "Tem certeza de que quer suprimir este ficheiro?[br]Atenção, não pode cancelar esta operação.";
69
+ d.pt[252] = "Erro";
70
+ d.pt[253] = "Não é autorizado(a) para efetuar esta operação, por favor [a §]atualize a página[/a].";
71
+ d.pt[254] = "Lamento, o ficheiro já não existe, por favor [a §]atualize a página[/a].";
72
+ d.pt[255] = "Modificar uma descrição";
73
+ d.pt[256] = "Digite abaixo a nova descrição para este ficheiro. Para suprimir a descrição, deixe o campo vazio.";
74
+ d.ru[250] = "Удалить файл";
75
+ d.ru[251] = "Вы уверены, что хотите удалить этот файл?[br]Осторожно, вы не сможете отменить эту операцию.";
76
+ d.ru[252] = "Ошибка";
77
+ d.ru[253] = "Вы не авторизованы для выполнения этой операции, пожалуйста [a §]обновите страницу[/a].";
78
+ d.ru[254] = "Извините, но файл не существует, пожалуйста [a §]обновите страницу[/a].";
79
+ d.ru[255] = "Редактировать описание";
80
+ d.ru[256] = "Ниже введите новое описание файла. Оставьте поле пустым, чтобы удалить описание.";
81
+ d.tr[252] = "Hata";
82
+ d.zh[252] = "错误信息";
83
+ // auto end
84
+ };
85
+
86
+ this.error = function (data) {
87
+
88
+ if ((typeof data == 'string') || (data.indexOf('<!DOCTYPE') < 0)) {
89
+ apijs.dialog.dialogInformation(apijs.i18n.translate(252), data, 'error');
90
+ }
91
+ else {
92
+ apijs.dialog.remove('lock'); // obligatoire sinon demande de confirmation de quitter la page
93
+ self.location.reload();
94
+ }
95
+ };
96
+
97
+ this.editAttachment = function (id, action, token) {
98
+
99
+ var desc, text, title = apijs.i18n.translate(255);
100
+ if (document.getElementById('attachmentId' + id).querySelector('span.description')) {
101
+ desc = document.getElementById('attachmentId' + id).querySelector('span.description').firstChild.nodeValue.trim();
102
+ }
103
+ else {
104
+ desc = document.createElement('span');
105
+ desc.setAttribute('class', 'description');
106
+ desc.appendChild(document.createTextNode(''));
107
+ document.getElementById('attachmentId' + id).querySelector('dd').appendChild(desc);
108
+ desc = '';
109
+ }
110
+
111
+ text = '[p][label for="apijsRedText"]' + apijs.i18n.translate(256) + '[/label][/p]' +
112
+ '[input type="text" name="description" value="' + desc + '" spellcheck="true" id="apijsRedText"]';
113
+
114
+ apijs.dialog.dialogFormOptions(title, text, action, apijsRedmine.actionEditAttachment, [id, action, token], 'editattachment');
115
+ apijs.dialog.t1.querySelector('input').select();
116
+ };
117
+
118
+ this.actionEditAttachment = function (action, args) {
119
+
120
+ // vérification de la nouvelle description
121
+ if (typeof action == 'boolean') {
122
+ return true;
123
+ }
124
+ // sauvegarde de la nouvelle description
125
+ else if (typeof action == 'string') {
126
+
127
+ // args = [id, action, token]
128
+ var xhr = new XMLHttpRequest();
129
+ xhr.open('POST', args[1] + '?id=' + args[0] + '&isAjax=true', true);
130
+ xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
131
+ xhr.setRequestHeader('X-CSRF-Token', args[2]);
132
+
133
+ xhr.onreadystatechange = function () {
134
+
135
+ if (xhr.readyState === 4) {
136
+ if ([0, 200].has(xhr.status)) {
137
+ if (xhr.responseText.indexOf('attachmentId') === 0) {
138
+
139
+ // extrait l'id et la description du fichier enregistré
140
+ var elem, id, text;
141
+ id = xhr.responseText.slice(0, xhr.responseText.indexOf(':'));
142
+ text = xhr.responseText.slice(xhr.responseText.indexOf(':') + 1);
143
+
144
+ // légende
145
+ elem = document.getElementById(id).querySelector('span.description').firstChild;
146
+ elem.replaceData(0, elem.length, text);
147
+
148
+ // input type hidden
149
+ elem = document.getElementById(id).querySelector('input');
150
+ if (elem)
151
+ elem.value = elem.value.slice(0, elem.value.lastIndexOf('|') + 1) + text;
152
+
153
+ // image
154
+ elem = document.getElementById(id).querySelector('img');
155
+ if (elem)
156
+ elem.setAttribute('alt', text);
157
+
158
+ apijs.dialog.actionClose();
159
+ }
160
+ else {
161
+ apijsRedmine.error(xhr.responseText);
162
+ }
163
+ }
164
+ else {
165
+ apijsRedmine.error(xhr.status);
166
+ }
167
+ }
168
+ };
169
+
170
+ xhr.send('description=' + encodeURIComponent(document.getElementById('apijsRedText').value));
171
+ }
172
+ };
173
+
174
+ this.removeAttachment = function (id, action, token) {
175
+ apijs.dialog.dialogConfirmation(apijs.i18n.translate(250), apijs.i18n.translate(251), apijsRedmine.actionRemoveAttachment, [id, action, token]);
176
+ };
177
+
178
+ this.actionRemoveAttachment = function (args) {
179
+
180
+ // args = [id, action, token]
181
+ var xhr = new XMLHttpRequest();
182
+ xhr.open('GET', args[1] + '?id=' + args[0] + '&isAjax=true', true);
183
+ xhr.setRequestHeader('X-CSRF-Token', args[2]);
184
+
185
+ xhr.onreadystatechange = function () {
186
+
187
+ if (xhr.readyState === 4) {
188
+ if ([0, 200].has(xhr.status)) {
189
+ if (xhr.responseText.indexOf('attachmentId') === 0) {
190
+
191
+ // supprime le fichier de la page grâce à son id
192
+ var attachment = document.getElementById(xhr.responseText), album = attachment.parentNode, i = 0;
193
+ album.removeChild(attachment);
194
+
195
+ if (album.querySelectorAll('dl, li').length < 1) {
196
+ // supprime la liste des fichiers
197
+ album.parentNode.removeChild(album);
198
+ }
199
+ else {
200
+ // réattribue les ids du diaporama (pas de réinitialisation, on remet juste les ids en place)
201
+ album.querySelectorAll('a[id][type]').forEach(function (elem) {
202
+ elem.setAttribute('id', elem.getAttribute('id').slice(0, elem.getAttribute('id').lastIndexOf('.') + 1) + i++);
203
+ });
204
+ }
205
+
206
+ apijs.dialog.actionClose();
207
+ }
208
+ else {
209
+ apijsRedmine.error(xhr.responseText);
210
+ }
211
+ }
212
+ else {
213
+ apijsRedmine.error(xhr.status);
214
+ }
215
+ }
216
+ };
217
+
218
+ xhr.send();
219
+ };
220
+
221
+ })();
222
+
223
+ if (typeof self.addEventListener == 'function')
224
+ self.addEventListener('apijsload', apijsRedmine.start.bind(apijsRedmine));
@@ -0,0 +1,8 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * Copyright 2008-2020 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
4
+ * https://www.luigifab.fr/apijs - 6.3.0
5
+ * This program is free software, you can redistribute it or modify
6
+ * it under the terms of the GNU General Public License (GPL).
7
+ */
8
+ div.album,div.gallery{font-size:.85em}div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none}div.gallery{display:inline-block}div.gallery a{display:inline-block;text-decoration:none}div.gallery ul{margin:0;padding:0;list-style:none}div.gallery li{display:inline-block;margin:0;padding:0;vertical-align:middle}div.gallery li a{display:block;margin:.2em}div.gallery li a.current{border-color:gray}div.album{text-align:center}div.album dl{display:inline-block;margin:.5em .4em;vertical-align:top}div.album dt a{display:block;text-decoration:none}div.album dd{margin:.4em 0 0}#apijsDialog{display:none}
@@ -0,0 +1,8 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * Copyright | Fabrice Creuzot (luigifab) <code~luigifab~fr>
4
+ * https://www.luigifab.fr/redmine/apijs
5
+ * This program is free software, you can redistribute it or modify
6
+ * it under the terms of the GNU General Public License (GPL).
7
+ */
8
+ #apijsDialog{margin:0}#apijsBox{font-size:.8rem;border:0}#apijsBox a{color:#00f}#apijsBox.options.editattachment input[type=text]{display:block;padding:.3em;width:calc(100% - 4px - .6em);border:1px solid #888;background-color:#eee}body div.attachments.album{margin:1em 0;text-align:right}body div.attachments.album dd{position:relative;margin:.5em .15em 0 0;min-height:1.8em}body div.attachments.album dd.big{min-height:5em}body div.attachments.album dd div{float:left}body div.attachments.album dd span{display:block;line-height:16px;overflow:hidden;font-size:inherit;color:inherit;white-space:nowrap;text-overflow:ellipsis}body div.attachments.album dd span:first-child{margin-left:60px}body ul.attachments{margin:1em 0;padding:0;list-style:none}body ul.attachments li{padding:.25em .5em;transition:background-color .3s}body ul.attachments li:hover{background-color:#efefef}body ul.attachments li a{vertical-align:middle}body ul.attachments li strong{padding:0 .3em}body ul.attachments li span{padding:0 .1em}body ul.attachments li span.size{color:gray}body ul.attachments li span.date{color:gray}body button.attachment,body ul.attachments a[id^=slideshow]{display:inline-block;padding:0;width:16px;height:16px;vertical-align:middle;text-decoration:none!important;border:0;background-color:transparent;cursor:pointer;opacity:.75}body button.attachment.show,body ul.attachments a[id^=slideshow]{background-image:url(../../../images/magnifier.png)}body button.attachment.download{background-image:url(../../../images/attachment.png)}body button.attachment.delete{background-image:url(../../../images/delete.png)}body button.attachment.edit{background-image:url(../../../images/edit.png)}body fieldset.apijs.tabular.settings{margin:1em;padding:.5em;border:1px solid #ccc}body fieldset.apijs.tabular.settings p span.cmd{white-space:pre-wrap}body fieldset.apijs.tabular.settings p em.info{margin:.2em 0;line-height:140%}body fieldset.apijs.tabular.settings p a+em.info{margin:0}body fieldset.apijs.tabular.settings p label.bis{margin-right:1px;margin-left:.7em;width:auto;min-width:5.5em;text-align:right}body fieldset.apijs.tabular.settings p label.bis input{margin:0}body .flash.error.apijs{margin:0;border:0;border-radius:0;font-size:11px}
@@ -0,0 +1,8 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * Copyright | Fabrice Creuzot (luigifab) <code~luigifab~fr>
4
+ * https://www.luigifab.fr/redmine/apijs
5
+ * This program is free software, you can redistribute it or modify
6
+ * it under the terms of the GNU General Public License (GPL).
7
+ */
8
+ #apijsDialog{margin:0}#apijsBox{font-size:.8rem;border:0}#apijsBox a{color:#00f}#apijsBox.options.editattachment input[type=text]{display:block;padding:.3em;width:calc(100% - 4px - .6em);border:1px solid #888;background-color:#eee}body div.attachments.album{margin:1em 0;text-align:left}body div.attachments.album dd{position:relative;margin:.5em 0 0 .15em;min-height:1.8em}body div.attachments.album dd.big{min-height:5em}body div.attachments.album dd div{float:right}body div.attachments.album dd span{display:block;line-height:16px;overflow:hidden;font-size:inherit;color:inherit;white-space:nowrap;text-overflow:ellipsis}body div.attachments.album dd span:first-child{margin-right:60px}body ul.attachments{margin:1em 0;padding:0;list-style:none}body ul.attachments li{padding:.25em .5em;transition:background-color .3s}body ul.attachments li:hover{background-color:#efefef}body ul.attachments li a{vertical-align:middle}body ul.attachments li strong{padding:0 .3em}body ul.attachments li span{padding:0 .1em}body ul.attachments li span.size{color:gray}body ul.attachments li span.date{color:gray}body button.attachment,body ul.attachments a[id^=slideshow]{display:inline-block;padding:0;width:16px;height:16px;vertical-align:middle;text-decoration:none!important;border:0;background-color:transparent;cursor:pointer;opacity:.75}body button.attachment.show,body ul.attachments a[id^=slideshow]{background-image:url(../../../images/magnifier.png)}body button.attachment.download{background-image:url(../../../images/attachment.png)}body button.attachment.delete{background-image:url(../../../images/delete.png)}body button.attachment.edit{background-image:url(../../../images/edit.png)}body fieldset.apijs.tabular.settings{margin:1em;padding:.5em;border:1px solid #ccc}body fieldset.apijs.tabular.settings p span.cmd{white-space:pre-wrap}body fieldset.apijs.tabular.settings p em.info{margin:.2em 0;line-height:140%}body fieldset.apijs.tabular.settings p a+em.info{margin:0}body fieldset.apijs.tabular.settings p label.bis{margin-left:1px;margin-right:.7em;width:auto;min-width:5.5em;text-align:left}body fieldset.apijs.tabular.settings p label.bis input{margin:0}body .flash.error.apijs{margin:0;border:0;border-radius:0;font-size:11px}
@@ -0,0 +1,8 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * Copyright 2008-2020 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
4
+ * https://www.luigifab.fr/apijs - 6.3.0
5
+ * This program is free software, you can redistribute it or modify
6
+ * it under the terms of the GNU General Public License (GPL).
7
+ */
8
+ div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}#apijsDialog *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;left:0;bottom:0;right:0;width:100%;height:100%;text-align:center;direction:rtl;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:right;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;left:0;bottom:0;right:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.photo.error,#apijsBox.video.error{background-image:url(../images/apijs/tv.gif?b0e0fdb895);background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress span.info{position:absolute;left:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;right:0;display:block;background:#03ff00 repeating-linear-gradient(45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;left:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{left:0;bottom:calc(50% - 64px);right:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{left:0;bottom:calc(50% - 64px);right:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;left:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;left:inherit;right:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{white-space:nowrap}#apijsBox div.btns.upload span.sz{color:#676767}#apijsBox div.btns.upload span.ee{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:right;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{outline:0;background-color:#000;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;left:-2px;padding:0 3em 3em 0;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 .8em 0;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-right:2px solid #fff}#apijsBox div.navigation button.prev{right:0}#apijsBox div.navigation button.prev span{transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox div.navigation button.next{left:0}#apijsBox div.navigation button.next span{transform:rotate(225deg);-webkit-transform:rotate(225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-left:.4em}#apijsBox kbd{margin-left:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}#apijsBox dl.media dt video.player{height:calc(100% - 1.8rem)}#apijsBox span.player{position:relative;display:flex;align-items:center;z-index:99600;margin-top:-10vh;padding-top:10vh;height:1.8rem;line-height:1.8rem;font-size:.85em;color:#fff;direction:ltr}#apijsBox span.player span{padding:0 .4em;height:1.8rem;background-color:#070707}#apijsBox span.player span.btn{padding:0;min-width:2.6em;cursor:pointer}#apijsBox span.player span.svg{display:flex;align-items:center;height:100%}#apijsBox span.player span.bar{flex:1}#apijsBox span.player span.vol{width:7em}#apijsBox span.player label{position:relative;padding:0 .4em;background-color:#070707}#apijsBox span.player label option{padding:.2em .4em}#apijsBox span.player label option:checked{font-weight:700}#apijsBox span.player label option:disabled{font-style:italic;color:#aaa}#apijsBox span.player label em{padding-left:.25em;font-style:normal}#apijsBox span.player label select{display:none;position:absolute;right:0;bottom:1.8rem;min-width:20em;color:#000;outline:0;border:0;background-color:#fff;appearance:none;-moz-appearance:none;-webkit-appearance:none}#apijsBox span.player label:hover,#apijsBox span.player span.btn:hover{color:#000;background-color:#fff}#apijsBox span.player label:hover select{display:block}#apijsBox span.player svg{position:relative;flex:1;height:30%;overflow:hidden;border-radius:.4em;background-color:#222;cursor:pointer}#apijsBox span.player rect{position:absolute;top:0;bottom:0;left:0;display:block;z-index:99460;background-color:#00b6f0}#apijsBox span.player rect.buffer{z-index:99440;background-color:#515151}#apijsBox span.player svg.vol rect{width:100%;background-color:#fff}#apijsBox span.player label{direction:rtl}#apijsDialog.reduce *{transition:none!important}#apijsBox.fullscreen .nofullscreen{display:none!important}#apijsBox.fullscreen.playing video{cursor:none}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;right:.5em;left:.5em;width:auto;min-height:inherit}#apijsBox.mobile .nomobile{display:none!important}#apijsBox.fullscreen.playing .noplaying,#apijsBox.mobile.playing .noplaying{transition:opacity .5s;opacity:0}#apijsBox.fullscreen.playing .noplaying:hover,#apijsBox.mobile.playing .noplaying:hover{opacity:1!important}#apijsBox.tiny span.player label{position:initial}#apijsBox.tiny span.player label select{right:0;left:0;width:100%}#apijsBox.tiny div.navigation button{padding:0 1em}@font-face{src:url(../fonts/apijs/fontello.woff2?a3ab5acff3) format("woff2"),url(../fonts/apijs/fontello.woff?f0ebfafe83) format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,#apijsBox span.player span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:right;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:right}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(45deg);-webkit-transform:rotate(45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(-400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{right:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}
@@ -0,0 +1,8 @@
1
+ @charset "utf-8";
2
+ /**
3
+ * Copyright 2008-2020 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
4
+ * https://www.luigifab.fr/apijs - 6.3.0
5
+ * This program is free software, you can redistribute it or modify
6
+ * it under the terms of the GNU General Public License (GPL).
7
+ */
8
+ div.album img,div.gallery img{display:block;margin:auto;overflow:hidden;color:transparent;background-color:#efefef;transition:background-color .3s}div.album a:after,div.album a:before,div.gallery a:after,div.gallery a:before{display:none;content:""}div.gallery{display:inline-flex;flex-direction:column;padding:.5em;vertical-align:top}div.gallery a{display:block;text-decoration:none;border:1px solid transparent}div.gallery ul{display:flex;flex-wrap:wrap;justify-content:space-around;margin:.3em 0 0;padding:0;list-style:none}div.gallery li{margin:.1em 0;padding:0}div.gallery li a{opacity:.7}div.gallery li a.current{border:1px solid #fff;opacity:1}div.album{padding:.4em;text-align:center}div.album dl{display:inline-block;margin:.3em .1em;padding:.5em .5em .45em;vertical-align:top;border:1px solid #efefef;border-radius:.6em;background-color:transparent;transition:border-color .3s,background-color .3s}div.album dl.current{border:1px solid #fff;background-color:#efefef}div.album dt a{display:block;text-decoration:none;border:1px solid transparent}div.album dd{margin:.5em .5em 0;overflow:hidden;font-size:.8em;white-space:nowrap;text-overflow:ellipsis;transition:color .3s}div.album dl:hover{border-color:#ccc;background-color:#efefef}div.album dl.current img,div.album dl:hover img{background-color:#fff}#apijsDialog *{margin:0;padding:0}#apijsDialog button,#apijsDialog label{cursor:pointer}#apijsDialog{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;text-align:center;direction:ltr;z-index:99000;transition:background-color .5s,opacity .25s;opacity:0;user-select:none;-ms-user-select:none;-moz-user-select:none;-webkit-user-select:none}#apijsDialog.ready{background-color:rgba(0,0,0,.65);opacity:1}#apijsDialog.loading,#apijsDialog.progress,#apijsDialog.waiting{cursor:progress}#apijsBox{position:relative;top:21%;display:inline-block;padding:.6em .8em 2.4em;width:26rem;max-width:26rem;min-height:9em;overflow:hidden;text-align:left;color:#000;border-radius:.8em;background-color:#fff;box-shadow:0 0 2.5em #111}#apijsBox.photo,#apijsBox.video{display:flex;flex-direction:column;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;width:auto;max-width:inherit;min-height:inherit;text-align:center;border-radius:0;background-color:rgba(0,0,0,.8);box-shadow:none}#apijsBox.photo.error,#apijsBox.video.error{background-image:url(../images/apijs/tv.gif?b0e0fdb895);background-repeat:repeat}#apijsBox.options,#apijsBox.progress,#apijsBox.upload{min-height:15em}#apijsBox.ajax,#apijsBox.iframe{padding:2.5em .8em 1em}#apijsBox div.bbcode{user-select:text;-ms-user-select:text;-moz-user-select:text;-webkit-user-select:text}#apijsBox h1{margin:.15em 0 .7em;height:32px;line-height:32px;font-size:1.49em;font-weight:700}#apijsBox pre{margin:1em auto;line-height:1.42857143;font-size:.7rem;white-space:pre-wrap}#apijsBox p{margin:1em auto;line-height:1.42857143;font-size:1em}#apijsBox ul{margin:-.4em auto 1em}#apijsBox iframe{display:block;width:100%;border:0}#apijsBox.progress span.info{position:absolute;right:1em;bottom:.8em}#apijsBox.progress svg{position:relative;display:block;margin:18px auto;width:80%;height:20px;overflow:hidden;outline:1px solid #333;background-color:#aaa}#apijsBox.progress rect{position:absolute;top:0;bottom:0;left:0;display:block;background:#03ff00 repeating-linear-gradient(-45deg,#03ff00 0,#03ff00 10px,#00ef00 10px,#00ef00 20px);background-size:28px 100%}#apijsBox.progress rect.auto{width:20%;-webkit-animation:apijsProgress 10s infinite linear;animation:apijsProgress 10s infinite linear}#apijsBox.progress rect.end{width:100%;-webkit-animation:apijsProgress 10s infinite 3s linear;animation:apijsProgress 10s infinite 3s linear}#apijsBox svg.loader{position:absolute;display:none;margin:auto;width:128px;height:128px;pointer-events:none}#apijsBox svg.loader path{fill:gray}#apijsBox.loading svg.loader,#apijsBox.waiting svg.loader{display:block;right:-40px;bottom:-40px;transform:scale(.2);-webkit-transform:scale(.2)}#apijsBox.photo svg.loader,#apijsBox.video svg.loader{right:0;bottom:calc(50% - 64px);left:0;transform:none;-webkit-transform:none}#apijsBox.ajax svg.loader,#apijsBox.iframe svg.loader{right:0;bottom:calc(50% - 64px);left:0}#apijsBox button{font-size:.85em;text-decoration:none;border:0;transition:color .4s,border-color .4s,background-color .4s,opacity .4s}#apijsBox button::-moz-focus-inner{padding:0;outline:0;border:0}#apijsBox button:active,#apijsBox button:focus,#apijsBox button:hover{outline:0}#apijsBox div.btns{position:absolute;right:.8em;bottom:.6em}#apijsBox div.btns.upload{position:relative;right:inherit;left:inherit}#apijsBox div.btns.upload input{display:none}#apijsBox div.btns.upload div.filenames{white-space:nowrap}#apijsBox div.btns.upload span.sz{color:#676767}#apijsBox div.btns.upload span.ee{color:#e41101}#apijsBox div.btns button{padding:0 .7em;height:auto;line-height:24px;color:#000;border:1px solid #bbb;border-radius:.4em;background-color:#e2e2e2}#apijsBox div.btns button:disabled{opacity:.5}#apijsBox div.btns button.cancel{float:left;margin:0 .5em}#apijsBox div.btns button.browse{display:inline-block;margin:.5em 0}#apijsBox div.btns button:active,#apijsBox div.btns button:focus,#apijsBox div.btns button:hover{border-color:#555;background-color:#f4f4f4}#apijsBox div.btns button:focus:not(:hover){-webkit-animation:apijsFocus 1s infinite;animation:apijsFocus 1s infinite}#apijsBox dl.media{display:flex;flex-direction:column-reverse;flex:1;overflow:hidden;color:#fff}#apijsBox dl.media dt{display:flex;flex-direction:column;flex:1;overflow:hidden}#apijsBox dl.media dt iframe,#apijsBox dl.media dt img,#apijsBox dl.media dt video{flex:1 1 auto;height:100%;visibility:hidden}#apijsBox dl.media dt img{image-rendering:optimizeQuality;image-rendering:-moz-crisp-edges;object-fit:scale-down}#apijsBox dl.media dt video{outline:0;background-color:#000;cursor:pointer}#apijsBox dl.media dd{line-height:1.5rem;font-size:.85em;background-color:#666}#apijsBox dl.media dd span{margin:0 .6em;font-size:.9em;font-style:italic}#apijsBox div.close{position:absolute;top:-2px;right:-2px;padding:0 0 3em 3em;z-index:99600}#apijsBox div.close button{padding:0 1.4em;line-height:2.6em;font-size:.8em;font-weight:700;text-transform:uppercase;color:#fff;border:2px solid #fff;border-radius:0 0 0 .8em;background-color:#000;opacity:.8}#apijsBox div.close button:active,#apijsBox div.close button:focus,#apijsBox div.close button:hover{opacity:1}#apijsBox div.navigation button{position:absolute;top:20%;bottom:20%;padding:0 2em;background-color:transparent;opacity:.5}#apijsBox div.navigation button:active,#apijsBox div.navigation button:focus,#apijsBox div.navigation button:hover{opacity:1}#apijsBox div.navigation button:disabled{opacity:0;cursor:default}#apijsBox div.navigation button span{display:block;width:2em;height:2em;border-top:2px solid #fff;border-left:2px solid #fff}#apijsBox div.navigation button.prev{left:0}#apijsBox div.navigation button.prev span{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox div.navigation button.next{right:0}#apijsBox div.navigation button.next span{transform:rotate(-225deg);-webkit-transform:rotate(-225deg)}#apijsBox ul.kbd{display:flex;justify-content:center;margin:0;text-align:center;font-size:.8em;white-space:nowrap;list-style:none;background-color:#666}#apijsBox ul.kbd li{margin:0 .5em;line-height:1.2rem}#apijsBox ul.kbd li kbd:last-child{margin-right:.4em}#apijsBox kbd{margin-right:.2em;padding:0 .21em;font-size:inherit;font-weight:700;text-transform:uppercase;border:0;background-color:#888}#apijsBox dl.media dt video.player{height:calc(100% - 1.8rem)}#apijsBox span.player{position:relative;display:flex;align-items:center;z-index:99600;margin-top:-10vh;padding-top:10vh;height:1.8rem;line-height:1.8rem;font-size:.85em;color:#fff;direction:ltr}#apijsBox span.player span{padding:0 .4em;height:1.8rem;background-color:#070707}#apijsBox span.player span.btn{padding:0;min-width:2.6em;cursor:pointer}#apijsBox span.player span.svg{display:flex;align-items:center;height:100%}#apijsBox span.player span.bar{flex:1}#apijsBox span.player span.vol{width:7em}#apijsBox span.player label{position:relative;padding:0 .4em;background-color:#070707}#apijsBox span.player label option{padding:.2em .4em}#apijsBox span.player label option:checked{font-weight:700}#apijsBox span.player label option:disabled{font-style:italic;color:#aaa}#apijsBox span.player label em{padding-left:.25em;font-style:normal}#apijsBox span.player label select{display:none;position:absolute;right:0;bottom:1.8rem;min-width:20em;color:#000;outline:0;border:0;background-color:#fff;appearance:none;-moz-appearance:none;-webkit-appearance:none}#apijsBox span.player label:hover,#apijsBox span.player span.btn:hover{color:#000;background-color:#fff}#apijsBox span.player label:hover select{display:block}#apijsBox span.player svg{position:relative;flex:1;height:30%;overflow:hidden;border-radius:.4em;background-color:#222;cursor:pointer}#apijsBox span.player rect{position:absolute;top:0;bottom:0;left:0;display:block;z-index:99460;background-color:#00b6f0}#apijsBox span.player rect.buffer{z-index:99440;background-color:#515151}#apijsBox span.player svg.vol rect{width:100%;background-color:#fff}#apijsDialog.reduce *{transition:none!important}#apijsBox.fullscreen .nofullscreen{display:none!important}#apijsBox.fullscreen.playing video{cursor:none}#apijsBox.mobile:not(.photo):not(.video){position:absolute;top:1.5em;left:.5em;right:.5em;width:auto;min-height:inherit}#apijsBox.mobile .nomobile{display:none!important}#apijsBox.fullscreen.playing .noplaying,#apijsBox.mobile.playing .noplaying{transition:opacity .5s;opacity:0}#apijsBox.fullscreen.playing .noplaying:hover,#apijsBox.mobile.playing .noplaying:hover{opacity:1!important}#apijsBox.tiny span.player label{position:initial}#apijsBox.tiny span.player label select{left:0;right:0;width:100%}#apijsBox.tiny div.navigation button{padding:0 1em}@font-face{src:url(../fonts/apijs/fontello.woff2?a3ab5acff3) format("woff2"),url(../fonts/apijs/fontello.woff?f0ebfafe83) format("woff");font-family:apijsFontello;font-weight:400;font-style:normal}#apijsBox div.btns button span:before,#apijsBox h1:before,#apijsBox kbd:before,#apijsBox span.player span.fnt{font-family:apijsFontello;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-decoration:inherit;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased}#apijsBox h1:before{float:left;width:1.3em;text-align:center;font-size:1.5em}#apijsBox.information h1:before{content:"\E80B\0000A0"}#apijsBox.confirmation h1:before{content:"\E80C\0000A0"}#apijsBox.options h1:before{content:"\E80E\0000A0"}#apijsBox.upload h1:before{content:"\F15B\0000A0"}#apijsBox.progress h1:before{content:"\F1D8\0000A0"}#apijsBox.waiting h1:before{content:"\F1D8\0000A0"}#apijsBox.download h1:before{content:"\F15B\0000A0"}#apijsBox.print h1:before{content:"\E80D\0000A0"}#apijsBox.error h1:before{content:"\E80A\0000A0"}#apijsBox.warning h1:before{content:"\E80A\0000A0"}#apijsBox div.btns button span:before{float:left}#apijsBox div.btns button.cancel span:before{content:"\E801\0000A0"}#apijsBox div.btns button.confirm span:before{content:"\E800\0000A0"}#apijsBox div.btns button.browse span:before{content:"\E802\0000A0"}#apijsBox kbd.start:before{content:"\E807";display:inline-block;transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}#apijsBox kbd.bottom:before{content:"\E804"}#apijsBox kbd.left:before{content:"\E805"}#apijsBox kbd.right:before{content:"\E806"}#apijsBox kbd.topk:before{content:"\E807"}#apijsBox kbd.plus:before{content:"\E809"}#apijsBox kbd.minus:before{content:"\E808"}@keyframes apijsProgress{0%{width:20%}50%{transform:translate(400%,0)}100%{width:20%}}@-webkit-keyframes apijsProgress{0%{width:20%}50%{left:80%}100%{width:20%}}@keyframes apijsFocus{50%{border-color:#bbb}}@-webkit-keyframes apijsFocus{50%{border-color:#bbb}}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Created D/15/12/2013
3
+ * Updated L/18/05/2020
4
+ *
5
+ * Copyright 2008-2020 | Fabrice Creuzot (luigifab) <code~luigifab~fr>
6
+ * https://www.luigifab.fr/redmine/apijs
7
+ *
8
+ * This program is free software, you can redistribute it or modify
9
+ * it under the terms of the GNU General Public License (GPL) as published
10
+ * by the free software foundation, either version 2 of the license, or
11
+ * (at your option) any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but without any warranty, without even the implied warranty of
15
+ * merchantability or fitness for a particular purpose. See the
16
+ * GNU General Public License (GPL) for more details.
17
+ */
18
+
19
+ /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& dialogues &&& */
20
+ #apijsDialog { margin:0; }
21
+
22
+ #apijsBox { font-size:0.8rem; border:0; }
23
+ #apijsBox a { color:blue; }
24
+
25
+ #apijsBox.options.editattachment input[type="text"] {
26
+ display:block; padding:0.3em; width:calc(100% - 4px - 0.6em);
27
+ border:1px solid #888; background-color:#EEE;
28
+ }
29
+
30
+ /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& albums et listes &&& */
31
+ body div.attachments.album { margin:1em 0; text-align:left; }
32
+ body div.attachments.album dd { position:relative; margin:0.5em 0 0 0.15em; min-height:1.8em; }
33
+ body div.attachments.album dd.big { min-height:5em; }
34
+ body div.attachments.album dd div { float:right; }
35
+
36
+ body div.attachments.album dd span {
37
+ display:block; line-height:16px; overflow:hidden;
38
+ font-size:inherit; color:inherit; white-space:nowrap; text-overflow:ellipsis;
39
+ }
40
+
41
+ body div.attachments.album dd span:first-child { margin-right:60px; }
42
+
43
+ body ul.attachments { margin:1em 0; padding:0; list-style:none; }
44
+ body ul.attachments li { padding:0.25em 0.5em; transition:background-color 0.3s; }
45
+ body ul.attachments li:hover { background-color:#EFEFEF; }
46
+
47
+ body ul.attachments li a { vertical-align:middle; }
48
+ body ul.attachments li strong { padding:0 0.3em; }
49
+ body ul.attachments li span { padding:0 0.1em; }
50
+ body ul.attachments li span.size { color:gray; }
51
+ body ul.attachments li span.date { color:gray; }
52
+
53
+ /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& boutons &&& */
54
+ body button.attachment, body ul.attachments a[id^="slideshow"] {
55
+ display:inline-block; padding:0; width:16px; height:16px; vertical-align:middle;
56
+ text-decoration:none !important; border:0; background-color:transparent; cursor:pointer; opacity:0.75;
57
+ }
58
+
59
+ body button.attachment.show, body ul.attachments a[id^="slideshow"] { background-image:url("../../../images/magnifier.png"); }
60
+ body button.attachment.download { background-image:url("../../../images/attachment.png"); }
61
+ body button.attachment.delete { background-image:url("../../../images/delete.png"); }
62
+ body button.attachment.edit { background-image:url("../../../images/edit.png"); }
63
+
64
+ /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& configuration &&& */
65
+ body fieldset.apijs.tabular.settings { margin:1em; padding:0.5em; border:1px solid #CCC; }
66
+ body fieldset.apijs.tabular.settings p span.cmd { white-space:pre-wrap; }
67
+ body fieldset.apijs.tabular.settings p em.info { margin:0.2em 0; line-height:140%; }
68
+ body fieldset.apijs.tabular.settings p a + em.info { margin:0; }
69
+ body fieldset.apijs.tabular.settings p label.bis { margin-left:1px; margin-right:0.7em; width:auto; min-width:5.5em; text-align:left; }
70
+ body fieldset.apijs.tabular.settings p label.bis input { margin:0; }
71
+
72
+ /* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& navigateur &&& */
73
+ body .flash.error.apijs { margin:0; border:0; border-radius:0; font-size:11px; }
@@ -0,0 +1,30 @@
1
+ cs:
2
+ apijs_browser_warning: "<strong>Warning:</strong> your browser <strong>%{n} %{v}</strong> is outdated, please <a %{l}>upgrade your browser</a>."
3
+ apijs_title_album: "Photo gallery"
4
+ apijs_title_download: "Stáhnout (%{v})"
5
+ apijs_title_files: "Files list"
6
+ apijs_config_apijs: "Obecné"
7
+ apijs_config_enable: "Enable apijs"
8
+ apijs_example1_title: "PHP manual"
9
+ apijs_example1_text: "It is important to note that just because the mail was accepted for delivery, it doesn't mean the mail will actually reach the intended destination."
10
+ apijs_example: "Například %{v}"
11
+ apijs_example2_title: "Surprise!"
12
+ apijs_example2_text: "You are watching this video without proprietary extension thanks to the new [em]video[/em] tag included in the [strong]HTML 5[/strong] language."
13
+ apijs_example2_link: "Webové stránky: %{v}"
14
+ apijs_config_sort_order: "Sort files alphabetically"
15
+ apijs_config_browser: "Check browser version"
16
+ apijs_config_browser_help: "Firefox 36+, Chrome 31+, Opera 19+, Edge 16+, Safari 9+ (checks even if the apijs is disabled)."
17
+ permission_edit_attachments: "(apijs) Edit files description"
18
+ permission_delete_attachments: "(apijs) Remove files"
19
+ apijs_config_directories: "Directories size"
20
+ apijs_config_album: "Photo albums"
21
+ apijs_config_show_album: "Display albums"
22
+ apijs_config_show_album_infos: "Display all information"
23
+ apijs_config_show_filename: "Display the name in the slide show"
24
+ apijs_config_show_exifdate: "Display the date in the slide show"
25
+ apijs_config_mimetypes: "Use the following files"
26
+ apijs_config_album_exclude_name: "Exclude photos from album<br />whose name begins with"
27
+ apijs_config_album_exclude_desc: "Exclude photos from album<br />whose description begins with"
28
+ apijs_config_create_all: "Generate the three images"
29
+ apijs_config_create_all_info: "Generates thumbnails and image preview at the same time, it slows the first display, but accelerates the first display of the slide show."
30
+ apijs_config_programs: "Programs version"
@@ -0,0 +1,30 @@
1
+ de:
2
+ apijs_browser_warning: "<strong>Achtung:</strong> Ihr Browser <strong>%{n} %{v}</strong> ist veraltet. Bitte <a %{l}>laden Sie eine neue Version Ihres Browser runter</a>."
3
+ apijs_title_album: "Fotogalerie"
4
+ apijs_title_download: "Download (%{v})"
5
+ apijs_title_files: "Liste der Dateien"
6
+ apijs_config_apijs: "Allgemein"
7
+ apijs_config_enable: "Apijs aktivieren"
8
+ apijs_example1_title: "PHP-Handbuch"
9
+ apijs_example1_text: "Dass eine E-Mail für den Versand akzeptiert wurde, bedeutet nicht, dass sie auch wirklich den gewünschten Empfänger erreichen wird."
10
+ apijs_example: "Beispiel %{v}"
11
+ apijs_example2_title: "Überraschung!"
12
+ apijs_example2_text: "Sie sehen dieses Video ohne Erweiterung dank dem neuen [em]video[/em] Tag welches im Standard [strong]HTML 5[/strong] integriert ist."
13
+ apijs_example2_link: "Website: %{v}"
14
+ apijs_config_sort_order: "Dateien alphabetisch sortieren"
15
+ apijs_config_browser: "Browser Version überprüfen"
16
+ apijs_config_browser_help: "Firefox 36+, Chrome 31+, Opera 19+, Edge 16+, Safari 9+ (überprüft ebenfalls ob apijs aktiviert ist)."
17
+ permission_edit_attachments: "(apijs) Beschreibung der Datei bearbeiten"
18
+ permission_delete_attachments: "(apijs) Datei löschen"
19
+ apijs_config_directories: "Größe des Ordners"
20
+ apijs_config_album: "Fotoalbum"
21
+ apijs_config_show_album: "Alben anzeigen"
22
+ apijs_config_show_album_infos: "Alle Informationen anzeigen"
23
+ apijs_config_show_filename: "Name in der Diashow anzeigen"
24
+ apijs_config_show_exifdate: "Datum in der Diashow anzeigen"
25
+ apijs_config_mimetypes: "Folgende Dateien verwenden"
26
+ apijs_config_album_exclude_name: "Fotoalben ausschliessen die<br />mit folgendem Namen beginnen"
27
+ apijs_config_album_exclude_desc: "Fotoalben ausschliessen deren Beschreibung<br />mit folgendem Term beginnt"
28
+ apijs_config_create_all: "Generate the three images"
29
+ apijs_config_create_all_info: "Generiert Thumbnail und Vorschaubild gleichzeitig, dies verlangsamt das Anzeigen der Seite beim ersten mal, es ermöglicht jedoch eine schnellere Anzeige der Diashow."
30
+ apijs_config_programs: "Version des Programms"
@@ -0,0 +1,30 @@
1
+ en:
2
+ apijs_browser_warning: "<strong>Warning:</strong> your browser <strong>%{n} %{v}</strong> is outdated, please <a %{l}>upgrade your browser</a>."
3
+ apijs_title_album: "Photo gallery"
4
+ apijs_title_download: "Download (%{v})"
5
+ apijs_title_files: "Files list"
6
+ apijs_config_apijs: "General"
7
+ apijs_config_enable: "Enable apijs"
8
+ apijs_example1_title: "PHP manual"
9
+ apijs_example1_text: "It is important to note that just because the mail was accepted for delivery, it doesn't mean the mail will actually reach the intended destination."
10
+ apijs_example: "Example %{v}"
11
+ apijs_example2_title: "Surprise!"
12
+ apijs_example2_text: "You are watching this video without proprietary extension thanks to the new [em]video[/em] tag included in the [strong]HTML 5[/strong] language."
13
+ apijs_example2_link: "Website: %{v}"
14
+ apijs_config_sort_order: "Sort files alphabetically"
15
+ apijs_config_browser: "Check browser version"
16
+ apijs_config_browser_help: "Firefox 36+, Chrome 31+, Opera 19+, Edge 16+, Safari 9+ (checks even if the apijs is disabled)."
17
+ permission_edit_attachments: "(apijs) Edit files description"
18
+ permission_delete_attachments: "(apijs) Remove files"
19
+ apijs_config_directories: "Directories size"
20
+ apijs_config_album: "Photo albums"
21
+ apijs_config_show_album: "Display albums"
22
+ apijs_config_show_album_infos: "Display all information"
23
+ apijs_config_show_filename: "Display the name in the slide show"
24
+ apijs_config_show_exifdate: "Display the date in the slide show"
25
+ apijs_config_mimetypes: "Use the following files"
26
+ apijs_config_album_exclude_name: "Exclude photos from album<br />whose name begins with"
27
+ apijs_config_album_exclude_desc: "Exclude photos from album<br />whose description begins with"
28
+ apijs_config_create_all: "Generate the three images"
29
+ apijs_config_create_all_info: "Generates thumbnails and image preview at the same time, it slows the first display, but accelerates the first display of the slide show."
30
+ apijs_config_programs: "Programs version"