Wikisource:Domande tecniche/Archivio/2012

Archivio delle domande tecniche del 2012

Portale progetti   Progetto qualità   Domande tecniche   Archivio   2012 

Un bivio nel "progetto Phe" modifica

Dimostrato che il cuore del progetto Phe funziona (ossia: è possibile associare alla normale pagina di edit una schiera di dati contenenti il contenuto originale delle righe del djvu, e le loro coordinate; avuti questi due dati e qualche altro dato, è possibile evidenziare sull'immagine la riga di testo in cui sta il cursore nel box di edit) si pongono varie domande per "andare avanti".

  1. lo stesso trucco sarebbe comodo anche in visualizzazione, oltre che in edit?
  2. i dati devono per forza essere nascosti nel testo della pagina. Se fossero ficcati nel footer, invece che nel corpo del testo, potremmo evitare di cancellarli/riscriverli?
  3. per com'è organizzata la cosa adesso, i dati possono essere integrati nella pagina solo mediante caricamento ex novo della pagina con un bot sulle opere nuove. Vale la pena di modificare il comportamento del bot, e abilitarlo ad aggiungere i dati anche a opere e pagine già esistenti?
  4. forse c'è il modo di "rivoluzionare" la cosa, e di integrarei dati nello strato testo del file djvu, in modo che il normale procedimento di caricamento dello strato testo, attivo in tutti i progetti source per tutti i file djvu con strato testo, "tiri dentro" da sè anche i dati delle righe mappate. In pratica, tutto si risolverebbe con uno scaricamento e ricaricamento del file djvu, dopo averne manipolato lo strato testo. E' una strada da esplorare?

A voi. Intanto io ci penso portando a spasso il cagnone. :-) --Alex brollo (disc.) 12:11, 5 gen 2012 (CET)[rispondi]

Quiz Iliade modifica

In Indice:Iliade (Monti).djvu c'è una particolarità: occorre mettere in rigaIntestazione il primo verso della pagina. Ci sono due strategie:

  1. se le pagine vengono "passate" in sequenza, il numero del verso è incorporato come parametro dell'URL grazie al trucco di candalua;
  2. in caso contrario (caso più generale), occorrerebbe predisporre un algoritmino che determini, sulla base di eventuali template R, il numero del primo verso.

Ancora più in generale: sarebbe bello poter infilare in datiPagine, come "dato", il nome di una o più funzioni specifiche dell'opera. In questo caso, la funzione specifica sarebbe "acchiappa il numero del primo verso e infilalo nella RigaIntestazione".

PS: non vedo l'ora che Samuele "abbia i tastini", conto i giorni alla rovescia. --Alex brollo (disc.) 13:36, 12 gen 2012 (CET)[rispondi]

Risolto (via bot). --Alex brollo (disc.) 01:22, 16 gen 2012 (CET)[rispondi]

Gestire la selezione modifica

Sarebbe bello disporre di uno script generico che gestisca la selezione di testo, ossia: che "spedisca" la selezione del testo a una routine specifica, indicata in un parametro, e incorpori nel testo il risultato dell'elaborazione. Ci ho provato ma ho fallito, perso nella questione del differente "trattamento" della selezione in IE e negli altri browser, e in spiacevoli "perdite della selezione strada facendo".

In genere, sarebbe bello che tutti i tool di modifica testo fosero poi generalizzati, in modo da agire sull'intero testo (ossia, sulla selezione di tutto il testo se nulla è selezionato) o sulla sola selezione, se presente. Già in un paio di casi, utenti astuti mi hanno chiesto piccoli tool specifici per singole opere, e disporre di un affidabile strumento per la selezione amplierebbe molto le possibilità. --Alex brollo (disc.) 10:18, 16 gen 2012 (CET)[rispondi]

Il modo migliore per gestire la selezione è quello di creare una funzione apposita oppure un plugin JQuery.
In breve vantaggi e svantaggi:
  • Il plugin JQuery: ottimo se la selezione è riferita a più elementi (come un div e una textarea); inefficiente se deve essere utilizzato durante l'esecuzione di uno script
  • La funzione: ottima se viene utilizzata durante l'esecuzione di uno script in quanto permette di ottenere un parametro semplicemente richiamando la funziona; inefficiente se la selezione è riferita a più elementi.
Per la funzione io propongo questa, che finora non mi ha dato noie, è una funzione per ottenere la selezione in una textarea, per quanto riguarda i div c'è da fare altre robe:
function Selection(idarea)
		{
		  var textComponent = document.getElementById(idarea);
		  var selectedText;
		  // IE version
		  if (document.selection != undefined)
		  {
			textComponent.focus();
			var sel = document.selection.createRange();
			selectedText = sel.text;
		  }
		  // Mozilla version
		  else if (textComponent.selectionStart != undefined)
		  {
			var startPos = textComponent.selectionStart;
			var endPos = textComponent.selectionEnd;
			selectedText = textComponent.value.substring(startPos, endPos)
		  }
		  return selectedText;
		}
Samuele 18:42, 16 gen 2012 (CET)[rispondi]
Grazie! Ma io sarei molto più tranquillo se mi restituisse una lista di tre elementi stringa: il testo prima, la selezione, il testo dopo. La ricostruzione del testo complessivo sarebbe allora completamente indipendente dal browser. O sbaglio? Io scrivo qui la versione modificata per Mozilla, già settata sul box di edit per mia comodità.
function Selection()
		{
		  var textComponent = document.getElementById("wpTextbox1");
		  var selectedText;
                  var testoPrima;
                  var testoDopo;
		  // IE version
		  if (document.selection != undefined)
		  {
			textComponent.focus();
			var sel = document.selection.createRange();
			selectedText = sel.text;
                        // testoPrima= ?
                        // testoDopo= ?
		  }
		  // Mozilla version
		  else if (textComponent.selectionStart != undefined)
		  {
			var startPos = textComponent.selectionStart;
			var endPos = textComponent.selectionEnd;
			selectedText = textComponent.value.substring(startPos, endPos)
                        testoPrima=textComponent.value.substring(0,startPos);
                        testoDopo=textComponent.value.substring(endPos);
		  }
		  return [testoPrima,selectedText,testoDopo];
		}

Strano ma vero, questo fa quel che voglio (sempre che ci sia jQuery):

function selection(txtarea) {
  return [$(txtarea).val().substring(0,txtarea.selectionStart),
  $(txtarea).val().substring(txtarea.selectionStart,txtarea.selectionEnd),
  $(txtarea).val().substring(txtarea.selectionEnd)];  
}

chiamato (cambiando ev. [0] in [1] per nsPagina) con:

selezioni=selection($('textarea')[0])
Contrordine, siccome $('textarea')[0] non me lo ricorderò mai, adesso la routine selection si chiama con un semplice parametro numerico (0,1,2 nel nsPagina rispettivamente per header, corpo, footer). Interessante che restituisce cose diverse quando il focus non è nel textbox, quando è nel textbox ma non c'è selezione e quando c'è una selezione; in nessun caso dà errore; e in tutti i casi, il testo complessivo, dato alla lista il nome testi, si ricostruisce semplicemente con testo=testi.join(""), dopo aver manipolato a piacimento uno o più elementi della listina. A me piace. :-) --Alex brollo (disc.) 18:06, 17 gen 2012 (CET)[rispondi]

Ma tu completami la funzione precedente che son più tranquillo.... Grazie! --Alex brollo (disc.) 10:19, 17 gen 2012 (CET)[rispondi]

Dato che JQuery è la cosa per ora più compatibile che ci sia con IE (e che non ho trovato un sistema semplice per trovare il testo prima e il testo dopo, usando le specifiche MSDN, in IE), sarebbe interessante risolvere quel piccolo bug, quello che ti restituisce parametri strani quanto si seleziona in altre textarea. Molto probabilmente, usando if(documnet.selection) prima della funzione di selezione il tutto si risolve, ma prima di dirtelo con certezza faccio qualche test. Samuele 22:59, 17 gen 2012 (CET)[rispondi]
Dopo qualche test sono giunto a questa conclusione:
function selection(txtarea) {
if(txtarea.selectionStart){
if($(txtarea).val().substring(txtarea.selectionStart,txtarea.selectionEnd)==''){return 'non è una selezione'}else{
  return [$(txtarea).val().substring(0,txtarea.selectionStart),
  $(txtarea).val().substring(txtarea.selectionStart,txtarea.selectionEnd),
  $(txtarea).val().substring(txtarea.selectionEnd)];  }}
}

Controlla se nell'area di testo c'è il mouse poi controlla se l'area selezionata è vuota, ovvero se non ha selezionato niente, e poi restituisce il testo prima, durante e dopo, solo se c'è del testo selezionato. So che si può bloccare la funzione anche quando il mouse non è dentro l'area di testo su cui si vuole agire, ma l'ora è tarda e non mi viene in mente nulla di spiccio (come questo testo che è poco esplicativo, si capisce meglio dal codice), a "domani". Samuele 23:24, 17 gen 2012 (CET)[rispondi]

(cosa combinano ai piani alti? la risposta dei server è lumachesca)
La mia versione personale di selection è al momento questa:
function selection(area) { 
  if (area==undefined) { if (wgCanonicalNamespace=="Pagina") area=1; else area=0; }
  txtarea= $('textarea')[area];
  return [$(txtarea).val().substring(0,txtarea.selectionStart),
  $(txtarea).val().substring(txtarea.selectionStart,txtarea.selectionEnd),
  $(txtarea).val().substring(txtarea.selectionEnd)];  
}
Non mi interessa a questo punto che ci sia, o non ci sia, testo selezionato; alle volte può interessarmi moltissimo "sezionare" con il puntatore in due il testo (immaginate, ad es., per aggiungere al "testo prima" e al "testo dopo" le section); la novità invece è che per default selection agisce su $('textarea')[0] nelle pagine "normali" e invece su $('textarea')[1] nel nsPagina, il che permette di evitare di specificare il parametro area nel 99% dei casi (ma quando serve, è facilissimo farlo). Se poi il focus non è nella textarea, vuol dire che mi interessa il testo complessivo, ed è immediato ricostruirlo con .join(""); insomma, sono soddisfatto fino a prova contraria (e anche Barbaforcuta pare soddisfatto... ;-) ) --Alex brollo (disc.) 15:52, 18 gen 2012 (CET)[rispondi]
Suppongo che la lentezza dei server wiki sia dovuta alla protesta in atto e mi sta rallentando moltissimo qui su source. Hai ragione, può tornare molto utile non selezionare nulla, anche solo per effettuare uno splittaggio del testo, non ci avevo pensato e avevo capito male la richiesta (a letto prima questa sera). Sto pensando ad uno script per ottenere il numero del primo verso in qualsiasi frangente (penso ad uno split e poi al match del template R, oppure se non c'è il template R, all'utilizzo del magheggio che permette di avere il numero dei versi automatici) ma i server non mi aiutano, spero che domani la situazione migliori. Samuele 19:02, 18 gen 2012 (CET)[rispondi]
Ho testato l'idea "split" per la divisione in colonne di una pagina, magico: cursore sul punto dove va AltraColonna, click, aggiunta di AltraColonna nella posizione del cursore e di Colonna in testa. Si aprono interessanti prospettive di micro-script a bizzeffe.... :-) Per un'altra applicazione dai un occhio a Utente:Barbaforcuta/vector.js, script "sonetto.js" che sta usando per Priapea con gran soddisfazione. Alex brollo (disc.) 00:26, 19 gen 2012 (CET)[rispondi]

Pulsantini liberi modifica

Aggiungere pulsantini alle varie sezioni della toolbar è facilissimo, e soprattutto possono essere tastini liberi, collegati a funzioni js qualsiasi, e non alle sole funzioni standard di inserisci o encapsulate. Sto scoprendo l'acqua calda (in questo caso, faccio altro) oppure documento? Fra l'altro, per chi preferisce una scritta-link piuttosto che un pulsantino, nello stesso modo si possono aggiungere alle varie sezioni anche scritte-link. --Alex brollo (disc.) 14:50, 17 gen 2012 (CET)[rispondi]

SAL e Bibbia modifica

Sembra che correggendo o rileggendo (pagina seguente) la Bibbia sparisca il SAL. --Luigi62 (disc.) 10:50, 17 gen 2012 (CET)[rispondi]

Candalua sta rivedendo radicalmente il SAL, se tarda a rispondere segnalaglielo direttamente! --Alex brollo (disc.) 11:06, 17 gen 2012 (CET)[rispondi]

Il nuovo SAL per funzionare funziona, ma ho visto che quando gli script sono lenti a caricare, se si clicca "Mostra cambiamenti" prima del completo caricamento non scatta il SAL, credo perché le nostre funzioni non sono state ancora agganciate ai bottoni. Forse posso nascondere i bottoni per default tramite css, e mostrarli solo sul document.ready().

P.S. Occhio che sulle pagine bibliche avete roba tipo "Uncaught ReferenceError: bibbia2 is not defined", il che non è bello. Candalùa (disc.) 12:32, 17 gen 2012 (CET)[rispondi]

Controllo. Strano perchè bibbia2 dovrebbe essere lo script per la gestione "al volo" selle section versi. Vedo! --Alex brollo (disc.) 13:46, 17 gen 2012 (CET)[rispondi]
che è sta roba? Candalùa (disc.) 14:45, 17 gen 2012 (CET)[rispondi]
bibbia1 e bibbia2 sono due script per creare e distruggere delle section attorno ai singoli versetti. Te ne avevo parlato, tanto tempo fa, con la raccomandazione di attivarli DOPO aver caricato il SAL (altrimenti si caricano alcune decine di SAL...). Stavano nel mio vector, e non "vedevo" il messaggio di errore che hai segnalato. Adesso: o si eliminano insieme alle loro chiamate, o si verifica che funzionino con il nuovo SAL. --Alex brollo (disc.) 14:55, 17 gen 2012 (CET)[rispondi]
Sì, ma ci hai incollato dentro pure i "==" dei titoletti... Candalùa (disc.) 15:35, 17 gen 2012 (CET)[rispondi]
Eccosassarammai. ;-P
Seriamente: se son nati problemi, mi spiace; evidentemente ho rifatto lo stesso errore, ossia: avevo lasciato attive le due routine nel mio vector, e gli eventuali errori in common venivano "rullati" e quindi non comparivano in console. Ho l'abitudine di controllare sempre se ci sono errori nella console js, ma questo insegna che non basta affatto. :-( --Alex brollo (disc.) 17:47, 17 gen 2012 (CET)[rispondi]

movimenti gadget modifica

Candalua, vedo tue manipolazioni dei gadget e ho intercettato a suo tempo messaggi in exoterichese stretto, che hanno a che fare con l'ottimizzazione delle chiamate js. Siccome il mio duplice discovering the wheel (come controllare la creazione di nuovi pulsanti; come maneggiare la selezione testo for dummies) potrebbe indurmi a creare una miriade di nuovi micro-tool, ci daresti qualche dritta su come fare le cose per bene? --Alex brollo (disc.) 18:01, 17 gen 2012 (CET)[rispondi]

ho soltanto tolto "http://" da tutti gli url per renderli protocol-indipendent: questo perché da qualche tempo esiste la versione "sicura" (cioè a connessione crittografata) dei progetti wiki, visitabile usando https:it.wikisource.org e simili. Ma perché sia la protezione sia davvero sicura, occorre che tutte le risorse (immagini, script...) siano caricate sempre dalla versione sicura. Omettendo il protocollo, ogni risorsa viene caricata usando il protocollo che si è immesso nella barra indirizzo del browser. Candalùa (disc.) 19:34, 17 gen 2012 (CET)[rispondi]

Aggiungere html al toolbox modifica

Ecco qua:

$("<span>test</span>").appendTo($("div.toolbar.section.section-main"))

Ovvio che al codice test va sostituito qualcosa di utile (es. il link che chiama una funzione javascript) e che se si vuole aggiungere l'oggetto a uno dei gruppi di testini occorre adattare la div, ma il principio è quello che conta. :-)

Codice tipo per aggiungere un tastino, es. questo: File:Button_smiley_face_grin.png, occorre usare il suo url completo: http://upload.wikimedia.org/wikipedia/commons/f/f5/Button_smiley_face_grin.png e per collegarlo es. alla funzione cleanup() (il nostro postOCR) il codice diventa:

$('<a href="javascript:cleanup()"><img src="http://upload.wikimedia.org/wikipedia/commons/f/f5/Button_smiley_face_grin.png" /></a>').appendTo($("div.toolbar.section.section-main"))

  --Alex brollo (disc.) 01:09, 20 gen 2012 (CET)[rispondi]

Togliere html al toolbox modifica

Altrettanto semplice "fare pulizia" nel toolbox intervenendo con l'accetta e lasciando il minimo.

Questo uno screenshot di una "pulizia" di prova del toolbox, via console js:

 
Dopo la grande pulizia....


--Alex brollo (disc.) 08:22, 20 gen 2012 (CET)[rispondi]

