/***
|''Name:''|CatalanLingo|
|''Description:''|Central Catalan translation for TiddlyWiki |
|''Author:''|Paco Rivière (http://pacoriviere.cat)|
|''Source:''|http://twcaclassic.tiddlyspot.com/ |
|''CodeRepository:''|https://github.com/TiddlyWiki/translations/tree/master/locales/core/ca |
|''Version:''|0.4.3|
|''Date:''|May 17, 2020|
|''Comments:''|Agrairem els vostres comentaris a http://twca.tiddlyspot.com/#Contacte |
|''License:''|[[Creative Commons Attribution-ShareAlike 3.0 License|http://creativecommons.org/licenses/by-sa/3.0/]] |
|''~CoreVersion:''|2.6.0|
***/
//{{{
//--
//-- Translateable strings
//--
// Strings in "double quotes" should be translated; strings in 'single quotes' should be left alone
config.locale = "ca"; // W3C language tag
if (config.options.txtUserName == 'YourName') // do not translate this line, but do translate the next line
merge(config.options,{txtUserName: "ElVostreNom"});
merge(config.tasks,{
save: {text: "desa", tooltip: "Desa tots els canvis en aquest arxiu", action: saveChanges},
sync: {text: "sincronitza", tooltip: "Sincronitza els canvis amb d'altres fitxers i servidors TiddlyWiki", content: '<<sync>>'},
importTask: {text: "importa", tooltip: "Importa tiddlers i connector d'altres fitxers TiddlyWiki i servidors", content: '<<importTiddlers>>'},
tweak: {text: "opcions", tooltip: "Tria el comportament de TiddlyWiki", content: '<<options>>'},
upgrade: {text: "actualitza", tooltip: "Actualitza el codi del nucli de TiddlyWiki", content: '<<upgrade>>'},
plugins: {text: "connectors", tooltip: "Gestiona els connectors", content: '<<plugins>>'}
});
// Options that can be set in the options panel and/or cookies
merge(config.optionsDesc,{
txtUserName: "Nom utilitzat per signar els canvis",
chkRegExpSearch: "Cerca expressions regulars",
chkCaseSensitiveSearch: "Distingeix les majúscules en cercar",
chkIncrementalSearch: "Cerca incremental tecla a tecla",
chkAnimate: "Fes servir animacions",
chkSaveBackups: "Desa una còpia de seguretat abans de desar els canvis",
chkAutoSave: "Registra els canvis de forma automàtica",
chkGenerateAnRssFeed: "Genera un fil RSS en desar els canvis",
chkSaveEmptyTemplate: "Genera un fitxer 'empty.html'en desar els canvis",
chkOpenInNewWindow: "Obre els enllaços externs en una altre finestra",
chkToggleLinks: "Tanca els elements oberts en clicar sobre els seus enllaços",
chkHttpReadOnly: "Amaga els botons d'edició quan s'accedeix per HTTP",
chkForceMinorUpdate: "Tracta les edicions com a Canvis Menors conservant la data i hora",
chkConfirmDelete: "Demana confirmació abans de suprimir un element",
chkInsertTabs: "Inserta un tabulador amb la tecla tab en lloc de slatar el camp",
txtBackupFolder: "Nom de la carpeta per als arxius de còpia",
txtMaxEditRows: "Màxim nombre de línies de la capsa d'edició del tiddler",
txtTheme: "Nom del tema",
txtFileSystemCharSet: "Codificació de caractèrs per desar els canvis (només per Firefox/Mozilla)"});
merge(config.messages,{
customConfigError: "S'han trobat problemes en carregar els connectors. Consulteu el PluginManager per a més detalls",
pluginError: "Error: %0",
pluginDisabled: "Not executed because disabled via 'systemConfigDisable' tag",
pluginForced: "Executed because forced via 'systemConfigForce' tag",
pluginVersionError: "Not executed because this plugin needs a newer version of TiddlyWiki",
nothingSelected: "Nothing is selected. You must select one or more items first",
savedSnapshotError: "It appears that this TiddlyWiki has been incorrectly saved. Please see http://www.tiddlywiki.com/#Download for details",
subtitleUnknown: "(unknown)",
undefinedTiddlerToolTip: "The tiddler '%0' doesn't yet exist",
shadowedTiddlerToolTip: "The tiddler '%0' doesn't yet exist, but has a pre-defined shadow value",
tiddlerLinkTooltip: "%0 - %1, %2",
externalLinkTooltip: "Enllaç extern cap a %0",
noTags: "No hi ha tiddlers amb etiquetes",
notFileUrlError: "Cal desar aquest TiddlyWiki a un arxiu abans de poder desar els canvis",
cantSaveError: "No es poden desar els canvis. Pot ser que el vostre navegador no permeti desar (Proveu de fer servir Firefox, en lloc), o degut a que el nom de la ruta de l'arxiu TiddlyWiki té algun caràcter incorrecte",
invalidFileError: "Sembla que l'arxiu original '%0' no és un TiddlyWiki vàlid",
backupSaved: "S'ha desat la còpia de seguretat",
backupFailed: "No ha estat possible desar l'arxiu de la còpia de seguretat",
rssSaved: "S'ha desat el fil RSS",
rssFailed: "No ha estat possible desar el fil RSS",
emptySaved: "S'ha desat la plantilla buida",
emptyFailed: "No ha estat possible desar la plantilla buida",
mainSaved: "S'ha desat l'arxiu principal de TiddlyWiki",
mainFailed: "No ha estat possible desar l'arxiu principal de TiddlyWiki. Els vostres canvis no s'han desat",
macroError: "Hi ha un error a la macro <<%0>>",
macroErrorDetails: "Hi ha hagut un error a l'executar la macro <<%0>>:\n%1",
missingMacro: "No es troba la macro",
overwriteWarning: "Ja hi ha un tiddler amb el nom '%0'. Trieu DAcord si el voleu sobreescriure",
unsavedChangesWarning: "ATENCIÓ! Hi ha canvis que no s'han desat al TiddlyWiki\n\nTrieu DAcord per desar\nTrieu ANUL·LA per descartar-los",
confirmExit: "--------------------------------\n\nHi ha canvis que no s'han desat al TiddlyWiki. Si continueu perdreu aquests canvis\n\n--------------------------------",
saveInstructions: "DesaElsCanvis",
unsupportedTWFormat: "El format del TiddlyWiki no es permés '%0'",
tiddlerSaveError: "Hi ha hagut un error en desar el tiddler '%0'",
tiddlerLoadError: "Hi ha hagut un error en desar el tiddler '%0'",
wrongSaveFormat: "No es pot desar en el format de magatzament '%0'. Feu servir el format standard per a desar.",
invalidFieldName: "El nom del camp no és vàlid vàlid %0",
fieldCannotBeChanged: "No es pot modificar el camp '%0'",
loadingMissingTiddler: "Intentant recuperar el '%0' del servidor '%1' a:\n\n'%2' a l'espai de treball '%3'",
upgradeDone: "S'ha completat l'actualització a la versió %0\n\nCliqueu 'D'acord' per tornar a carregar el nou TiddlyWiki actualitzat",
invalidCookie: "La galeta '%0' no és vàlida"});
merge(config.messages.messageClose,{
text: "tanca",
tooltip: "tanca aquest tiddler"});
config.messages.backstage = {
open: {text: "bastidors", tooltip: "Obre els bastidors per les tasques d'autor i editor"},
close: {text: "tanca", tooltip: "Tanca els bastidors"},
prompt: "bastidors: ",
decal: {
edit: {text: "edita", tooltip: "Edita el tiddler '%0'"}
}
};
config.messages.listView = {
tiddlerTooltip: "Cliqueu per previsualitzar el tiddler",
previewUnavailable: "(no es pot previsualitzar)"
};
config.messages.dates.months = ["de gener de", "de febrer de", "de març de", "d'abril de", "de maig de", "de juny de", "de juliol de", "d'agost de", "de setembre de", "d'octubre de", "de novembre de","de desembre de"];
config.messages.dates.days = ["Diumenge", "Dilluns", "Dimarts", "Dimecres", "Dijous", "Divendres", "Dissabte"];
config.messages.dates.shortMonths = ["Gen", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Oct", "Nov", "Des"];
config.messages.dates.shortDays = ["Diu", "Dil", "Dma", "Dcr", "Dij", "Div", "Dis"];
// suffixes for dates, eg "1st","2nd","3rd"..."30th","31st"
config.messages.dates.daySuffixes = ["r","n","r","t","é","é","é","é","é","é",
"é","é","é","é","é","é","é","é","é","é",
"é","","é","é","é","é","é","é","é","é",
"é"];
config.messages.dates.am = "del matí";
config.messages.dates.pm = "de la tarda";
merge(config.messages.tiddlerPopup,{
});
merge(config.views.wikified.tag,{
labelNoTags: "sense etiquetes",
labelTags: "etiquetes: ",
openTag: "Obre l'etiqueta '%0'",
tooltip: "Obre els tiddlers etiquetats amb '%0'",
openAllText: "obre tots",
openAllTooltip: "Obre tots aquests tiddlers",
popupNone: "No hi ha altres tiddlers etiquetats amb '%0'"});
merge(config.views.wikified,{
defaultText: "El tiddler '%0' no existeix. Cliqueu dos cops per començar-lo",
defaultModifier: "(falta)",
shadowModifier: "(tiddler ombra pre-definit)",
dateFormat: "DD MMM YYYY", // use this to change the date format for your locale, eg "YYYY MMM DD", do not translate the Y, M or D
createdPrompt: "creat el"});
merge(config.views.editor,{
tagPrompt: "Afegiu les etiquetes separades per espais, [[feu servir dobles corxets]] si cal, o afegiu-ne",
defaultText: "Entreu el text per a '%0'.'"});
merge(config.views.editor.tagChooser,{
text: "etiquetes",
tooltip: "Trieu entre les etiquetes actuals per afegir a aquest tiddler",
popupNone: "No hi ha etiquetes definides",
tagTooltip: "Afegeix l'etiqueta '%0'"});
merge(config.messages,{
sizeTemplates:
[
{unit: 1024*1024*1024, template: "%0\u00a0GB"},
{unit: 1024*1024, template: "%0\u00a0MB"},
{unit: 1024, template: "%0\u00a0KB"},
{unit: 1, template: "%0\u00a0B"}
]});
merge(config.macros.search,{
label: "cerca",
prompt: "Cerca en aquest TiddlyWiki",
accessKey: "F",
successMsg: "S'han trobat %0 tiddlers que contenen: '%1'",
failureMsg: "No s'ha trobat cap tiddler coincident amb: '%0'"});
merge(config.macros.tagging,{
label: "etiquetes:",
labelNotTag: "cap etiqueta",
tooltip: "Llista de tiddlers etiquetats amb '%0'"});
merge(config.macros.timeline,{
dateFormat: "DD MMM YYYY"});// use this to change the date format for your locale, eg "YYYY MMM DD", do not translate the Y, M or D
merge(config.macros.allTags,{
tooltip: "Mostra tiddlers amb l'etiqueta '%0'",
noTags: "No hi ha tiddlers amb etiquetes"});
config.macros.list.all.prompt = "Tots els tiddlers per ordre alfabètic";
config.macros.list.missing.prompt = "Tiddlers que tenen enllaços cap a ells, però no estàn definits";
config.macros.list.orphans.prompt = "Tiddlers sense enllaços des de cap altre";
config.macros.list.shadowed.prompt = "Tiddlers amb ombres amb contingut per omisió";
config.macros.list.touched.prompt = "Tiddlers que heu modificat localment";
merge(config.macros.closeAll,{
label: "tanca'ls tots",
prompt: "Tanca tots els tiddlers oberts (excepte els que s'estàn editant)"});
merge(config.macros.permaview,{
label: "vista permanent",
prompt: "Enllaça a una URL que torni tots els tiddlers que es mostren ara"});
merge(config.macros.saveChanges,{
label: "desa els canvis",
prompt: "Desa tots els canvis a un arxiu",
accessKey: "S"});
merge(config.macros.newTiddler,{
label: "nou tiddler",
prompt: "Obre un nou tiddler",
title: "Nou tiddler",
accessKey: "N"});
merge(config.macros.newJournal,{
label: "nou diari",
prompt: "Obre un nou tiddler amb la data i hora actuals",
accessKey: "J"});
merge(config.macros.options,{
wizardTitle: "Opcions avançades",
step1Title: "Aquestes opcions es desen a les galetes del vostre navegador",
step1Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='false' name='chkUnknown'>Mostra les opcions desconegudes</input>",
unknownDescription: "//(desconegut)//",
listViewTemplate: {
columns: [
{name: 'Option', field: 'option', title: "Opció", type: 'String'},
{name: 'Description', field: 'description', title: "Descripció", type: 'WikiText'},
{name: 'Name', field: 'name', title: "Nom", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
});
merge(config.macros.plugins,{
wizardTitle: "Gestor de connectors",
step1Title: "Connectors carregats",
step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
skippedText: "(Aquest connector encara no s'ha carrega perquè s'ha afegit desprès de l'inicit)",
noPluginText: "No hi ha cap connector instal·lat",
confirmDeleteText: "Segur que voleu que suprimir els connectors:\n\n%0",
removeLabel: "suprimeix l'etiqueta systemConfig",
removePrompt: "Suprimeix l'etiqueta systemConfig",
deleteLabel: "suprimeix",
deletePrompt: "Suprimeix definitivament aquests tiddlers",
listViewTemplate: {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
{name: 'Description', field: 'Description', title: "Descripció", type: 'String'},
{name: 'Version', field: 'Version', title: "Versió", type: 'String'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
{name: 'Forced', field: 'forced', title: "Forçat", tag: 'systemConfigForce', type: 'TagCheckbox'},
{name: 'Disabled', field: 'disabled', title: "Desactivat", tag: 'systemConfigDisable', type: 'TagCheckbox'},
{name: 'Executed', field: 'executed', title: "Carregat", type: 'Boolean', trueText: "Sí", falseText: "No"},
{name: 'Startup Time', field: 'startupTime', title: "Temps de càrrega", type: 'String'},
{name: 'Error', field: 'error', title: "Estat", type: 'Boolean', trueText: "Error", falseText: "D'acord"},
{name: 'Log', field: 'log', title: "Registre", type: 'StringList'}
],
rowClasses: [
{className: 'error', field: 'error'},
{className: 'warning', field: 'avís'}
]},
listViewTemplateReadOnly: {
columns: [
{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
{name: 'Description', field: 'Description', title: "Descripció", type: 'String'},
{name: 'Version', field: 'Version', title: "Versió", type: 'String'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
{name: 'Executed', field: 'executed', title: "Carregat", type: 'Boolean', trueText: "Sí", falseText: "No"},
{name: 'Startup Time', field: 'startupTime', title: "Temps de càrrega", type: 'String'},
{name: 'Error', field: 'error', title: "Estat", type: 'Boolean', trueText: "Error", falseText: "D'acord"},
{name: 'Log', field: 'log', title: "Registre", type: 'StringList'}
],
rowClasses: [
{className: 'error', field: 'error'},
{className: 'warning', field: 'avís'}
]}
});
merge(config.macros.toolbar,{
moreLabel: "més",
morePrompt: "Mostra més ordres",
lessLabel: "menys",
lessPrompt: "Mostra menys ordres",
separator: "|"
});
merge(config.macros.refreshDisplay,{
label: "actualitza",
prompt: "Torna a carregar tot el TiddlyWiki"
});
merge(config.macros.importTiddlers,{
readOnlyWarning: "No podeu importar a un fitxer TiddlyWiki només de lectura. Mireu d'obrir-lo des d'un fitxer, file:// URL",
wizardTitle: "Importa tiddlers d'un altre fitxer o servidor",
step1Title: "Pas 1: Indiqueu el fitxer TiddlyWiki o servidor",
step1Html: "Indiqueu el tipus de servidor: <select name='selTypes'><option value=''>Trieu...</option></select><br>Entreu la URL o la ruta aquí: <input type='text' size=50 name='txtPath'><br>...o navega: <input type='file' size=50 name='txtBrowse'><br><hr>...o trieu un canal predefinit: <select name='selFeeds'><option value=''>Trieu...</option></select>",
openLabel: "obre",
openPrompt: "Obre la connexió amb aquest fitxer o servidor",
statusOpenHost: "Obrint el servidor",
statusGetWorkspaceList: "Obtenint la llista d'espais de treball disponibles",
step2Title: "Pas 2: Trieu un espai de treball",
step2Html: "Entreu el nom de l'espai de treball: <input type='text' size=50 name='txtWorkspace'><br>...o trieu un espai de treball: <select name='selWorkspace'><option value=''>Trieu...</option></select>",
cancelLabel: "anul·la",
cancelPrompt: "Anul·la la importació",
statusOpenWorkspace: "Obrint l'espai de treball",
statusGetTiddlerList: "Obtenint la llista de tiddlers",
errorGettingTiddlerList: "Hi ha hagut un problema en obtenir la llist de tiddlers, cliqueu Anul·la o torneu a provar",
step3Title: "Pas 3: Trieu els tiddlers que voleu importar",
step3Html: "<input type='hidden' name='markList'></input><br><input type='checkbox' checked='true' name='chkSync'>Manté aquests tiddlers enllaçats a aquest servidor per doder sincronitzar el canvis</input><br><input type='checkbox' name='chkSave'>Deseu els detalls del servidor en un tiddler 'systemServer' anomenat:</input> <input type='text' size=25 name='txtSaveTiddler'>",
importLabel: "importa",
importPrompt: "Importa aquests tiddlers",
confirmOverwriteText: "Segur que voleu substituir aquests tiddlers:\n\n%0",
step4Title: "Pas 4: Important %0 tiddler(s)",
step4Html: "<input type='hidden' name='markReport'></input>", // DO NOT TRANSLATE
doneLabel: "fet",
donePrompt: "Tanca l'assistent",
statusDoingImport: "Important els tiddlers",
statusDoneImport: "S'han importat tots els tiddlers",
systemServerNamePattern: "%2 de %1",
systemServerNamePatternNoWorkspace: "%1",
confirmOverwriteSaveTiddler: "El tiddler '%0' ja existeix. Cliqueu 'D'acord' per sobreescriure'l amb els detalls d'aquest servidor, o 'Anul·la' per deixar-ho tal com és",
serverSaveTemplate: "|''Tipus:''|%0|\n|''URL:''|%1|\n|''Espai:''|%2|\n\nAquest tiddler es va crear automàticament per registrar els detalls d'aquest servidor",
serverSaveModifier: "(System)",
listViewTemplate: {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
{name: 'Size', field: 'size', tiddlerLink: 'size', title: "Mida", type: 'Size'},
{name: 'Tags', field: 'tags', title: "Etiquetes", type: 'Tags'}
],
rowClasses: [
]}
});
merge(config.macros.upgrade,{
wizardTitle: "Actualitza el codi del nucli de TiddlyWiki",
step1Title: "Actualitza o repara aquest TiddlyWiki a la darrera versió",
step1Html: "Aneu a actualitzar a la darrera versió el nucli de TiddlyWiki (de <a href='%0' class='externalLink' target='_blank'>%1</a>). El vostre contingut es conservarà al actualitzar.<br><br>Les actualitzacions del nucli poden fer que els connectors més antics deixin de funcionar correctament. Si trobeu problemes amb l'arxiu actualitzat, veieu <a href='http://www.tiddlywiki.org/wiki/CoreUpgrades' class='externalLink' target='_blank'>http://www.tiddlywiki.org/wiki/CoreUpgrades</a>",
errorCantUpgrade: "No es pot actualitzar aquest TiddlyWiki. Només podeu actualitzar fitxers TiddlyWiki desats localment",
errorNotSaved: "Heu de desar els canvis abans d'actualitzar",
step2Title: "Confirmeu els detalls de l'actualització",
step2Html_downgrade: "Aneu a retrocedir a TiddlyWiki versió %0 des de la %1.<br><br>No és recomanable baixar el nucli a una versió anterior",
step2Html_restore: "Sembla que aquest TiddlyWiki ja fa servir la darrera versió del codi del nucli (%0).<br><br>Podeu continuar igualment l'actualització per assegurar que el codi del nucli no està danyat",
step2Html_upgrade: "Aneu a actualitzar aquest TiddlyWiki a la versió %0 des de la %1",
upgradeLabel: "actualitza",
upgradePrompt: "Inicia el procés d'actualització",
statusPreparingBackup: "Preparant la còpia de seguretat",
statusSavingBackup: "S'està desant la còpia de seguretat",
errorSavingBackup: "S'han trobat un problema en desar la còpia de seguretat",
statusLoadingCore: "S'està carregant el codi del nucli",
errorLoadingCore: "Hi ha hagut un error carregant el codi del nucli",
errorCoreFormat: "Hi ha hagut un error amb el nou codi del nucli",
statusSavingCore: "S'està desant el nou codi del nucli",
statusReloadingCore: "S'està tornant a carregar el nou codi del nucli",
startLabel: "inicia",
startPrompt: "Inicia l'actualització",
cancelLabel: "cancel·la",
cancelPrompt: "Cancel·la l'actualització",
step3Title: "procés cancel·lat",
step3Html: "Heu cancel·lat l'actualització"
});
merge(config.macros.sync,{
listViewTemplate: {
columns: [
{name: 'Selected', field: 'selected', rowName: 'title', type: 'Selector'},
{name: 'Tiddler', field: 'tiddler', title: "Tiddler", type: 'Tiddler'},
{name: 'Server Type', field: 'serverType', title: "Tipus de servidor", type: 'String'},
{name: 'Server Host', field: 'serverHost', title: "Servidor", type: 'String'},
{name: 'Server Workspace', field: 'serverWorkspace', title: "Espai de treball", type: 'String'},
{name: 'Status', field: 'status', title: "Estat de la sicronització", type: 'String'},
{name: 'Server URL', field: 'serverUrl', title: "URL del servidor", text: "Mostra", type: 'Link'}
],
rowClasses: [
],
buttons: [
{caption: "Sync these tiddlers", name: 'sync'}
]},
wizardTitle: "Sincronitza amb servidors i fitxers externs",
step1Title: "Trieu els tiddlers que voleu sincronitzar",
step1Html: "<input type='hidden' name='markList'></input>", // DO NOT TRANSLATE
syncLabel: "sinc",
syncPrompt: "Sincronitza aquests tiddlers",
hasChanged: "Ha canviat mentre no era connectat",
hasNotChanged: "Sense canvis mentre no era connectat",
syncStatusList: {
none: {text: "...", display:'none', className:'notChanged'},
changedServer: {text: "Canviat al servidor", display:null, className:'changedServer'},
changedLocally: {text: "Canviat mentre era desconnectat", display:null, className:'changedLocally'},
changedBoth: {text: "Canviat era mentre desconnectat i al servidor", display:null, className:'changedBoth'},
notFound: {text: "No s'ha trobat al servidor", display:null, className:'notFound'},
putToServer: {text: "S'han desat els canvis al servidor", display:null, className:'putToServer'},
gotFromServer: {text: "S'han recuperat els canvis des del servidor", display:null, className:'gotFromServer'}
}
});
merge(config.commands.closeTiddler,{
text: "tanca",
tooltip: "Tanca aquest tiddler"});
merge(config.commands.closeOthers,{
text: "tanca altres",
tooltip: "Tanca tots els altres tiddlers"});
merge(config.commands.editTiddler,{
text: "edita",
tooltip: "Edita aquest tiddler",
readOnlyText: "mostra",
readOnlyTooltip: "Mostra el codi d'aquest tiddler"});
merge(config.commands.saveTiddler,{
text: "desa",
tooltip: "Desa els canvis d'aquest tiddler"});
merge(config.commands.cancelTiddler,{
text: "anul·la",
tooltip: "Anul·la els canvis a aquest tiddler",
warning: "Segur que voleu anul·lar els canvis a '%0'?",
readOnlyText: "fet",
readOnlyTooltip: "Torna a l'aspecte normal"});
merge(config.commands.deleteTiddler,{
text: "suprimeix",
tooltip: "Suprimeix aquest tiddler",
warning: "Segur que voleu suprimir '%0'?"});
merge(config.commands.permalink,{
text: "enllaç permanent",
tooltip: "Enllaç permanent d'aquest tiddler"});
merge(config.commands.references,{
text: "referències",
tooltip: "Obre els tiddlers que enllacen a aquest",
popupNone: "sense referències"});
merge(config.commands.jump,{
text: "salta",
tooltip: "Salta a un altre tiddler obert"});
merge(config.commands.syncing,{
text: "sincronitzant",
tooltip: "Control de la sincronització d'aquest tiddler amb un servidor o fitxer extern",
currentlySyncing: "<div>Es sincromitza <span class='popupHighlight'>'%0'</span> amb:</"+"div><div>servidor: <span class='popupHighlight'>%1</span></"+"div><div>workspace: <span class='popupHighlight'>%2</span></"+"div>", // Note escaping of closing <div> tag
notCurrentlySyncing: "No s'està sincronitzant",
captionUnSync: "Atura la sincronització d'aquest tiddler",
chooseServer: "Sincronitza aquest tiddler amb un altre servidor:",
currServerMarker: "\u25cf ",
notCurrServerMarker: " "});
merge(config.commands.fields,{
text: "camps",
tooltip: "Mostra els camps ampliats d'aquest tiddler",
emptyText: "Aquest tiddler no té camps ampliats",
listViewTemplate: {
columns: [
{name: 'Field', field: 'field', title: "Camp", type: 'String'},
{name: 'Value', field: 'value', title: "Valor", type: 'String'}
],
rowClasses: [
],
buttons: [
]}});
merge(config.shadowTiddlers,{
DefaultTiddlers: "[[ComComençar]]",
MainMenu: "ComComençar\n\n[[Donacions]]\n© 2010 [[UnaMesa|http://www.unamesa.org/]]\n© 2020 [[Paco Rivière|http://paco.riviere.cat/]]\n\n\n^^TiddlyWiki versió <<version>>^^",
SiteTitle: "El meu TiddlyWiki",
SiteSubtitle: "bloc web personal no lineal, reutilitzable",
SiteUrl: "http://www.tiddlywiki.com/",
ComComençar: "Podeu entrar el vostre nom d'usuari per signar les vostres edicions: <<option txtUserName>>\n\nAbans de desar informació important, comproveu que podeu desar els canvis - veieu les instruccions detallades a https://classic.tiddlywiki.com/#GettingStarted\n\nLlavors podeu:\n\n* Crear nous tiddlers amb el botó 'nou tiddler' de la columna de la dreta\n* Desar els canvis amb el botó 'desa els canvis' de la columna de la dreta\n* Editar els [[TiddlersPerOmissió|DefaultTiddlers]] per decidir quins tiddlers apareixen en obrir aquest wiki\n* Editar el [[Títol de la pàgina|SiteTitle]] i el [[Subtítol|SiteTitle]]\n* Editar el [[MenuPrincipal|MainMenu]]: El menú (normalment a l'esquerra)\n* Col·laborar en la [[traducció al català|https://github.com/TiddlyWiki/translations]]\n* Més informació sobre el [[contingut WikiText|https://classic.tiddlywiki.com/#WikiTextContent]]\n\nVeieu més opcions al [[tauler de control|AdvancedOptions]].",
Donacions: "La localització de TiddlyWiki al català és programari lliure, disponible gratuitament per tothom i sempre ho serà. Si feu servir TiddlyWiki de forma regular i us resulta útil, podeu [[contribuïr amb una donació|https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=web%40pacoriviere%2ecat&item_name=Donaci%c3%b3%20per%20la%20localitzaci%c3%b3%20de%20TiddlyWiki%20al%20catal%c3%a0&amount=10%2e00&no_shipping=1&return=http%3a%2f%2fpacoriviere%2egooglepages%2ecom%2fTiddlyWiki%2ehtml&no_note=1&tax=0¤cy_code=EUR&lc=ES&bn=PP%2dDonationsBF&charset=UTF%2d8]] encara que sigui modesta a PayPal (com ara 10 Euros)",
OptionsPanel: "Les opcions per personalitzar TiddlyWiki es desen al vostre navegador\n\nEl vostre nom per signar les vostres edicions. Escribiu-lo com una ParaulaWiki (com ara MartiCliment)\n<<option txtUserName>>\n<<option chkSaveBackups>> Desa còpies\n<<option chkAutoSave>> Desa automàticament\n<<option chkRegExpSearch>> Cerca expressions regulars\n<<option chkCaseSensitiveSearch>> Cerca sensible a caixa\n<<option chkAnimate>> Activa les animacions\n\n----\nVeieu també les [[OpcionsAvançades|AdvancedOptions]]",
SideBarOptions: '<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal "0DD MMM YYYY" "diari">><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel opcions "Canvia les opcions avançades del TiddlyWiki">>',
SideBarTabs: '<<tabs txtMainTab "Data" "Tiddlers per ordre cronològic" TabTimeline "Títol" "Tots els tiddlers" TabAll "Etiquetes" "Tiddlers etiquetats" TabTags "Més" "Més llistes" TabMore>>',
TabMore: '<<tabs txtMoreTab "Falten" "Tiddlers que no existeixen" TabMoreMissing "Orfes" "Tiddlers orfes" TabMoreOrphans Ombres "Tiddlers amb ombra" TabMoreShadowed>>',
TiddlyWiki: "TiddlyWiki en català:\n\nhttp://projectes.lafarga.cat/projects/tiddlywiki\n[[Guia ràpida en català|http://projectes.lafarga.cat/projects/tiddlywiki/downloads/docs/152/14]]\n\nLloc web original de TiddlyWiki (en anglés):\n\nhttp://www.tiddlywiki.com/",
});
merge(config.annotations,{
AdvancedOptions: "Aquest tiddler ombra dóna accès a vàries opcions avançades",
ColorPalette: "Els valors que hi ha en aquest tiddler ombra determinen l'esquema de colors de la interfície d'usuari de ~TiddlyWiki",
DefaultTiddlers: "Els tiddlers que es llisten en aquest tiddler ombra es mostren quan arrenca ~TiddlyWiki",
EditTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina l'aspecte dels tiddlers mentre s'editen",
GettingStarted: "Aquest tiddler ombra dóna instruccions bàsiques d'ús",
ImportTiddlers: "Aquest tiddler ombra permet importar tiddlers",
MainMenu: "Aquest tiddler ombra es fa servir per al contingut del menú principal de la columna de l'esquerra",
MarkupPreHead: "Aquest tiddler s'inserta a la part superior de la secció <head> del fitxer HTML de TiddlyWiki",
MarkupPostHead: "Aquest tiddler s'inserta a la part final de la secció <head> del fitxer HTML de TiddlyWiki",
MarkupPreBody: "Aquest tiddler s'inserta a la part superior de la secció <body> del fitxer HTML de TiddlyWiki",
MarkupPostBody: "Aquest tiddler s'inserta a la part final de la secció <body> del fitxer HTML de TiddlyWiki just abans del bloc de seqüències",
OptionsPanel: "Aquest tiddler ombra es fa servir per al contingut del quadre d'opcions slider de la columna de la dreta",
PageTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina la disposició de ~TiddlyWiki",
PluginManager: "Aquest tiddler ombra dóna access al gestor de connectors",
SideBarOptions: "Aquest tiddler ombra es fa servir per al contingut del quadre d'opcions de la columna de la dreta",
SideBarTabs: "Aquest tiddler ombra es fa servir per al contingut del quadre d'etiquetes de la columna de la dreta",
SiteSubtitle: "Aquest tiddler ombra es fa servir per la segona part del títol de la pàgina",
SiteTitle: "Aquest tiddler ombra es fa servir per la primera part del títol de la pàgina",
SiteUrl: "Aquest tiddler ombra cal escriure l'adreça URL sencera per la publicació",
StyleSheetColors: "Aquest tiddler ombra conté les definicions CSS relatives al color dels elements de la pàgina",
StyleSheet: "Aquest tiddler pot contenir les vostres definicions CSS personalitzades",
StyleSheetLayout: "Aquest tiddler ombra conté les definicions CSS relatives a la disposició dels elements de la pàgina",
StyleSheetLocale: "Aquest tiddler ombra conté les definicions CSS relatives a la traducció local",
StyleSheetPrint: "Aquest tiddler ombra conté les definicions CSS per la impressió",
SystemSettings: "Aquest tiddler s’utilitza per emmagatzemar les opcions de configuració d’aquest document TiddlyWiki",
TabAll: "Aquest tiddler ombra conté el contingut de la pestanya 'Títol'de la columna de la dreta",
TabMore: "Aquest tiddler ombra conté el contingut de la pestanya 'Més'de la columna de la dreta",
TabMoreMissing: "Aquest tiddler ombra conté el contingut de la pestanya 'Falten'de la columna de la dreta",
TabMoreOrphans: "Aquest tiddler ombra conté el contingut de la pestanya 'Orfes'de la columna de la dreta",
TabMoreShadowed: "Aquest tiddler ombra conté el contingut de la pestanya 'Ombres'de la columna de la dreta",
TabTags: "Aquest tiddler ombra conté el contingut de la pestanya 'Etiquetes'de la columna de la dreta",
TabTimeline: "Aquest tiddler ombra conté el contingut de la pestanya 'Data'de la columna de la dreta",
ToolbarCommands: "Aquest tiddler ombra determina quines ordres es mostren a les barres d'eines dels tiddlers",
ViewTemplate: "La plantilla HTML que hi ha en aquest tiddler ombra determina l'aspecte dels tiddlers"
});
//}}}
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|4.1.3|
|''Date:''|Feb 24, 2008|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.2.0|
|''Requires:''|PasswordOptionPlugin|
***/
//{{{
version.extensions.UploadPlugin = {
major: 4, minor: 1, revision: 3,
date: new Date("Feb 24, 2008"),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
author: 'BidiX (BidiX (at) bidix (dot) info',
coreVersion: '2.2.0'
};
//
// Environment
//
if (!window.bidix) window.bidix = {}; // bidix namespace
bidix.debugMode = false; // true to activate both in Plugin and UploadService
//
// Upload Macro
//
config.macros.upload = {
// default values
defaultBackupDir: '', //no backup
defaultStoreScript: "store.php",
defaultToFilename: "index.html",
defaultUploadDir: ".",
authenticateUser: true // UploadService Authenticate User
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.messages = {
noStoreUrl: "No store URL in parmeters or options",
usernameOrPasswordMissing: "Username or password missing"
};
config.macros.upload.handler = function(place,macroName,params) {
if (readOnly)
return;
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (params[0]) {
prompt = this.label.promptParamMacro.toString().format([this.destFile(params[0],
(params[1] ? params[1]:bidix.basename(window.location.toString())), params[3])]);
} else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt, function() {config.macros.upload.action(params);}, null, null, this.accessKey);
};
config.macros.upload.action = function(params)
{
// for missing macro parameter set value from options
if (!params) params = {};
var storeUrl = params[0] ? params[0] : config.options.txtUploadStoreUrl;
var toFilename = params[1] ? params[1] : config.options.txtUploadFilename;
var backupDir = params[2] ? params[2] : config.options.txtUploadBackupDir;
var uploadDir = params[3] ? params[3] : config.options.txtUploadDir;
var username = params[4] ? params[4] : config.options.txtUploadUserName;
var password = config.options.pasUploadPassword; // for security reason no password as macro parameter
// for still missing parameter set default value
if ((!storeUrl) && (document.location.toString().substr(0,4) == "http"))
storeUrl = bidix.dirname(document.location.toString())+'/'+config.macros.upload.defaultStoreScript;
if (storeUrl.substr(0,4) != "http")
storeUrl = bidix.dirname(document.location.toString()) +'/'+ storeUrl;
if (!toFilename)
toFilename = bidix.basename(window.location.toString());
if (!toFilename)
toFilename = config.macros.upload.defaultToFilename;
if (!uploadDir)
uploadDir = config.macros.upload.defaultUploadDir;
if (!backupDir)
backupDir = config.macros.upload.defaultBackupDir;
// report error if still missing
if (!storeUrl) {
alert(config.macros.upload.messages.noStoreUrl);
clearMessage();
return false;
}
if (config.macros.upload.authenticateUser && (!username || !password)) {
alert(config.macros.upload.messages.usernameOrPasswordMissing);
clearMessage();
return false;
}
bidix.upload.uploadChanges(false,null,storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;
};
config.macros.upload.destFile = function(storeUrl, toFilename, uploadDir)
{
if (!storeUrl)
return null;
var dest = bidix.dirname(storeUrl);
if (uploadDir && uploadDir != '.')
dest = dest + '/' + uploadDir;
dest = dest + '/' + toFilename;
return dest;
};
//
// uploadOptions Macro
//
config.macros.uploadOptions = {
handler: function(place,macroName,params) {
var wizard = new Wizard();
wizard.createWizard(place,this.wizardTitle);
wizard.addStep(this.step1Title,this.step1Html);
var markList = wizard.getElement("markList");
var listWrapper = document.createElement("div");
markList.parentNode.insertBefore(listWrapper,markList);
wizard.setValue("listWrapper",listWrapper);
this.refreshOptions(listWrapper,false);
var uploadCaption;
if (document.location.toString().substr(0,4) == "http")
uploadCaption = config.macros.upload.label.saveLabel;
else
uploadCaption = config.macros.upload.label.uploadLabel;
wizard.setButtons([
{caption: uploadCaption, tooltip: config.macros.upload.label.promptOption,
onClick: config.macros.upload.action},
{caption: this.cancelButton, tooltip: this.cancelButtonPrompt, onClick: this.onCancel}
]);
},
options: [
"txtUploadUserName",
"pasUploadPassword",
"txtUploadStoreUrl",
"txtUploadDir",
"txtUploadFilename",
"txtUploadBackupDir",
"chkUploadLog",
"txtUploadLogMaxLine"
],
refreshOptions: function(listWrapper) {
var opts = [];
for(i=0; i<this.options.length; i++) {
var opt = {};
opts.push();
opt.option = "";
n = this.options[i];
opt.name = n;
opt.lowlight = !config.optionsDesc[n];
opt.description = opt.lowlight ? this.unknownDescription : config.optionsDesc[n];
opts.push(opt);
}
var listview = ListView.create(listWrapper,opts,this.listViewTemplate);
for(n=0; n<opts.length; n++) {
var type = opts[n].name.substr(0,3);
var h = config.macros.option.types[type];
if (h && h.create) {
h.create(opts[n].colElements['option'],type,opts[n].name,opts[n].name,"no");
}
}
},
onCancel: function(e)
{
backstage.switchTab(null);
return false;
},
wizardTitle: "Upload with options",
step1Title: "These options are saved in cookies in your browser",
step1Html: "<input type='hidden' name='markList'></input><br>",
cancelButton: "Cancel",
cancelButtonPrompt: "Cancel prompt",
listViewTemplate: {
columns: [
{name: 'Description', field: 'description', title: "Description", type: 'WikiText'},
{name: 'Option', field: 'option', title: "Option", type: 'String'},
{name: 'Name', field: 'name', title: "Name", type: 'String'}
],
rowClasses: [
{className: 'lowlight', field: 'lowlight'}
]}
};
//
// upload functions
//
if (!bidix.upload) bidix.upload = {};
if (!bidix.upload.messages) bidix.upload.messages = {
//from saving
invalidFileError: "The original file '%0' does not appear to be a valid TiddlyWiki",
backupSaved: "Backup saved",
backupFailed: "Failed to upload backup file",
rssSaved: "RSS feed uploaded",
rssFailed: "Failed to upload RSS feed file",
emptySaved: "Empty template uploaded",
emptyFailed: "Failed to upload empty template file",
mainSaved: "Main TiddlyWiki file uploaded",
mainFailed: "Failed to upload main TiddlyWiki file. Your changes have not been saved",
//specific upload
loadOriginalHttpPostError: "Can't get original file",
aboutToSaveOnHttpPost: 'About to upload on %0 ...',
storePhpNotFound: "The store script '%0' was not found."
};
bidix.upload.uploadChanges = function(onlyIfDirty,tiddlers,storeUrl,toFilename,uploadDir,backupDir,username,password)
{
var callback = function(status,uploadParams,original,url,xhr) {
if (!status) {
displayMessage(bidix.upload.messages.loadOriginalHttpPostError);
return;
}
if (bidix.debugMode)
alert(original.substr(0,500)+"\n...");
// Locate the storeArea div's
var posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
bidix.upload.uploadRss(uploadParams,original,posDiv);
};
if(onlyIfDirty && !store.isDirty())
return;
clearMessage();
// save on localdisk ?
if (document.location.toString().substr(0,4) == "file") {
var path = document.location.toString();
var localPath = getLocalPath(path);
saveChanges();
}
// get original
var uploadParams = new Array(storeUrl,toFilename,uploadDir,backupDir,username,password);
var originalPath = document.location.toString();
// If url is a directory : add index.html
if (originalPath.charAt(originalPath.length-1) == "/")
originalPath = originalPath + "index.html";
var dest = config.macros.upload.destFile(storeUrl,toFilename,uploadDir);
var log = new bidix.UploadLog();
log.startUpload(storeUrl, dest, uploadDir, backupDir);
displayMessage(bidix.upload.messages.aboutToSaveOnHttpPost.format([dest]));
if (bidix.debugMode)
alert("about to execute Http - GET on "+originalPath);
var r = doHttp("GET",originalPath,null,null,username,password,callback,uploadParams,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
bidix.upload.uploadRss = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
if(status) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.rssSaved,bidix.dirname(url)+'/'+destfile);
bidix.upload.uploadMain(params[0],params[1],params[2]);
} else {
displayMessage(bidix.upload.messages.rssFailed);
}
};
// do uploadRss
if(config.options.chkGenerateAnRssFeed) {
var rssPath = uploadParams[1].substr(0,uploadParams[1].lastIndexOf(".")) + ".xml";
var rssUploadParams = new Array(uploadParams[0],rssPath,uploadParams[2],'',uploadParams[4],uploadParams[5]);
var rssString = generateRss();
// no UnicodeToUTF8 conversion needed when location is "file" !!!
if (document.location.toString().substr(0,4) != "file")
rssString = convertUnicodeToUTF8(rssString);
bidix.upload.httpUpload(rssUploadParams,rssString,callback,Array(uploadParams,original,posDiv));
} else {
bidix.upload.uploadMain(uploadParams,original,posDiv);
}
};
bidix.upload.uploadMain = function(uploadParams,original,posDiv)
{
var callback = function(status,params,responseText,url,xhr) {
var log = new bidix.UploadLog();
if(status) {
// if backupDir specified
if ((params[3]) && (responseText.indexOf("backupfile:") > -1)) {
var backupfile = responseText.substring(responseText.indexOf("backupfile:")+11,responseText.indexOf("\n", responseText.indexOf("backupfile:")));
displayMessage(bidix.upload.messages.backupSaved,bidix.dirname(url)+'/'+backupfile);
}
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,responseText.indexOf("\n", responseText.indexOf("destfile:")));
displayMessage(bidix.upload.messages.mainSaved,bidix.dirname(url)+'/'+destfile);
store.setDirty(false);
log.endUpload("ok");
} else {
alert(bidix.upload.messages.mainFailed);
displayMessage(bidix.upload.messages.mainFailed);
log.endUpload("failed");
}
};
// do uploadMain
var revised = bidix.upload.updateOriginal(original,posDiv);
bidix.upload.httpUpload(uploadParams,revised,callback,uploadParams);
};
bidix.upload.httpUpload = function(uploadParams,data,callback,params)
{
var localCallback = function(status,params,responseText,url,xhr) {
url = (url.indexOf("nocache=") < 0 ? url : url.substring(0,url.indexOf("nocache=")-1));
if (xhr.status == 404)
alert(bidix.upload.messages.storePhpNotFound.format([url]));
if ((bidix.debugMode) || (responseText.indexOf("Debug mode") >= 0 )) {
alert(responseText);
if (responseText.indexOf("Debug mode") >= 0 )
responseText = responseText.substring(responseText.indexOf("\n\n")+2);
} else if (responseText.charAt(0) != '0')
alert(responseText);
if (responseText.charAt(0) != '0')
status = null;
callback(status,params,responseText,url,xhr);
};
// do httpUpload
var boundary = "---------------------------"+"AaB03x";
var uploadFormName = "UploadPlugin";
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += uploadFormName +"\"\r\n\r\n";
sheader += "backupDir="+uploadParams[3] +
";user=" + uploadParams[4] +
";password=" + uploadParams[5] +
";uploaddir=" + uploadParams[2];
if (bidix.debugMode)
sheader += ";debug=1";
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+uploadParams[1]+"\"\r\n";
sheader += "Content-Type: text/html;charset=UTF-8" + "\r\n";
sheader += "Content-Length: " + data.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
data = sheader + data + strailer;
if (bidix.debugMode) alert("about to execute Http - POST on "+uploadParams[0]+"\n with \n"+data.substr(0,500)+ " ... ");
var r = doHttp("POST",uploadParams[0],data,"multipart/form-data; ;charset=UTF-8; boundary="+boundary,uploadParams[4],uploadParams[5],localCallback,params,null);
if (typeof r == "string")
displayMessage(r);
return r;
};
// same as Saving's updateOriginal but without convertUnicodeToUTF8 calls
bidix.upload.updateOriginal = function(original, posDiv)
{
if (!posDiv)
posDiv = locateStoreArea(original);
if((posDiv[0] == -1) || (posDiv[1] == -1)) {
alert(config.messages.invalidFileError.format([localPath]));
return;
}
var revised = original.substr(0,posDiv[0] + startSaveArea.length) + "\n" +
store.allTiddlersAsHtml() + "\n" +
original.substr(posDiv[1]);
var newSiteTitle = getPageTitle().htmlEncode();
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = updateMarkupBlock(revised,"PRE-HEAD","MarkupPreHead");
revised = updateMarkupBlock(revised,"POST-HEAD","MarkupPostHead");
revised = updateMarkupBlock(revised,"PRE-BODY","MarkupPreBody");
revised = updateMarkupBlock(revised,"POST-SCRIPT","MarkupPostBody");
return revised;
};
//
// UploadLog
//
// config.options.chkUploadLog :
// false : no logging
// true : logging
// config.options.txtUploadLogMaxLine :
// -1 : no limit
// 0 : no Log lines but UploadLog is still in place
// n : the last n lines are only kept
// NaN : no limit (-1)
bidix.UploadLog = function() {
if (!config.options.chkUploadLog)
return; // this.tiddler = null
this.tiddler = store.getTiddler("UploadLog");
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = "UploadLog";
this.tiddler.text = "| !date | !user | !location | !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |";
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
}
return this;
};
bidix.UploadLog.prototype.addText = function(text) {
if (!this.tiddler)
return;
// retrieve maxLine when we need it
var maxLine = parseInt(config.options.txtUploadLogMaxLine,10);
if (isNaN(maxLine))
maxLine = -1;
// add text
if (maxLine != 0)
this.tiddler.text = this.tiddler.text + text;
// Trunck to maxLine
if (maxLine >= 0) {
var textArray = this.tiddler.text.split('\n');
if (textArray.length > maxLine + 1)
textArray.splice(1,textArray.length-1-maxLine);
this.tiddler.text = textArray.join('\n');
}
// update tiddler fields
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
store.addTiddler(this.tiddler);
// refresh and notifiy for immediate update
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
};
bidix.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
if (!this.tiddler)
return;
var now = new Date();
var text = "\n| ";
var filename = bidix.basename(document.location.toString());
if (!filename) filename = '/';
text += now.formatString("0DD/0MM/YYYY 0hh:0mm:0ss") +" | ";
text += config.options.txtUserName + " | ";
text += "[["+filename+"|"+location + "]] |";
text += " [[" + bidix.basename(storeUrl) + "|" + storeUrl + "]] | ";
text += uploadDir + " | ";
text += "[[" + bidix.basename(toFilename) + " | " +toFilename + "]] | ";
text += backupDir + " |";
this.addText(text);
};
bidix.UploadLog.prototype.endUpload = function(status) {
if (!this.tiddler)
return;
this.addText(" "+status+" |");
};
//
// Utilities
//
bidix.checkPlugin = function(plugin, major, minor, revision) {
var ext = version.extensions[plugin];
if (!
(ext &&
((ext.major > major) ||
((ext.major == major) && (ext.minor > minor)) ||
((ext.major == major) && (ext.minor == minor) && (ext.revision >= revision))))) {
// write error in PluginManager
if (pluginInfo)
pluginInfo.log.push("Requires " + plugin + " " + major + "." + minor + "." + revision);
eval(plugin); // generate an error : "Error: ReferenceError: xxxx is not defined"
}
};
bidix.dirname = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
bidix.basename = function(filePath) {
if (!filePath)
return;
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
bidix.initOption = function(name,value) {
if (!config.options[name])
config.options[name] = value;
};
//
// Initializations
//
// require PasswordOptionPlugin 1.0.1 or better
bidix.checkPlugin("PasswordOptionPlugin", 1, 0, 1);
// styleSheet
setStylesheet('.txtUploadStoreUrl, .txtUploadBackupDir, .txtUploadDir {width: 22em;}',"uploadPluginStyles");
//optionsDesc
merge(config.optionsDesc,{
txtUploadStoreUrl: "Url of the UploadService script (default: store.php)",
txtUploadFilename: "Filename of the uploaded file (default: in index.html)",
txtUploadDir: "Relative Directory where to store the file (default: . (downloadService directory))",
txtUploadBackupDir: "Relative Directory where to backup the file. If empty no backup. (default: ''(empty))",
txtUploadUserName: "Upload Username",
pasUploadPassword: "Upload Password",
chkUploadLog: "do Logging in UploadLog (default: true)",
txtUploadLogMaxLine: "Maximum of lines in UploadLog (default: 10)"
});
// Options Initializations
bidix.initOption('txtUploadStoreUrl','');
bidix.initOption('txtUploadFilename','');
bidix.initOption('txtUploadDir','');
bidix.initOption('txtUploadBackupDir','');
bidix.initOption('txtUploadUserName','');
bidix.initOption('pasUploadPassword','');
bidix.initOption('chkUploadLog',true);
bidix.initOption('txtUploadLogMaxLine','10');
// Backstage
merge(config.tasks,{
uploadOptions: {text: "upload", tooltip: "Change UploadOptions and Upload", content: '<<uploadOptions>>'}
});
config.backstageTasks.push("uploadOptions");
//}}}