Back to top

Autore Topic: [problema] Upload in edit con Chronoconnectivity  (Letto 6480 volte)

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
[problema] Upload in edit con Chronoconnectivity
« il: 19 Apr 2011, 12:18:33 »
Salve ( probabilmente ho già scritto qualcosa del genere... ma non riesco a trovare più il post )

Ho seguito la guida di "vales"

http://www.joomla.it/articoli-della-community/3796-chronofrms-e-chronoconnectivity-lunione-fa-la-forza.html

Il problema che ho notato quando si va in edit se non metto niente nel campo upload accade questo: il campo file viene messo a NOFILE (il file nel server rimane).

Ricordo il suggerimento di vales
prova a mettere su server side validation qualcosa:
Queste righe di codice fanno (finalmente) reagire in qualche modo chronoform:

Cosa ho provato a fare: visto che se mi azzardo a mettere un uploader di nome file_0 vuoto lo sovrascrive, lasciando il vecchio file sul server, ho cambiato il nome dell'uploader a file_1 e ho provato a mettere questo:

Codice: [Seleziona]
<?php  if ((is_uploaded_file($_FILES['file_1']['tmp_name']))){
$_FILES['file_0']['tmp_name'] = $_FILES['file_1']['tmp_name'];
$_FILES['file_0']['size'] =  $_FILES['file_1']['size'];
$_FILES['file_0']['type'] = $_FILES['file_1']['type'];
}
?>


mi arriva un messaggio di errore: non puoi fare l'upload di questo tipo di file.

I problemi da risolvere sono:
1)se non faccio upload non devo toccare il file immagine.
2) se faccio l'upload del nuovo file il vecchio va cancellato.
« Ultima modifica: 19 Apr 2011, 12:21:09 da rushseeker »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #2 il: 19 Apr 2011, 15:37:43 »
Questa soluzione si riferisce a se non inserisci un file allora si blocca.

Nel mio caso mi trovo in fase di EDIT grazie a Chronoconnectivity. Se non inserisco nessun file, allora il vecchio file caricato precedentemente, viene sostituito da NOFILE (anche se in realtà il file originale rimane sul server).

Quello che vorrei tentare di fare é : se non inserisco niente allora devo proseguire con l'aggiornamento ma mantenendo il vecchio file.

Spero di essere stato chiaro.
« Ultima modifica: 28 Apr 2011, 10:09:35 da rushseeker »

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #3 il: 27 Apr 2011, 10:03:37 »
Ho pensato di scrivere questa porzione di codice per provare a capire come chronoform gestisce i campi in edit.
Ho notato che controllando $Myrows->file_0 posso gestire in qualche modo dei messaggi di avviso in fase di EDIT.

Codice: [Seleziona]

<?php 
echo "{file_0}";
echo " Myrow ".$Myrow->file_0;
if(($Myrows->file_0)=='')

echo 'Non sono stati inseriti file immagine o file zip';
}
else{ 

echo '<a href="'.Juri::base().'components/com_chronocontact/uploads/scheda_sopralluogo_ver2/'.$MyRow->file_0.'"/>'.$MyRow->file_0.'</a>';
}
?>



I risultati dopo una verifica non sono quelli sperati.
« Ultima modifica: 28 Apr 2011, 09:04:10 da rushseeker »

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #4 il: 28 Apr 2011, 10:18:50 »
Credete sia possibile creare un pulsante che se viene cliccato elimina il file presente sul server?

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #5 il: 28 Apr 2011, 12:54:21 »
Credo dovresti fare uno script da inserire nel campo Server side validation del form che usi per le modifiche ed li fare le verifiche, se il nome del file inserito è vuoto mantieni il vecchio file altrimenti va il nuovo.

Dovresti anche diversificare il nome del campo di inserimento del file in fase modifica dal nome del file in fase di inserimento altrimenti si potrebbero creare dei problemi.
Successivamente sempre in Server side validation, quando necessario rendi il nome del campo della tabella uguale al nome del file modificato.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #6 il: 01 Mag 2011, 22:21:50 »
Allora:
sto provando ad adottare la seguente soluzione...