Il risultato è molto pulito. L'unico mio quesito è: si può agire ad un livello più alto nel codice, in modo da non far nemmeno apparire gli elementi (e non cancellarli dopo il caricamento della pagine, che rende più lento il caricamento)? Samuele 21:16, 21 gen 2012 (CET)[rispondi]
Ottima domanda. Io non ho notato ritardi (forse un secondo) ma sarebbe assai meglio. Se ce la fai, sarebbe estremamente interessante esplorare la questione, e anche approfondire due o tre aspetti che sono documentati malissimo:
  1. come sfruttare appieno i parametri assegnabili ai pulsandi (esiste una possibilità callback per chiamare una funzione qualsiasi che DOBBIAMO avere ma non c'è alcun esempio)
  2. come costruire i nostri "booklet", che sono quello che compare nel menu "Aiuto"
  3. come custruire gli oggetti "select", che sono i menu a discesa tipo l'inutilissimo "Intestazioni" (in alternativa potremmo riesumare i vecchi menu a tendina e montarli dentro il toolbox alla bell'e meglio; come sono su pedia sull'argomento? Cos'ha combinato Jalo con il monobook, l'ha forse adattato a vector?)
Se acchiappiamo l'oggetto select, si aprono interessanti prospettive :-)
  Fatto Acchiappato. Vedi il mio vector.js. --Alex brollo bis (disc.) 01:38, 24 gen 2012 (CET)[rispondi]
Io ho provato a esplorare, ma mi sono perso subito, e quindi ho preferito accettare (ossia, usare una buona accetta) la toolbox costruita di default. --Alex brollo (disc.) 12:20, 23 gen 2012 (CET)[rispondi]
La migliore doc che ho trovato è qui: http://www.mediawiki.org/wiki/Extension:WikiEditor/Toolbar_customization --Alex brollo (disc.) 13:15, 23 gen 2012 (CET)[rispondi]

Note con asterisco modifica

Salve a tutti. Mi potete spiegare come si mettono gli asterischi al posto dei numeretti per le note? La cosa diventa importante quando uno stesso testo usa i numeri per indicare un certo tipo di note (per esempio quelle dell'autore) e gli asterischi per un altro tipo (per esempio quelle del traduttore), come succede qui. Ho cercato ovunque, ma non riesco a venirne a capo. Grazie! --αStar msg 20:51, 21 gen 2012 (CET)[rispondi]

Io creerei un template ad hoc, così che possa essere utilizzato anche in altre evenienze (un semplice anchor). Ma non so se esiste un modo per aggirare la creazione di un nuovo template. I senior sapranno illuminare la via. Samuele 21:11, 21 gen 2012 (CET)[rispondi]
Il problema è che se si esce da quanto previsto dall'estensione Cite ci si mette in un vero vespaio. Io proporrei di sfruttare a fondo le possibilità dell'estensione (che permette di gestire diversi tipi di note, che poi vengono visualizzate in elenchi separati: questo possibilità, quando serve, serve veramente) ma di non pretendere una visualizzazione "fuori standard" (che non sia previsto dall'estensione) del simbolo della nota . Ricostruire ex novo tutto il meccanismo delle note è veramente complesso, io ci rinuncerei, ma se qualcuno riesce a farlo in modo semplice per l'utente finale, ben venga! . --Alex brollo (disc.) 12:12, 23 gen 2012 (CET)[rispondi]
Soluzione easy: usiamo sempre il <ref></ref> per le note, ma nel testo della nota riportiamo il numeretto originale o l'asterisco. E all'inizio della sezione Note trascludiamo il pezzetto di pag. 10 che spiega il significato dell'asterisco, così è chiaro a chiunque. Candalùa (disc.) 13:25, 23 gen 2012 (CET)[rispondi]
  •   Guardata la nota a pag 10, mi viene in mente che in cleanup() dobbiamo far aggiungere uno spazio dopo apostrofo nei casi in cui lo spazio manca e la lettera prima dell'apostrofo è una vocale. Questo:
.replace(/([eaiuo]’)([\w])/gi, "$1 $2")

va bene? Qualcuno la scrive meglio? --Alex brollo (disc.) 14:32, 23 gen 2012 (CET)[rispondi]

"Oggetti configurazionali" modifica

Le difficoltà nella gestione della toolbox di Vector sta dell'uso di "oggetti configurazionali", come sono tastini, booklet ecc. Con molta fatica, da qualche giorno sono andato oltre al copiaincolla alla chediomelamandibuona, e mi pare di cominciare a capire come funzionano; tuttavia mi pare di aer capito che gli sviluppatori hanno fatto una strana scelta: invece di definire gli oggetti indipendentemente, e creare una semplicissima routine generale che gestisse una lista di oggetti, hanno infilato la definizione degli oggetti all'interno del codice che li genera, rendendo il tutto estremamente rigido. Se ci fosse una routine di generazione da una parte, e una serie di oggetti in una lista separata, sarebbe ultra-semplice aggiungerne, toglierne, modificarli o clonarne lo scheletro modificadone i contenuti. A Samuele e a Candalua chiedo: possiamo intercettare lo script che definisce + costruisce, e sostituirlo con uno script che costruisce, e in una lista che definisce, con un po' di reverse engineering? O c'è, secondo voi, un valido motivo per cui gli sviluppatori - ammesso e non concesso che io abbia capito bene - hanno agito come hanno agito? --Alex brollo (disc.) 23:33, 23 gen 2012 (CET)[rispondi]

Vittoria. Hurra. (lo dico con sobrietà visto che adesso va di moda... )
Ho il possesso pressochè completo dei meccanismi di creazione canonica degli oggetti del toolbox. In Utente:Alex brollo bis/vector.js gira uno script che crea un nuovo menu a discesa canonico nella toolbox, completamente configurabile, e che è stato spezzato (come volevo) in due parti: uno script che costruisce, brevissimo, e un oggetto che definisce, chiamato menu1. Questo significa che si può modificare l'oggetto lasciando identico lo script; e probabilmente con poca fatica si può generalizzare lo script in modo che costruisca qualsiasi oggetto, o anche una lista di oggetti.
A questo punto non resta che immaginare il contenuto più utile del primo menu a discesa; io partirei raccogliendo dentro questo menu i nostri template base, Autore, Intestazione nelle sue varietà, IncludiIntestazione, Infotesto. Incoraggio i geek a copiarsi questo codice:
// Aggiunge un clone del menu a discesa Intestazione. Hurra.
// l'oggetto menu1
menu1={'section': 'advanced',      
'group': 'format',      
'tools': {'heading': {'label': 'Intestazione','type': 'select','list': 
{'heading-2' : {'label': 'Livello 1','action': {'type': 'encapsulate','options': {'pre': '== ','peri': 'Titolo di sezione','post': ' ==','regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,'regexReplace': "\$1==\$3==\$4",'ownline': true}}},
'heading-3' : {'label': 'Livello 2','action': {'type': 'encapsulate','options': {'pre': '=== ','peri': 'Titolo di sezione','post': ' ===','regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,'regexReplace': "\$1===\$3===\$4",'ownline': true}}},
'heading-4' : {'label': 'Livello 3','action': {'type': 'encapsulate','options': {'pre': '==== ','peri': 'Titolo di sezione','post': ' ====','regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,'regexReplace': "\$1====\$3====\$4",'ownline': true}}},
'heading-5' : {'label': 'Livello 4','action': {'type': 'encapsulate','options': {'pre': '===== ','peri': 'Titolo di sezione','post': ' =====','regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,'regexReplace': "\$1=====\$3=====\$4",'ownline': true}}}}}}      
          }
// lo script che attiva l'oggetto  menu1
if ( typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined' ) {
  $j( function() {
       $j( '#wpTextbox1' ).wikiEditor( 'addToToolbar',menu1 );
      }
      );
  }

e a pasticciare. --Alex brollo bis (disc.) 10:23, 24 gen 2012 (CET)[rispondi]

Esportazione PDF modifica

Scaricatevi Abramo Lincoln come PDF e andate a pagina 4 (del PDF). Vi trovate una bella riga a carattere diverso. È generata da una parola che va a capo e messa tra <noinclude></noinclude>, lasciando fuori lo spazio che si viene così a trovare ad inizio riga. Lo stesso succede anche se si usa il template {{Pt}}. Le soluzioni che ho pensato sono due: includere lo spazio tra i marcatori, o utilizzare obbligatoriamente <noinclude></noinclude> nella pagina precedente e {{Pt}} nella seguente. Prima di intervenire su centinaia di pagine, qualcuno ha idee migliori? --Luigi62 (disc.) 11:44, 24 gen 2012 (CET)[rispondi]

Mi ero accorto da tempo che era meglio noincludere sulla pagina precedente, e personalmente lo faccio sistematicamente, ma mi meraviglia che l'errore sia generato anche da un doppio Pt. Vado a vedere. --Alex brollo bis (disc.) 23:03, 24 gen 2012 (CET)[rispondi]
Ho capito il problema con Pt.
Direi che non c'è soluzione nel caso che sia stato usato scorrettamente noinclude sulla pagina successiva (non resta che "tirar dentro" nel noinclude lo spazio bianco con una passata di bot, le pagine da modificare potrebbero essere selezionate dal dump xml, sono arrugginito ma dovrei potercela fare); nel caso invece che Pt sia stato usato come {{Pt|fan-|fanciullo}} - {{Pt|ciullo|}} allora forse si potrebbe truccare il template, facendogli produrre comunque (se il secondo parametro è vuoto) "qualcosa", un carattere unicode invisibile o quasi invisibile ma diverso dallo spazio. Occorre modificare l'aiuto del template incoraggiando tutti a usarlo in modo corretto e spargere subito la voce. --Alex brollo bis (disc.) 23:17, 24 gen 2012 (CET)[rispondi]
Ho provato la tua soluzione per il Pt, e sembra funzionare! Ho usato lo w:Zero-width space che fa proprio al caso nostro. Per il caso del noinclude, direi: tira dentro lo spazio bianco, la regex è semplicissima ma la lascio come utile esercizio al lettore cioè a te :-) Candalùa (disc.) 20:18, 25 gen 2012 (CET)[rispondi]
Passato il bot sul migliaio di pagine che avevano uno spazio dopo la chiusura di noinclude; dovremmo essere a posto; occorrerebbe aggiungere un edit automatico di sistemazione in qualche routine che scatta al momento dell'upload delle pagine Pagina. --Alex brollo (disc.) 14:28, 29 gen 2012 (CET)[rispondi]

Toolbox draggabile modifica

Caricato in vector.js questo plugin jQuery: http://fromvega.com/code/easydrag/jquery.easydrag.handler.beta2.js

questa riga di codice:

$("#wikiEditor-ui-toolbar").easydrag().attr("style","border:1px solid black")

fa una bella cosina. Rende di colpo draggabile la toolbox; e semplicemente sostituendo (come nel mio vector.js) position absolute con position fixed, la toolbox è sì draggabile, ma non scrolla sullo schermo. Direi indispensabile per avere la toolbox sempre disponibile nel nsPagina. Attivo in Utente:Alex brollo bis/vector.js il set completo di modifiche della toolbox (semplificazione, aggiunta di un nuovo menu a discesa, attivazione draggabilità).

PS: ho dei dubbi sulla licenza del plugin. Che ne dite voi? E' usabile qui? --Alex brollo bis (disc.) 14:01, 25 gen 2012 (CET)[rispondi]

Su suggerimento di Samuele, ho testato il metodo ".draggable()" già montato sul nostro jQuery interno. E' un po' più complesso, il primo tentativo è miseramente fallito (probabilmente perchè ho sostituito la classe dell'elemento da rendere draggabile, invece che aggiungere un'altra classe a quella esistente). Lascio per ora la questione ai geek veri, è ora di fare un po' di sana, semplice rilettura :-) --Alex brollo (disc.) 18:44, 25 gen 2012 (CET)[rispondi]
Pasticciando un po', per gioco, ho riunito i miei tattoo e anche gli "editButtons" nel toolbox (funzionano); stasera cerco di renderlo draggable come dice Samuele (altrimenti ripiego su easydrag che è più easy), e per quanto mi riguarda il mio toolbox sarà perfetto :-) --193.43.176.29 19:02, 25 gen 2012 (CET)[rispondi]
Dai un'occhiata al mio vector, ho reso draggabile il div che contiene il menu select. Forse sarà utile creare un set di strumenti attivabili dalle preferenze che sono automaticamente draggabili, senza che l'utente debba aggiungere scritte nel suo vector.
Ho dovuto rendere draggabile tutto il div, in quanto l'event drag veniva fireato (firato, fatto partire) solo al click fuori dal .label, che occupava quasi tutto il select, tranne che pochi pixel. Se viene messo a disposizione un set di tool, si può creare la sezione personalizzata per wikisource nel wikieditor, in modo da renderla draggabile (ditemi se vi piace fixed o absolute); Samuele 20:13, 25 gen 2012 (CET)[rispondi]
Sembra arabo, ma dovrebbe essere italiano. :-)
Scrivi un prototipo, che poi io copioincollo.... hai trovato il modo di "intercettare" wikieditor prima che costruisca la toolbox? Se tu trovassi il modo, mi piacerebbe smembrare lo script come dicevamo (cioè "estrarre gli oggetti" e gestirli separatamente dallo script che li monta).
Fra absolute e fixed io preferisco fixed; ma potrebbe essere una preferenza personale. --Alex brollo (disc.) 14:49, 26 gen 2012 (CET)[rispondi]

Problemi con Pt modifica

Guardate questa pagina. Avevo usato Pt per inserire l'immagine solo in ns0. Non riesco a capire da cosa dipenda. --Luigi62 (disc.) 10:04, 26 gen 2012 (CET)[rispondi]

Colpa mia, avevo fatto una modifichina a Pt che credevo innocua e invece... ora è a posto Candalùa (disc.) 10:52, 26 gen 2012 (CET)[rispondi]

Oddio! Sono capitato su questa pagina: http://www.mediawiki.org/wiki/ResourceLoader e da qui a questa: http://www.mediawiki.org/wiki/ResourceLoader/Default_modules.

Bella la felice condizione in cui si ha solo una vaga idea della propria ignoranza.... Traumatizzante precipitare nella consapevolezza di come le cose stanno veramente.

Penso che mi prenderò una lunga pausa digestivo-meditativa prima di riprovare a pasticciare. --Alex brollo (disc.) 08:36, 27 gen 2012 (CET)[rispondi]

Per semplificare un po' le cose, ti consiglio di iniziare da questi plugin JQuery, che ci torneranno molto, ma molto utili (la maggior parte li conoscevo già, ma non sapevo fossero già installati in wiki, buono a sapersi). Devo finire l'Esodo, ma credo che mi perderò nella foresta di script. Samuele 22:54, 27 gen 2012 (CET)[rispondi]
Faccio fatica a immaginare in concreto le rivoluzioni possibili (anche se le sento "a naso"). Tuttavia, sono veramente contento di poter "lasciare perdere", per un po'; so che il tutto è in buone mani. C'è Zibaldone, che è pura fatica, ec'è Bibbia, in cui c'è anche lo stimolo di qualche piccola automazione in più; mi studierò jQuery UI e farò qualcosa di minimo, tanto per non dimenticare tutto... --Alex brollo (disc.) 14:25, 29 gen 2012 (CET)[rispondi]
C'è un grosso problema con il plugin jQuery UI; ne parlo sotto in "Rompicapo". Bisogna risolverlo altrimenti tutti i tool che si basano sul plugin potrebbero mostrare malfunzionamenti: mi offro come "cavia del bug". --Alex brollo (disc.) 11:07, 3 feb 2012 (CET)[rispondi]

Elenchi numerati su più pagine modifica

Sto riportando il testo di una tesi che contiene un elenco numerato che si protrae per più pagine. Quando lo trascrivo sull'editor, tuttavia, l'elenco riparte sempre da 1 ogni volta che passo alla pagina successiva. Come posso ovviare a questo inconveniente?

Grazie. Flesciamento

Semplice: usa i numeri normali invece dei "#". Candalùa (disc.) 19:07, 30 gen 2012 (CET)[rispondi]
@Candalua: mi rifiuto di prendere questa affermazione come una risposta, i motivi sono ovvi e non c'è bisogno che li spieghi. Flesciamento 19:40, 30 gen 2012 (CET)[rispondi]
Ehm... la mia era una risposta seria. L'elenco con "#" è utile se in futuro dovrai aggiungere/togliere voci all'elenco, perché così rimangono belle ordinate. Ma trattandosi di un testo che resterà immutato, la cosa che consigliamo di solito è di usare i numeri tout court. Non c'è nessun motivo di usare # Candalùa (disc.) 20:05, 30 gen 2012 (CET)[rispondi]
Ok, ho fatto come mi consigli e in effetti mi sembra la soluzione più semplice. Per ovviare all'indentazione ho fatto: <p style='text-indent:-16px; padding-left:30px;'>...</p> Flesciamento 20:39, 30 gen 2012 (CET)[rispondi]
Oppure puoi farlo con dei ":" a inizio riga. Candalùa (disc.) 20:53, 30 gen 2012 (CET)[rispondi]
Magnifico, un altro utente che non teme il codice html. Bisognerebbe aggiungere urgentemente un babel per i liguaggi informatici. Detto questo, attenzione con i tag p; sono uno degli aspetti più insidiosi del codice wiki, perchè il markup li gestisce automaticamente, e talora in maniera fastidiosa e anti-intuitiva. --Alex brollo (disc.) 11:05, 3 feb 2012 (CET)[rispondi]

Rompicapo modifica

Ho due utenze, questa principale sysop e un alias Utente:Alex brollo bis che uso per "mettermi nei panni" di utenti non-sysop. Ho delle routine ben funzionanti nel vector.js dell'alias, che utilizzano jQuery UI. Le identiche routine (ho copiato tal quale l'intero vector.js) NON funzionano sull'utenza principale. Ho cancellato preferenze, vector.css, cache del browser, tutto: niente da fare. La cosa si riproduce identica sotto Chrome e sotto Firefox. Chi mi dà una spiegazione? Mi secca non poter accedere a jQuery UI, e sono anche un po' preoccupato. --Alex brollo (disc.) 08:59, 3 feb 2012 (CET)[rispondi]

Messaggio di orrore: "Uncaught TypeError: Object [object Object] has no method 'draggable' (stesso messaggio quando probo a utilizzare un metodo dialog: ci ho perso un paio d'ore). --Alex brollo (disc.) 11:09, 3 feb 2012 (CET)[rispondi]
Quando hai fatto il test con dialog, eri in modifica della pagina oppure eri in modalità di visualizzazione? Samuele 19:32, 3 feb 2012 (CET)[rispondi]
In modifica. Al momento, sono concentrato sui tool di modifica. Ma di certo ero in modifica tutte le millanta volte che ho provato draggable(). :-( Ho perfino pensato a virus, o spyware, o cose del genere.... ma cambiando pc, e anche entrando in Chrome con Google aperto da un altro utente, non cambia assolutamente nulla. C'è una differenza incomprensibile di comportamento fra i due account; l'ultima possibilità che mi resta è di chiedere a Edo che mi levi temporaneamente il flag di sysop. Ma tu Samuele adesso sei sysop, e con te gira... --Alex brollo (disc.) 22:56, 3 feb 2012 (CET)[rispondi]
Posso provare a fare una modifica al tuo vector? Samuele 22:58, 3 feb 2012 (CET)[rispondi]
Ho ripristinato il vecchio vector, in questo momento; ma certo, fai pure, al massimo invocherò il nostro santo (San Rollback):-) --Alex brollo (disc.) 23:33, 3 feb 2012 (CET)[rispondi]

Limiti per lo #switch modifica

Ho discusso i limiti di grandezza per gli #switch in lista wikitech. Suggerimento pratico: non oltrepassare i 2000 elementi. Buono a sapersi, mi stavo avvicinando al limite; tuttavia vedo che per grandissimi array #switch è enormemente più efficente che la transclusione selettiva, quindi: se ci sono più di 2000 elementi da switchare, è opportuno dividere lo #switch in pezzi con qualche brutto trucco (es utilizzando il template {{Ci}} per linkare i sotto-switch basandosi sull'iniziale). La tecnica dei sotto-switch è già utilizzata dal pauroso template {{BibLink}}

Con #switch si possono simulare sia array associativi (basati su una relazione 1:1) sia verifiche di appartenenza a sottoinsiemi (relazione molti:uno) e quindi è uno strumento eccezionale. --Alex brollo (disc.) 09:30, 6 feb 2012 (CET)[rispondi]

Tempo fa su Pedia ne ho creato uno di oltre 8000 elementi, ma non sembra dia grandi problemi, anche se per la verità non è più molto usato. --Luigi62 (disc.) 13:19, 6 feb 2012 (CET)[rispondi]
Mi sono lamentato, in lista, sull'algoritmo; avrei giurato che l'analisi fosse fatta con ricerca di stringhe all'interno del codice switch (e allora non ci sarebbe stato il minimo problema) e invece sembra che la struttura venga elaborata "a nodi", per cui sono noti casi di switch molto grandi (>30000 elementi) che hanno messo i server in grossa difficoltà. Interessante il dato che 8000 elementi giravano senza grossi problemi; il limite di 2000 elementi quindi è "sicuro" con ampio margine. --Alex brollo (disc.) 13:56, 6 feb 2012 (CET)[rispondi]
Mi viene adesso in mente che un colpo di #switch ben assestato potrebbe restituire una breve lista di elementi che condividono un certo valore chiave; il tutto "in un colpo solo" (domanda classica: "chi è nato il 25 aprile") . Insomma, l'altro lato della relazione uno a molti. Bisogna che ci rifletta.... --Alex brollo (disc.) 16:51, 7 feb 2012 (CET)[rispondi]

Statistiche SAL modifica

Non ricordo se l'ho già chiesto oppure no, ma mi chiedevo se c'è da qualche parte (o è rintracciabile) qualche statistica per il SAL lato utente: nel senso, sapere se uno prevalentemente, formatta, rilegge, ecc. Credo che alla lunga sarebbe interessante vedere come la comunità lavora... --Aubrey McFato 13:51, 6 feb 2012 (CET)[rispondi]

Non lo so; comunque è una cosa che non farei via bot, bisognerebbe accedere direttamente alle tabelle del database; quindi, se una statistica del genere non esiste (si tratterebbe in sostanza di sezionare lo "spicchio" di attività nsPagina in quattro sotto-spicchi) bisognerebbe, a mio parere, suggerire la cosa a chi ha prodotto l'applicazione per produrre la "torta dei contributi utente per namespace" citata altrove, che già costituisce, IMHO, un eccellente "profilo" dell'attività utente. Bellissimo sarebbe anche poter incorporare dinamicamente quella "torta" nella pagina utente. --Alex brollo (disc.) 14:03, 6 feb 2012 (CET)[rispondi]
Un utente molto "riletto" verrebbe la sua fetta di 75% ridursi in fretta, sintomo che ha scelto i testi giusti. Interessante sarebbe il numero di pagine rilette e attribuire delle "medaglie" al superamento delle 100 500 1000... pagine rilette. Chissà che non attiri grandi rilettori di cui non c'è né mai abbastanza. --Luigi62 (disc.) 14:14, 6 feb 2012 (CET)[rispondi]
La tua osservazione mi fa pensare che immaginiamo statistiche diverse. Io immaginavo un conteggio dei "passaggi di SAL" per utente (che non varia con il contributo di altri), tu invece immagini una cosa diversa, la fotografia del SAL corrente dell'insieme delle pagine a cui un utente ha contribuito (che ovviamente varia con il contributo di altri). Conclusione: l'argomento si presta a fraintendimenti, occorrerebbe precisare bene cosa si vuole.... --Alex brollo (disc.) 14:25, 6 feb 2012 (CET)[rispondi]

Template ValoriMultipli modifica

Spero che possa essere utile il nuovo template "generale" {{ValoriMultipli}}. Fa una cosa molto semplice: uno alla volta, passa i valori ricevuti come parametro 1 (formato valore1/valore2/valore3...) al template ricevuto come parametro 2. Potrebbe essere quindi usato in vari casi sia quando i valori sono senz'altro multipli, sia quando non si è ancora deciso se un certo dato conriene un solo valore o valori multipli. Max valori, al momento, 5 espandibile fino al limite invalicabile di 25 e lunghezza totale della stringa max 254; nessun valore deve contenere internamente un carattere /. --Alex brollo (disc.) 09:37, 7 feb 2012 (CET)[rispondi]

Ciaula scopre la luna modifica

... e Alex scopre Ajax. :-)

var html = $.ajax({
    url:"http://it.wikisource.org/w/api.php?action=query&prop=revisions&rvprop=content&format=xml&titles=User:Samuele_Papa",
    async: false
}).responseText;

Grazie Samuele del fantastico tutorial breve... ;-) --Alex brollo (disc.) 00:53, 12 feb 2012 (CET)[rispondi]

Beccato il codice per bottoni callback modifica

/* test capit() */
if ( typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined' ) {$j( function() {
    $j( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
      'section': 'advanced',
      'group': 'format',
      'tools': {'section': {
          label: 'capitalize',
          type: 'button',
          icon: 'http://upload.wikimedia.org/wikipedia/commons/thumb/c/c3/Button_capitalize.svg/23px-Button_capitalize.svg.png',
          action: {type: 'callback',
            execute: function(context){capit();} }
 
}}});});}

Il codice critico è quello nella riga action e nella riga execute. Con questo codice un bottone della toolbar, agganciato a una qualsiasi funzione definita internamente oppure richiamata dall'ambiente esterno (un questo caso, la funzione capit() ), viene aggiunto in modo "canonico"ad una delle sezioni e dei gruppi di pulsanti della toolbar. E' un bel po' che ci stavo dietro. Se lo sapevate già, vi uccido. :-P --Alex brollo bis (disc.) 22:57, 12 feb 2012 (CET)[rispondi]

Rivoluzione in vista modifica

Sarebbe bello poter visualizzare con un click il codice wiki di una pagina, senza uscire dalla modalità view, vero? Io non lo posso fare, ma Utente:Alex brollo bis sì.

Tale utente afferma che è in grado di caricare il codice wiki come una stringa nella pagina in una variabile js, realizzando quindi "'o miracolo' della coesisenza codicewiki/rendering html nella stessa pagina in normale modalità view, e non in anteprima. Penso che gli ruberò il codice :-) --Alex brollo (disc.) 09:13, 13 feb 2012 (CET)[rispondi]

Trasformato in gadget: showWikiCode, request for comment. --Alex brollo (disc.) 09:36, 13 feb 2012 (CET)[rispondi]

Sui dati modifica

Reso disponibile il codice wiki di una pagina in modalità view, altrettanto interessante e utile è disporre del suo rendering html in fase di edit. Esempio: avendo il rendering di una pagina ns0 transclusa in fase di edit, il dato SAL delle pagine transcluse è facilmente disponibile, come pure la presenza di "link rossi". Prossima tappa. :-)

Il fatto di leggere dinamicamente altre pagine in fase di edit consente inoltre di leggere pagine-dati di supporto, sia generali che connesse alla pagina; i dati possono essere elencati in qualsiasi formato che possa essere sottoposto a parsing, esattamente come avviene in MediaWiki:Gadgets-definition. --Alex brollo (disc.) 07:55, 14 feb 2012 (CET)[rispondi]

Algoritmo del "deformattatore" modifica

Assodato che un tool deformattatore elimina la formattazione da un testo puntato o evidenziato immagino una doppia operatività:

  1. puntatore su una parola, nessuna selezione: rimuove l'ultimo livello di formattazione (ossia, quello più vicino al puntatore. Esempio: codice {{Centrato|''avvertimento''}}, puntatore su un punto qualsiasi della parola "avvertimento": primo click, via gli apostrofini dell'italico; secondo click, via il codice del template Centrato.
  2. presenza di testo selezionato: rimozione di tutta la formattazione dentro il testo selezionato. Problema serissimo: riconoscere il testo fra i parametri degli svariati template. :-( Linguaggio veramente orrendo, il linguaggio template.... --Alex brollo (disc.) 18:11, 14 feb 2012 (CET)[rispondi]

Ancora sugli epub modifica

Ho creato nella mia sandbox un "libro" con vari spezzoni per testare la risposta dell'esportazione di epub e pdf. Per il momento sto testando le note e già subito si evidenziano errori con i template nota separata e pagina sia negli epub che nei pdf. Io non ho le conoscenze per capire quali siano bug dell'esportazione e quali dei template, ma mi offro per testarli.

Sentitevi pure liberi di modificare il "test" per aggiungere altri template correlati. Prossimi test su immagini e tabelle. --Luigi62 (disc.) 13:03, 16 feb 2012 (CET)[rispondi]

Grazie dei test, Luigi. Sull'epub ho provveduto a sistemare: era un problema dei nostri template, tutti gli elementi che non devono andare a finire nell'epub vanno marchiati con la classe ws-noexport, e mancava appunto questa classe. Sul pdf è un po' più complicato perché non carica proprio la nota... credo sia un bug di PediaPress (il software che produce i pdf), proverò a segnalarlo a loro. Candalùa (disc.) 19:14, 16 feb 2012 (CET)[rispondi]

Microformat modifica

Qui su source abbiamo "reinventato la ruota" riscoprendo,per conto nostro, w:Microformat. Usiamo microformat DIY, ad esempio, per registrare e visualizzare il SAL delle pagine in transclusione.

Ma possiamo migliorare, in particolare: jQuery legge i dati in microformat in un lampo, e la codifica microformat può essere completamente scritta in automatico via template.

Esempio: mettiamo qui questo codice:

  • <span class="autore"><span class="nome">Alessandro</span> <span class="cognome">Manzoni</span></span>

il quale, "denowikizzato", dà questo risultato:

  • Alessandro Manzoni

Adesso aprite una console js su questa pagina e chiedete $(".autore").text(), oppure $(".cognome").text(). Carino no? --Alex brollo (disc.) 13:19, 19 feb 2012 (CET)[rispondi]


Tu arrivi sempre leggerissimamente in ritardo :-) Il microformat l'abbiamo già implementato, secondo queste specifiche qui: oldwikisource:Wikisource:Microformat. In qualunque pagina ns0, puoi già fare $("#ws-author").text() o $("#ws-title").text() e le altre cose. Candalùa (disc.) 15:05, 19 feb 2012 (CET)[rispondi]

Però! Siete forti in questo progetto, me lo dovrò studiare meglio! :-D
Vado a vedere su Pedia... --Alex brollo (disc.) 18:13, 19 feb 2012 (CET)[rispondi]
Messo un quesito in bar wikipedia. Alex brollo (disc.) 12:23, 20 feb 2012 (CET)[rispondi]
La discussione si è animata: i pediani hanno constatato che en.wikipedia usa i microformat in vari template. E' una bella cosa. :-). Se modificano il template:Bio i dati base degli autori li acchiappiamo in un lampo e a colpo sicuro. --Alex brollo (disc.) 17:02, 20 feb 2012 (CET)[rispondi]

Spiacente di deluderti, Alex, ma la discussione su Pedia si è già fermata. A mano che non discutano "a parte", suggerisco di andare direttamente alla "fonte" del Bio e fare due chiacchiere con Gvf (ci puoi andare anche a cavallo perché sta a Mogliano :) --Silvio Gallio (disc.) 08:58, 22 feb 2012 (CET)[rispondi]

No Silvio, quando faccio una proposta ritengo che l'interlocutore sia padronissimo di accettarla o di rifiutarla senza nessun ulteriore intervento da parte mia. Detesto quelli che s'innamorano delle proprie idee e continuano a insistere e insistere nel promuoverle.... io propongo una volta sola (max un paio, veh). --Alex brollo (disc.) 20:34, 22 feb 2012 (CET)[rispondi]

Come mantenere attiva la selezione modifica

Il tool per maiuscolizzare e minuscolizzare non va. Per essere perfetto, occorre che la selezione venga conservata, in modo da poter ottenere l'effetto voluto con una serie di click. Essere costretti a riselezionare, è un pardipalle.

Se la selezione fosse mantenuta, di potrebbe addirittura usare un solo pulsante che "gira" il testo nelle tre forme tutto maiuscolo-tutto minuscolo-iniziali maiuscole. Come si fa? --Alex brollo (disc.) 12:04, 20 feb 2012 (CET)[rispondi]

Se non si riesce a salvare all'interno di una variabile (alcune volte ci posso essere dei problemi) la si può sempre "salvare" all'interno di un elemento HTML (come un div o un p). Qui spiego come si fa. Samuele 12:26, 20 feb 2012 (CET)[rispondi]
C'è una via più diretta: riassegnare selectionStart e selectionEnd all'oggetto. Riesco con js "normale", almeno da console, pastrocchiando con l'oggetto DOM, ma non ci riesco via jQuery :-( --Alex brollo (disc.) 17:00, 20 feb 2012 (CET)[rispondi]
Beccato: $("textbox")[0].selectionStart=....; $("textbox")[0].selectionEnd=.... e il gioco è fatto. Hurrà. --Alex brollo (disc.) 20:40, 20 feb 2012 (CET)[rispondi]
Adesso sì che il tastino maiuscole-minuscole va come dico io :-) --Alex brollo (disc.) 06:36, 21 feb 2012 (CET)[rispondi]

Soluzione provvisoria modifica

Ho modificato scriviBox() che adesso accetta altri due parametri opzionali corrispondenti al valore numerico di selectionStart e selectionEnd. Quando li riceve, scrive il testo nel box e poi seleziona l'area identificata. Problema: al momento scriviBox accetta anche un secondo parametro opzionale (il numero della textarea) e quindi per fornirgli il terzo e quarto parametro opzionale occorre passargli anche il secondo complicando un po' le cose. Per forzare scriviBox() a usare comunque la textarea di default (0 nei vari ns, 1 nel solo nsPagina) si può passargli una stringa vuota come secondo parametro.

Esempio: scriviBox(testo, "", 100,120) scrive testo in textarea[0] o textarea[1] a seconda dei casi, e seleziona la stringa dal 100mo al 120mo carattere. Naturalmente se la routine da cui scriviBox riceve i dati ha modificato la lunghezza della stringa inizialmente selezionata, occorre che la routine ricalcoli i parametri giusti prima di passarli a scriviBox(). Che sia più furbo passare ascriviBox() i parametri come lista piuttosto che come parametri separati? Allora non ci sarebbero problemi a lasciare il parametro[1] undefined. --Alex brollo (disc.) 18:30, 21 feb 2012 (CET)[rispondi]

Eppur si muove (il markup wiki) modifica

http://lists.wikimedia.org/pipermail/wikitext-l/2012-February/000563.html

Seconda incursione in wikitech-l (la discussione sugli ID procede vivace!) sul markup. Ho chiesto se vi sono inconvenienti di qualsiasi tipo sostituendo gli apostrofini del corsivo e del grassetto con tag html normali... la risposta di Platonides è stata breve: No. :-) Che dite: lo facciamo? --Alex brollo (disc.) 01:02, 22 feb 2012 (CET)[rispondi]

I direi di procedere. Non ho bot da mettere a disposizione, l'unica cosa che posso fare è mettere a disposizione le mie conoscenze di Javascript e JQuery. Se ci sono problemi, avvisatemi che rispondo subito quasi sempre ;) Samuele 08:45, 22 feb 2012 (CET)[rispondi]

Non rischia di disorientare? Già mi immagino quanti scriverebbero <b/> invece di </b> e poi verrebbero a lamentarsi che non funziona... :-) Candalùa (disc.) 09:58, 22 feb 2012 (CET)[rispondi]

Sottoscrivo quanto ha scritto Candalua: la convenzione dei doppi/tripli apici è nata appositamente per facilitare la vita a chi non mastica tag HTML, dunque per noi geeks è una sfortuna che dobbiamo tenerci. punto. Abbiamo problemi di apostrofi: i tools per sostituire gli apostrofi "ritti" con apostrofi tipografici li abbiamo, dobbiamo solo ricordarci di farli girare periodicamente sui nuovi testi. - εΔω 10:19, 22 feb 2012 (CET)[rispondi]

Come lo vedreste un controllo durante la digitazione che dice: se l'utente schiaccia ', e poi schiaccia un tasto diverso da ', allora converti quello ' in un ’? Candalùa (disc.) 10:30, 22 feb 2012 (CET)[rispondi]

Così come lo hai detto lo vedrei male, perchè convertirebbe in ’ l'apostrofo finale di ogni tag corsivo e boldo. Piuttosto, accontento (finalmente) Aubrey e estrapolo da postOCR un tool "conversione asterischi", da appiccicare qua e là (pulsante, strumento per la rilettura, ecc). Approposito: come si fa a ottenere l'elenco delle combinazioni alt+carattere libere sia su chrome che su Firefox? Un po' di hot keys farebbero comodo, per velocizzare la chiamata ai tool. --Alex brollo (disc.) 20:25, 22 feb 2012 (CET)[rispondi]
@ Edo: miriadi di utenti di forum, assolutamente ignari di tutto, usano felicemente i tag [i]...[/i] e tutti gli altri tag-da-forum-ben-conformati senza battere ciglio. Gli utenti wikiani non sono più stupidi nè più pigri: sono solo viziati. Scommettiamo che se sostituiamo per prova il codice generato dai due "tastini magici" non succede la rivoluzione? Perchè mica parlo di scrivere il codice a mano: parlo di applicarlo con un click esattamente come si applicano gli apostrofini con un click. :-) --Alex brollo (disc.) 20:25, 22 feb 2012 (CET)[rispondi]

transclusione di una immagine fuori testo modifica

Vorrei transcludere questa pagina (i <noinclude></noinclude> servono per non transcluderla nel capo precedente) sotto il riassunto del capo XIII di quest'altra. Ho pensato di usare il template {{Pagina}} ma non funziona. Dove ho sbagliato? --Luigi62 (disc.) 12:26, 23 feb 2012 (CET)[rispondi]

Innanzitutto nel noinclude. Tutto ciò che è compreso dentro un tag noinclude non viene transcluso in nessun modo: diventa "inesistente" per le chiamate di transclusione. Per evitare di trascludere quella pagina dove non vuoi, spezza il tag pages in due pezzi e "salta" la pagina che contiene l'immagine. --Alex brollo (disc.) 15:47, 23 feb 2012 (CET)[rispondi]
In secondo luogo, non ho capito bene il senso dei includeonly nella pagina 121. Se vuoi che l'immagine NON sia visualizzata nella pagina, ma solo nella sua transclusione, dovrebbe essere giusto. Altrimenti, se la vuoi vedere, è sbagliato. Ma pansandoci per buoni cnque secondi in più, sono certo che tu NON vuoi visualizzarla... quindi rimetto il includeonly e vado a vadere in ns0 se tutto va come deve andare. :-) --Alex brollo (disc.) 15:52, 23 feb 2012 (CET)[rispondi]
Mi sono mezzo impappinato, scontrandomi con un inatteso problema di "spezzamento pagine che devon stare unite". Ho dovuto ricorrere a un brutto artificio per venirne fuori. Ci tornerò sopra, adesso non ne esco mica. :-( --Alex brollo (disc.) 16:50, 23 feb 2012 (CET)[rispondi]
Speravo di riuscire a transcludere la sezione anche se era all'interno dei noinclude proprio perchè la sezione non li conteneva; ho pensato che il sistema prima cercasse la sezione, poi cercasse i noinclude solo al suo interno. Il problema delle immagini fuori testo finora l'ho risolto con i noinclude e ricopiando direttamente il codice dell'immagine dove volevo che fosse, vedi esempio, ma non è una soluzione elegante e non si presta correttamente alla rilettura. --Luigi62 (disc.) 23:31, 23 feb 2012 (CET)[rispondi]
No, purtroppo la valutazione del noinclude ha la precedenza. Un'altra sottile questione di precedenza impedisce alcune possibilità di combinare transclusione e template; se si tenta di aggiungere una section mediante un template, si fallisce; se si tenta di suddividere un template in pezzetti di codice mediante section, sperando di eseguire poi solo quel pezzetto di codice, si fallisce. Sono cose abbastanza astratte.... ci ho sbattuto il capino per settimane, poi ho chiesto a Jonh e la risposta è stata "You can't" :-( --Alex brollo (disc.) 23:59, 23 feb 2012 (CET)[rispondi]

Sommario indice: accorgimento che non cambia un bel nulla modifica

Già a suo tempo ho usato l'espressione "un bel nulla" per indicare il comportamento di mediawiki quando un certo codice "non fa nulla" invece di dare un messaggio di errore (es. tentare di transcludere una section che non esiste: la risposta del sistema è appunto "un bel nulla").

Approfittando di un'opera vergine o quasi (Indice:Poesie inedite di Silvio Pellico I.djvu) ho aggiunto alle voci di Sommario indice un parametro testo=/nome della sottopagina prevista in ns0. Risultato: un bel nulla. Però... esaminate con cura i dati che adesso esistono per ogni riga, prendiamone due consecutive a caso:

* {{Indice sommario|1|Poesie inedite di Silvio Pellico I.djvu/20|Dio Amore|18|testo=/Dio Amore}}
* {{Indice sommario|1|Poesie inedite di Silvio Pellico I.djvu/22|Maria|20|testo=/Maria}}

Se ci pensate, in queste due righe (tenuto conto anche degli altri dati presenti nel codice di pagina Indice) c'è la struttura completa dell'opera in ns0:

  1. il nome base dell'opera in ns0 è nel parametro NomePagina;
  2. il nome completo della sottopagina ns0 è la concatenazione NomePagina+parametro testo della riga Indice Sommario;
  3. il parametro index del tag pages è presente in numerosi punti del codice;
  4. il parametro from= del tag pages è presente nel secondo parametro di Sommario indice;
  5. il parametro to= del tag pages si ricava approssimativamente dal secondo parametro di Sommario indice della riga successiva.

In altri termini: non manca quasi niente. Mancano solo i dati dei due parametri fromsection e tosection.... ma pensandoci un po'...

Conclusione: un campo Sommario ben compilato contiene quasi tutti i dati necessari per un'automazione assai spinta della compilazione automatica sia del template ns0, sia delle sottopagine transcluse. Il trucco è leggere al volo i dati via AJAX in fase di edit della pagina; questione di un singolo click. Nuovo tool in vista.... --Alex brollo (disc.) 23:44, 23 feb 2012 (CET)[rispondi]

Ho continuato a pensarci, vedi ri-discussione un po' più avanti. --Alex brollo (disc.) 15:45, 1 mar 2012 (CET)[rispondi]

Dilettante js allo sbaraglio modifica

Ho un accrocchietto che (con una singola riga js da console Chrome, fatta di quattro istruzioni; aimè, richiamata manualmente dopo caricata ciascuna pagina) mi consente di attivare sulla pagina che sto editando (non wikisource) una collezione lunga a piacere di funzioni js; e quello che è simpatico, è che il file js lo edito con un text editor qualsiasi perchè sta in una cartella del mio pc. E' banale? :-( --Alex brollo (disc.) 10:24, 27 feb 2012 (CET)[rispondi]

Indici analitici modifica

Vorrei rendere fruibile anche in ns0 questo indice analitico. È ovvio che potrei inserire un'àncora per ogni rimando ma il lavoro sarebbe lungo e noioso. Ho pensato quindi di inserire un {{§|pag#}} all'inizio di ogni pagina e di utilizzare un'altro template che utilizzi switch# per indicare in quale capitolo è transclusa la pagina. Vi sembra un approccio corretto oppure avete altri suggerimenti? --Luigi62 (disc.) 14:27, 27 feb 2012 (CET)[rispondi]

Buona idea! La prima parte si può fare molto meglio: ho appena aggiunto un id ai numeretti pagina sulla sinistra del testo. Per cui ora puntando a Le_pitture_notabili_di_Bergamo/I#pag17 si viene mandati già alla pagina 17 (i numeri sono quelli del cartaceo, coerentemente). Quanto alla seconda parte (template con switch), Alex aveva fatto qualcosa di simile per la Bibbia se ricordo bene, quindi aspettiamo un suo commento. Candalùa (disc.) 14:48, 27 feb 2012 (CET)[rispondi]

Magnifico. Giusto aspettavo questa opportunità per far lavorare un po' i server. :-)
Da qualche giorno fa in avanti, stando in qualsiasi pagina in edit, se ne può leggere qualsiasi altra - o un insieme di qualsiasi altre. Quindi: una volta che nell'indice analitico ci sono le informazioni essenziali scritte in forma "js-comprensibile", minimali (ossia: l'associazione parola/pagina) è fatta: stando nella pagina Pagina in edit, un js può leggersi tutte le pagine dell'indice analitico, estrarre tutti i rimandi a sè stessa, ottenere l'elenco della parole da ancorare, e ancorarle. Un template #switch può collegare le pagine e i capitoli.
Lasciatemi l'opera intatta e seguite i lavori; potrebbe diventare una procedura generale.
"Vedo" un template da applicare alle singole voci dell'indice analitico, al cui interno ci sia la parola chiave da usare come ancora, e il numero di pagina; qualcosa come 23 dove Via (abbreviazione di Voce Indice Analitico) è un nome generico di template, e PnB è la sigla dell'opera per il template specifico per l'opera (in questo caso Pitture notabili Bergamo), al cui interno ci sarà sia lo switch, che il codice per generare i due link in nsPagina e in ns0; "vedo" qualche trucco per facilitare l'applicazione del template al codice della pagina indice; "vedo" infine un tool che, cliccato sulla pagina bersaglio, legga le pagine dell'indice analitico e applichi le ancorette. Fra il dire e il fare, vediamo quant'è largo il mare. ;-)
Perchè non farlo via bot? Perchè un minimo di interattività, un minimo di "controllo umano" è bene che ci sia; è per questo che mi sto sempre più convertendo a js, che è uno strumento nelle mani dell'utente, e allontanando dalle procedure bot, che sono "disumane". --Alex brollo (disc.) 19:32, 27 feb 2012 (CET)[rispondi]
Mi sa che fra il dire e il fare ci son di mezzo le section.... :-(
I numeri pagina sono già inclusi un un djvu link, ottimo; parsing più facile. :-)
Be', io ci provo lo stesso, ma la sfida è impegnativa. Luigi, mi confermi che tutte le section si chiamano 1, 2...? --Alex brollo (disc.) 20:27, 27 feb 2012 (CET)[rispondi]
L'impalcatura
L'impalcatura è fatta. Le sezioni sono tante :-(. Le ancore devono ancora essere infilate nel template; successivamente devono essere ricercate e inserite nelle pagine. In nsPagina, tutti i link sono blu; in ns0, i link blu puntano già al capitolo giusto perchè puntano a pagine "transcluse intere"; i link rossi invece puntano nel vuoto, perchè si riferscono a pagine divise in sezioni (nello #switch, per esempio, non esiste una chiave 73=pagina djvu 81, ma due chiavi 73.1 e 73.2).
Il passo successivo
Adesso infilerò le ancore (la prima parola della voce dell'indice analitico) nei template, al parametro 1. Vorrei evitare di farlo a mano... sono tentato di farlo via bot ma preferisco tentare via js. Non si sa mai che venga fuori un tool riutilizzabile. --Alex brollo (disc.) 23:25, 27 feb 2012 (CET)[rispondi]
Non tutte....
Mancano le ancore delle voci secondarie (indentate di 10 spazi); problematiche perchè la prima parola non è significativa. Ci penserò domani (ma penso che una "passata" a mano sia inevitabile). 'Notte! --Alex brollo (disc.) 00:34, 28 feb 2012 (CET)[rispondi]
Ho le idee più chiare (forse dovrò rifare tutto by scratch, una o più volte, try & learn ma non importa, l'argomento merita): annoto in Progetto:Trascrizioni/Indici analitici. --Alex brollo (disc.) 09:42, 28 feb 2012 (CET)[rispondi]
Sì, tutte le sezioni sono 1, 2... L'unica particolarità è che si intersecano perché l'ultima parola del capitolo è il titolo del successivo. --Luigi62 (disc.) 18:04, 28 feb 2012 (CET)[rispondi]
Sono un po' fuso da una lotta con le dependencies (Candalua, mi capisci, vero?). Spero che non ti secchi se lascio la cosa a sedimentare per un giorno o due. --Alex brollo (disc.) 00:55, 29 feb 2012 (CET)[rispondi]

Please Candalua e Barbaforcuta: nuova versione di Indice sommario modifica

... continuando la discussione che facevamo (ma ovviamente chiunque è interessato, partecipi!) Corre in Indice sommario/Sandbox una nuova versione del tl Indice Sommario.

Il template ha la proprietà di comportarsi come da tradizione se i parametri sono quelli tradizionali (posizionali senza nome); se invece ci sono parametri nominali, cambia comportamento e crea una voce di "elenco con puntini", raffinatamente "indentato in modo intelligente" (aumenta l'indentatura con l'aumento del livello di annidamento dei capitoli).

Vedete in: Indice:Poesie inedite di Silvio Pellico I.djvu, campo sommario, due gruppetti di voci di esempio prodotte dallo stesso template di prova; la prima con i parametri nominali; la seconda, con i parametri normali. Vedete che il secondo gruppetto è assolutamente identico a quanto prodotto dal template base (ci mancherebbe: il codice chiamato è lo stesso...:-))

La versione nuova ha in meno il background, in più invece ha:

  1. la puntinatura e l'allineamento;
  2. il titolo diventa un vero link a ns0;
  3. il link alla pagina sta invece nel numero di pagina.

Il doppio link (titolo che punta in ns0; pagina che punta sulla pagina) è una convenzione en.source.

Gli unici parametri necessari sono nome, titolo, from (pagina djvu), delta. I parametri to, fromsection, tosection sono opzionali e "semantici" (puri contenitori di dati).

Che vi pare? --Alex brollo (disc.) 12:12, 1 mar 2012 (CET)[rispondi]

Perdona Alex, non ho avuto un attimo di tempo. Dando un'occhiata veloce a me sembra un lavoro fantastico: richiamare la transclusione e la paginaPagina corrispondente permette di avere tutto sotto mano, manca solo il richiamo vocale :-). A questo punto si dovrebbe ripensare alle vecchie disposizioni: mi sembra che tempo fa avessimo parlato del fatto che noi non prevediamo la possibilità di inserire un collegamento alla transclusione in pagina Indice; sinceramente rinuncerei a questa direttiva senza problemi.--Barbaforcuta (disc.) 01:20, 2 mar 2012 (CET)[rispondi]
Buone notizie. :-)
Il sommario di Indice:Poesie inedite di Silvio Pellico I.djvu, adesso "alternativo", ha una buona struttura; la funzione in Utente:Alex brollo/Parsing.js lo richiama da qualsiasi pagina dell'opera e lo "parsa" in una lista di oggetti, ognuno dei quali ha le variabili chiamate come si chiamano i parametri, per cui, essendo s la lista risultante, s[5].nome, s[5].from, s[5].to restituiscono al volo il nome pagina ns0, il from= e il to= del sesto elemento della lista nel campo Sommario. Se nella pagina sono già state aggiunte le section, dovremmo arrivare alla granularità di section, ossia sapere in che capitolo casca un punto preciso del testo.
Questo significa (ed è là che volevo arrivare, con un ampio giro che parte da Indice analitico... ) che:
# compilato il sommario come-dico-io, ogni pagina "sa" a che capitolo appartiene anche se il capitolo ancora non esiste;
# creatoentrati in creazione nel capitolo in ns0, sono disponibili i dati per la costruzione automatica di tutto il codice IncludiIntestazione e pure del tag pages;   Fatto
#si apre una nuova strada per Nota separata e tutti i casi in cui è necessario sapere, stando su una pagina, a che capitolo appartiene un'altra pagina, anche se il capitolo ancora non esiste;
# nella pagina ns0, dovrebbe essere possibile creare l'indice (l'elenco dei tl Testo) in modo automatico e perfettamente allineato con quello del campo sommario su Indice.
#....
Alex brollo (disc.) 01:48, 2 mar 2012 (CET)[rispondi]
Mi sorgeva un dubbio: ammettiamo di avere Juvenilia (escludo dalla considerazione le altre opere che fanno parte della stessa raccolta) che è composta da più libri, sei per la precisione; dovrebbe esserci, per esempio, la dicitura Libro I e magari un collegamento all'indice del libro ma nessun link a paginaPagina dato che sarebbe la stessa della prima poesia dello stesso libro. Stavolta i link li ho ricordati :-)--Barbaforcuta (disc.) 15:42, 2 mar 2012 (CET)[rispondi]
Non dovrebbero esserci problemi. Il sottotitolo "Juvenilia/Libro primo", in forma stampata, da qualche parte sta scritto. Ci sono due casi (non ricordo il caso reale ma non importa):
# il titolo "Juvenilia/Libro primo" sta su una pagina a se stante: allora la voce iIndice sommario punta a quella pagina.
# il titolo "Juvenilia/Libro primo" sta in testa alla pagina che contiene la prima poesia: allosa si seziona il titolo in una section 1, la poesia va nella section 2, e di nuovo le cose funzionano: le due voci di Indice sommario puntano a sue cose diverse (infatti sono previsti anche i parametro fromsection e tosection). --Alex brollo (disc.) 16:14, 2 mar 2012 (CET)[rispondi]
Piuttosto, sono un po' preoccupato della gestione del caso Carducci come lo sono del caso Bibbia: a far le cose bene ci sono centinaia di voci, in Bibbia si arriva forse al migliaio, visto che mediamente un capitolo copre circa una pagina. In visualizzazione si può incassettare (il sistema di estrazione dei dati se ne frega, purchè, annidata da qualche parte, ci sia una riga di codice Indice sommario regolare), ma in lettura la cosa potrebbe farsi pesantuccia: 1000 righe di almeno 100 caratteri cisacheduna fanno la bella grandezza di 100 kBy, che poi si raddoppiano perchè anche il campo Sommario viene semantizzato. Ma questo raddoppio è discutibile (che ne dici Candalua? Io lo salterei). --Alex brollo (disc.) 16:19, 2 mar 2012 (CET)[rispondi]
Tutto funzia come-dico-io per la creazione di una nuova sottopagina in ns0, ossia: con la chiamata di una singola funzione senza parametri (=un click). Vado a finire Secondo libro di Samuele, per stasera basta giocare.... :-) --Alex brollo (disc.) 22:34, 2 mar 2012 (CET)[rispondi]

Il momento di pagelist modifica

E adesso, deve cedere pagelist; per fare gli ulteriori passi, mi servono due funzioni appoggiate su pagelist, d2p() e p2d(), che mi convertano il numero di pagina Djvu in Pagina cartacea e inverso, appoggiandosi a pagelist. Se per caso sapete che sto rediscovering the wheel, fermatemi! --Alex brollo (disc.) 14:08, 4 mar 2012 (CET)[rispondi]

Mi sembra che funzi d2p() (per ora in Utente:Alex brollo/pagelistParsing.js) e un'altra di cui avevo bisogno: r2n(), che trasforma i numeri romani in arabi; la inversa n2r() già ce l'ho in vector.js. d2p() riceve un numero di pagina djvu e il pagelist e restituisce il numero di pagina cartaceo (anche romano, se pagelist lo prevede). Adesso mi manca il p2d(), inverso di d2p(). Per oggi basta che son mezzo fuso. --Alex brollo (disc.) 17:58, 4 mar 2012 (CET)[rispondi]
Sembra sia fatta: adesso corre anche la difficile funzione inversa p2d, che data una pagina cartacea (numero arabo o romano) restituisce il numero della pagina djvu corrispondente. --Alex brollo (disc.) 10:48, 11 mar 2012 (CET)[rispondi]

Note che contengono note modifica

In una pagina, Pagina:Rivista_italiana_di_numismatica_1890.djvu/229 , (e nella successiva) una nota (che si allunga sulla pagina successiva) contiene a sua volta delle note.

Questo tentativo <ref>testo nota primo livello<ref>nota alla nota</ref></ref> non funziona. Restituisce un:

Errore nella funzione Cite: </ref> di chiusura mancante per il marcatore <ref>

--Carlo M. (a.k.a. zi' Carlo) (disc.) 12:20, 6 mar 2012 (CET)[rispondi]

Come dicono i triestini, no se pol. Le note non possono essere annidate. E la risposta alla tua prossima domanda è ancora no: questo credo sia il secondo caso in tre o quattro anni (ne ricordo uno sui sonetti romaneschi), quindi non ci inventeremo nessuna soluzione ad hoc. Semplicemente scrivi la nota con l'asterisco e fine. Non formalizziamoci troppo. :-) Candalùa (disc.) 13:02, 6 mar 2012 (CET)[rispondi]
Numi! Bel problema: a prima vista, insolubile:

Parsing [[ ]] is not easy and requires us to look through the wiki-text
string for matching patterns. This causes some issues since the PHP library we
use crashes on large matches. This is why nested annotations and links were
disabled. In contrast, parsing {{ }} is done by MediaWiki for us, and nesting
annotations is not a (technical) problem there. [1]

--Alex brollo (disc.) 13:13, 6 mar 2012 (CET)[rispondi]

Cos'è che beve il veterinario alcoolizzato della pubblicità? Sembrava impossibile, ma ce l'abbiamo fatta... :-) --Alex brollo (disc.) 13:32, 6 mar 2012 (CET)[rispondi]

Diabolico. Quindi il parsing ragiona solo sui tag "veri" e non sui tag inseriti con {{#tag. E la mia lista delle assurdità di mediawiki si allunga... Candalùa (disc.) 15:02, 6 mar 2012 (CET)[rispondi]

la sequenza con cui viene eseguito il parsing è argomento quasi altrettanto infernale del resourceLoader. Tanto tempo fa ci ho sbattuto il capo tentando di trasferire delle section via template: impossibile. Questa volta ho tirato a indovinare, isporato dal corsivo della citazione: vuoi vedere che...? È possibile che sia un "carattere emergente" imprevisto perfino per i programmatori. Se lo è, potrebbe sparire alla prossima revisione.... ma intanto godiamocelo. --Alex brollo (disc.) 15:11, 6 mar 2012 (CET)[rispondi]

Come non dicono i triestini: chi nun risica, nun rosica e come dicono gli alunni "io speriamo che me la cavo". --Carlo M. (a.k.a. zi' Carlo) (disc.) 16:42, 6 mar 2012 (CET)[rispondi]

Pagine mancanti modifica

Ho finalmente rintracciato le pagine mancanti in Indice:Trionfo e Danza della Morte.djvu. Ho aggiunto le pagine al DjVu, ma non l'ho ancora caricato su commons perchè non so come splittare le pagine già inserite, oppure è meglio eliminare un paio di pagine bianche cercando di contenere al minimo le modifiche? --Luigi62 (disc.) 17:01, 14 mar 2012 (CET)[rispondi]

C'è un bug che riaffiora di quando in quando, e che colpisce a tradimento quando si varia la posizione di pagine djvu: la anomala persistenza delle immagini derivate. Chiedi a Silvio: ci è impazzito. In linea di massima, sarebbe buona norma non eliminare pagine bianche originali; meglio sarebbe stato aver aggiunto eventuali pagine bianche nelle posizioni delle pagine mancanti, fin dal caricamento. Le pagine si aggiungono o tolgono da un djvu con facilità con djvm.exe della libreria Divu Libre, ma poi occorre (via bot) "spostare" i testi delle pagine riallineandoli. Una cosa delicata. Se ti va ti dò volentieri una mano: ma poi, se emerge il bug, occorre armarsi di sangue freddo e di molta pazienza e ignorare l'eventuale comparsa di immagini disallineate. --Alex brollo (disc.) 17:33, 20 mar 2012 (CET)[rispondi]

EPub e indici (analitici) modifica

Purtroppo ho una brutta notizia, nel testo appena riletto Guida di Pompei illustrata, che nella transclusione dell'indice in ns0 utilizza la tecnica inserita da Candalua non viene esportata correttamente negli ePub. Visto che ritengo sia una di quelle cose in "più" che i nostri testi hanno, dobbiamo trovarvi una soluzione. Inseriamo un {{§|pag#}} all'inizio di pagina come avevo già proposto oppure sapete come aggirare il taglio durante l'esportazione? --Luigi62 (disc.) 10:53, 19 mar 2012 (CET)[rispondi]

Parlo a vanvera o meglio: tiro a indovinare. Il template che genera il linketto pagina è fra quelli che vengono ignorati nell'esportazione? Allora sparisce anche l'ancora generata dal template. Si potrebbe aggirare (forse) il problema facendolo invece importare, ma rendendolo invisibile con un'istruzione nel css "per esportazione epub" che mi pare di aver sentito nominare. Oppure, un altro sporco trucco (pesantino però: due template al posto di uno...) sarebbe quello di spostare in template che crea il link pagina ad altro template, escluso dall'esportazione; e sostituire il codice del template con un codice che crea un'ancora (e questo codice sarà esportato nell'epub) ma che chiama anche il template creatore di link (che nell'epub sarà escluso).

Insomma, una soluzione dev'esserci, per aggirare il problema senza editare migliaia e migliaia di pagine!

Domanda tecnica, è troppo tardi perchè io verifichi con un test: un'ancora in un elemento html style="display:none" è "vista" come ancora anche se è invisibile? --Alex brollo (disc.) 00:48, 21 mar 2012 (CET)[rispondi]

Tools news modifica

Ho creato due nuovi meta-Tools :-)

Abilitandoli entrambi, basta aggiungere al proprio vector.js una cosa come:

  1. newButton(nome bottone, nome funzione); e si crea un nuovo bottone marcato nome bottone che cloccato chiama nome funzione; esempio, da me corre un newButton("cicc","cicceide"); per fa comparire un bottone "cicc" che chiama cicceide();
  2. newButton(nome immagine bottone, nome funzione), che invece usa l'URL completo di un immagine-pulsantino collegata come sopra; esempio gira nel mio vector newButton("//upload.wikimedia.org/wikipedia/commons/4/4f/Button_verse.png","cicceide"); che è un alias di prova dello stesso bottone.

Ovvio che è lo script stesso a "riconoscere" il nome dall'immagine, basandosi sui due slash dell'URL immagine, e regolandosi di conseguenza. I bottoni sono fissi, e compaiono ordinati in basso a destra della pagina (sono dei "battoo", i noti bottoni-tattoo)

Si potrebbe perfino creare una lunga lista di bottoni nel proprio vector, e poi abilitarli o disabilitarli semplicemente "decommentandoli" o "commentandoli" con due slash a sinistra.

Che ne dite? Io ne farò gran uso; ho sempre trovato più fastidioso creare gli agganci alle funzioni che creare le funzioni. Mi sento appagato. Fine del pauroso codice per far comparire i bottoni nella toolbar... io quelli nuovi so dove metterli, e non c'è alcun bisogno di aspettare che vengano "caricate le dipendenze". :-) --Alex brollo (disc.) 17:26, 20 mar 2012 (CET)[rispondi]

Scervelliamoci... modifica

Uno script di poche righe legge al volo in una variabile, all'apertura in edit di una pagina Pagina, il codice wiki della pagina Pagina precedente, restituendola pure suddivisa in header, corpo, footer. Occorre spremersi le meningi per immaginare le millanta cose che si possono fare in automatico, avendo in memoria il testo della pagina precedente così suddiviso mentre si edita la successiva. A me ne vengono in mente alcune, ma so che non son tutte... --Alex brollo (disc.) 07:11, 21 mar 2012 (CET)[rispondi]

  1. Idea 1: pt (ma questo i geek che leggono attentamente il bar generale lo sanno)
  2. Idea 2: numero versi (e anche questa non è una novità)
  3. Idea 3 (questa è nuova): immaginiamo di caricare nell'header, dentro un commento html, il RigaIntestazione della pagina precedente. Nella successiva, si disporrà di 2 esemplari di rigaIntestazione: quella dentro al commento (di due pagine prima) e quella della pagina precedente. La seconda viene messa dentro un commento, la prima viene usata per costruire il rigaIntestazione corrente, aggiungendo 2 al numero pagina. Dovrebbe funzionare correttamente nel 90-95% dei casi, forse qualcosina in più. Stasera (forse prima) faccio le mie brave prove. :-) --Alex brollo (disc.) 08:04, 21 mar 2012 (CET)[rispondi]
Pensandoci meglio, forse farò le mie prove leggendo il raw di due pagine (l'ultima e la penultima) invece che di una pagina. Dubito molto che i server si mettano in sciopero per superlavoro.... per risparmiare qualche richiesta, potrei rinunciare alla lettura della pagina penultima se la pagina corrente ha già il suo RigaIntestazione. Ci provo...--Alex brollo (disc.) 15:18, 23 mar 2012 (CET)[rispondi]
Fatto... adesso ogni volta che apro in modifica una pagina, carico in memoria il raw txt di altre due pagine, l'ultima e la penultima. Il caricamento è veloce, perchè uno dei due è un istantaneo "ricaricamento" di ciò che attende in una qualche cache, locale o remota non saprei. Vediamo cosa ne ottengo (mi aspetto belle cose....) --Alex brollo (disc.) 16:03, 23 mar 2012 (CET)[rispondi]

Curiosità modifica

Durante la rilettura ho trovato un fatto strano, selezionando questa testo tra la pagina 3 e 4 (quindi a cavallo del numerino 4) la grandezza del colore della selezione cambia. Copiando e incollando esiste in effetti un carattere non visibile transcluso da questa pagina (prima della prima parola).

Giusto per curiosità da dove viene, è dannoso? --Luigi62 (disc.) 17:03, 23 mar 2012 (CET)[rispondi]

Mi pare un Character 'ZERO WIDTH NO-BREAK SPACE' (U+FEFF). Non dovrebbe essere dannoso. Come ci sia finito, non lo immagino; ma mi pare di ricordare che era stato usato all'interno di Pt come un nonnulla (non-nulla). --Alex brollo (disc.) 17:28, 23 mar 2012 (CET)[rispondi]

Appunto, era stato usato in Pt, ma poi avevo dovuto fare marcia indietro. Non so cosa stiate vedendo (io sono cecato quindi non faccio testo), ma non dovrebbe essere quello. Candalùa (disc.) 19:28, 23 mar 2012 (CET)[rispondi]

Per vedere, non abbiamo visto niente. Ma quel niente l'ho assegnato a una stringa che sembrava vuota, ma era lunga 1; ho chiesto il valore Unicode dell'unesimo carattere della stringa vuota, e valeva U+FEFF; la cosa curiosa è che in quel punto della pagina non doveva starci un Pt. Immagino che sia stato messo un Pt per errore, e poi sia stata cancellata la parte visibile. Se avete un'altra spiegazione.... E' un interessante quiz, un po' come quello del pulsante che si rattrappisce e funziona se cliccato a destra ma non a sinistra (sempre Luigi trova queste particolarità...). --Alex brollo (disc.) 23:35, 23 mar 2012 (CET)[rispondi]
Il problema del cliccato a destra che funzione mentre a sinistra no l'ho capito: è un problema di css oppure di qualche altro codice che parte al click dell'elemento e che ne modifica il gradient ma anche la larghezza Samuele 23:01, 26 mar 2012 (CEST)[rispondi]
Il problema era css. Se le dimensioni del bottone attivato dal click vengono modificate prima che venga valutata la posizione del mouse sul bottone, capita che - se si punta a destra il mouse - al momento della valutazione risulti fuori del bottone; e quindi, che il click non attivi la funzione. Strano, ma vero. Sia come sia, correggento il css dei bottoni, e rendendo le dimensioni del bottone sempre uguali (come dev'essere) il problema si è risolto. Almeno spero.... --Alex brollo (disc.) 10:48, 19 apr 2012 (CEST)[rispondi]

Ancora sulle note modifica

Per gli esperti di note qui c'è un interessante caso di nota troncata. --Luigi62 (disc.) 21:44, 29 mar 2012 (CEST)   Fatto Candalùa (disc.) 23:37, 29 mar 2012 (CEST)[rispondi]

Uovo di Colombo o acqua calda? modifica

... io ve lo dico lo stesso.

Voi sapete che la transclusione ricorsiva è bloccata (un template non può richiamare se stesso). Quindi è bloccata anche la trasclusione selettiva ricorsiva (una section si può richiamare da qualsiasi pagina, meno che da quella in cui è collocata la section) e di questo alle volte capita di avere voglia.

Ora, Edo senza volere (forse) mi ha impostato una transclusione selettiva ricorsiva nella pagina Wikisource:La fabbrica dei giocattoli/Elenco tools e io l'ho fatta. La section "ultimo arrivato" è definita e transclusa nella pagina stessa, semplicemente facendola "rimbalzare" su una seconda pagina: transcludo nella pagina un template in cui ho transcluso la section della pagina stessa. Chiaro no? O mi sono inutilmente complicato la vita? Può essere.... --Alex brollo (disc.) 00:58, 19 apr 2012 (CEST)[rispondi]

Effetto Pt con solo css modifica

Ho constatato che creando due sole classi aggiuntive: class="ns0" e class="pagina", con questo iperbanale css:

.testi .pagina {display:none;}
.pagetext .ns0 {display:none;}

si ottiene un pulitissimo e efficientissimo "effetto Pt" che, fra l'altro, ha l'enorme vantaggio di contenere i dati "nascosti" nell'html di ambedue le versioni, sorgente e transclusa. Nessun template, e quindi nessun limite di templates per pagina, nessun nonclude o includeonly, nessuna "fatica" di caricamento. Il parser neppure se ne accorge. Quelli che è contenuto in uno span class="ns0" si vedrà solo in ns0, e quello che è dentro uno span class="pagina" si vedrà solo nel nsPagina. Un neo: la "proliferazione di classi" in ns0; le categorie principali dei testi sono contenute in una div class="testi" ma le opere dei progetti minori ne hanno di ogni tipo (cosa che mi crea grandissime perplessità e che forse, prima o poi, con l'unica eccezione di Diritto, occorrerà standardizzare). Un secondo neo: temo per la mia incolumità se propongo di rivoluzionare tutto... :-( --Alex brollo (disc.) 17:25, 25 apr 2012 (CEST)[rispondi]

Ipotesi sugli indici analitici modifica

Ho concepito un'idea sugli indici analitici; chi mi aiuta a verificarne la logica, fermo restando che se esiste una buona logica e non manca alcun passaggio, la cosa è certamente realizzabile?

Immaginiamo un consultatore di un indice analitico in nsPagina. Perchè lo consulta? perchè vuole trovare le pagine che collegate a una certa voce. Vuole esaminarle una alla volta, eventualmente tutte. Trova la voce, clicca sulla prima pagina di un eventuale elenco. A questo punto, vuole essere "teletrasportato" sulla pagina di cui ha cliccato il numero. Ma non basta: vuole anche che la parola selezionata sia evidenziata per vederla a colpo d'occhio.

Non solo: di certo gli piacerebbe poter passare alla pagina successiva linkata alla stessa parola chiave senta tornate nell'indice analitico; libero però di smettere e leggere altro, seguendo qualsiasi link o facendo quel che gli pare.

Siamo d'accordo fin qui? Un click per arrivare a una pagina contenente una parola chiave; un click per raggiungere la pagina successiva collegata alla stessa parola chiave.

Veniamo alla parte codice. L'ideale sarebbe che il codice fosse molto semplice; ossia, un template elementare che "circondi" il numero pagina nell'indice analitico, senza nessun parametro oltre al numero pagina. Qualcosa come {{rif|23}} e fine; senza alcuna ricerca di dove stia nel djvu la pagina cartacea 23, e senza nemmeno preoccuparsi minimamente di quale sia il capitolo ns0 in cui la pagina djvu connessa sia stata transclusa. In molti casi, non servirebbe nemmeno spulciare i numeri pagina uno per uno, una piccola regex potrebbe fare da sè. Nei casi più favorevoli (molti) ipotizzo un solo click, in edit, su una pagina Indice analitico per far tutto automaticamente, verificando poi, ovvio.

Che ve ne pare?

Ma esiste un'alternativa ancora più comoda. Il click su un numero pagina dell'indice analitico potrebbe far aprire un box, in cui potrebbe essere visualizzato "l'intorno" testuale della parola chiave nelle pagine collegate; qualcosa come il risultato di Ricerca, con i link per raggiungere le pagine che contengono gli "intorni" testuali più promettenti.

Il brain storming è aperto. :) --Alex brollo (disc.) 19:00, 26 apr 2012 (CEST)[rispondi]

Quello che hai descritto è ambizioso, ma dovrà essere sopratutto intuitivo. Al momento sarebbe sufficiente che funzionasse nel modo tradizionale, cioè che portasse alla pagina giusta: questo indice funziona perfettamente in nsPagina, ma mostra dei problemi in ns0 (perché alcuni numeri sono rossi?). Come primo step basterebbe arrivare all'ancora #pagXX e non solo al capitolo corretto. --Luigi62 (disc.) 15:19, 7 mag 2012 (CEST)[rispondi]
Vedo che in parecchi link rossi manca, nel template Vai, il terzo parametro. E' essenziale, ma tocca metterlo a mano (fino a trovata geniale ma non semplice....), rappresenta un numero, da 1 a 3, che indica in quale delle section in cui è suddivisa una pagina è contenuta l'ancora.
Intravedo un algoritmo per farlo via bot, con questi passi:
  1. prendere una pagina indice e estrarre tutti i temlate con terzo parametro vuoto
  2. uno a uno:
    1. leggere la pagina
    2. suddividere il testo nelle section
    3. trovare in quale section c'è la chiave (autore) e magari, visto che ci siamo, infilarci un template $
    4. aggiungere il numero della section nel template
Però per farlo devo 1. essere ispirato 2. ricordarmene :-(
Intravedo inoltre un'imperfezione logica: il meccanismo punterebbe solo sulla prima menzione della chiave, se la chiave è presente in più di una section siamo fregati (le section seguenti non saranno marcate). Un limite fastidioso. Alex brollo (disc.) 00:51, 15 mag 2012 (CEST)[rispondi]
Nella pagina 66 ho inserito delle àncore, perché penso che tu intendessi il template:§ e non $. --Luigi62 (disc.) 21:37, 15 mag 2012 (CEST)[rispondi]
Hai ragionissima. :-(
Stato dell'arte
adesso il template {{Via/PnB}} genera, in ns0, un link con ancora sul numero pagina + parametro highlight=chiave, mentre in nsPagina genera un link con ancora sulla chiave. Per spiegare meglio questo codice:
{{Via/PnB|Albrizzi|100|1}}

genera questo link: 100 che ha questo codice: http://it.wikisource.org/wiki/Le_pitture_notabili_di_Bergamo/XLIX?highlight=Albrizzi#pag100. Provatelo. Ancora il parametro highlight=Albrizzi non genera nulla, ma se in nostri due superGeek si attivano, io non credo impossibile che seguendo il link in ns0 si venga "trasportati" nella zona della pagina giusta, e che la chiave sia evidenziata esattamente come viene evidenziata con il template §. --Alex brollo (disc.) 22:17, 15 mag 2012 (CEST)[rispondi]

Problema di transclusione modifica

Cari amici,

ho un problema tecnico che se risolto potrebe semplificarmi di molto la vita.

  • Voglio semplificare l'indice di Myricae togliendo i numeri romani dal titolo delle sottopagine (avevano senso in assenza di versione proofread, ora ostacolano la creazione dei template IncludiIntestazione)
  • Lo spostamento di decine e decine di pagine non sarebbe un problema se non fosse che devo aggiornare gli indici di diverse sottopagine. Anche questo lavoro non sarebe poi immane, ma a questo punto mi sono venute le seguenti intuizioni:
    1. L'indice della pagina principale (Myricae) è completo: perché non dividerne le varie sezioni in section da richiamare nelle sottopagine delle sezioni stesse (Myricae/Dall'alba al tramonto, Myricae/Dolcezze, Myricae/Tristezze ecc.)? In tal modo modificando l'indice della pagina principale non dovrò aggiornare volta per volta tutte le sottopagine.
    2. Se nel dividere l'indice in section do loro come etichetta il nome della sottopagina che contiene la sezione etichettata, mi diventerà semplice richiamare tutte le section dell'indice con il comando {{#section:{{BASEPAGENAME}}|{{SUBPAGENAME}}}}.

Accintomi a eseguire un'operazione apparentemente semplice semplice, dopo aver applicato queste intuizioni alla prima sezione intitolata Myricae/Dall'alba al tramonto non mi funziona nulla!

Ho provato ad applicare la soluzione alla pagina Prova (con sottopagina Prova/Dall'alba al tramonto) e lì funziona a metà! Cosa sto sbagliando? - εΔω 08:57, 6 mag 2012 (CEST)[rispondi]

Tu niente. Io ho sbagliato (forse). Guarda il codice con il box show: l'area dati è marcata con un onlyinclude. Sono convinto che c'era un buon motivo per mettere quel codice ma non me ne ricordo. Il tag dice "transcludi SOLO questa parte della pagina". Soluzione: se si vuol aggirare l'ostacolo, basta marcare anche altre parti della pagina con lo stesso tag (le aree onlyinlcude si sommano fra di loro, non si escludono). L'ho fatto su Myricae, mi pare che adesso funzi. Appena mi ricorderà perchè diavolo ho messo quel tag, piuttosto che un includeonly, te lo dico. :-( --Alex brollo (disc.) 09:56, 6 mag 2012 (CEST)[rispondi]
Restano un paio di interrogativi:
  1. com'è che su Prova funziona e su Myricae no?
  2. come mai con le parole magiche non vuol saperne di funzionare in ogni caso? - εΔω 11:35, 6 mag 2012 (CEST)[rispondi]
Risolto il problema del perchè non transcludeva, ho visto che nasce un secondo: il comportamento anomalo degli indirizzi relativi. Temo che per funzionare il template testo debba contenere indirizzi assoluti. Provo a modificare da relativi a assoluti....--Alex brollo (disc.) 20:12, 6 mag 2012 (CEST)[rispondi]
Adesso la transclusione funziona correttamente, ma solo con la chiamata esplicita; non funziona invece con le magic words, nonostante che il loro output sia corretto; ipotizzo un problema di priorità nel parsing. E qui mi fermo. Noto solo con una certa soddisfazione che non sono l'unico a perdere un bel po' di tempo per cercare di risparmiarne.... :-) Chi non risica non rosica, bravo Edo. --Alex brollo (disc.) 20:35, 6 mag 2012 (CEST)[rispondi]

Le magic words dànno spesso problemi quando la sottopagina contiene un apostrofo. Provate con le altre... Candalùa (disc.) 23:50, 6 mag 2012 (CEST)[rispondi]

Bellina questa cosa; se è questo il busillo, basterebbe utilizzare sistematicamente, nei titoli, l'apostrofo tipografico (che è un carattere "insensato" senza problemi particolari) al posto di quelli tipografico. Ci sono altri sistemi, Candalua, per raggirare il problema? Hai un link a qualche discussione che ne tratta? Si può ipotizzare un "rimbalzo di redirect"? Certo che se l'ID pagina fosse utizzabile opzionalmente al posto del titolo, quanti problemi si risolverebbero.... --Alex brollo (disc.) 09:06, 7 mag 2012 (CEST)[rispondi]
YES YES :-)
In Myricae/Dall’alba al tramonto il trucco di Edo funziona. Attenzione Edo però, si affaccia un altro problema temo, la cosa funzia liscia sulle sottopagine a due soli livelli, se sono tre o più ti tocca ripassare #titleparts, temo. --Alex brollo (disc.) 09:23, 7 mag 2012 (CEST)[rispondi]
 
«basterebbe utilizzare sistematicamente, nei titoli, l'apostrofo tipografico (che è un carattere "insensato" senza problemi particolari) al posto di quelli tipografico»
(Alex poco sopra)
Non ho capito :D o forse intendevi che Dall’alba è migliore da usare rispetto a Dall'alba, giusto?
In ogni caso da questa esperienza traggo come conclusione che l'utilizzo di codici esoterici (inclúsivi gli accenti fuori dalle tastiere), l'obbligo di indirizzi assoluti e la presenza di limitazioni tecniche non documentate scoraggiano notevolmente da un uso maggiore di questa soluzione. Per Myricae si è resa necessaria, ma spero che rimanga un caso isolato. - εΔω 19:57, 7 mag 2012 (CEST)[rispondi]
Il problemi dei titoli a più di due livelli è che BASEPAGENAME e SUBPAGENAME restituiscono rispettivamente il primo tutti i livelli titolo meno l'ultimo a destra, il secondo solo il titolo più a destra. In altri termini, il primo parametro della formula magica {{#section:{{BASEPAGENAME}}|{{SUBPAGENAME}}}} non punterebbe alla pagina giusta (la pagina principale) ma a una sottopagina (quella di secondo livello). Invece, con #titleparts è possibile estrarre esattamente il nome della pagina principale; l'espressione dovrebbe essere {{#section:{{#titleparts:{{BASEPAGENAME}}|1|1}}|{{SUBPAGENAME}}}} se non erro. Alex brollo (disc.) 00:25, 15 mag 2012 (CEST)[rispondi]

Questito ai superGeek modifica

E' possibile fin d'ora aggiungere a un link un parametro che "passi" una stringa da evidenziare nel testo? Se non è possibile, ripiegherei su un parametro ?highlight=stringa appiccicato all'URL. da gestire come il parametro verso=, e chi maneggia jQuery non dovrebbe aver problemi a "passare" tutti i testi compresi dalla div content, aggiungendo intorno alle stringhe uno span evidenziatore.

Questo sarebbe un grosso passo in avanti per i link tipo indici analitici, ed eviterebbe di dover appiccicare il template § alle parole da evidenziare. O sbaglio? --Alex brollo (disc.) 12:13, 15 mag 2012 (CEST)[rispondi]

Se uno a caso fra i due superGeek volesse fare delle prove, {{Via/PnB}} genera link con parametro &highlight=chiave. :-) --Alex brollo (disc.) 15:31, 15 mag 2012 (CEST)[rispondi]
In attesa di una soluzione canonica io procedo "alla alex", ossia in modo grossolanamente creativo. Ho buone notizie: le due funzioni codifica() e decodifica() funziano alla grande anche sul .html() di qualsiasi elemento jQuery, compreso $("#mw-content-text") che è il contenitore del testo delle pagine ns0. Posso quindi con estrema facilità "beccare" tutte le stringhe stringa dentro il testo in un colpo solo, e circondarle con <span style="background-color:#DEF">...</span> e quindi evidenziare in un lampo, nel solo riquadro di contenuto, tutte le evenienze di stringa. Costruisco un giocattolo provvisorio che permette di inserire stringa in un prompt, dopodichè aggiungerci qualche riga che legge l'URL alla ricerca del contenuto di un ev. parametro highlight=, e ancora qualche riga che lo fa automaticamente al caricamento della pagina, dovrebbe essere facile. Nome del giocattolo: cerca() (visualizzato in view). --Alex brollo (disc.) 08:33, 16 mag 2012 (CEST)[rispondi]
Funzia. :-) --Alex brollo (disc.) 09:03, 16 mag 2012 (CEST)[rispondi]
L'ultimo giocattolo creato è add_spaces()

Lavoro da bot? modifica

È possibile avere uno strumento da far correre occasionalmente, oppure schedulato, che estragga il parametro del Template:AutoreIgnoto associato alla pagina corrispondente? Ora le pagine sono raccolte nella Categoria:Pagine con autore indefinito ma per vedere qual è l'autore ignoto debbo aprire pagina per pagina. L'ideale sarebbe qualcosa del genere:

Pagina:Annali overo Croniche di Trento.djvu/240|Carneade
Pagina:Commemorazione di Paolo Ferrari.djvu/25|Malaspina
[...]

Le pagine potrebbero contenere più di un autore ignoto, quindi sarebbero necessarie più una riga per pagina. La cosa è fattibile? --Luigi62 (disc.) 11:27, 25 mag 2012 (CEST)[rispondi]

Mi si ingarbugliano sempre le idee su questa cosa: come categorizzare il contenuto di una pagina, e non la pagina che contiene il contenuto? ogni volta ci devo pensare... ma la soluzione c'è. basta dare alla categoria il nome del contenuto, e categorizzare tutte queste speciali categorie in una categoria contenitore. Immagina una Categoria:Carneade (autore ignoto) sottocategoria di Categoria:Pagine con autore indefinito: aprendo quest'ultima, hai tutti i nomi degli autori ignoti come nomi di singole categorie e aprendo ognuna hai l'elenco delle pagine che li contengono.... :-) Basta truccare il codice di Template:AutoreIgnoto e, se l'idea vi piace, è fatta in un lampo senza modificare il codice di alcuna pagina. --Alex brollo (disc.) 12:53, 25 mag 2012 (CEST)[rispondi]
L'idea alla base non è male, ma non trovo che sia questo il campo di applicazione. La Categoria:Pagine con autore indefinito è sotto-categoria di Categoria:Lavoro sporco e lo scopo sarebbe quello di ridurla, non ampliarla. Sarebbe comunque necessario creare (e cancellare se venissero svuotate) le varie sotto-categorie e sarebbe comunque un lavoro da bot. Un bel output come quello prospettato sarebbe utilizzabile anche in fogli elettronici, ma comunque una cosa non esclude l'altra. --Luigi62 (disc.) 13:13, 25 mag 2012 (CEST)[rispondi]
C'è un'altra via: far leggere via AJAX i "puntano qui" del template AutoreIgnoto, produrre una lista delle pagine, leggerne una a una il codice ed estrarre tutti i template AutoreIgnoto delle singole pagine. Ci metterà un po', non ho idea se i server "brontolano" a ricevere un bel po' di richieste AJAX consecutive, ma la cosa se funzia si risolve con un singolo "giocattolo" e un singolo click; ovviamente da una pagina in modifica, in modo che l'output finale sia scritto e resti permanente. --Alex brollo (disc.) 15:27, 25 mag 2012 (CEST)[rispondi]
  Fatto. Vai su una qualsiasi pagina (pagina delle prove va benissimo, o una tua sandbox) in modifica e pigia il tuo nuovo bottone autIgnoto. Non pubblicizzo il giocattolo perchè per spiegare a tutti cosa fa mi toccherebbe prendere un giorno di ferie. Se vuoi farlo tu.... la pagina doc da riempire sarebbe Wikisource:La fabbrica dei giocattoli/autoreIgnoto(). --Alex brollo (disc.) 23:21, 25 mag 2012 (CEST)[rispondi]
PS: la velocità di risposta non deve illuderti: è solo effetto del fatto che i risultati delle query sono già memorizzati in qualche cache. La prima risposta per arrivare ci ha messo un cinque-dieci secondi buoni. :-( --Alex brollo (disc.) 23:23, 25 mag 2012 (CEST)[rispondi]
Dissodato questo campo, che è interessante in generale (la funzione può essere generalizzata per analoghe ricerche riguardanti altri template, non necessariamente generanti categorie), la metto in lista fra le idee sui lavori da bot a richiesta.--Alex brollo (disc.) 07:28, 26 mag 2012 (CEST)[rispondi]

Ancora sulle tavole fuori testo modifica

Sono sempre alla ricerca di un metodo per inserire le tavole fuori testo in modo che siano al posto giusto ed il testo vi scorra intorno, pur mantenendo la correzione del testo nella pagina corretta. Far scorrere il testo intorno ad una tavola è possibile inserendola in una tabella (qui e pagine seguenti un esempio) ma non è facilmente intuibile e spesso la tavola non è posta al posto giusto. Il miglior risultato grafico è inserirla dopo un capoverso, ma si pone il problema di tenere insieme il testo nello stesso paragrafo saltando una pagina. Il template {{pagina}} va bene ma genera in ns0 un numero di pagina ambiguo e indipendente dal delta (vedi qui). Ho pensato ad un template come "pagina" ma che non generi il numero laterale, ma ... è troppo incomprensibile per le mie capacità. Avevo pensato di chiamarlo "Unisci paragrafo" o qualcosa del genere. Qualcuno mi aiuta? E visto che nell'intenzione dovrebbe servire solo in ns0 potrebbe addirittura essere invisibile in nspagina (così evito l'uso del famigerato satura-server Pt). --Luigi62 (disc.) 16:25, 31 mag 2012 (CEST)[rispondi]

E' un problema che mi ha devastato; è evidente in quelle opere dove non ci sono che rarissimi fine paragrafi (sono così molte opere antiche). Mi piacerebbe risolvere il problema una volta per tutte. Hai una pagina di esempio da pasticciare? Oppure, possiamo costruirne una sperimentale? --Alex brollo (disc.) 22:39, 31 mag 2012 (CEST)[rispondi]
Io ho fatto delle prove qui, infatti l'immagine è ancora transclusa doppia. --Luigi62 (disc.) 23:11, 31 mag 2012 (CEST)[rispondi]
L'esempio mi ha chiarito alcuni aspetti della questione (mica avevo capito la questione del "fuori testo").
Tanto per cominciare, direi che sistematicamente le pagine fuori testo potrebbero essere leggermente spostate rispetto alla posizione originale, e certamente ficcate sempre dopo un capoverso risolvendo alla radice il problema dell'interruzione del paragrafo. In secondo luogo, per evitare il problema della comparsa del numerello-link di pagina, si può usare la "transclusione selettiva liscia" con la sintassi {{#section:......}}. In terzo luogo, non mi pare che Pt sia particolarmente server-expensive, le funzioni veramente expensive sono quelle che costringono il server a leggere altre pagine (in particolare #ifexists e anche i magheggi con transclusione selettiva di pagine-dati: pazienza).
Mi pare che il problema sia in sostanza: come accodare due tag pages distinti, in modo che un eventuale paragrafo che inizia in uno e finisce nell'altro non si spezzi? mesi fa era facilissimo: bastava mettere i due pages di seguito nella stessa riga. Poi qualcosa è cambiato, e ci sono impazzito: ma questo è il punto su cui concentrare l'attenzione, e se proprio non c'è modo, occorre aprire un bug e chiedere che la vecchia situazione sia ripristinata. Proporrei di creare, da qualche parte, un "modellino" del bug su cui fare prove e prove. Verifico se qui si presta come caso esemplare; provo a accodare due pages in una sandbox e non avrò pace, finchè l'interruzione di riga non sparisce. --Alex brollo (disc.) 09:38, 1 giu 2012 (CEST)[rispondi]
Giusto per essere chiari, una tavola fuori testo è un'immagine che occupa un'intera pagina, spesso ha il retro bianco, talvolta non fa parte della numerazione, ha spesso una didascalia e un riferimento alla pagina del libro a cui si riferisce. Il termine le distingue dalle immagini nel testo. Visto che sono sparse in maniera più o meno regolare in un testo l'idea è di portarle là dove si vorrebbe averle.
Scusa, ma non so che cosa sia {{#section:......}}, puoi indicarmi un esempio? Per Pt in effetti non volevo dire che occupa molto i server, ma che usato in gran quantità (inutilmente) è solo lavoro aggiuntivo. Ne avevamo già parlato in occasione degli indici analitici (lì sì che sono tanti). --Luigi62 (disc.) 10:38, 1 giu 2012 (CEST)[rispondi]
E' solo la sintassi "base" della transclusione selettiva; il template {{Pagina}} incorpora il meccanismo e ci aggiunge il linketto a sinistra. Quindi, per evitare il linketto, basta usare la sintassi base.
Ma se si stratta di transcludere un'intera pagina, come nel caso delle figure fuori testo, non serve nemmeno scomodare #section; si transclude direttamente con la sintassi normale, per cui {{Pagina:Avventure di Robinson Crusoe.djvu/42}} transclude l'immagine senza linketto e fine (prova il codice). --Alex brollo (disc.) 11:07, 1 giu 2012 (CEST)[rispondi]

Bug e sua toppa modifica

Esiste un bug (ma non chiedetemi di segnalarlo in bugzilla: ODIO bugzilla). Il bug consiste in questo: il tag pages NON è identico nel codice html risultante a una serie di template {{Pagina}} come dovrebbe; una volta lo era ma qualcuno ha aggiunto una cosetta: una div che circonda il contenuto. Al contrario, una lista di tag Pagina genera una serie di paragrafi non contenuti in una div, con un meccanismo per cui i paragrafi di pagine consecutive si fondono; due tag pages consecutivi invece non si fondono.

La soluzione di Robinsn Crusoe è la seguente:

  1. non usare il tag pages ma una sequenza di {{Pagina}}, che "salti" le pagine 41 e 42;
  2. nella pagina 43, inserire, dentro includeonly, la transclusione "liscia" della figura di pag 42 con la seguente sintassi:
lancio nel mare anche voi.»<includeonly>


{{#section:Pagina:Avventure di Robinson Crusoe.djvu/42|1}}

</includeonly>

Il fanciullo mi

Le righe bianche e il loro rapporto con i tag noinclude servono a creare spaziature e indentature corrette in transclusione e in visualizzazione della pag. 43. In transclusione la pagina 43 si "tira dietro" la transclusione della tavola fuori testo.

Quando e se verrà eliminato "il bug della div inutile di pages", allora basterà accodare due tag pages (da pag 34 a pag 40; sola pagina 43) e l'effetto sarà identico; prima che il bug sia risolto, non c'è modo; la div attorno a pages è "nuda", senza attributi, e non riesco a immaginare nemmeno uno script js che la identifichi e la cancelli. --Alex brollo (disc.) 23:46, 1 giu 2012 (CEST)[rispondi]

Si aggira un problema e se ne crea un altro: i numeri di pagina non sono quelli del testo ma quelli del Djvu. Lo considero un bug da risolvere e smetto di cercare "trucchi" per aggirare l'ostacolo. --Luigi62 (disc.) 17:00, 4 giu 2012 (CEST)[rispondi]
Non capisco... quali numeri di pagina? Quelli dentro i tag/i template? Quelli visualizzati in ns0 come link? :-( --Alex brollo (disc.) 17:45, 4 giu 2012 (CEST)[rispondi]
Si proprio quelli piccoli sulla sinistra, e la relativa àncora associata. --Luigi62 (disc.) 17:51, 4 giu 2012 (CEST)[rispondi]

Selezione js di un elemento di una lista creata dinamicamente modifica

Ho dato un'occhiata a jQuery UI SELECT, demoralizzandomi. Il problema che ho è semplicissimo e vorrei risolverlo con uno script semplicissimo; si tratta di presentare all'utente che edita una pagina un box contenente una lista di elementi creati in base al contesto, e permettergli di acchiappare un valore (e chiudere il box) con un singolo click su uno degli elementi. Il caso mi ha fatto venire in mente questa cosa è la selezione di un autore da una lista di omonimi per sigla nella gestione di AutoreCitato (es: Plinio).

Il modo più grezzo di risolvere la cosa è un semplice prompt con items numerati, che inviti a pigiare un numero + enter. Non è male, ma chi usa il prompt fa la figura dell'uomo delle caverne. L'algoritmo che potrei usare è:

  1. definire una singola variabile globale itemSelezionato
  2. preparare la lista
  3. trasformarla in una lista html in cui ogni elemento abbia un attributo onclick che chiama una identica funzione selezione() a cui si passi, come parametro, contenuto dell'item
  4. montare il tutto in un box fisso sullo schermo, modale
  5. questa funzione farebbe due cose:
    1. chiuderebbe il box
    2. aggiornerebbe il contenuto della variabile globale itemSelezionato

Due funzioni, in tutto una decina-quindicina di righe direi. Vale la pena che ci provo? --Alex brollo (disc.) 23:02, 1 giu 2012 (CEST)[rispondi]

Arricchire l'output di dynamicpagelist modifica

Ho dato un'occhiata all'html prodotto da dynamicpagelist per vedere se la lista risultante può essere agganciata da jQuery. Risultato negativo: i tag html sono elementi lista nudi, senza classe nè attributi che li identifichino. Proporrei annidare sistematicamente le chiamate a DPL in una div class="dpl", in modo che un banalissimo $(".dpl li") ripeschi tutti gli elementi.

Fatto ciò, e tutt'altro che difficile creare un js che scorra la lista e arricchisca ogni elemento di quanti dati si vuole, recuperati leggendo via AJAX il wikitesto, esattamente come un tempo gli script di IPork aggiungevano il simbolino SAL a Testo. Che ne dite, geek maggiori? --Alex brollo (disc.) 10:37, 4 giu 2012 (CEST)[rispondi]

Transclusione inter_media modifica

La discussione sulle lapidi roveretane mi ha fatto sorgere una domanda: è possibile transcludere una sezione di un testo tra un progetto ed un'altro? Ad esempio è possibile inserire l'incipit di un libro in wikiquote "includendolo" direttamente da source? --Luigi62 (disc.) 17:05, 4 giu 2012 (CEST)[rispondi]

No - tranne casi particolari; l'unico esempio che conosco di vera transclusione interprogetto è quello fra diverse wikisource via Iwpage etc; mi pare di aver capito che secondo Candalua dentro il codice che permette Iwpage c'è il trucco per qualsiasi transclusione interprogetto, ma se c'è io non l'ho capito. :-( --Alex brollo (disc.) 17:49, 4 giu 2012 (CEST)[rispondi]
La transclusione interprogetto è un'araba fenice, nelle liste c'è spesso l'annuncio "Ci siamo quasi" e poi la cosa termina. --Alex brollo (disc.) 17:49, 4 giu 2012 (CEST)[rispondi]

Novità in transclusione .... modifica

  1. il nostri template Pagina è molto disallineato con il template canonico en:Template:Page
  2. la sintassi del tag pages è leggermente cambiata. :-(

Ho provato a caricare il template come template:Page ma non funzia qui; subodoro che lavori in coppia con qualche script js ma sono in difficoltà a raccapezzarmi sull'argomento dentro en:ws. Il template Page accetta un parametro num= dove mettere il numero di pagina "cartacea" risolvendo il problema segnalato da Luigi62. --Alex brollo (disc.) 13:44, 5 giu 2012 (CEST)[rispondi]

Due funzioni js per le pagine indice (per ci) modifica

Nella mia pagina [Utente:Alex brollo/AJAX, API, JSON] trovate due nuove funzioni js per le pagine Indice.

  • la prima, obIndex(nome pagina indice), restituisce un oggetto a due livelli; al primo si accede con la chiave n. pagina, il secondo è un oggetto associato alla pagina che contiene gli attributi title, quality e label. Se la pagina è rossa, quality vale "new".
  • la seconda, passatogli l'oggetto obIndex, restituisce uno oggetto che contiene il conteggio delle pagine delle varie quality: 0, 1, 2, 3 , 4 e new.

Mi serviva, ma forse serve anche a voi. --Alex brollo (disc.) 12:04, 29 lug 2012 (CEST)[rispondi]

Siccome dalla mia postaziomne pirata ti vedo qui solingo e derelitto, mi/ti pongo un quesitto (lic. poet.). Dal basso della mia ingoranza chiedo: è possibile che questo ultimo coso che conta possa portare a compimeneto quella pagina-contatore di cui parlammo orsono un mese fa? (non farmi cercare non ho i link personali, qui). Pagina che permetterebbe di automatizzare almeno parte dei "testi da portare a termine". T'aricordi? Sarebbe bellissimo. Si scoprirebbe che a un pezzo dei 'miei' mancano tre pagine per arrivare al 100%. Wow! F,to il tuo persecutore preferito... :P 193.138.160.115 12:27, 29 lug 2012 (CEST)[rispondi]
Si e no. E' un attrezzo che risolve il problema (e ne risolve altri più exotici) per un indice, con buon dettaglio; l'"oggetto" non solo permette di dire quante pagine di un Indice sono SAL XXX%, ma permette anche di fornirne l'elenco sia in termini di pagina djvu che in termini di pagina cartacea e permette inoltre, pagina per pagina, di rispondere sempre a questa domanda: "Che pagina cartacea contiene la pagina djvu XXX?" e molto spesso quest'altra: "In che pagina djvu è contenuta la pagina cartacea XXX?"?); non è detto che sia la strada migliore per risolvere il problema per una grossa massa di pagine indice; per quello occorrerebbe insistere sulla strada alternativa su cui alcuni passi son stati fatti. --Alex brollo (disc.) 08:25, 30 lug 2012 (CEST)[rispondi]

Pagina non completamente visualizzata in forma testuale modifica

Salve. Sto rileggendo il Saggio di Rime devote e morali della M. Santini
Non capisco perché di questa pagina http://it.wikisource.org/w/index.php?title=Pagina:Saggio_di_rime.djvu/20 non venga visualizzata la parte superiore quando la richiamo dalla versione testuale, ovvero da qui: http://it.wikisource.org/wiki/Saggio_di_rime_devote_e_morali/Signor%2C_qual_ferrea_scorza%2C_o_marmo_ha_tolto#pagename20 Eppure è sempre la pagina XIX --Pic57 (disc.) 17:38, 30 lug 2012 (CEST)[rispondi]

Scusate, ho risolto con un section begin="1" section end="1" - Pare a posto, ma forse è meglio che qualcuno controlli
--Pic57 (disc.) 18:01, 30 lug 2012 (CEST)[rispondi]

Credo fosse stato fatto appositamente per evitarne la tranclusione; in caso contrario basta togliere le section.--Barbaforcuta (disc.) 19:15, 30 lug 2012 (CEST)[rispondi]

Problemino con il template Testo modifica

Nelle opere di "Autori vari" (vedi Rivista_di_Cavalleria_-_Volume_IX il template testo vistalizza titolo dell'articolo/sezione/capitolo, SAL e basta. Sarebbe comodo che visualizzasse anche l'autore quando specificato con il parametro opzionale autore di IncludiIntestazione. Proverò a ottenere l'effetto; se non ci riesco o me ne dimentico, un bell'eservizio per chi ama immergersi nei template complessi. La frase da trasformare in codice template è: "se testo visualizza una sottopagina, e se l'autore vale Autori vari, allora visualizza l'autore del testo nella sottopagina, quando è indicato". --193.43.176.29 08:42, 31 lug 2012 (CEST)[rispondi]

Ti consiglio di chiedere ad Alex_brollo che è pratico di cavalli AND di template :DD --Silvio Gallio (disc.) 08:53, 31 lug 2012 (CEST)[rispondi]
Buon consiglio! se non fosse che la domanda era fatta da me, accidentalmente sloggato. :-(

(fuori crono) Ma veh! chi l'avrebbe mai detto! :PP Silvio Gallio (disc.) 14:56, 1 ago 2012 (CEST)[rispondi]

Ma voi avevate riconosciuto la sintassi e la chiarezza, vero? --Alex brollo (disc.) 18:49, 31 lug 2012 (CEST)[rispondi]
Ho guardato il codice di Testo, non è facile inserire questa condizione aggiuntiva.... la logica di una batteria di if annidati è sempre un guazzabuglio. Per ora rinuncio, devo "entrare" molto di più nella psicologia del delicato e permaloso template. Quasi quasi ripiego su un parametro aggiuntivo o su un valore aggiuntivo del parametro tipo=. --Alex brollo (disc.) 08:23, 1 ago 2012 (CEST)[rispondi]

Problema tecnico? modifica

Mio ma possibilmente universale (?) :( - Indice:Capitolato della strada ferrata Centrale italiana.djvu è stato portato al 100%, però nella mia pagina utente il DPL non lo cancella dalla lista dei quelli al 75%. Dove sbaglio? 10q --Silvio Gallio (disc.) 08:53, 31 lug 2012 (CEST)[rispondi]

Sarò accecato ma nell'elenco SAL 75% mica lo vedo.... :-( --Alex brollo (disc.) 18:48, 31 lug 2012 (CEST)[rispondi]
Beh io sì, ma ho premuto Purge e tutto è tornato alla normalità.--Barbaforcuta (disc.) 18:54, 31 lug 2012 (CEST)[rispondi]
Potenza dell'olio di ricino. Chissà, forse in futuro questa antica e solida terapia per far ragionare sarà riscoperta. --Alex brollo (disc.) 07:55, 1 ago 2012 (CEST)[rispondi]

Il problema della "pagine nere" modifica

Segnalo questa discussione che ho aperto al bar di Commons:

Ci sarebbe una soluzione, ma temo che si basi su cose che non sappiamo. Proverò a seguire il suggerimento proveniente da fr.source, ma però che par di palle.... --Alex brollo (disc.) 18:44, 31 lug 2012 (CEST)[rispondi]

Sarebbe qualcosa di auspicabile; a volte mi è capitato di vedere pagine bianche con la stessa iconcina centrale: hanno la medesima causa di quelle nere?--Barbaforcuta (disc.) 18:52, 31 lug 2012 (CEST)[rispondi]
Niente edit nemmeno stasera.... provo a capirci qualcosa, ma so già che ne emergerò depresso. :-( --Alex brollo (disc.) 23:16, 31 lug 2012 (CEST)[rispondi]
Niente edit, ma riemergo vincitore. :-)
Dipendeva dal fatto che la prima pagina (il disclaimer Google) aveva una grandezza esageratamente diversa dalle altre pagine. E' bastato sostituirla con una pagina bianca di dimensioni regolari, e adesso le immagini si producono benissimo. :-)
Confermo comunque che è cambiato qualcosa nella generazione delle immagini derivate (che enorme fastidio). --Alex brollo (disc.) 00:29, 1 ago 2012 (CEST)[rispondi]

Uhm! Io il disclaimer lo tolgo sempre (e spesso non solo quello) però ultimamente di pagine nere ne vedo parecchie anche sui 'miei' file. Forse è un resto del temntativo si correggere quel baco maledetto che fa(ceva?) sballare le pagine. Meno male che qualcuno ha prodotto i bottoni appositi. Grazie Alex! --Silvio Gallio (disc.) 14:53, 1 ago 2012 (CEST)[rispondi]

Pseudo-transclusione modifica

Erasmo, Barbaforcuta & C. stanno facendo un bel lavoro con il futuro Progetto:Comunità, li ho diffidati dal coinvolgermi tranne per qualche piccolo dettaglio tecnico. E così loro hanno fatto: mi hanno proposto un problema che si risolve solo con la pseudo-transclusione, ossia una specie di transclusione gestita via AJAX. E' notevolmente più facile a farsi che a spiegarsi; in pratica il codice HTML della pagina "finita" viene manomesso da uno script il quale gli ficca dentro un pezzo di html (non di codice wiki, come nella transclusione!) derivante da un'altra pagina. Una "trasclusione di codice html", fatta all'insaputa del server. Tutto questo perchè, deliberatamente, per motivi di sicurezza che non conosco, non esiste alcuna "parola magica" che restituisca il nome dell'utente corrente. Non appena ci fosse: via tutto nella spazzatura! Ma intanto, se vi viene qualche idea.... --Alex brollo (disc.) 12:19, 5 ago 2012 (CEST)[rispondi]

Ajax interroga il server, quando agisce, quindi il server sa quando viene fatta una richiesta. Questo non da fastidio (suppongo che siano pochi bit di codice, rispetto ai kilobyte di un'immagine, questi sono molto meno). Credo che sia la soluzione migliore, semplice, veloce e pulita. Samuele 15:19, 5 ago 2012 (CEST)[rispondi]
Sì, hai ragione, ho esagerato. Il server "sente" la richiesta; ma non ha la minima possibilità di sapere dove quelle informazioni andranno e in che pagina verranno inserite, e come. Fra l'altro approfitto della presenza di Samuele per una cosa ai limiti delle mie possibilità di comprensione. Alcuni dei miei trucchi AJAX (la riga di intestazione "automatica",il Pt "automatico") hanno questo problema: la persistenza della risposta, che non "sente" l'eventuale edit della pagina letta. Ho trovato la spiegazione e un orrendo rimedio. La spiegazione è che se vengono spedite due richieste identiche, che alla fine sono due URL identici, il sistema non rielabora la richiesta ma restituisce gli stessi dati, memorizzati in qualche cache (anche quella del pc immagino) per cui la prima richiesta ci mette un mezzo secondo a essere completata, le successive identiche, un tempo troppo breve per essere misurato. Unico modo che ho trovato per forzare il "purge" è quello di inviare sempre URL diversi aggiungendoci un parametro nonsense con un valore random. C'è un sistema più pulito? --Alex brollo (disc.) 19:38, 5 ago 2012 (CEST)[rispondi]

Forse si può risolvere specificando di eseguire la seconda operazione solo al termine della prima:

$.ajax({
  url: 'ajax/test.html',
  success: function(data) {

  },
  complete: function(){
   alert('Ho finito di fare quello che dovevo, esegui la seconda funzione');
  }
});

Non sono però sicuro che funzioni. Give it a try! Samuele 20:27, 6 ago 2012 (CEST)[rispondi]

Manipolare il text layer dei file djvu modifica

Le routine DjvuLibre permettono di manipolare a piacimento il text layer dei file djvu. In genere ci sta dentro il testo "mappato", che permette di evidenziare parole cercate mediante la funzione Cerca dei visualizzatori specifici; ma nulla impedisce di metterci dentro qualsiasi cosa e quel "qualsisi cosa" sarà immediatamente riportato dal nostro usuale software mediawiki come testo, all'interno di una pagina, all'atto della sua creazione.

Le attenzioni che occorre avere sono parecchie; ci vuole un po' di cura per memorizzare i caratteri non stampabili, nuova riga, tabulazione ecc., e qualche altro; il problema principale è la memorizzazione del contenuto di header e footer, perchè il software estrae l'intero strato testo della pagina nel corpo pagina. Anche creando una pagina con un bot si ha un problema analogo: l'estensione proofread NON consente che all'atto della creazione della pagina si tenti di infilare il codice header/footer, mentre consente, una volta che la pagina esiste, di manipolarli (ad eccezione del dato utente, che non è modificabile ma deve essere obbligatoriamente l'utente che sta modificando la pagina: per le modifiche via bot, dev'essere il nome del bot).

Nel caricamento di prova, Indice:Dialogo della salute.djvu, è contenuto, nello strato testo, il codice wiki della pagine di Indice:Dialogo della salute.pdf, tal quale, con l'eccezione dell'aggiunta di due commenti htlm <!--HEADER:....--> e <!--FOOTER:....--> che contengono, appunto, il codice completo di header e footer. Oltre al problema della RigaIntestazione, in questo caso header e footer sono essenziali perchè l'opera contiene il marchingegno per "attaccare i dialoghi interrotti da un fine pagina", che tanto ci ha fatto patire e che prevede proprio di mettere un po' di codice in header e footer. Mi riprometto di creare un bottone che rimetta le cose a posto. Aubrey mi ha suggerito di lavorare proprio su quest'opera con istintiva malizia. :-( --Alex brollo (disc.) 07:46, 6 ago 2012 (CEST)[rispondi]

Parsing python di un file sql modifica

# import scripts
# parsing di un file sql tipo Base per-page data (id, title, old restrictions, etc). scaricabile con:
# http://dumps.wikimedia.org/itwikisource/20120802/itwikisource-20120802-page.sql.gz
def read_sql(fname="pagine.sql"):
    f=open(fname).read().split("\n")
    ff=[]
    for i in f:
        if "INSERT INTO `page` VALUES " in i:
            ff+=eval("["+i.replace("INSERT INTO `page` VALUES ","")[:-1]+"]")
    
    del f
    # fine trasformazione 1
    # in ff una "lista di tuples" [(...),(...),....]
    # in ogni tuple i, i[1] è il numero del namespace e i[2] è il nome della pagina, senza namespace; altri dati in altri 8 campi

    # trasformazione dell'oggetto ff in un dizionario fd, chiave=namespace, contenuto=lista di tuples delle singole pagine
    fd={}
    for i in ff:
        if not i[1] in fd:
            fd[i[1]]=[]
        fd[i[1]].append(i)
    # fine trasformazione 2
    # in fd un dizionario di liste di tuples, con chiave namespace (numero), {0:[(...),(...),....], 1:[(...),(...),....],...}
    
    return fd

Annoto qui la mia "scoperta" di ieri sera, un astuto script python che trasforma un file sql in un comodo oggetto python. Quello che trovo piuttosto impressionante è la sintesi che python permette, e la velocità di esecuzione: fa due parsing distinti di "oggettini" di oltre 250.000 elementi, ciascuno di una decina di campi, in meno di un minuto. Alex brollo (disc.) 07:35, 9 ago 2012 (CEST)[rispondi]

Revisione meccanismi di alcuni "giocattoli" modifica

Alcuni giocattoli, i più "magici", si basano su un meccanismo di grande semplicità logica: al momento dell'edit, uno script carica anche il contenuto (il codice wiki) delle due pagine Pagina precedenti con due interrogazioni AJAX. da questi dati:

  1. lo script "sa" se nella pagina immediatamente precedente c'è l'apertura di un template Pt, che va quindi chiuso;
  2. lo script "sa" se nella pagina precedente ci sono numeri di verso, e quindi ha modo di proporre la continuazione della numerazione versi;
  3. lo script "sa" se nella penultima pagina c'è un template RigaIntestazione, e può tirare a indovinare (modificando il numero di pagina) il RigaIntestazione giusto per la pagina corrente.

Attualmente, tali letture scattano di default al momento dell'apertura di una pagina Pagina in edit; a prescindere dal fatto che tali dati siano, o non siano, utilizzati. Inoltre, per economia di letture, i dati non sono ricalcolati, per cui succede che lo script non "veda" modifiche molto recenti.

Introdurrei due modifiche:

  1. lettura dei dati consensualmente alla pressione di uno dei bottoni che richiedono la disponibilità del dato; questo alleggerisce i server evitando letture inutili;
  2. sistematica richiesta di purging dei dati; questo appesantisce il carico dei server, ma l'aumento viene compensato dall'alleggerimento di cui al punto 1.

Che ne dite? --Alex brollo (disc.) 11:00, 16 ago 2012 (CEST)[rispondi]

Direi che è una buona idea, procedi ;) Samuele 11:12, 16 ago 2012 (CEST)[rispondi]
Una cosa che mi dispiace un po', ma chi è causa del suo mal ecc., è che non so quanti utenti, non molti, conoscano e usino newRi e autoPt. Io senza di loro sarei morto; sono di una comodità enorme ma.... se ci fosse della doc, e se ci fosse un avviso che c'è la doc, e se ci fosse un avviso di dove ci sono gli avvisi che c'è la doc.... eccetera. :-( --Alex brollo (disc.) 15:02, 16 ago 2012 (CEST)[rispondi]
Ogni tanto mi chiedo: ma siamo solo noi che abbiamo questi problemi? (Sono problemi talmente "alla base" che sembrano quasi impossibili da risolvere) Samuele 00:01, 19 ago 2012 (CEST)[rispondi]
Forse dovremmo davvero mettere su una convention, sederci a un tavolo, guardarci in faccia e decidere una road map per fissare un minimo di procedura comune. Parlarci di persona facilita molto. Qui (ma un po' dappertutto in wiki) facciamo tanti bei discorsi un po' dappertutto e poi non riusciamo a focalizzare e a definire una volta per tutte.
La butto là; se pensate che possa servire, per ottobre-novembre organizzo qualcosa a Bologna a) perché ci abito :P; b) perché è abbastanza vicina per molti degli assidui. Non dovrebbe essere impossibile collegarci con chi non si può muovere di casa, usando skype e/o qualche altra diavoleria.Silvio Gallio (disc.) 11:25, 19 ago 2012 (CEST)[rispondi]

ResourceLoader, ti possino modifica

Ho il seguente problema, tipicamente ResourceLoader, nel mio vector.js di wikiquote.

  • carico in vector.js una libreria di script js che sta in una mia sottopagina Libreria.js:
importScript('Utente:Alex_brollo/Libreria.js');
  • a questo punto dovrebbe essere definita una funzione newButton(), definita in Libreria.js; se tento di usarla con:
importScript('Utente:Alex_brollo/Libreria.js');
newButton("show","show");

ottengo un errore, funzione non definita. Ma da console, vedo che è definita. Immagino che la funzione venga chiamata intanto che la libreria è in corso di caricamento. Che grandissimo paro di maroni.... mi tocca metterele newButton dentro la libreria, ma volevo evitarlo per snellire il compito degli utenti, senza spaventarli con un centinaio di righe di codice, nel caso volessero "aggiungere un bottone".

Ora, il sistena mw.load.using() funziona con moduli. Non c'è modo di farla funzionare con script/raccolte di script che non siano moduli? Oppure: come trasformo Libreria.js in un modulo? La doc è arabo puro. --Alex brollo (disc.) 17:48, 21 ago 2012 (CEST)[rispondi]

Trovato uno "sporco rimedio". q:Utente:Alex brollo/vector.js importa q:Utente:Alex brollo/Libreria.js e Libreria.js (ultima riga) importa q:Utente:Alex brollo/Bottoni.js; così ho il mio risultato di "separare" a libreria dalla routine che contiene il puro elenco dei newButton(), e che è molto meno impressionante di Libreria.js per un utente impressionabile. :-)
Se c'è di meglio: ben venga.... --Alex brollo (disc.) 10:45, 22 ago 2012 (CEST)[rispondi]

Riporto qui sotto le funzioni interessate:

function importScript(page){
var uri=mw.config.get('wgScript')+'?title='+mw.util.wikiUrlencode(page)+'&action=raw&ctype=text/javascript';
return importScriptURI(uri);
}

function (url){
if(loadedScripts[url]){
return null;
}
loadedScripts[url]=true;
var s=document.createElement('script');
s.setAttribute('src',url);
s.setAttribute('type','text/javascript');
document.getElementsByTagName('head')[0].appendChild(s);
return s;
}

In pratica aggiungono all'head lo script in modo da farlo caricare alla pagina e utilizzarlo in qualsiasi posizione. Naturalmente il server è lento e puoi notare anche tu che non c'è un callback in queste funzioni. Ti propongo quindi questa soluzione:

function myimportScript(page,callback){
var uri=mw.config.get('wgScript')+'?title='+mw.util.wikiUrlencode(page)+'&action=raw&ctype=text/javascript';
importScriptURI(uri);
if (callback && typeof(callback) === "function") {
        callback();
    }
}

Implementando un callback, si può eseguire una funzione dopo che lo script è stato aggiunto nell'head:

myimportScript('Utente:Alex_brollo/Libreria.js',function(){console.log('Esegui altri script')})

Spero di essere stato d'aiuto :) Samuele 11:15, 23 ago 2012 (CEST)[rispondi]

Sei stato l'aiuto se ho capito. Non sono sicurissimo... proverò. --Alex brollo (disc.) 11:42, 23 ago 2012 (CEST)[rispondi]
Ho capito! Ho capito! Ho capito che non ho capito una minchia!
Un gran passo avanti. Questa cosa del callback mi farà penare prima di interiorizzarla.... e finchè non la capisco non la uso. --Alex brollo (disc.) 23:12, 23 ago 2012 (CEST)[rispondi]

Il callback ti permette di eseguire una funzione solo quando lo script è caricato, evitando quindi errori ed impossibilità di eseguire la funzione perchè non è ancora stata caricata. Con il callback puoi dire al software wiki: "Prima carichi lo script e solo dopo esegui la funzione che per essere eseguita necessita dello script, altrimenti non può funzionare!" (con voce grossa e rude).

Nella pratica: non resta da fare altro che applicare un callback alla funzione di importScript, dato che Media-Wiki non l'ha messo, ci pensiamo noi con la funzione myimportScript (che ti ho scritto sopra). Può essere messa in commons oppure all'inizio del tuo vector. Ora che la nuova funzione ha un callback, possiamo definirne uno:

myimportScript('Utente:Alex_brollo/Libreria.js', function(){
                                                      //Esegui quella funzione che ha bisogno di Libreria.js
                                                      });

In questo modo, possiamo eseguire le funzione function(){ //Esegui quella funzione che ha bisogno di Libreria.js } solo dopo che Libreria.js è stata caricata.

Prima lo avevo spiegato male, ma spero che adesso sia chiaro, anche se so che non sarà chiaro finchè non lo sperimenti: Sperimentalo :) Samuele 09:48, 24 ago 2012 (CEST)[rispondi]

Posso annidare la cosa? Nel mio caso, occorre leggere Libreria.js (generale), poi Bottoni.js (personale), poi c'è quel che serve. Immagino anche che il codice di myimportScript() debba stare bene in alto sulla pagina chiamante.--Alex brollo (disc.) 00:41, 26 ago 2012 (CEST)[rispondi]

Dopo tanto tempo.... un'idea nuova modifica

Segnalo ai geek di vario ordine Utente:Alex brollo/parseTemplate.js, minilibreria di script js. Fa una cosa carina; schivando vari trabocchetti, datogli il nome di un template e un testo che lo contiene (altrimenti cerca direttamente nella finestra di edit), restituisce un dizionario dei parametri, compresi quelli posizionali, e aggiungendo il nome del template come coppia "template"=nome template.

Questo significa: molta meno fatica nel fare il parsing di template anomali per parametri alieni, spaziature, a capi, e anche di quei malefici template che contengono al loro interno costrutti wiki (indirizzi, altri template), che ingannano qualsiasi sistema basato sul semplice "splittaggio" sul carattere |. --Alex brollo (disc.) 00:37, 26 ago 2012 (CEST)[rispondi]

parseMetadata modifica

In modo del tutto inaspettato, è possibile leggere con estrema facilità, via banalissimo AJAX, l'html della pagina "informazioni" di qualsiasi file immagine (nsFile) usato su wikisource, anche se il file sta su Commons:; in pratica, sono accessibili via AJAX tutti i dati che appaiono nella pagine File: e che rimandano a Commons.

La lettura di questi dati, limitatamente alla tabella che riporta Descrizione, Autore, Fonte ecc. è già operativa; lo script parseMetadata(), che li restituisce in formato variamente utilizzabile, è stata annidata in show() e viene chiamata da show(1), per cui vi incoraggio a montarvi e a provare:

newButton("metadati","show(1)");

e cliccare il nuovo bottone su una qualsiasi pagina ns0 proofread, Indice o Pagina (tutte direttamente o indirettamente dipendenti da un file djvu o pdf) e guardare l'effetto che fa. :-)

La cosa sembra nuova (John Vandenberg ha commentato positivamente, come se la considerasse una novità assoluta) e anche grossa. Attendo il commento di Edo; questo potrebbe integrare molto bene il nostro nutrito set di dati "semantizzati" e soprattutto terrebbe allineati i dati su Source comn i dati su Commons, il che non è affatto facile da ottenere "a buona volontà". --Alex brollo (disc.) 13:36, 28 ago 2012 (CEST)[rispondi]

Interrogazione AJAX API interprogetto modifica

E' possibile. Non solo, ma non è neanche così difficile. Trovate le annotazioni nella mia pagina AJAX, API, JSON. Buona "interpretazione". Giocattoli in arrivo! --Alex brollo (disc.) 06:49, 31 ago 2012 (CEST)[rispondi]

Costruito il lettore universale AJAX per qualsiasi progetto wiki, lancia una API su qualsiasi progetto grazie al suggerimento di Brion Vibber su wikitech-l. La funzione (grezza) sta in Utente:Alex brollo/getPage.js; la versione attuale restituisce un oggetto JSON da API query rprop, da cui un'altra funzione estrae il codice wiki della pagina. ma la funzione può inviare qualsiasi richiesta API (qualsiasi!). Chi può, vada avanti.... si dischiudono prospettive illimitate, tutti i progetti wiki diventano un unico grande contenitore da cui acchiappare i più inimmaginabili dati. --Alex brollo (disc.) 12:15, 31 ago 2012 (CEST)[rispondi]
Testata una variante getHtml, che cattura l'html di qualsiasi pagina di qualsiasi progetto. --Alex brollo (disc.) 00:38, 12 set 2012 (CEST)[rispondi]

Modifica non consentita modifica

Cosa può essere? Ho copiato tutto l'inferno del Lana e adesso mi dicono modifica non consentita per questa pagina Pagina:Commedia - Inferno (Lana).djvu/31. --FranzJosef1 (disc.) 09:52, 31 ago 2012 (CEST) ...forse ho sbagliato bar[rispondi]

Correzioni (mie) forse sistematicamente errate... modifica

Scusate se faccio domande ovvie, non contribuisco con continuità... Stavo contribuendo alla rilettura di un testo del mese:

http://it.wikisource.org/wiki/Indice:In_morte_di_Lorenzo_Mascheroni.djvu

Ho notato diversi errori di trascrizione ma... ho corretto senza dubbi fino a quando mi sono imbattuto in questa pagina:

http://it.wikisource.org/wiki/Pagina:In_morte_di_Lorenzo_Mascheroni.djvu/85

Al verso:

E de’ gemiti al suon che il ciel feriva,
D’ogni parte iracondo e senza posa,
L’adriaco flutto ed il tirren muggiva.

Mi pareva ovvio che ci fosse qualche problema dato che mi pare ovvio sia tirren e non terren come da copia cartacea (inoltre non maiuscoli come Adriaco e Tirren vorrebbero...). Controllo su Google e trovo la conferma:

http://books.google.it/books?id=MZkHAAAAQAAJ&pg=PA313&lpg=PA313#v=onepage&q&f=false

Alché non so più che fare. La copia del cartaceo? Anche se è ovviamente sbagliata? O sto "correggendo" delle correzioni? Aiuto!

Ciampix (disc.) 16:03, 3 set 2012 (CEST)[rispondi]

In teoria dovremmo attenerci al cartaceo, salvo nei casi in cui siamo assolutamente certi dell'errore: in tal caso lo correggiamo con il template Ec. Se non sbaglio, mi sembra che Edo abbia provveduto in tal senso: dai un'occhiata alla pagina per un raffronto.
In caso di dubbio è bene indicare il possibile errore in attesa di qualcuno che sappia prendere una decisione in proposito: un po' come hai fatto tu qui ma, ancor meglio, nella pagina di discussione dell'opera. Riguardo alle maiuscole potrebbe trattarsi di una scelta dell'editore, ma è bene che si pronunci chi ne sa di più.--Barbaforcuta (disc.) 00:01, 4 set 2012 (CEST)[rispondi]
Prudenza. Hai fatto bene a limitare le ingerenze e chiedere.
Su maiuscole e minuscole è meglio non interpretare: le convenzioni la riguardo sono talmente ballerine nel corso del tempo che non mi stupirebbe se a distanza di pochi anni un editore troppo solerte abbia maiuscollizzato o minuscoizzato a suo arbitrio. Nel dubbio manteniamo il dettato del testo
su tirren piuttosto che terren credo proprio che si tratti invece di un errore di stampa: la presenza di adriaco, la figura retorica in cui flutto concorderebbe chiasticamente sia con adriaco che con tirreno, l'incongruenza di un "terreno che muggisce" rispetto alla inveterata immagine del "muggire" delle onde marine, mi fanno propendere per un erratum da corrigere. Sottoscrivo quanto scritto da Barbaforcuta. - εΔω 00:09, 4 set 2012 (CEST)[rispondi]

Candalua, Samuele, L0ll0.... aiuto!!! modifica

Una banalità ma non ne esco. Chi mi sa spiegare perchè MediaWiki:Gadget-autoSal0.js si rifiuta di funzionare? La parte critica è il codice dentro document.ready. C'entra la sequenza di caricamento degli script, perchè da console funziona. --Alex brollo (disc.) 22:40, 12 set 2012 (CEST)[rispondi]

Voglio solo avvisarti che sto trovando di nuovo il tempo per Wikisource e che adesso ci do un occhio. Samuele 18:13, 13 set 2012 (CEST)[rispondi]
Ho provato molte possibile soluzioni e questa è la migliore, credo:
$("*").one('mousemove',function(){console.log('immagine caricata');$("span.quality0 input").attr("onclick","autoSal0_run()")});

Samuele 18:35, 13 set 2012 (CEST)[rispondi]

Magnifico, montata, funzia!!! Adesso ci attacchiamo la questione dell'Iwpage automatico! --Alex brollo (disc.) 23:25, 13 set 2012 (CEST)[rispondi]
Ok. La nuova regola è: Se si pigia il radiobutton SAL 00% e in una delle due pagine precedenti c'è un template Iwpage, allora quel template Iwpage sarà inserito al posto dell'eventuale testo OCR presente nella pagina appena creata. L'uso dirà se la cosa presenta qualche trabocchetto. --Alex brollo (disc.) 23:48, 13 set 2012 (CEST)[rispondi]
Ho fatto una prova in anteprima e funziona tutto perfettamente. :) --Barbaforcuta (disc.) 23:53, 13 set 2012 (CEST)[rispondi]
Bene! cancello (e salvo "in memoria") il console.log che è un messaggio di debugging e che avevo diligentemente copiato :-D (grazie Samuele, utilissimo! L'avevo visto in giro e non lo trovavo più).
Quanto mi piace questo ambiente e questa comunità.... questo brevissimo spazio che c'è fra il dire e il fare, lavorando insieme, a progetti magari piccoli, ma concreti... Fosse così tutto il mondo, sarebbe molto migliore.... --Alex brollo (disc.) 22:35, 14 set 2012 (CEST)[rispondi]
Diciamo che però non è molto elegante che ogni volta che muovo il mouse su un elemento la funzione venga chiamata... Significa spararla 5-600 volte a visualizzazione pagina. =P
Non sono un esperto né di jQuery né di scripting wiki (ci sono particolari restrizioni?), ma non basterebbe mettere qualcosa di più semplice? Del tipo
$("span.quality0 input").click(autoSal0_run());
--L0ll0 (disc.) 20:13, 15 set 2012 (CEST)[rispondi]
Ok, mi rispondo da solo: la mia soluzione non funziona per lo stesso motivo della prima! Il blocco dell'avanzamento SAL viene aggiunto dinamicamente dopo il caricamento della pagina. Leggendo qua e là ho trovato questa soluzione da provare:
$("body").on("click", "span.quality0 input", function(){ autoSal0_run() });
In questo modo si attacca l'evento al body, che di sicuro già esiste in fase di caricamento, ma con delega specifica ad un eventuale elemento "span.quality0 input" che poi arriverà. Sulla carta dovrebbe funzionare, necessita di prova... =P --L0ll0 (disc.) 09:39, 16 set 2012 (CEST)[rispondi]
La funzione one è una funzione particolare che viene eseguita una sola volta, dopodiché si disattiva e non si esegue più. Samuele sloggato.
Immaginavo, però il console log continua a sparare l'evento una volta per ogni elemento del DOM, non una volta in assoluto. Poi ripeto: anche io sono del partito che (finché non darà problemi) se funziona va più che bene! =D --L0ll0 (disc.) 08:02, 17 set 2012 (CEST)[rispondi]
Molto infastidito dal messaggio console.log ho "potato" il codice e l'ho eliminata, suppongo che avesse solo una funzione di debugging. Adesso la console si è acquietata ma il meccanismo pare funzionare egualmente. --Alex brollo (disc.) 08:16, 20 set 2012 (CEST)[rispondi]
Giusto, devo correggermi, non esegue una volta solo, o meglio: esegue una volta solo ma per ogni elemento nella pagina, quindi tante volte. Se si vuole eliminare il problema, basta togliere "*" con "body" Samuele 17:41, 20 set 2012 (CEST)[rispondi]
Ottimo! Vai e fallo, se non l'hai già fatto! --Alex brollo (disc.) 09:31, 21 set 2012 (CEST)[rispondi]

Michela Gabrielli modifica

Volevo sapere se era vero che l'art. 88 della Costituzione Ital. fosse stato modificato circa nel 1993?

ehm, questo non è il posto giusto per fare questa domanda. Forse potresti ricevere maggior ascolto presso questa pagina. Comunque trovi qui da noi il testo originale della Costituzione italiana, quello più moderno e un elenco delle leggi costituzionali aggiornato.

Il punto sulle letture AJAX interprogetto modifica

Metto giù i punti fondamentali della lettura AJAX interprogetto, basata sul (deprecato ma suggeritomi in lista wikitech) meccanismo JSONP.

  1. è possibile lanciare dal progetto wiki A al progetto wiki B una richiesta API qualsiasi e ricevere il risultato elaborato dal server del progetto B.
  2. questo fuunzia in tutti i casi in cui corre il software mediawiki; già testato con successo lo scambio AJAX fra wlm.wikimedia.it e it.wikisoutrce.org, in entrambi i sensi.
  3. L'azione API action=query consente (fra le mille altre cose) di recuperare il wikitesto di una pagina qualsiasi.
  4. L'azione API action=parse consente di recuperare il risultato del parsing di un wikitesto (direttamente di una pagina, oppure di un frammento di wikicodice allegato alla richiesta)
  5. in teoria, dovrebbe essere possibile operare una transclusione selettiva senza disporre dell'estensione lpt: con due successive letture:
    1. la prima lettura riceve il wikitesto che comprende il codice section;
    2. la seconda lettura invia al server di origine il frammento di wikitesto compreso dentro una specifica section e ne riceve il parsing.

E' una specie di grande mare ... le possibilità sono talmente ampie da paralizzare. Io sono appunto paralizzato e sgomento. o_O --Alex brollo (disc.) 08:13, 20 set 2012 (CEST)[rispondi]

Cercherò di "generalizzare" le due funzioni base: acchiappa il wikicode di qualsiasi pagina di qualsiasi progetto, e acchiappa l'html di qualsiasi pagina di qualsiasi progetto, nella mia pagina degli appunti Utente:Alex brollo/AJAX, API, JSON. Il codice dovrà funzionare da qualsiasi progetto che utilizzi MediaWiki:API. Lanciate le due funzioni, restituiranno un oggetto js come da struttura degli oggetti API, che verrà memorizzato da qualche parte (probabilmente all'interno di un .data() jQuery. Dopidochè.... ciascuno di voi major geek potrà farne quello che vorrà. --Alex brollo (disc.) 18:27, 20 set 2012 (CEST)[rispondi]

Anche Creator è semantizzato modifica

Da qualche ora anche Creator ( il template Commons per gli autori) è stato "semantizzato" su proposta, e con i criteri, suggeriti da it.wikisource.

Per vedere lo stato delle cose, ancora un po’ fluido, provate così (mi rivolgo a chi non ha problemi a maneggiare la console di Chrome o analoghi):

  1. andate in una qualsiasi pagina ns0 proofread, meglio se collegata a una pagina come I promessi sposi/Capitolo XV, che è collegata a un file djvu di Commons che dispone di un buon template Book, che contiene un buon template Creator;
  2. aprite la console e scrivete $("td[id='fileinfo']"); risultato: nulla;;-)
  3. adesso premete il pulsante che richiama show(1) (io l’ho chiamato "metadati"); vi dovrebbe comparire un box con la tabella generata da Book;
  4. richiamate $("td[id='fileinfo']") e stavolta il risultato è una lunga lista di "oggetti" td, ognuno con un ID fileinfotpl_xxxxx, dove xxxxx identifica decentemente il contenuto. Da qui a estrarre tutti i valori delle celle td e renderli utilizzabili per farci qualsiasi cosa il passo è breve. —Alex brollo (disc.) 22:26, 21 set 2012 (CEST)[rispondi]
Mi son chiesto: essendo io loggato sia in Commons che in Wikisource con lingua preferita Italiano, il box da show(1) risulta settato per l’italiano. Ma se mantengo l’italiano come lingua preferita in Commons e qui scelgo invece l’inglese, in che lingua mi verranno presentati i dati del box show(1)? Come c’era da immaginarsi, viene presentato in inglese; potevo arrivarci con il ragionamento ma ho preferito provare.:-)
Corollario: il sistema funziona benissimo a prescindere dal fatto che si sia loggati su Commons o no, cosa che non ha la minima importanza.:-) —Alex brollo (disc.) 01:03, 22 set 2012 (CEST)[rispondi]

Occhio a ourDiv modifica

Sperimenterò l'implementazione disseminata di una <div class="ourDiv" style="display:none>...</div>. In questa div nascosta dovrebbero essere introdotti:

  1. "pezzi" di html per farne quello-che-ci-pare;
  2. variabili globali jQuery, inserite con il "trucco" .data() .

Con pazienza, le variabili globali sparse dovrebbero essere implementate in tale div speciale,che ha parecchi vantaggi, primo fra tutti quello di non inquinare lo scope js global con una miriade di variabili che potrebbero causare problemi.

Spero di avere la benedizione del geeks veri (Candalua, Samuele, L0ll0.... ) e che la cosa sia comprensibile per sommi capi agli utenti (parecchi: magnifico!) che seguendo il mio esempio di geek sconsiderato affrontano il magico mondo di js.--Alex brollo (disc.) 15:25, 23 set 2012 (CEST)[rispondi]

Può essere utile un div del genere, basta però che sia fatto presente a voce alta, in modo che tutti e non solo i frequentatori di questa pagina ne siano a conoscenza. Samuele 22:20, 23 set 2012 (CEST)[rispondi]
Intanto grazie Samuele per il suggerimento, e scusami se non riesco a seguirne molti altri che mi hai dato.
Questa questione mi pare un pochetto tecnica.... francamente non so quanti, oltre a noi che ogni tanto leggiamo qui, possano usare questa cosa.
Comunque, qui dovevo annunciare l'inizio del test, che è finito in modo positivo. Adesso la div .ourDiv esiste (per ora solo per chi ha la bottoniera attiva, la creazione avviene in MediaWiki:Gadget-Tools.js), può contenere sia dati che veri elementi html attivi, ho modificato faticosamente gli script show() e show(1); show(1), nel momento in cui viene lanciato, crea anche un oggetto js, che potete vedere con $(".ourDiv").data("hproductData"), che contiene l'estrazione grezza dei dati di Information/Book e Creator. Il bello è che i dati sono permanenti, sono presenti in memoria anche se si chiude il box di show(1). Se volete provare la cosa, vi propongo di andare in una pagina qualsiasi di I promessi sposi, che ha un box cn due diversi Creator, autore e illustratore. --Alex brollo (disc.) 00:35, 24 set 2012 (CEST)[rispondi]

jQuery.makeCollapsible modifica

Come si attiva il pacchetto jQuery.makeCollapsible? Penso che ne abbiamo bisogno. E' elencato in http://www.mediawiki.org/wiki/ResourceLoader/Default_modules, ma mi sembra che per noi non sia attivato. Al momento la cosa supera le mie capacità di comprensione.... :-( --Alex brollo (disc.) 23:59, 30 set 2012 (CEST)[rispondi]

Si dovrebbe chiedere a Candalua di aprire un bugzilla, per aggiungerlo a Wikisource IT. Samuele 09:10, 21 ott 2012 (CEST)[rispondi]

Dopo Creator, Book modifica

Con il progetto di Creator autocompilato ho esplorato abbastanza a fondo le possibilità della lettura AJAX interprogetto; adesso affronterò Book, con una tecnica del tutto diversa. Come il link creator porta dalle pagine Indice direttamente alla pagina Creator di Commons, così comparirà un link Book che porterà alla pagina File; ma i dati arriveranno a Commons per via diretta, perchè li impacchetterò come parametri dell'URL. Il problema è che non sono tutti disponibili nella pagina Indice; quindi devo escogitare qualche meccanismo per portarceli, manipolando il template base della pagina e usando i nostri sistemi di semantizzazione (estremamente avanzati, vedo!), e vi avviso che ho già cominciato. Candalua, mi raccomando.... ogni tanto controllami. --Alex brollo (disc.) 09:25, 10 ott 2012 (CEST)[rispondi]

Tabella attiva modifica

Ho il piacere di annunciare lo script che gestisce una "tabella attiva"; è uno script di due righe (composte... di vari passaggi Jquery) e il prototipo sta in Utente:Alex brollo/Tabella attiva. Chi vuol provarla apra la console e lanci le due istruzioni.

Le prime celle a sinistra diventano delle textarea; le altre celle diventano cliccabili e cliccandole il valore della cella cliccata viene caricato nella textarea.

Cosa serve tutto ciò? Immaginate di avere un set di più insiemi di dati su un autore, provenienti da varie fonti (it.wikipedia, en.wikipedia, Commons...) e di voler scegliere, campo per campo, il valore che più vi piace fra quelli disponibili come "base" per l'ulteriore edit e il caricamento in un template. Con questo accrocchietto potete effettivamente "mescolare" i dati prendendone uno da una fonte, uno da un'altra. La cosa risponde a una domanda di Jarekt su Commons: posso io editare singoli campi di Creator, acchiappando il dato da una delle fonti che vengono importate ma conservando gli altri campi?" --Alex brollo (disc.) 12:09, 15 ott 2012 (CEST)[rispondi]

Un passetto in avanti: il tutto è stato trasformato in una funzione, a cui basta passare un array di array (un array per ogni serie di valori ordinati) e poi lo script costruisce la tabella "giusta" per numero di righe e colonne per gestirli. --Alex brollo (disc.) 16:09, 19 ott 2012 (CEST)[rispondi]
Altro passetto. Uno script del bot "parte" da una pagina Indice:, o Autore:, e recupera i contenuti dei template Bio di it.wikipedia, e Infobox di en.wikipedia e fr.wikipedia (probabilmente ci aggiungerò anche de.wikipedia) seguendo gli interwiki come cane segue pista, sistemandoli per bene in un "oggetto" che rende i dati facili da gestire e facili da memorizzare temporaneamente in una pagina (invisibili, dentro un commento html: vedi Utente:Alex brollo/Test JSON). Manca pochissimo al passo finale: caricare questi dati in una "Tabella attiva" e permettere agli utenti un comodissimo, sicuro, "comparativo" caricamento dei metadati sui template Creator, o verificare e editare comodamente i template esistenti. :-) --Alex brollo (disc.) 09:30, 22 ott 2012 (CEST)[rispondi]
No, niente de.wikipedia: stranamente non usano template tipo Infobox/Bio. Chissà come mai. --Alex brollo (disc.) 09:34, 22 ott 2012 (CEST)[rispondi]

Show()... finito modifica

Ragazzi, ho provato con l'utenza bis emulando il vector.js di Alex per essere sicuro non vi fossero script che ne influenzassero il funzionamento e, come mi aspettavo, show() non funziona. Il bottone che dovrebbe permette di vedere il codice di una pagina, presenta solo il box vuoto. Forse gli aggiornamenti hanno cambiato qualcosa. Capita anche a voi?--Barbaforcuta bis (disc.) 00:48, 20 ott 2012 (CEST)[rispondi]

Alex ha sistemato tutto. Grazie!--Barbaforcuta (disc.) 00:59, 20 ott 2012 (CEST)[rispondi]
In effetti, era stato cambiato un piccolo particolare del codice restituito dal server; quello che bastava per impedire allo script di raccapezzarsi. Questi script sono così sensibili.... o_O --Alex brollo (disc.) 09:23, 22 ott 2012 (CEST)[rispondi]

Segnalazione bug template autore modifica

Segnalo qui un'anomalia, forse un bug. L'aiuto dei tecnici è fortemente gradito! :) --Accurimbono (disc) 15:42, 22 ott 2012 (CEST)[rispondi]

Il problema "max 5 elementi per una attività" è spiegato e potrebbe essere risolto. Ho corretto anche il problema sul nome autore da collegare alle categorie "Testo in cui è citato..."; giusta osservazione, il nome che deve comparire è senz'altro il nome nel titolo della pagina Autore:, altrimenti succedono problemi. --Alex brollo (disc.) 10:56, 24 ott 2012 (CEST)[rispondi]
Grazie mille! --Accurimbono (disc) 11:20, 25 ott 2012 (CEST)[rispondi]

Il punto su Tabella attiva modifica

Qui posso sbizzarirmi un po' di più.

Tabella attiva, a oggi, costruisce una tabella di righe r1,n e di colonne c0,m. La prima colonna è solo view, non cliccabile, e contiene i nomi dei campi. La seconda colonna contiene un campo tipo textarea con il contenuto "attivo" modificabile del campo. Le colonne dalla terza in poi sono solo view ma cliccabili; cliccandole il loro contenuto viene spostato nella textarea della stessa riga. Il numero di colonne è indefinito.

L'idea è di caricare il contenuto di un template strutturato nella tabella; i nomi dei parametri compariranno nella colonna 0; il contenuto iniziale dei parametri nella colonna 1 dove sarà editabile; il contenuto iniziale dei parametri, non editabile ma "recuperabile" con un click, nella colonna 2. Avendo altre serie di dati omologhi provenienti da altre fonti (es.: se stiamo lavorando su nsAutore, i dati omologhi al nostro template provenienti da it.wikipedia e en.wikipedia) possono essere caricati in colonne cliccabili e importati con un click.

Entro stasera dovrebbe essere pronta la funzione loadActiveTab() che "acchiappa" il template tipico della pagina e lo passa a Tabella attiva, aprendola. Poi servirà un sistema per caricare i dati editati con Tabella attiva nel template: non dovrebbe essere difficile, gli attrezzi ci sono, devo solo scegliere la migliore strategia fra le varie alternative; io penso che la cosa migliore sia tenere i dati "originari" sempre aggiornati, edit per edit, in modo che non sia necessaria una specifica funzione "salva": i dati sarebbero già presenti e utilizzabili dalle ulteriori istruzioni di loaderActiveTab() alla semplice uscita dalla tabella. --Alex brollo (disc.) 10:53, 24 ott 2012 (CEST)[rispondi]

Ho aggiunto a loadActiveTab un po' di "intelligenza artificiale". In ns0, pagina principale, carica Intestazione; in ns0, sottopagina, carica IncludiIntestazione; in nsAutore (con il tool di Candalua disabilitato) carica Autore. Su Commons carica Creator in nsCreator e Book in nsFile; ma non l'ho ancora esportata là per esporla al ludibrio dell'intero universo wiki. Alex brollo (disc.) 23:45, 24 ott 2012 (CEST)[rispondi]
E' fatta! :-) :-) --Alex brollo (disc.) 10:05, 25 ott 2012 (CEST)[rispondi]
Test su Commons: OK! --Alex brollo (disc.) 14:40, 25 ott 2012 (CEST)[rispondi]
Sia sui Creator che su Book, funge. Ed è perfettamente compatibile con l'altro meccanismo di caricamento.... :-) --Alex brollo (disc.) 17:45, 25 ott 2012 (CEST)[rispondi]

Messaggio per i geek modifica

Come sapete bene, mi sono immerso in un intrico terribile di idee, da cui forse sto emergendo con gran fatica. Ieri sera ho forse capito la questione callback, senza la quale lavorare con le chiamate ajax mi aveva costretto a terrificanti pasticci. Adesso le cose potrebbero semplificarsi e generalizzarsi. Non appena avrò riscritto by scratch una serie di funzioni, prometto che documenterò le funzioni e il complesso delle idee.

I due punti base su cui sto lavorando, e che saranno generali per qualsiasi progetto in cui gli script correranno, sono:

  1. la memorizzazione di dati in una div.ourDiv, gestendoli con il metodo .data() di jQuery;
  2. l'uso della funzione che per ora si chiama getPageNew(title, site, template, callback), che acchiappa il wikitesto di qualsiasi pagina di qualsiasi progetto, ricerca il template template, ne esegue il parsing e carica i dati su .data (in una variabile sito.template, es. "it.wikisource.org.intestazione"), eseguendo alla fine la funzione callback opzionale prima di terminare.

Per ferrea disciplina sourciana, mi metto a pasticciare col codice sempre e solo se prima ho passato a SAL 75% un congruo numero di pagine di Ziba. ;-) --Alex brollo (disc.) 09:59, 28 ott 2012 (CET)[rispondi]

Faccio sempre fatica a seguirti, il giorno prima segnali un'idea e quello dopo l'hai già resa possibile. Mi piacerebbe poterti dare una mano per poter rendere più facile a tutti leggere tutti quei codici intricati, il problema è che il software MediaWiki è sempre lento e macchinoso, speriamo che con i prossimi aggiornamenti sia possibile un maggior spazio di manovra e vengano semplificate molte procedure. Mi lamento tanto ma in realtà è solo colpa mia se non riesco mai a trovare il tempo ): . Keep up the good work Alex :) Samuele 14:21, 28 ott 2012 (CET)[rispondi]
 

:: Ovvio che il messaggio è rivolto a te e ad altri pochi ardimentosi; tu hai una specifica responsabilità in tutto questo, perchè mi hai aperto il vaso di Pandora di ajax.... La situazione è questa: sto facendo un massivo rewrite per raccogliere le funzioni più avanzate (cercando di generalizzarle e di "scriverle bene") in un'unica libreria autosufficiente (che giri in qualsiasi progetto, con le dipendenza risolte, senza appoggiarsi ai js di it.wikisource nè ad alcun gadget dei millanta locali); la libreria in lavoro è in Utente:Alebot/getPageNew.js, e le mie prove le faccio su progetti "vergini" tipo en.wikisource importando solo quella. --Alex brollo (disc.) 11:04, 29 ott 2012 (CET)[rispondi]

Schema della parte "feeding" dell'idea (inserimento nel contenitore di dati di oggetti template); seguirà la parte "using". --Alex brollo (disc.) 09:26, 30 ott 2012 (CET)[rispondi]
Vi presento ufficialmente parseTemplate(). Da una pagina Autore ho aperto la console e ho dato l'unica istruzione che si visualizza. Il risultato è un "oggetto template", una lista di due elementi, dizionario + lista, che ho espanso per vedere come sono fatti. Ecco qua...--Alex brollo (disc.) 12:05, 30 ott 2012 (CET)[rispondi]

 

Siccome Utente:Alebot/getPageNew.js sarà, per ora, la "libreria centrale", ho aperto una seconda pagina Utente:Alebot/getPageNew in cui faccio il buon proponimento di scrivere qualcosa su cosa sto facendo e su come sperimentare le funzioni prima del loro montaggio in applicazioni "trasparenti" chiamate da un link o da un bottone. --Alex brollo (disc.) 09:52, 2 nov 2012 (CET)[rispondi]

Modifica non consentita modifica

Il problema comincia ad affliggere anche me. Mi è successo circa in una pagina su tre, passando Zibaldone da SAL 50% a SAL 75%. Ho finalmente potuto osservare bene cosa succede; il difetto non è in caricamento pagina, ma in salvataggio; è in questo momento che "salta" la ricostruzione dell'header, e che si perdono i suoi contenuti; tornando indietro, la pagina è priva di header, di user e di SAL. A questo punto ripara pagina sistema, ma non può essere usato preventivamente, perchè fintanto che non si salva la pagina, tutto sembra a posto.

Dov'è la routine js che ricostruisce il codice pagina? :-( --Alex brollo (disc.) 23:21, 6 nov 2012 (CET)[rispondi]

Mi domando: potrebbe dipendere dall'uso di noinclude a inizio pagina per "mascherare" la seconda parte di una parola spezzata? Appena ho una mezz'ora, sostituisco i noinclude con una chiamata al template Pt su Ziba 2 in rilettura. Non si sa mai. --Alex brollo bis (disc.) 00:26, 9 nov 2012 (CET)[rispondi]
Podaria eser. Dal basso della mia ignoranza ti segnalo l'unica pagina che mi ha dato il problema. Pagina:Annali d'Italia, Vol. 1.djvu/81. A memoria (ma non ci ho fatto davvero caso) quelle poche che ho portato al 100 non ce l'hanno. E nessuna di quelle che ho portato al 75% mi ha dato problemi. (Non che abbia lavorato molto, recentemente :-( ) Silvio Gallio (disc.) 09:56, 9 nov 2012 (CET)[rispondi]

Tecnicismi del flit modifica

Potrei aver trovato il sistema di uccidere il bug - ma senza averne individuate precisamente le cause.

Ho scoperto che premendo un radiobutton SAL un campo invisibile del form di edit, leggibile in console con l'istruzione:

$("#editform input[name=wpProofreader]")

e precaricato nel suo attributo value con il nome utente nel parametro user del tag pagequality , il value dovrebbe essere aggiornato con il nome dell'utente corrente. Talora NON viene aggiornato, e allora scatta l'errore e compare il messaggio "Modifica non consentita".

Ho notato che seguendo dalla console il contenuto dell'attributo value, e forzando la modifica assegnandogli il nome dell'utente corretto in caso di mancato aggiornamento, la condizione di errore era eliminata.

Ho quindi modificato, in Common.js, la routine verificaPagina(), aggiungendo queste due righe:

if ( $("#editform input[name=wpProofreader]")!= wgUserName) {
		$("#editform input[name=wpProofreader]").attr("value",wgUserName);
		
	}

ossia: se il contenuto di value del campo wpProofreader è diverso dall'utente corrente, assegnagli il nome dell'utente corrente.

Ho anche notato che verificaPagina() era duplicato, in quanto una sua vecchia copia era rimasta in Utente:Alex brollo/libreriaVector.js. La copia è stata eliminata (che sia questa duplicazione, la cause profonda? Boh?)

Non sono certo che la modifica di verificaPagina() sia sempre ineccepibile, infatti agisce anche quando non vi è stata variazione di SAL, ma perlomeno elimina il problema. Da quando questa modifica è stata attivata, il bug non mi si è più manifestato.

Lascio ai "geek maggiori", se ne hanno voglia, il durissimo compito di capire perchè, solo in it.wikisource, si verifica questo problemA; io sospetto fortemente qualche inghippo derivate da verificaPagina(), ma non ne ho alcuna certezza. Per ora sono mi accontento. Alex brollo (disc.) 22:56, 11 nov 2012 (CET)[rispondi]

Righello di regolazione larghezza colonna di lettura modifica

La colonna di lettura a me personalmente è sempre sembrata troppo stretta, ma capisco che si tratta di una questione personale (gusti, abitudini nonché tipo di schermo che si ha a disposizione). La mia richiesta è ai tecnici nostrani di indagare la possibilità di inserire in cima ad ogni pagina con testo in lettura (inglobato nel tl intestazione?) un righello che permetta di allargare e restringere, magari dinamicamente la larghezza della colonna di lettura: si può fare? o troppo difficile tecnicamente? Per me sarebbe una grande conquista dal punto di vista dell'usabilità. --Accurimbono (disc) 14:10, 21 nov 2012 (CET)[rispondi]

Par fare si può fare di certo. Ma penso che dopo la centesima pagina che si allarga a mano con un tool uno potrebbe pure stufarsi. Occorrerebbe quindi aggiungere un meccanismo (cookie?) di memorizzazione della larghezza modificata, che duri almeno per la sessione corrente, meglio per vari giorni o fino a nuovo settaggio. Intanto scrivo nel tuo Utente:Accurimbono/common.css questa rigolina, per darti un po' di "aria":
.testi {width:45em;}
tu purga, vedi l'effetto, e se vuoi allargare/restringere modifica solo il valore 45. Il settaggio temo però che confliggerà con la visualizzazione fianco a fianco interprogetto. --Alex brollo (disc.) 10:19, 22 nov 2012 (CET)[rispondi]
Grazie. Se studiata bene credo che sarebbe utile. --Accurimbono (disc) 17:33, 22 nov 2012 (CET)[rispondi]

Testo del Djvu modifica

Qualcuno mi sa spiegare come mai creando una nuova pagina da questo indice il testo contenuto nel djvu non viene importato? Per ora ho risolto con un copia-incolla dal file originale. --Luigi62 (disc.) 19:56, 23 nov 2012 (CET)[rispondi]

Sei sicuro che non sia un problema di DJVU. Potrebbe esserci un errore nel layer di testo, oppure non essere compatibile in qualche modo con wiki, oppure ancora, potrebbe non essere proprio visto da wiki. Bisognerebbe controllare meglio il file djvu (non ho gli strumenti adesso) Samuele 23:54, 23 nov 2012 (CET)[rispondi]
L'ho fatto creare in Internet Archive, quindi non ho motivo di pensare che sia differente dal solito. Gli stessi problemi li avevo avuti con Garibaldi e Medici. --Luigi62 (disc.) 21:03, 24 nov 2012 (CET)[rispondi]
Lo strato testo del djvu c'è ed è perfettamente letto da DjView. Faccio un paio di prove di estrazione con djvuLibre... tutto a posto con djvutxt, si sarà incastrato qualcosa nei server. Se hai urgenza posso caricarti il testo nelle pagine via bot, ma sarebbe interessante vedere se fra un paio di giorni la cosa si risolve da sè. --Alex brollo (disc.) 00:37, 25 nov 2012 (CET)[rispondi]
Non c'è problema, lo lasciamo in sospeso per un po', così vediamo. Mi limiterò per ora a qualche pagina giusto per finire un racconto. --Luigi62 (disc.) 15:56, 25 nov 2012 (CET)[rispondi]

Non c'è niente da fare, anche Indice:Novelle lombarde.djvu appena caricato soffre dello stesso problema. Vedremo i prossimi (I Malavoglia ?). --Luigi62 (disc.) 17:21, 27 nov 2012 (CET)[rispondi]

Selection modifica

Forse ho trovato il modo di far agire qualsiasi cosa si basi su selection() in qualsiasi campo, sia di tipo textarea, sia di tipo input, purchè ci sia dentro il puntatore (e quindi ci sia un selectionStart e un selectionEnd).

Ed eccola qua:

function sel(){
   var el=$(document.activeElement);
   if (el.prop("tagName")=="TEXTAREA") {
      var txt=el.text();
      var ss=el[0].selectionStart;
      var se=el[0].selectionEnd;
   }
   if (el.prop("tagName")=="INPUT") {
     var txt=el.attr("value"); 
     var ss=$(el)[0].selectionStart;
     var se=$(el)[0].selectionEnd;
   }
   return [txt.substring(0,ss),txt.substring(ss,se),txt.substring(se)];
}

Sulla base dello stesso principio scriverò gli analoghi di leggiBox() e scriviBox(), in modo che agiscano su document.activeElement, e dovremmo aver fatto un bel passo in avanti. :-) --Alex brollo (disc.) 16:27, 25 nov 2012 (CET)[rispondi]

Ripensamento! modifica

Ho ribaltato la questione e questa funzione riceve un parametro callback e quindi esegue l'intera procedura (cattura della selezione nell'elemento attivo, sia textarea che input, passaggio della selezione alla funzione callback, modifica dell'elemneto attivo). L'idea è quella di creare funzioni che ricevano semplicemente un parametro selezione, e la restituiscano dopo l'elaborazione. Sembra che funzioni (aggiungo una banale funzione di prova upper() tanto per aver qualcosa da passare come funzione callback per eventuali prove). La pagina di modifica di un Autore va bene per le probe perchè contiene sia un campo textarea che vari campi input. Se il puntatore è in un campo textarea o input, ma senza selezionare nulla, la selezione si estende all'intero testo.

function upper(selezione) {
     selezione[1]=selezione[1].toLocaleUpperCase(); 
     return selezione;
}

function sel(callback){
   var el=$(document.activeElement)[0];
   if ($(el).prop("tagName")=="TEXTAREA") {
     var txt=$(el).val();
     var ss=el.selectionStart;
     var se=el.selectionEnd; 
     if (ss==se) {ss=0; se=txt.length;}
     var s=[txt.substring(0,ss),txt.substring(ss,se),txt.substring(se)]; 
     s=callback(s);
     $(el).val(s.join(""));
   }
   if ($(el).prop("tagName")=="INPUT") {
       var txt=$(el).attr("value"); 
       var ss=el.selectionStart;
       var se=el.selectionEnd;
       if (ss==se) {ss=0; se=txt.length;}
       var s=[txt.substring(0,ss),txt.substring(ss,se),txt.substring(se)]; 
       s=callback(s);
       $(el).attr("value",s.join(""));
   }
}

Iwt.js e template Iwt modifica

Sto provando un sistema per transcludere la section 0 di qualsiasi pagina, da qualsiasi progetto. Vedi esperimento in Wikisource:Autore citato/Isaac Casaubon. Il codice è questo:

{{Iwt|Ugo Foscolo|it:wikipedia}}

e, se caricate Utente:Alex brollo/Iwt.js (oppure attivate il gadget Iwt), a fianco del testo espanso del template qui sotto, comparirà un bottone "Clicca per importare", che schiacciato importerà la section 0 della pagina. --Alex brollo (disc.) 12:43, 3 dic 2012 (CET)[rispondi]

Questo potrebbe essere la "terza via" fra non linkare affatto gli autori citati che non sono presenti in it.wikisource, e creare nuove pagine Autore vuote, in modo da poterli citare anche se non hanno opere. L'output può essere rifinito a piacere, inquadrandolo in un box e magari aggiungendo delle chiare indicazioni che si tratta di dati importati da altro progetto.
Ugo Foscoloit:wikipedia



Javascript per utenti non loggati = modifica

Mi chiedevo se fosse tecnicamente possibile mostrare delle "nuvolette" chiudibili per utenti non loggati, ad esempio mostrando messaggi brevissimi su dove cliccare per

  • modificare
  • leggere il testo a fronte
  • leggere la versione testuale
  • quello che volete

Aubrey McFato 15:59, 3 dic 2012 (CET)[rispondi]

Strumenti delle altre Wikisource modifica

Dato che c'è pochissima comunicazione interwikisource, mi piacerebbe che elencassimo qui tutti i tool che noi vediamo nelle altre Wikisource e che ci piacerebbe avere/vogliamo far vedere qui.

Checker della transclusione
http://toolserver.org/~mzmcbride/checker/?db=itwikisource_p&title=Indice:Zibaldone_di_pensieri_II.djvu 

Fa parte di un set di tool in alto a destra sulla Wikisource inglese.

Estensione Webfont
http://www.mediawiki.org/wiki/Help:Extension:WebFonts

Permette, da quello che capisco, di far scegliere all'utente alcuni font, specialmente per libri in altre grafie. Per vedere le differenze fra le nsotre estensioni e le loro, possiamo guardare qui.

Inserimento video per trascrizioni
es. http://en.wikisource.org/wiki/Index:Harbor_Blaze.ogv

Non sono sicuro che sia una buona idea, anche perchè Commons ha una sua modalità per usare le trascrizioni... però allarga l'idea di Wikisource come quella di "repository di documenti e fonti primarie testuali (o perlomeno legate al testo)", e devo dire che da bibliotecario la reputo corretta. --Aubrey McFato 11:23, 11 dic 2012 (CET)[rispondi]

Caspita, la terza novità è OTTIMA per trascrivere i discorsi. --Accurimbono (disc) 11:41, 11 dic 2012 (CET)[rispondi]

Per i "geek geek": Eureka! modifica

Samuele, Candalua, e altri appassionati di javascript, vi presento qualcosa di carino, sviluppato come al solito da un suggerimento di Samuele.

function getHtmlNew(parametri) {
	$.ajax(parametri.ajax).done(function (data) {
		parametri.callback( parametri, data);
	});
}

Come vedete è una funzione di due istruzioni. Ebbene, questa istruzione di due voci può eseguire qualsiasi interrogazione API in qualsiasi progetto MediaWiki; non solo; può elaborare il risultato ottenuto dall'interrogazione API in qualsiasi modo.

Ovviamente bisogna passarle il parametro giusto, e si tratta di un oggettino complicatino; ma la funzione è sempre identica e comune a qualsiasi interrogazione. Che ne dici Samuele? Perfino la funzione callback è passata come elemento del parametro-dizionario; non male, no? :-) --Alex brollo (disc.) 22:40, 28 dic 2012 (CET)[rispondi]