ZOD

Utenti
  • Numero contenuti

    38
  • Iscritto

  • Ultima visita

Tutti i contenuti di ZOD

  1. Inauguro la sezione con un sondaggio per capire che versione di Contao state usando, e cosa prevedete di usare nel prossimo futuro. Inoltre mi piacerebbe condividere con voi altri pareri, in particolare su cosa vorreste approfondire riguardo l'installazione, l'aggiornamento e la migrazione di Contao.
  2. Contao Manager

    Ho scoperto che dalla versione Contao 4.4.* hanno aggiunto un installer Contao Manager. https://contao.org/en/download.html Qualcuno lo ha provato? Riporto e traduco le istruzioni. Con Contao Manager puoi installare e gestire Contao 4 nel tuo browser. Scarica il file .phar e trasferiscilo nella cartella /web del tuo sito. Poi rinomina il file in contao-manager.phar.php e aprilo in browser.
  3. Questa settimana per due volte mi è capitata questa necessità: Importare utenti members (questo lo farei con il modulo xtmembers_outlook) Assegnare a tutti una propria password e inviarla alla loro email Da funzioni normali o da moduli mi sembra non sia possibile. I workaround che ho individuato sono due: Non importare nessuno, inviare una newsletter che chiede di registrarsi, link che punta al form di registrazione del sito, si arrangia l'utente Importare tutti, identica password, poi usare il modulo recupero password per forzare un invio in cui si richiede di generare una nuova password (ma in questo caso è una palla usare il modulo per 400 volte). Cmq non è ottima come soluzione, perché l'utente prima pigia il link in email per verificare che vuole davvero cambiare pass, poi attende l'arrivo di una seconda email, e solo allora ha la password... tutto lavoro che vorrei l'utente evitasse. Non ho capito se posso sfruttare quella funzione built in di contao per autogenerare io la pass, e poi inviarla alla sua email, tutto con php custom... che fa un ciclo per tutti i members. Ho trovato solo un post in cui parlano della questione, e non mi sembra chiarissimo: https://community.contao.org/en/showthread.php?23327-Encryption-for-password
  4. Grazie Andrea, anche questo potrebbe essere utile. Ho trovato anche uno script utile per inviare tutte le email di benvenuto con la password, caricando i dati da file CSV. Devo ancora modificarlo e provarlo: https://www.formget.com/send-personalized-email-to-multiple-recipients/
  5. Non so perché non riesco a modificare il messaggio precedente (dopo soli 6 minuti, stavo rileggendo), conteneva un errore. Volevo dire che era errata la riga da modificare, nella funzione importMembersFromCSV del modulo, penso sia questa la riga per importare: https://github.com/hschottm/xtmembers_outlook/blob/73fee039fbf791b18db47ca384d42d193492d7db/classes/OutlookTools.php#L503 https://github.com/hschottm/xtmembers_outlook/blob/73fee039fbf791b18db47ca384d42d193492d7db/classes/OutlookTools.php#L428 basterebbe aggiungere nello switch questo: case 'password': $password = \Encryption::hash($i); break;
  6. Forse ho capito. Quindi dici che autogenero in chiaro la password nella lista CSV da importare, poi modifico il modulo aggiungendo la cifratura per la variabile password, nella funzione importMembersFromCSV del modulo, vedo questa riga: https://github.com/hschottm/xtmembers_outlook/blob/73fee039fbf791b18db47ca384d42d193492d7db/classes/OutlookTools.php#L428 https://github.com/hschottm/xtmembers_outlook/blob/73fee039fbf791b18db47ca384d42d193492d7db/classes/OutlookTools.php#L428 basterebbe aggiungere nello switch questo (sempre che $idx_password esista e abbia senso metterla qui): case 'password': $idx_password = \Encryption::hash($i); break;
  7. Ho scritto un articolo nel mio blog che parla di questo. https://zod.it/blog/cambiare-il-sito-da-http-a-https.html Ci sono anche tre regole .htaccess per avere tre differenti comportamenti: redirect del solo http > https, quindi funziona contemporaneamente con e senza "www" (ma il sito sarebbe doppio, e potrebbe non piacere a Google, alle stats ecc...) redirect http > https con forzatura del "www" davanti al dominio redirect http > https con forzatura della rimozione "www"
  8. Contao Manager

    In un altro post ho parlato anche della difficoltà di produrre estensioni proprie, Meta Models aiuta in parte a colmare questa lacuna, ma l'ideale sarebbe riuscire a fare moduli di contenuto propri (ad esempio pensa ai Custom Post Type di Wordpress, con definizione dei campi e tassonomie), questo permetterebbe a un web developer con modeste capacità di fare cataloghi di prodotti anche senza usare Meta Models. Ho cercato molte volte le istruzioni per fare i moduli sia per 3.5 sia per 4. Purtroppo è davvero difficile trovarne, la migliore risorsa è il video seguente, in tedesco, per moduli di Contao 3. Non trovo nessuna documentazione scritta o tutorial aggiornato, c'è ancora quello di Kamil Qzminski per Contao 2. Ho scoperto di recente un altro progetto CMS, si chiama Rubedo, necessita di Mongo DB. Sembra molto potente ma non credo di usarlo perché è una nicchia ancora più piccola di Contao, con ovvie difficoltà di hosting e sviluppo, però ho trovato interessante il concetto da cui parte l'applicativo, per alcuni versi somiglia a Contao, ma da la possibilità di creare e manipolare i propri "content type", quindi è come se in Contao potessi manipolare i campi di "News", e potessi aggiungere ulteriori contenitori fatti a modello di News, ma con differenti proprietà e tassonomie. Documentazione qui: https://docs.rubedo-project.org/en/homepage/build-rubedo-website/data-management/content-types
  9. Ciao Pepesale, noi siamo poco sicuri di Contao 4, pochi giorni fa sono riuscito a installarlo seguendo un video Youtube. L'installazione è semplice conoscendo alcune particolarità che ignoravo, però secondo me ci sono ancora troppi vincoli per il funzionamento. Per esempio: ora che ho l'installazione pronta in un subdomain di test non so se posso migrarla verso altro spazio (e dominio), il quale non punta a "/web" ma alla root definita dall'hosting, quindi secondo logica Contao Manager non funzionerà (dovrebbe dare l'errore che non trova più la root directory impostata su "/web"). Muovere Contao 3.5 non aveva questo problema. Altri aspetti non sono riuscito ancora a vederli perché non ho usato abbastanza Contao 4.
  10. [Isotope] Email conferma ordine

    Capito, non avevo ancora creato i moduli di lista per vedere quanto e come potevo filtrare i prodotti. La struttura potrebbe quindi risolversi in 3 pagine (tipo -> marca -> prodotto), solo che di solito non uso questa funzionalità di Contao per avere una sola pagina con dentro la lista di articoli, dovrei riesaminare questa caratteristica, anche per vedere come si ottengono gli URL, la navigazione tra categorie e prodotti. Mi sembra ancora un po' macchinoso come sistema.
  11. [Isotope] Email conferma ordine

    Caso vuole che ho provato Isotope la settimana scorsa, per fare un normale catalogo prodotti, quindi ho configurato solo gli ultimi punti (tipo di prodotto, attributi, e prodotti). Mi sono subito fermato per un motivo: volevo categorizzare i prodotti prima per tipo (quindi in front end avrei 4 categorie), poi per marca (quindi ogni pagina tipo lista le marche), e ogni marca deve avere un titolo, un logo, una descrizione. In Isotope non c'è gestione per le categorie, posso creare un attributo del prodotto con un campo di selezione, ma è insufficiente, perché servirebbe una nuova tabella per le marche. Inoltre serve un automatismo che lista le marche prima di listare i prodotti, modulo assente. Quindi con Contao-Isotope non sembra possibile avvicinarsi al workflow di una normale piattaforma e-commerce, non l'hanno ancora cambiato da quella prima volta che l'ho provato. Isotope delega interamente la categorizzazione prodotti alla struttura del sito di Contao, quindi avrei dovuto diramare tutto il catalogo inserendo pagine per ogni tipo e per ogni marca, il che è pesante per la manutenzione e per il gestore finale. Penso che questa soluzione ibrida e flessibile sia utile nei siti di presentazione che devono vendere una ventina di prodotti, e quindi li includono nelle pagine a piacere, non è ottimale con centinaia di prodotti categorizzati, dove i vincoli non sono un male ma sono necessari per strutturare il sito e quindi facilitare il compito del gestore.
  12. Contao Manager

    Questa è la schermata di Contao Manager
  13. Contao Manager

    Non utilizza niente, il back end è senza gestione moduli. Forse lo hanno rimosso o forse non è compreso facendo l'installazione via Contao Manager. Quindi i moduli si gestiscono solo avviando contao-manager.phar.php, inoltre se si cerca Meta Models, appaiono in lista una serie di moduli, tutti non compatibili (e con bottone per intsallare disabilitato).
  14. Contao Manager

    L'installazione è andata a buon fine, è esattamente come spiega il video, la ragione della cartella "web" è che in effetti tutti i file installati di Contao sono stati messi fuori da essa, ho fatto una copia dell'installazione per usarla come modello, se dovessi caricarlo altrove. Ora il sito funziona come un Contao 3.5 ad eccezione del repository delle estensioni che non è presente in back end. Per installarle bisogna ricorrere sempre al percorso "tuodominio.com/contao-manager.phar.php", si fa login con i paramentri immessi la prima volta (non sono le credenziali di admin), e così è possibile accedere ai moduli e installarli o aggiornarli. Dopo l'installazione si deve però andare in "install tool", c'è un bottone verde da premere, quindi si mette la password come al solito, e si aggiorna il database. Fatto questo si può andare in back end. Ho visto che Rocksolid Custom Elements funziona, non è installabile invece Meta Models. Credo che non tutti i moduli siano compatibili e non vedo modo di forzare l'installaizone, forse si può fare manualmente ma non ho provato.
  15. Contao Manager

    Il video precedente lo hanno rimosso. Torno sul tema perché oggi ho sbattuto ancora la testa su questo Contao Manager poco funzionante. Ho capito il problema da cosa dipende, il codice è a mio parere una cosa davvero fatta male. Guardando il video in questo punto ho capito... ...possiamo vedere che prima di tutto dobbiamo configurare il nostro server con DNS e cartelle in un modo particolare: cioè bisogna creare una cartella "web" nello spazio, quindi se l'hosting ha la classica root in "public" non va bene, bisogna creare li dentro o fuori una cartella che si chiama "web", poi puntare il DNS a quella, potrebbe non essere possibile (e non funziona con una regola .htaccess, già provato), per questo nel video si usa un sottodominio, e l'ho fatto anche io (con cPanel è possibile). Fatto questo ci carichiamo dentro il file .phar, ma senza toccarlo altrimenti dicono che si danneggi, dobbiamo configurare le opzioni di Filezilla affinché lo trasferisca come "binario" (vedi sempre il video). Fatto questo lo rinominiamo aggiungendo ".php". Poi lo lanciamo normalmente dal browser. Stavolta lo script è partito, però si è bloccato immediatamente di fronte un altro problema, dipende dal mio hosting: ERROR 500 The PHP Intl extension is not available. More Information Contao 4 requires the PHP Intl extension for internationalization purposes. Ora provo a mandare un ticket di assistenza all'hosting, cmq devo dire che questa procedura di installazione è pessima, non possono farci impazzire in questo modo, inoltre non è possibile vincolare la gente a usare una cartella "web", è inaudito. Ma cosa stanno combinando in Germania?
  16. Ho un problema da risolvere, sto lavorando in Contao 3.5.28. Obiettivo: un gruppo di utenti deve avere questa facoltà con i file: "z01" = cartella del proprio sito, in cui caricano, scaricano, modificano, eliminano, spostano, file e cartelle. "repository" = cartella condivisa con altri gruppi utente (l'installazione è pure multidominio). Sono file in sola lettura, possono usarli ma NON modificarli, NON cancellarli, NON spostarli. In pratica li possono solo usare come risorse nel fare contenuti, gallerie foto prodotti ecc... Soluzione pensata: l'utente "gestore sito z01" fa parte di 2 gruppi e usa esclusivamente i permessi di questi. Il gruppo "Gestione z01" ha pieno accesso alla cartella "z01". Il gruppo "Repository" non ha alcun permesso se non l'accesso in lettura alla cartella "repository", togliendo quindi tutti i flag per la modifica. Risulato: l'utente accede ma nel file manager ha pieno controllo di tutti i file compreso quelli in "repository". Questo è un bug, non dovrebbero essere ereditati i permessi dal gruppo "Gestione z01". Test 1: ho dato all'utente apparteneneza a solo "Repository", i file e certelle sono non editabili come inteso. Test 2: ho aggiunto ora anche il gruppo "Gestione z01" togliendo però la cartella del punto di partenza "z01". E' tornato l'effetto iniziale sulla cartella "repository", tutto è editabile. Test 3: ho alterato il gruppo "Gestione z01" togliendo i flag dei permessi sui file. Ora "repository" funziona come inteso, ma non posso allora aggiungere una cartella che possa dare pieno accesso ai file, all'utente serve anche questa.
  17. Aggiornamento: forse avevi ragione, ho abilitato bypass della cache. Il file viene preso (ho rotto un po' il codice e sono usciti gli errori), solo che non so bene come agire per controllare le icone, sto scervellandomi su come potrei modificare il codice sopra riportato. Cmq forse è la strada giusta.
  18. Nemmeno a me è mai servito fare questo, finché i siti sono "normali" non esce come esigenza. Questa volta però i file devono essere utilizzati in modo restrittivo e particolare in base ai gruppi che ci lavorano, il caso specifico riguarda un repository condiviso in sola lettura, da cui prelevare eventualmente file. Spostare l'accesso sul pannello della folder o del file, credo sia la cosa più sensata, e aprirebbe a molti altri usi il CMS, tipo per condividere file tra gruppi di utenti. Nel repository c'è un modulo che si chiama "file-access" ma riguarda i Members e non fa proprio quel che dico io.
  19. Ciao Paolo, avevo provato a fare un modulo che creasse un override della classe, e dell'intero metodo, seguendo le istruzioni riportate qui: https://docs.contao.org/books/manual/3.2/en/07-customizing-contao/overriding-class-methods.html Ho anche cercato di scopiazzare come fa un altro modulo (ImageCrop, modulo che ho contribuito a migliorare aggiungendo il supporto file a PNG e GIF e la traduzione IT). Quindi ho anche messo il file config, provato con l'autoload, ho messo la classe in "/dca/tl_files.php" invece che nel php iniziale del modulo... niente da fare, è come se il mio modulo fosse ignorato da Contao. O forse non sto facendo bene i file, ma è davvero difficile sapere come fare non avendo documentazione esatta e demo funzionanti. Per ora ho perso troppo tempo in questo, e ho parcheggiato la questione, ma sono giunto a una considerazione: l'accesso alle cartelle di file è sbagliato come fa Contao, cioè nella gestione permessi utente. Questa dovrebbe essere implementata nel file manager, cioè controllabile per file e cartelle, come avviene nella maggioranza dei sistemi operativi, e già è così per la struttura del sito di Contao. Un gruppo utenti potrebbe avere più di una cartella a cui accedere e ognuna con permessi differenti in lettura, modifica, elimina, copia, sposta (infatti i file dovrebbero essere read only, ma copiabili altrove per utilizzi e modifiche personali). Non ho trovato un modulo che migliori il file manager aggiungendo la parte di ACL. Qualcuno sa qualcosa a riguardo?
  20. Contao - menu e sottomenu

    Semplicemente la metti come figlia di un'altra, nella struttura del sito. Contao è molto incentrato sulla struttura gerarchica, in quei nodi propaghi permessi dell'ACL, Tema (quindi template di pagina), e altre impostazioni.
  21. Contao - menu e sottomenu

    La gerarchia rispecchia la struttura del sito. Almeno nel modulo originale è così.
  22. Ho trovato il punto dove si fanno i controlli, è nel file system\modules\core\dca\tl_files.php checkPermission() è a riga 245. Bisognerebbe fare in modo che il pezzetto con le variabili $canUpload, $canEdit, $canDelete ecc... fosse limitato alle folder elencate in $this->User->filemounts; Come si può fare un override di questa parte senza toccare il core? /** * Check permissions to edit the file system */ public function checkPermission() { if ($this->User->isAdmin) { return; } // Permissions if (!is_array($this->User->fop)) { $this->User->fop = array(); } $canUpload = $this->User->hasAccess('f1', 'fop'); $canEdit = $this->User->hasAccess('f2', 'fop'); $canDeleteOne = $this->User->hasAccess('f3', 'fop'); $canDeleteRecursive = $this->User->hasAccess('f4', 'fop'); // Set the filemounts $GLOBALS['TL_DCA']['tl_files']['list']['sorting']['root'] = $this->User->filemounts; // Disable the upload button if uploads are not allowed if (!$canUpload) { $GLOBALS['TL_DCA']['tl_files']['config']['closed'] = true; } // Disable the edit_all button if (!$canEdit) { $GLOBALS['TL_DCA']['tl_files']['config']['notEditable'] = true; } // Disable the delete_all button if (!$canDeleteOne && !$canDeleteRecursive) { $GLOBALS['TL_DCA']['tl_files']['config']['notDeletable'] = true; } $session = $this->Session->getData(); // Set allowed page IDs (edit multiple) if (is_array($session['CURRENT']['IDS'])) { if (Input::get('act') == 'editAll') { if (!$canEdit) { $session['CURRENT']['IDS'] = array(); } } // Check delete permissions else { $folders = array(); $delete_all = array(); foreach ($session['CURRENT']['IDS'] as $id) { if (is_dir(TL_ROOT . '/' . $id)) { $folders[] = $id; if ($canDeleteRecursive || ($canDeleteOne && count(scan(TL_ROOT . '/' . $id)) < 1)) { $delete_all[] = $id; } } else { if (($canDeleteOne || $canDeleteRecursive) && !in_array(dirname($id), $folders)) { $delete_all[] = $id; } } } $session['CURRENT']['IDS'] = $delete_all; } } // Set allowed clipboard IDs if (isset($session['CLIPBOARD']['tl_files']) && !$canEdit) { $session['CLIPBOARD']['tl_files'] = array(); } // Overwrite session $this->Session->setData($session); // Check current action if (Input::get('act') && Input::get('act') != 'paste') { switch (Input::get('act')) { case 'move': if (!$canUpload) { $this->log('No permission to upload files', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } break; case 'edit': case 'create': case 'copy': case 'copyAll': case 'cut': case 'cutAll': if (!$canEdit) { $this->log('No permission to create, edit, copy or move files', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } break; case 'delete': $strFile = Input::get('id', true); if (is_dir(TL_ROOT . '/' . $strFile)) { $files = scan(TL_ROOT . '/' . $strFile); if (!empty($files) && !$canDeleteRecursive) { $this->log('No permission to delete folder "'.$strFile.'" recursively', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } elseif (!$canDeleteOne) { $this->log('No permission to delete folder "'.$strFile.'"', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } } elseif (!$canDeleteOne) { $this->log('No permission to delete file "'.$strFile.'"', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } break; default: if (empty($this->User->fop)) { $this->log('No permission to manipulate files', __METHOD__, TL_ERROR); $this->redirect('contao/main.php?act=error'); } break; } } }
  23. Sto cercando una soluzione via modulo custom, solo che non so come fare, come al solito mi impantano nella "odiosa difficoltà di sviluppare Contao". Sto cercando di: - Sapere quale funzione usa Contao per costruire la DCA del File Manager, quindi le icone, quindi mostrarle in base agli User Group. - Sapere quali callback sono usabili per riconfigurare le icone del File manager, quindi aggiungere un controllo per farle Attivate o Disattivate in base a qualcosa che dica "Se gruppo utente ha cartella settata allora applica permessi file Gruppo utente".
  24. Da lo stesso effetto, i permessi appena sono accessibili a un utente, si diffondono a tuttii gruppi e quindi cartelle a cui ha accesso. Credo sia inutilmente macchinoso l'accesso per singolo utente, inoltre non credo possa andarmi bene, perché il sito multidominio deve ottimizzare alcuni processi, e devo per forza ricorrere ai gruppi, senza creare confusione con gli utenti, dato che saranno presumibilmente decine e centinaia. L'idea di un gruppo con cartella in sola lettura da assegnare o meno agli utenti è perfetta come soluzione. Anche perché ho un gruppo di super manager che invece in quella cartella possono caricare, editare ecc...
  25. Boh, secondo me se in Gruppo A definisco che la cartella X ha permessi in scrittura, e in Gruppo B definisco che in cartella Y ha solo lettura. Se aggiungo entrambi i gruppi a un utente, dovrebbero attivarsi entrambe le direttive senza mescolarsi. Per quale motivo dovrei trovare i permessi della cartella X anche nella cartella Y, secondo me è un errore. Avviene perché i flag dei permessi sui file non sono legati al "filemount" come lo chiama il tizo di Github. Io sono d'accordo con lui, dovrebbero essere legate le due cose.