Ho creato un nuovo campo di testo, al cui interno, in javascript, ho il percorso completo del file che inserisco in UPLOAD.


Nel form che si occupa dell'editing ho inserito quindi 2 campi PathFile_0 e PathFile_new: uno che contiene il percorso del vecchio file, l'altro che contiene il percorso del nuovo file se mai viene inserito.  In allegato una immagine della zona interessata.

Quindi...  in Validate ho inserito il seguente codice.
Codice: [Seleziona]

<?php  
if ((is_uploaded_file($_FILES['file_0']['tmp_name']))){
 
unlink ($_POST['PathFile_0']);
$_POST['PathFile_0'] = $_POST['PathFile_new'];
?>


purtroppo non funziona come dovrebbe.
Cosa ne pensi vales?

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #7 il: 02 Mag 2011, 11:23:58 »
Penso di aver trovato il problema: il fatto è che non riesco a dare lo stesso nome di file ai campi pathfile_0 e il nome effettivo che avrà il file alla fine dell'upload.

ho notato che su FILEUPLOAD
c'è questa stringa

Codice: [Seleziona]
$filename = date('YmdHis').'_'.$chronofile['name'];
Questa stringa mi dice che metterò una data prima del nome del file al file di upload.

Ora... come faccio a fare in modo che pathfile_0 e file_0 possano avere lo stesso valore?


Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #8 il: 03 Mag 2011, 11:04:40 »
Ho notato un'altro bug:
Se eseguo un delete in chronoconnectivity, i file di upload rimangono sul server! ( sempre peggio! )

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #9 il: 03 Mag 2011, 11:41:59 »
Non è un bug, è un limite del componente.

Che comunque può essere gestito con opportuni script che possono rimuovere gli allegati in tali circostanze.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #10 il: 17 Mag 2011, 09:18:10 »
mi hanno proposto questa soluzione:

http://www.chronoengine.com/forums/viewtopic.php?f=12&t=21682&p=69353#p69353

Ma... perché non deve funzionare!?... non capisco!

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #11 il: 17 Mag 2011, 19:28:10 »
Quando si inserisce un allegato abbiamo due entità da gestire il nome del file che viene eventualmente registrato in un campo della tabella associata al form ed il file stesso che assume per nome quello predisposto in Field name in File upload del form e che sarà uguale al nome del campo detto sopra.

L'esempio di quella guida citata era molto rudimentale e non affrontava il problema che tu hai posto.

Io come, detto sopra, sfrutterei le potenzialità del campo Server side Validation.

Preliminarmente nel form acquisirei in un campo nascosto il nome del file già presente.

Ora hai due possibilità

1) inserisci un nuovo file e quindi avrai un nuovo nome dell'allegato

2) non inserisci un nuovo file e quindi il campo nome allegato  è vuoto.

In relazione a queste due possibilità in Server side validation puoi rigirare le cose come vuoi

1) se il file è nuovo  il nome_allegato è diverso da vuoto  e cancelli in vecchio file nella directory configurata.
2) se il file è vuoto assegni al campo_allegato in nome del vecchio file perche altrimenti ti rimane vuoto.

Questo può essere un base di codice tirato giù al volo e non controllato.

Codice: [Seleziona]
//attiva le funzioni di gestione file di joomla
jimport('joomla.filesystem.file');
// legge la directory degli allegati impostata nel form;
$MioForm =& CFChronoForm::getInstance("nome_tuo_form");
$uploadpath = $MioForm->formparams("uploadpath");

$vecchio=Jrequest::getVar('campo_nascosto','','post');
$nuovo=Jrequest::getVar('nome_allegato','','post');

if ($nuovo<>"") {
Jfile::delete($uploadpath.$vecchio);
} else {
Jrequest::setVar('nome_allegato',$vecchio,'post');
// oppure
unset($_POST['nome_allegato']);
//vedi qui quale funziona meglio.
}


Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #12 il: 20 Giu 2011, 11:26:11 »
Codice: [Seleziona]
<?php
jimport
('joomla.filesystem.file');
$MioForm =& CFChronoForm::getInstance("scheda_sopralluogo_edit");
$uploadpath $MioForm->formparams->uploadPath();


