Aggiunge la classe “hover” ai td di una certa riga di tabella (tr > td) sull’evento hover del tr
Aggiunge la classe “selected” ai td di una certa riga di tabella (tr > td) sull’evento click del td
Aggiunge la classe “selected” ai td di una certa riga di tabella al click sui controlli form checkbox e radio (di conseguenza anche al click sulle label) presenti sulla riga stessa
Nel caso di input:radio la classe selected viene prima cancellata dalle altre righe e poi applicata alla riga “selezionata”
AUTOLOAD
Per attivarlo basta includere gli scripts (jquery, comodoclick) e aggiungere la classe comodoclick ad una tabella.
/*
* Copyright (c) 2008 Massimiliano Balestrieri
*
* @requires jQuery v1.3.2
*
* Copyright (c) 2008 Massimiliano Balestrieri
* Examples and docs at: http://maxb.net/blog/
* Licensed GPL licenses:
* http://www.gnu.org/licenses/gpl.html
*/
;
(function($){
function ComodoClick(){
return this.each(function(){
var that = this;
jQuery("tr", this).hover(function(){
jQuery("td", this).addClass("hover");
}, function(){
jQuery("td", this).removeClass("hover");
});
jQuery("tr", this).click(function(e){
var _target = e.target || e.srcElement;
var _tag = _target.tagName.toString().toLowerCase();
//prendo solo il click sul td
//se ci fossero tag di tipo blocco dentro il td sarebbe un problema
//se invece clicco su una input o su una label gestisco tutto con l'evento -> VEDI SOTTO
if (_tag === 'td') {
var _tr = jQuery(this);
_highlight_row(_tr, true);
}
//return false;
});
//vedi sotto A
jQuery("tr", this).find("input:checkbox, input:radio").bind("click", function(){
var _tr = jQuery(this).parents("tr");
_highlight_row(_tr, true);
});
//vedi sotto B
jQuery("tr", this).find("input:checkbox").bind("checked", function(){
var _tr = jQuery(this).parents("tr");
_highlight_row(_tr, false);
});
var _highlight_row = function(_tr, flag){
//il flag è per selezionare la checkbox/radio forzatamente
//checkbox gestisce la "multiselezione"
var _checkbox = jQuery("input:checkbox", _tr).length > 0;
//nel caso dei radio cancello le altre colorazioni
if (!_checkbox) {
jQuery("td", that).removeClass("selected");
jQuery("tr", that).removeClass("selected");
jQuery("td", _tr).addClass("selected");
_tr.addClass("selected");
if (flag) {
jQuery("input:radio", _tr).attr("checked", "checked");
}
}
else {
var _selected = _tr.is(".selected");
if (_selected) {
jQuery("td", _tr).removeClass("selected");
_tr.removeClass("selected");
jQuery("input:checkbox", _tr).attr("checked", "");
}
else {
jQuery("td", _tr).addClass("selected");
_tr.addClass("selected");
jQuery("input:checkbox", _tr).attr("checked", "checked");
}
}
};
//A: triggero click per colorare la riga
jQuery("input:radio:checked", that).trigger("click");
//B: triggero checked -> se usassi il click la checkbox si deselezionerebbe
jQuery("input:checkbox:checked", that).trigger("checked");
});
}
$.fn.comodoclick = ComodoClick;
//AUTOLOAD
$(document).ready(function(){
$('table.comodoclick').comodoclick();
});
})(jQuery);
Attenzione a quel file_get_contents(“php://input”);
Ho sclerato parecchio per far girare questo servizio sul mio hosting.
IL CLIENT
L’esempio del client VERAMENTE basico senza librerie senza divisioni. GREZZO. Anche l’html. Giusto il form e il meta per la codifica di invio dei dati.
All’interno della directory client troverete due client nativi (estensione soap del php5) : client2.php e client3.php.
Su questo hosting non girano.
Provateli se volete. client3.php usa il metodo “ufficiale” per chiamare i metodi remoti. NON FUNZIONA!
Tutto bene. Ho installato da zero su una partizione vuota. Ho configurato il sistema e installato tutta una serie di applicazioni che mi servono per lavoro (vmware, sqldeveloper, skype, java, eclipse, lampp, filezilla).
Per vmware ho seguito le istruzioni per ubuntu 8.10, soprattutto queste.
Miglioramenti evidenti non ne ho visti. L’icona di “wait” è tornata quella standard. Nella 8.10 ogni volta che il sistema entrava in stato di wait il cursore prendeva la forma di “infinito” scentrata rispetto al cursore col risultato che invece di aprire una certa applicazione ne aprivi un altra (o peggio).
Altra miglioria: il sistema di “focus” con doppio monitor. Prima bastava spostare il mouse su un monitor per spostare il focus. Ora devi cliccare. Per me era un bug non certo una funzionalità.
A parte questo il sistema è identico. Magagne comprese. Presenta lo stesso problema sul doppio monitor. Quando lanci un applicazione dal monitor secondario (driver nvidia, configurazione separate X-screen) l’applicazione parte sul monitor 1.
Ho risolto usando uno script “ponte”.
Ho creato un file eseguibile nella mia home
Pubblico una classe per effettuare il log composito con PEAR::Log.
In sviluppo il log potrà essere usato in maniera abbondante (entrata/uscita dei metodi ad esempio). Questo causerà frequenti accessi al file di log.
In produzione la maschera impostata nello switch eviterà l’accesso al file per i log di tipo PEAR_LOG_DEBUG (valore di default) ma manterrà i log di tipo ERROR e i log di tipo EMERG.
In più per il log di tipo EMERG verrà inviata una mail. Il metodo _rotate della classe garantirà una rotazione del file al raggiungimento di N bytes (vedi costante LOG_SIZE_ROTATION).