Back to top

Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Post - stefbort

Pagine: [1] 2 3
1
Salve a tutti.
Come dai post precedenti ho trovato come fare un caricamento massivo in moto automatico.

Con (grande) soddisfazione sono partito da circa 12.000 vecchi file DOC e sono ondati aonline in circa 4 ore!!!

Condivido il processo di conversione e caricamento qui di seguito nella speranza che possa essere utile a qualcuno.

# PREMESSA
Ho operato da una postazione Linux desktop (Linux Mint 21) ed ho impiegato i seguenti software:
  • Libreoffice
  • unoconv
  • sed
  • find
  • curl
  • bash (per gli script di automazione).
Il sito su cui sono stati caricati i documenti è un Joomla 4.
Il caricamento è stato fatto attraverso le web API di Joomla e ho usaato il token di un utente come elemento di autenticazione.
NB: se si usa il dato user+password va attivato il plugin dentro Joomla: di default è disattivo!

Il processo per il caricamento automatico consta di 3 passi:
  • conversione DOC -> HTML
  • trattamento degli HTML
  • caricamento degli file.
Note:
  • per chi usa Windows o MAC basta usare i porting o software "equivalneti";
  • script:
  •   in Windows possiamo usare i preistorici batch o, meglio, scipt PowerShell
  •   in mac sono supportati gli script shell
  •   il codice degli script riportato di seguito è esemplificativo per dare un traccia guida.
Piccola nota più completa sull'HTML
  • in Joomla va carito un codice parziale non un codice //completo//. Es:
Codice: [Seleziona]
<h1>Titolo</h1>
<p>Testo</p>
<p>fine</p>
  • il caricamento via web API bypassa il check del codice HTML, pertanto va //pulito// a mano;
  • per le regole di parser bash nel metodo seguente:
  •   + gli apici ( " ) sono stati escappati in quanto devono restare per parte della sintassi HTML
  •   + gli apostrofi ( ' ) gli ho trasformati nella rappresentazione html in quanto parte del testo
  •   + non ho //filtrato// altri possibili caratteri o sequenze pericolosi: fate attenzione!
  • infine l'HTML da sotoporre a Joomla via web API non deve avere ritorni a capo, ma essere una riga unica con la sequenza "\r\n" al posto del ritorno a capo.
# 1 Conversione DOC -> HTML
La conversione è fatta con uniconv che invoca, in background, Libreoffice.
Lo script rende automatico l'invocazione di "uniconv nomefile.doc".
Tutti i file si trovano tutti in una directory.

Codice dello script:

Codice: [Seleziona]
#!/bin/bash

#
# Usage
# find V001/ -type f -exec bin/conver_docx2html.sh {} \;
#

#
# VAR
VINP=$1
VPATH=
VFILE=$(basename -- "$VINP")
VNAME=
VEXTORG=
VEXTLOW=

#
# conversione
# echo "unoconv -d document -f html $VINP 2> /dev/null"
unoconv -d document -f html $VINP 2> /dev/null

# 2 Trattamento degli HTML
Totti gli HTML ottenuti li ho spostati un una nuova directory.
Libreoffice produce un HTML completo, ma anche bruttino. Infatti cerca di mantenere le impostazioni del file da stampare.
Pertanto ho proceduto con:
  • rimozione dei tag inutili;
  • escaping e sostituzione dei caratteri equivoci, pericolosi e dei ritorni a capo
  • trasforma degli html in chiamate web API.
Questo primo script toglie i tag inutili dal file html:

Codice: [Seleziona]
#!/bin/bash
#
# Usage
# find V001/ -type f -exec bin/conver_html0-removehtml.sh {} \;

#
# VAR
VINP=$1

#
# sostituzioni e cancellazioni HTML
sed -i "/<!DOCTYPE.*/d" $VINP
sed -i "/<html>/d" $VINP
sed -i "/<head>/d" $VINP
sed -i "/<meta\ /d" $VINP
sed -i "/<title>/d" $VINP
sed -i "/<style type=\"text\/css\">/d" $VINP
sed -i "/@page\ {/d" $VINP
sed -i "/p\ {\ color:/d" $VINP
sed -i "/p\.western\ {/d" $VINP
sed -i "/p\.cjk\ {/d" $VINP
sed -i "/p\.ctl\ {/d" $VINP
sed -i "/<\/style>/d" $VINP
sed -i "/<\/head>/d" $VINP
sed -i "s/<body\ .*/<p>/" $VINP
sed -i "s/<p\ class=\"western\"\ style=\"line-height:\ 100\%;\ margin-bottom:\ 0cm\">/<p>/" $VINP
sed -i "/<\/body>/d" $VINP
sed -i "/<\/html>/d" $VINP
sed -i "s/\ \ /\&nbsp;\&nbsp;/g" $VINP
sed -i "s/\t/\&emsp;/g" $VINP
Questo secondo script, invece, escape gli " e sosituisce i caratteri equivoci:

Codice: [Seleziona]
#!/bin/bash
#
# Usage
# find V001/ -type f -exec bin/conver_html1-2html.sh {} \;
#

#
# VAR
VINP=$1

#
# - conversione ritorni a capo:
#   - eliminazione ritorno a capo
#   - codifica in "\r\n"
# -------------------------------------------
sed -i 's/\"/\\\"/g' $VINP
sed -ri "s/'/\&apos;/g" $VINP
sed -zi 's/\n/\\r\\n/g' $VINP

Questo terzo script crea òe chiamate web API partendo dai file HTML. Per ogni file HTML viene creato un file .sh che contiene la chiamata.
Nota:
  • il server del sito indicato è di fantasia ed anche il token (ovviamente)!!
  • possiamo usare l'indirizzo pubblico del sito per caricare dal proprio PC al server: questa procedura è più lenta;
  • possiamo usare l'indirizzo interno del server, ma in questo caso dobbiamo poter accedere al server e avere una console magari via ssh. Molto più veloce e sicuro.
Nel seguente codice uso l'ultima via.

Codice: [Seleziona]
#!/bin/bash
#
# Usage
# find V001/ -type f -exec bin/conver_html2-2api.sh {} \;
#

#
# VAR set STATIC
VAUTOR="Autore"
VCATID="14"
VARTINTRO="<hr id=\"system-readmore\" />"

#
# VAR GLOBAL
VINP=$1
VPATH=
VFILE=$(basename -- "$VINP")
VNAME=
VEXTORG=
VEXTLOW=
VCATEGORIA=

#
# popolamento variabili FILE
VPATH="$(dirname "${VINP}")"
VFILE="$(basename -- "${VINP}")"
VNAME="${VFILE%.*}"
VEXTORG="${VFILE##*.}"
VEXTLOW="${VEXTORG,,}"
VFILEOUT="${VPATH}/${VNAME}.sh"

#
# popolamento variabili per API
VTITLE="${VNAME^^}"
VALIAS="${VNAME,,}"

#
# NO SILENT mode: stampa solo un rapporto di upload ed errori
echo "curl --location --request POST 'http://localhost/api/index.php/v1/content/articles' \
--header 'Content-Type: application/json' \
--header 'X-Joomla-Token: c2hhMjU2EyMzhhNipiotrusyadflrtYjYxaAsdE 3YzFjZjQw' \
--data-raw '{
    \"title\": \"$VTITLE\",
    \"catid\": $VCATID,
    \"created_by_alias\": \"$VAUTOR\",
    \"language\": \"*\",
    \"metadesc\": \"\",
    \"metakey\": \"\",
    \"state\": 1,
    \"articletext\": \"$VARTINTRO<hr id=\\\"system-readmore\\\" />$(cat $VPATH/$VFILE)\"}'" > $VFILEOUT
chmod +x $VFILEOUT
Spiegazione delle variabili:
  • VTITLE: titolo dell'articolo
  • VAUTOR: da popolare con il nome dell'autore che vogliamo compaia;
  • VCATID: l'ID numeri della categoria in cui voglio inserire l'articolo;
  • VARTINTRO: testo fisso iniziale dell'articolo
  • "chmod +x $VFILEOUT": valido per linux e Mac rente il file di output .sh eseguibile.
# 3 caricamento degli file
Per velocizzare l'upload in Joomla e per operare in sicurezza migliore ho proceduto esenguendio gli .sh da dentro il server (infatti puntano tutti su "http://localhost/"):
  • ho zippato tutti gli .sh
  • ho fatto l'upload nel server
  • mi sonbo collegato al server ed ho estratto lo zip in nella directory "articoli".
A questo punto ho dato il seguente comando:

Codice: [Seleziona]
chmod +x articoli/*.sh
find articoli -type f -exec {} 2>&1 /dev/null \;
La prima riga è una ripetizione perchè i pacchetti zip fanno perdere alcune proprietà unix ai file.
La seconda riga è un comando che esegue automaticamente tutti i file contenuti nella cartella articoli uno ad uno.


# Wegrafia
Joomla Core APIs, https://docs.joomla.org/J4.x:Joomla_Core_APIs#Get_Single_Article
Joomla 4 API Introduction – Manage Articles via Joomla API, https://www.joomdev.com/joomla-4-api-introduction/



Spero possa essere di aiuto a qualcuno.Un saluto a tutti ;)

2
OK, ho trovato come fare: attraverso i webservice e le API di Joomla!
Qui di seguito riporto come ho inserito un articolo passandolo a Joomla attraverso delle righe di comando che possono diventare righe di comando che passano un file che contiene l'articolo in html.
Per l'esempio qui di seguito, da considerare come una prova di concetto, lo eseguo dalla shell del mio portatile linux e opero su un server locale usato per lo sviluppo del sito.
calla shell del portatile passo il seguente comando:

Codice: [Seleziona]
curl --location --request POST 'http://vm05.kbsb.loc/portal/api/index.php/v1/content/articles' \
--header 'Content-Type: application/json' \
-u superadmin \
--data-raw '{"alias": "test-04", "articletext": "My testo test 04", "catid": 14, "language": "*", "metadesc": "", "metakey": "", "title": "Test 04", "state": 1}'

Mi viene chiesta la password dell'utente superadmin con cui mi autentico ed il gioco è fatto.
Per rendere più fluido l'inserimento si può usare il token dell'utente Joomla con cui voglio inserire il contenuto.

Dalla manualistica con questa tecnica si può cancellare un articolo, modificarlo, gestire i tag, ecc... Un perfetto tool di intereoperabilità (per programmatori, però :)

Quando riesco a preparare il primo pacchetto di file da carica vi aggiorno con tutti i dettagli; dalla prova fatta ora tutto dice che questa tecnica funziona.

3
Confermo: inserendo direttamente i dati nella tabella "##_content" l'articolo non compare né backend, né frontend, ma il motore di ricerca backend lo vede e indicizza ;(

Più tardi vado a vedere il plugin indicato.
Qui di seguito la query dell'ultima prova con cui ho inserito il testo prova.

Grazie intanto. Ti aggiorno più tardi sull'avanzamento (delle prove ))

Codice: [Seleziona]
INSERT INTO `v6754_content`
(`title`, `alias`, `introtext`, `fulltext`, `state`, `catid`, `created_by`, `created`, `modified`, `images`, `urls`, `attribs`, `metadata`, `metadesc`, `language`)
VALUES
('Test 01','test-01','Intro','Testo completo','1','14','742', '2024-04-14 12:00:00', '2024-04-14 12:00:00', '{"image_intro":"","image_intro_alt":"","float_intro":"","image_intro_caption":"","image_fulltext":"","image_fulltext_alt":"","float_fulltext":"","image_fulltext_caption":""}', '', '{"article_layout":"","show_title":"","link_titles":"","show_tags":"","show_intro":"","info_block_position":"","info_block_show_title":"","show_category":"","link_category":"","show_parent_category":"","link_parent_category":"","show_author":"","link_author":"","show_create_date":"","show_modify_date":"","show_publish_date":"","show_item_navigation":"","show_hits":"","show_noauth":"","urls_position":"","alternative_readmore":"","article_page_title":"","show_publishing_options":"","show_article_options":"","show_urls_images_backend":"","show_urls_images_frontend":""}', '{"robots":"","author":"","rights":""}', '', '*');

4
Si, certo.
Faccio un altro test e posto se va o meno :)

5
Ok, grazie.Il primo problema è che i dati originali sono file Word :(
Avevo già provato la via di import direttamente dento il DB con tutte le accortezze indicate.Dop il caricamento nel DB risultano i record, ma non compaiono in Joomla, né in frontent, ne in backend, ma il finder interno di Joomla li vede e li indicizza.
Cre che la causa sia la tabella "##_assets". Ho provato a creare un riga con la logica che ho cercato di capire (l'ID dell'articolo, i nomeri progressivi, ecc...), ma l'articolo non comapre...Forse ho sbagliato qualcosa in questa seconda tabella?
Saluti

6
Buongiorno a tutti.
Ho circa 12000 articoli da importare in un sito Joomla 4: come posso fare fare un'import massivo?
Gli articoli sono in formato word, ma li ho convertiti in html e pulito il codice.Un volta feci questa operazione (in un vecchio Joomla 1.5 mi sembra) e lo faci con una query operando direttamente sul DB.Ho fatto ora una prova con 1 articolo, ma vedo che non funziona.Ho cercato in internet, ma non ho trovato una soluzione .
Qualche aiuto? Qualche suggerimento?Grazie anticipate a tutti.

7
OK, risolto! Nessun bug!

Vi ringrazio per le indicazioni. Sono state le lampadine per isolare la causa.Il problema era nel server del provider. Ho aperto una chiamata e hanno sistemato.

Analizzando il problema il server non aveva abilitato (o lo era parzialmente) l'overriding per l'.htaccess .

Grazie ancora.

8
Grazie delle risposte.Escludo gli altri componenti perché li uso anche altrove e non ho il problema. Avrei un dubbio su RSPageBuilder! ma ora lo escludo.
Credo che il problema sia del provider.
Ho fatto un'installazione nuova per testare, solo con il K2 in più (asse centrale degli altri siti) e ho lo stesso problema. Naturalmente in questa nuova installazione test ho rinominato htaccess.txt .
A questo punto sospetto che il provider ha fatto un aggiornamento nello stresso periodo in cui ho applicato l'aggiornamento.Apro un ticket e vi faccio sapere le conclusioni.Grazie ancora per le indicazioni.

9
L'aggiornamento l'ho fatto io.E' stato fatto automaticamente da Joomla (backend -> Componenti -> Aggiornamento Joomla).

10
Buongiorno a tutti.Ho 3 siti. Qualche giorno fa ho fatto fare l'aggiornamento automatico dalla 3.9.22 alla 3.9.23 e aggiornato tutti i componenti.Dopo questo aggiornamento mi hanno segnalato che i menù non funzionavano più.Dopo qualche test ho isolato la causa: il SEO. Disattivandolo dalle impostazioni globali tutto torna a funzionare.
Qualcuno ha riscontrato questo problema?
Qualcuno ha una soluzione diversa dal downgrade dell'installazione?


Naturalmente prima tutto funzionava correttamente. Mi sono premurato di verificare che .htaccess sia stato aggiornato. Escluderei problemi causati dai componenti aggiuntivi o dal template.Grazie in anticipo.

11
Joomla! 3 / Re:RSS via email
« il: 16 Ott 2018, 11:56:44 »
Ciao marine, grazie.E' esatto quello che dici. Usando un client RSS ho visto che tutto funziona bene.
Io voglio fare una cosa in più e vorrei rendere attivo il sito in modo che anche invii un'email.
Si tratta di un sito di lavoro in intranet e l'installazione è il nodo centrale della gestione delle informazioni. Pertanto necessito di avere persistenza delle notizie, storico, riservatezza, ... e avere anche un sistema push verso gli utenti per le notizie.Con K2 ho fatto tutto mi manca solo l'invio automatico...

12
Joomla! 3 / RSS via email
« il: 15 Ott 2018, 23:51:54 »
Salve a tutti.Ho un sito con K2 che genera feed RSS. Vorrei che i miei utenti ricevessero un'email con il nuovo RSS quando aggiungo una news.
Per complicare la situazione. Ho 6 canali RSS (cioè 6 categorie K2). Ho circa 100 utenti registrati. Ho creato alcune ACL per cui gli utenti hanno accesso a una o più categorie K2 (=canali RSS).Esiste un modo per far giungere agli utenti che hanno accesso ad una categoria K2 un'email quando viene aggiunto un articolo K2?
Spero di essere riuscito a essere chiaro. Grazie a tutti in anticipo.

13
Gestione Form / Re:Form per "Iscrizione a numero chiuso"
« il: 28 Ago 2011, 20:33:53 »
FANTASTICO!
Gli ho dato solo un'occhiata, ho fatto un'installazione al volo sulla simulazione che ho nel portatile e fa proprio quello che mi serve.
Dando un'occhiata alla monumentale documentazione a corredo è veramente fantastico!
Ora me lo studio un po', ma mi sembra che è vermente la soluzione a tutto che mi serve (e molto di più).


Grazie!!


Stefano

14
Gestione Form / Form per "Iscrizione a numero chiuso"
« il: 28 Ago 2011, 12:11:20 »
Salve a tutti.
Sto studiando come realizzare una form per iscriversi a un corso a numero chiuso (il limite è 15 iscritti). Ho bisogno di gestire l'iscrizione in questo modo:
  • l'utente clicca sulla form
  • se non è stato raggiunto il limite la form si apre. Se è stato raggiunto il limite compare un messaggio di cortesia che informa sulla raggiunta quota
  • inviato il modulo l'utente viene automaticamente rediretto alla pagina con l'elenco degli iscritti (chiaramente deve comparire anche questo ultimo iscritto).


Ho bisogno anche che:
  • la pagina con l'elenco degli iscritti sia sempre accessibile e visibile (finché la lascio "pubblicata", ovviamente)
  • devo poter intervenire per "cancellare" un iscritto che si "ritira".


L'istallazione che uso è Joomla 1.5 con Chronoforms.
Ho studiato un po' questo componente. Ho visto che con qualche riga di programmazione può fare tantissimo, ma non sono riuscito a capire se posso fare tutto quello che mi serve e in che modo realizzarlo. Forse devo aggiungere ChronoConnectivity?


Infine l'installazione è in una intranet. Per cui posso permettermi di tenere molto bassi i parametri di sicurezza e posso accedere anche direttamente al DB.


Grazie per qualsiasi aiuto, suggerimento e/o indicazione.


Stefano

15
Joomla! 1.5 / Componente per ricerca avanzata
« il: 19 Lug 2009, 10:58:16 »
Salve a tutti.
Ho visto che qualcuno ha già chiesto questo, ma non c'è risposta.
Qualcuno conosce qualche componente open che permette una "ricerca avanzata"?
Tra quelli a pagamento: qualcuno può darmi qualche giudizio, o consigliarmi quello migliore?
Grazie a tutti.

16
Joomla! 1.5 / Annidare sezioni/categorie
« il: 19 Lug 2009, 10:53:56 »
Salve a tutti.
Sto realizzando un sito e sto valutando l'impiego di Joomla!, ma ho bisogno di espandere il sistema sezioni/categorie aggiungendo/annidando almeno un livello in più.
Come posso fare? Esiste qualche plugin/componente?
Grazie a tutti!

17
Salve a tutti.
Dopo circa un mese di rodaggio del sito del mio oratorio mi compare sto cavolo di errore che prima non faceva (?!?!).
Quando vado ad uploadare un pacchetto zip di fotoil passo 1 va a meraviglia, vedo le thumbs di tutto, dò l'ok e mi compare poi questo errore:

Medium Name   Error type
ER2007_001.jpg   Database failure
ER2007_003.jpg   Database failure
ER2007_005.jpg   Database failure

e non non ho nessuna foto sulla galleria. E non capisco dov'è il problema soprattutto perché prima (fino a 15 giorni fa?) andava.
La galleria è realizzata con zOOm Media Gallery 2.5.1 RC3. Joomla è la versione 1.0.12EXT.
Curiosità: se carico le foto una ad una, o scelzo la modalità per caricarne più in un colpo solo tutto fila liscio. E' solo con i pacchetti zip, ma questi vengono uploadati, correttamente decompressi, create le miniature, ma solo va in casino il sito quando va a scrivere qualcosa nel db.
La cosa che mi fa arrabbiare di più è che sullo stesso server ho un'istallazione "gemella" con il mio sito personale e fnziona. Sul computer "di casa" ho il clone del sito (non aggiornatissimo, però) e funziona.
In fine nessuna traccia di errori nei log del sito  :'(
Vi prego: qualcuno ha qualche indizzio? S. Google e internet non mi hanno portato buoni consigli ed in più ora devo pubblicare le foto dei bambini che partecipano ai giochi estivi... AIUTO!
Grazie per l'attenzione e spero che qualcuno possa aiutarmi.

D. stefano

18
Esperimenti e test / Bug nell'editor JoomlaTinyFCK
« il: 24 Feb 2007, 23:26:32 »
Salve a tutti.
Usando Explorer mi accadono delle stranezze nelle schermate di editing dei contenuti (icone non visibili, saltano gran parte dei testi di commento/help, ecc...). Cose tutte che non accadono con Firefox (sullo stesso sito, naturalmente!).

Sostituendo l'editor JoomlaTinyFCK con JoomlaFCK tutti i problemi scompaiono.

Non ho indagato con attenzione, ma il problema dovrebbe risiedere negli script java. So che da qualche parte ho letto di altri problemi di questo tipo con JoomlaTinyFCK.
In conclusione con JoomlaFCK i siti sono più stabili, hanno una compatibilità maggiore e l'editor è decisamente più completo (vedi, ad esempio, il supporto completo di 52 lingue)!  ;)

19
Esperimenti e test / Fix su lingua e installazione componenti
« il: 05 Feb 2007, 10:11:54 »
Salve.
Nel personalizzare questa fantastica EXT sono incappato in un errore negli script caricando il componente docman.
Il problema risiede nell'index.php del template del pannello di amministrazione. La riga erronea è:

Codice: [Seleziona]
require( 'templates/minted_one-point-five/lang/it.php' );
In pratica conviene sostituire le prime 6 righe dell'index.php come segue per avere una correzzione completa:

Codice: [Seleziona]
$tstart = mosProfiler::getmicrotime();
// needed to seperate the ISO number from the language file constant _ISO
$iso = explode( '=', _ISO );
// xml prolog
echo '<?xml version="1.0" encoding="'. $iso[1] .'"?' .'>';

if ($mosConfig_lang=='') {
$mosConfig_lang = 'english';
}
require( $mosConfig_absolute_path . '/administrator/templates/minted_one-point-five/lang/' . $mosConfig_lang . '.php' );

In questo modo il template usa le funzioni di autoselezione del file di lingua. Per completare il fix è necessario rinominare i file di lingua del template così:

it.php --> italian.php
en.php --> english.php

Lo stesso discorso va fatto anche per il file login.php . Le righe da mettere sono le stesse riportate qui sopra.
Allego lo zip di patch contenente i files fixati.

[allegato eliminato da un amministratore]

20
Gallerie di immagini / Re: Zoom Gallery non va
« il: 31 Dic 2006, 17:27:02 »
Il server è configurato per accetare file fino a 5MB.
Comunque il file viene uploadato. E' il passo 2 che non va...
Sullo stesso server ho anche un'altro sito con Joomla 1.0.8 e zoomgallery 2.5.1 RC2 e li tutto funziona correttamente.
Ho il sospetto che il problema non è lato server, ma lato joomla. Infatti sull'installazione chge non va ho joomla 1.0.11 e ZMG 2.5.1 RC2 (ho provato anche con la RC3: strsso risultato).
Sto pensando che Joomla 1.0.11 ha subito delle modifiche che "rompono le scatole" a ZMG, ma non ho idea di cosa possono aver cambiato.

Pagine: [1] 2 3


Web Design Bolzano Kreatif