$vecchio=Jrequest::getVar('PathFile_0','','post');
$nuovo=Jrequest::getVar('PathFile_new','','post');


if (
$nuovo<>"") {
Jfile::delete($uploadpath.$vecchio);
Jrequest::setVar('PathFile_0',str_replace(" ""_"$nuovo));
$_FILES['file_0']['name'] = str_replace(" ","_"$nuovo));
} else {


}
?>



Grazie Vales per la tua risposta:




mi da questo errore:

 Fatal error:  Call to undefined method JParameter::uploadPath() in ***************/home/components/com_chronocontact/libraries/chronoform.php(258) : eval()'d code on line 4

E' chiaro che non trova uploadPath()....

Edit: ho sostituito alla variabile uploadPath() con il percorso di upload adesso non esegue più l'errore. Unica cosa che devo ancora verificare è il funzionamento della cancellazione del file dal server.
« Ultima modifica: 21 Giu 2011, 11:42:22 da rushseeker »

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #13 il: 22 Giu 2011, 10:11:16 »
Oggi i test confermano i miei sospetti:


unica cosa che non fà è cancellare il vecchio file presente sul server.

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #14 il: 23 Giu 2011, 10:42:20 »
Ecco il codice Funzionante:


Codice: [Seleziona]

<?php
jimport
('joomla.filesystem.file');
$MioForm =& CFChronoForm::getInstance("scheda_sopralluogo_edit");
$uploadpath "/components/com_chronocontact/uploads/scheda_sopralluogo_ver2/";


$vecchio=Jrequest::getVar('PathFile_0','','post');
$nuovo=Jrequest::getVar('PathFile_new','','post');


if (
$nuovo<>"") {
if (file_exists ("components/com_chronocontact/uploads/scheda_sopralluogo_ver2/".$vecchio)){
Jfile::delete("components/com_chronocontact/uploads/scheda_sopralluogo_ver2/".$vecchio);
}
Jrequest::setVar('PathFile_0',str_replace(" ""_"$nuovo));
$_FILES['file_0']['name'] = "Tecnico".JRequest::getString('nome_tecnico''''post').'_'."Soggetto".JRequest::getString('cognome_sogg''''post').'_'.JRequest::getString('nome_sogg''''post').'_'.date('YmdHis').'_'.str_replace(" ","_",$nuovo);

$_POST['PathFile_0'] = $_FILES['file_0']['name'];

else {}
?>


NOn riesco a modificare il titolo del post per sostituire "problema" con "risolto"... cosa è un metodo di protezione del forum?
« Ultima modifica: 23 Giu 2011, 10:44:18 da rushseeker »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #15 il: 23 Giu 2011, 15:41:40 »
Ottimo.

Mi sembra di capire che usi un form con gli allegati nella cartella di un altro form, è per questo che non funzionava.

Per la modifica del titolo devi premere Modifica sul primo post.
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #16 il: 28 Giu 2011, 08:57:07 »
Ottimo.

Mi sembra di capire che usi un form con gli allegati nella cartella di un altro form, è per questo che non funzionava.

Si... hai perfettamente ragione. La directory su cui fare i "lavori" è quella del form che si occupa di fare gli inserimenti.

Citazione
Per la modifica del titolo devi premere Modifica sul primo post.
Non appare più il pulsante sul primo post.
« Ultima modifica: 28 Giu 2011, 09:45:25 da rushseeker »

Offline vales

  • Global Moderator
  • Instancabile
  • *****
  • Post: 8012
  • Sesso: Maschio
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #17 il: 28 Giu 2011, 22:46:11 »
....
Non appare più il pulsante sul primo post.

Forse non entri nel forum loggato?
Download e demo di Albo Pretorio On Line per Joomla 1.5 e Joomla 2.5 e 3
Moduli scuola On Line v1 per Joomla 3
http://valesweb.altervista.org

Offline rushseeker

  • Esploratore
  • **
  • Post: 180
    • Mostra profilo
Re:[problema] Upload in edit con Chronoconnectivity
« Risposta #18 il: 04 Lug 2011, 12:40:22 »
Ho provato a sloggare e riloggare... non posso editare


 



Web Design Bolzano Kreatif