giovedì 20 settembre 2012
Il gioco delle tre carte
Uno degli aspetti più fastidiosi dell'essere umano è la ridicola convinzione che non siamo responsabili delle conseguenze delle nostre azioni, come testimonia l'infantile disinvoltura con cui troppo spesso attribuiamo alla volontà del Fato il disastroso esito delle nostre cazzate.
Il gioco delle tre carte - Marco Mavaldi
martedì 7 febbraio 2012
Livecycle & Mandatory
In Livecycle spesso si ha a che fare con form che contengono campi obbligatori, ovviamente in tal caso non è possibile eseguire la submit fino a quando questi campi non sono compilati.
Però può succedere che per vari motivi si debba inviare comunque la form al backend in una sorta di step intermedio.
Nel mio caso si tratta di un documento particolarmente lungo ed era necessario dare la possibilità all'utente di salvare il documento in bozza sul server, quindi di fatto eseguire una submit ignorando temporaneamente i campi mandatory.
Secondo lo scripting reference di livecycle per recuperare tutti i field di una form posso utilizzare questo codice:
Però può succedere che per vari motivi si debba inviare comunque la form al backend in una sorta di step intermedio.
Nel mio caso si tratta di un documento particolarmente lungo ed era necessario dare la possibilità all'utente di salvare il documento in bozza sul server, quindi di fatto eseguire una submit ignorando temporaneamente i campi mandatory.
Secondo lo scripting reference di livecycle per recuperare tutti i field di una form posso utilizzare questo codice:
// Get the field containers from each page.for (var nPageCount = 0; nPageCount < xfa.host.numPages; nPageCount++) { var oFields = xfa.layout.pageContent(nPageCount, "field"); var nNodesLength = oFields.length;
Usando questo comando però vengono recuperati tutti i campi all'interno del layout della form xfa.layout.pageContent e questo non andava bene nel mio caso, perché venivano ignorati tutti i campi obbligatori nascosti (e quindi esclusi dal layout).
Per ovviare al problema ho utilizzato una funzione ricorsiva che legge tutti i nodi della form, quando trova un campo field o combobox disabilita il mandatory.
Ma non è finita qui, perché era necessario anche riabilitare on the fly l'obbligatorietà dei campi senza eseguire un refresh della form.
Quindi ogni volta che disabilito un campo salvo il suo status mandatory precedente in un nodo che chiamo prevMandatory e che appendo all'attributo desc del campo stesso.
In questo modo posso disabilitare e riabilitare i campi mandatory in qualsiasi fase della compilazione.
Questa funzione disabilita i campi obbligatori, come parentElement passo la root della form:
Ma non è finita qui, perché era necessario anche riabilitare on the fly l'obbligatorietà dei campi senza eseguire un refresh della form.
Quindi ogni volta che disabilito un campo salvo il suo status mandatory precedente in un nodo che chiamo prevMandatory e che appendo all'attributo desc del campo stesso.
In questo modo posso disabilitare e riabilitare i campi mandatory in qualsiasi fase della compilazione.
Questa funzione disabilita i campi obbligatori, come parentElement passo la root della form:
functionremoveRequiredFields(parentElement){varcurrentElement;varallChildrens = parentElement.nodes;for(vari=0; i < allChildrens.length; i++){ currentElement = allChildrens.item(i);if(currentElement.className == "subform"){//chiamata ricorsiva weeeh!removeRequiredFields(currentElement); }else if(currentElement.className == "field"){ mandatoryDisable(currentElement); }else if(currentElement.className == "exclGroup"){for(varj=0; j < currentElement.nodes.length; j++){if(currentElement.nodes.item(j).className == "field"){ mandatoryDisable(currentElement); } } } } }functionmandatoryDisable(currentElement){varmandatory = currentElement.mandatory;if(mandatory == "disabled"){varvNewVariable = xfa.form.createNode("text", "prevMandatory"); vNewVariable.value = "disabled"; currentElement.desc.nodes.append(vNewVariable); }else if(mandatory == "error"){varvNewVariable = xfa.form.createNode("text", "prevMandatory"); vNewVariable.value = "error"; currentElement.desc.nodes.append(vNewVariable); } currentElement.mandatory = "disabled"; }
Questa invece è la funzione per riabilitare i campi obbligatori.
functionenableRequiredFields(parentElement){varcurrentElement;varallChildrens = parentElement.nodes;for(vari=0; i < allChildrens.length; i++){ currentElement = allChildrens.item(i);if(currentElement.className == "subform"){//chiamata ricorsiva weeeh!enableRequiredFields(currentElement); }else if(currentElement.className == "field"){varnodeLength = currentElement.desc.nodes.length;if(nodeLength > 0){ var mandatory = currentElement.desc.prevMandatory.value; currentElement.mandatory = mandatory; } }else if(currentElement.className == "exclGroup"){for(varj=0; j<; currentElement.nodes.length; j++){if(currentElement.nodes.item(j).className == "field"){varnodeLength = currentElement.desc.nodes.length;if(nodeLength > 0){varmandatory = currentElement.desc.prevMandatory.value; currentElement.mandatory = mandatory; } } } } } }
martedì 17 maggio 2011
PUMA H-Street 2011
Finalmente! era ora che la Puma si decidesse a rifarle, a quelle vecchie ho lisciato la suola a forza di metterle.
Stavo cominciando a pensare che piacesse solo a me avere i piedi freschi durante la bella stagione.
Un paio nell'armadio e un altro nel mirino.
martedì 26 aprile 2011
Sfondo bianco
Ho re-imparato questa procedura una decina di volte sto giro mi sono rotto di dimenticarla sistematicamente.
"Come sostituire lo sfondo bianco di un immagine con quello trasparente con Photoshop"
- Copiare l'immagine in un nuovo layer (A) e rimuovere il layer di background.
- Copiare nuovamente l'immagine in un secondo layer (B) e invertirla.
- Copiare l'immagine invertita nella clipboard.
- Tornare sul layer A e creare una layer mask.
- Tenendo premuto ALT cliccare sul thumbnail nella layer palette.
- Se necessario duplicare il layer e fondere i livelli.
Iscriviti a:
Post (Atom)