[RISOLTO] Organigramma e campi supplementari

Domande sulle funzionalità di backend: amministrazione utenti e corsi, certificati, iscrizioni, report, ...
User avatar
robykirk
FormaLms User
Posts: 140
Joined: Mon Mar 12, 2012 10:06 pm

[RISOLTO] Organigramma e campi supplementari

Post by robykirk »

Buongiorno, ho impostato la piattaforma affinché vi siano 3 tipologie di registrazione utenti: un'autoregistrazione e 2 effettuate da pannello amministrativo.
Ho creato dei campi supplementari assegnandoli alla root dell'organigramma ed altri da assegnare ai 2 nodi.
Il problema nasce dal fatto che i nodi ereditano i campi supplementari della root, obbligando ad utilizzarli anche per i nodi.
Certo esiste una logica nell'ereditarietà di tali campi, tuttavia mi sembra un limite nella configurazione.
Ho provato ad impostare per i nodi i campi obbligatori della root come non obbligatori ma rimangono tali.
Ipotizzando di voler spostare i campi della root in un terzo nodo liberando così la root stessa, esiste la possibilità di impostare tale nodo come default del modulo di registrazione (Registrati della homepage)?

Grazie
Last edited by robykirk on Tue Mar 20, 2012 12:44 am, edited 1 time in total.
Roby Kirk
Massimiliano

Re: Organigramma e campi supplementari

Post by Massimiliano »

ciao robykirk,
intanto é giusto quello che dici: devi disassegnare i c. s. di troppo dalla root, se no non ne esci.
La cosa più veloce che mi viene in mente é di usare le funzioni di 'codice' per assegnare automaticamente gli autoregistrati al nodo che desideri.
Appena ho un secondo ci rifletto di più x vedere se ci sono modi di ottenere il risultato anche senza usare il codice
max
User avatar
robykirk
FormaLms User
Posts: 140
Joined: Mon Mar 12, 2012 10:06 pm

Re: Organigramma e campi supplementari

Post by robykirk »

Grazie Massimiliano, io stavo pensando a questa cosa

Situazione attuale:

Root (Campo 1 - Campo 2)
|
|-Nodo 1 (Campo 3 - Campo 4)
|
|-Nodo 2 (Campo 5 - Campo 6)

Root per autoregistrazioni
Nodo 1 e 2 per registrazioni amministrative ma ereditano Campo 1 e Campo 2

Quanto mi suggerisci è ottimo ed è la prima soluzione valida da poter applicare.
Una altra possibile soluzione, molto più generica, sarebbe questa:

Root
|
|-Nodo 1 (Campo 1 - Campo 2)
|
|-Nodo 2 (Campo 3 - Campo 4)
|
|-Nodo 3 (Campo 5 - Campo 6)

ipotizzando una prima schermata di registrazione che potrebbe essere utile anche per formazione mista interna e fad
Pensavo ad una schermata con possibilità di scelta tra formazione standard e formazione fad.
Se seleziono standard mi ritrovo ad esempio sul Nodo 1 mentre se seleziono formazione fad, mi ritrovo su Nodo 2 lasciando il nodo 3 per eventuali ulteriori tipologie d'iscrizione o per l'iscrizione amministrativa.
Guardando il codice ed il database, ho cercato di capire dov'è la chiamata alla root ma non l'ho ancora trovata.
Se dovessi trovare la soluzione, la posterò qui.
Nel frattempo, la tua soluzione mi sembra molto interessante e proverò ad applicarla in locale.
Ti ringrazio per la tua disponibilità e per l'eventuale contributo sulla soluzione da te prospettata.

Ciao
Roby Kirk
User avatar
alberto
FormaLms Guru
Posts: 1135
Joined: Fri Mar 02, 2012 9:18 am
Contact:

Re: Organigramma e campi supplementari

Post by alberto »

Ciao Robikirk, le funzionalità di "iscrizione con codice" sembrano anche a me la strada più immediata per forzare l'inserimento deinuovi iscritti in un nodo specifico. Magari potresti provare ad esplorare anche le nuove "politiche di iscrizione" introdotte con la versione 4 di Docebo: personalmente non le ho ancora testate ma potrebbero darti qualche alternativa in più.
User avatar
max
FormaLms Guru
Posts: 2735
Joined: Thu Mar 01, 2012 10:41 am
Version: forma.lms 2.4
Contact:

Re: Organigramma e campi supplementari

Post by max »

Come dicevo, finché hai dei campi supplementari assegnati alla root non ne esci, giustamente vengono ereditati.
Con la seconda ipotesi che fai, nessun campo nella root, e i campi che vuoi nei nodi 1, 2 e 3 riesci ad assegnare i campi che vuoi ai nodi che vuoi.
Se combini i nodi con i codici riesci a inserire gli autoregistrati (o gli iscritti da admin) nei campi che desideri coi nodi che desideri.
Anche la soluzione postata da Alberto va approfondita, non l'ho ancora fatto nemmeno io.
Grazie per il tuo contributo!
Max
robykirk wrote:Grazie Massimiliano, io stavo pensando a questa cosa

Situazione attuale:

Root (Campo 1 - Campo 2)
|
|-Nodo 1 (Campo 3 - Campo 4)
|
|-Nodo 2 (Campo 5 - Campo 6)

Root per autoregistrazioni
Nodo 1 e 2 per registrazioni amministrative ma ereditano Campo 1 e Campo 2

Quanto mi suggerisci è ottimo ed è la prima soluzione valida da poter applicare.
Una altra possibile soluzione, molto più generica, sarebbe questa:

Root
|
|-Nodo 1 (Campo 1 - Campo 2)
|
|-Nodo 2 (Campo 3 - Campo 4)
|
|-Nodo 3 (Campo 5 - Campo 6)

ipotizzando una prima schermata di registrazione che potrebbe essere utile anche per formazione mista interna e fad
Pensavo ad una schermata con possibilità di scelta tra formazione standard e formazione fad.
Se seleziono standard mi ritrovo ad esempio sul Nodo 1 mentre se seleziono formazione fad, mi ritrovo su Nodo 2 lasciando il nodo 3 per eventuali ulteriori tipologie d'iscrizione o per l'iscrizione amministrativa.
Guardando il codice ed il database, ho cercato di capire dov'è la chiamata alla root ma non l'ho ancora trovata.
Se dovessi trovare la soluzione, la posterò qui.
Nel frattempo, la tua soluzione mi sembra molto interessante e proverò ad applicarla in locale.
Ti ringrazio per la tua disponibilità e per l'eventuale contributo sulla soluzione da te prospettata.

Ciao
---------------------
Massimiliano Ferrari
Elearnit - Elearning e Knowledge Management
https://www.elearnit.net
https://www.linkedin.com/in/massimilianoferrari
m.ferrari[at]elearnit.net
Skype: m_ferrari_it
User avatar
robykirk
FormaLms User
Posts: 140
Joined: Mon Mar 12, 2012 10:06 pm

Re: Organigramma e campi supplementari

Post by robykirk »

Ringrazio entrambi per i suggerimenti.
Io stavo cercando una soluzione da php ma ho provato quanto da voi indicato, ottenendo il risultato che volevo con 2 benefici:
1) facilità di implementazione
2) nessuna modifica al codice e, quindi, una versione della piattaforma più standard

Detto questo, tuttavia rimane un problema.. in fase di registrazione, nel menù a tendina vengono visualizzati tutti e 3 i nodi dell'organigramma.
Lo scopo sarebbe di visualizzare i soli nodi a cui è permessa l'autoregistrazione.
La funzione "Codici" sembra implementare questo concetto ma, probabilmente non funziona.

Descrivo quanto fatto, a beneficio della Community
  1. Creati campi supplementari
  • Creati nodi dell'organigramma (nel mio caso 3)
  • Alla root dell'organigramma non ho associato alcun campo supplementare
  • Associati opportunamente i campi supplementari ai nodi
  • Creato Codice
  • Assegnato al codice l'unico ramo dell'organigramma necessario, cliccando sull'icona "assegna utenti", impostandolo su si mentre la root e gli altri 2 rami rimangono impostati su no (qui dovrebbe esserci il bug)
  • In Configurazioni -> Utente ho selezionato:
    - Usa il form di registrazione in modalità "avanzata"
    - Chiedi un codice di accesso all'organigramma, il codice sarà scelto da un menu a tendina
    - Se una delle opzioni di registrazione con codice riportate sopra è abilitata gli utenti sono obbligati ad inserire il codice di registrazione
Ora il problema rimane solo legato alla visualizzazione dei 2 nodi amministrativi che non dovrebbero apparire.
In questo caso, credo sia necessario intervenire su codice php in quanto, se i rami sono impostati su no, essi non dovrebbero essere visualizzati.

Ciao
Roby Kirk
User avatar
robykirk
FormaLms User
Posts: 140
Joined: Mon Mar 12, 2012 10:06 pm

Re: Organigramma e campi supplementari

Post by robykirk »

Ho concluso la modifica.
Rimangono valide le impostazioni segnalate nel mio precedente post.
Questa modifica può essere considerata una MOD ma per me è a tutti gli effetti un BUG FIX in quanto, se attivo un solo ramo per un codice, non dovrebbero apparire tutti i rami nel menù a tendina.

File modificati:
- lib\lib.usermanager.php
- doceboCore\models\UsermanagementAdm.php

N.B.: Prima di apportare le modifiche, fare una copia di sicurezza dei file da modificare!

1) nel file lib\lib.usermanager.php cercare la riga 1840 (circa)

Code: Select all

$tree_names = $uma->getAllFolderNames(true);
e sostituirla con

Code: Select all

// INIZIO MODIFICA ROBYKIRK (elenco dei soli rami di organigramma attivati nel codice)
//tree_names = $uma->getAllFolderNames(true);
$tree_names = $uma->getAllFolderNamesActive(true);
// FINE MODIFICA ROBYKIRK
2) nel file doceboCore\models\UsermanagementAdm.php intorno alla riga 1636 (in realtà è indifferente) subito dopo il seguente codice

Code: Select all

	public function getAllFolderNames($only_with_code=false) {

		$tree_codes = array();
		$query = "SELECT t1.idOrg, t1.code, t2.translation "
			."FROM %adm_org_chart_tree as t1 JOIN %adm_org_chart as t2 "
			."ON ( t1.idOrg = t2.id_dir ) "
			."WHERE t2.lang_code = '".Lang::get()."' "
			.($only_with_code ? " AND t1.code != '' " : '')
			."ORDER BY t2.translation";
		if(!$res = $this->db->query($query)) return $tree_codes;
		while(list($id, $code, $name) = $this->db->fetch_row($res)) {

			$tree_codes[$id] = $name;
		}
		return $tree_codes;
	}
aggiungere il seguente codice

Code: Select all

// INIZIO AGGIUNTA ROBYKIRK (elenco dei soli rami di organigramma attivati nel codice) 
	public function getAllFolderNamesActive($only_with_code=false) {    
    $tree_codes = array();
    $query_code_org = "SELECT idOrg FROM %adm_code_org";
    if(!$res2 = $this->db->query($query_code_org)) return $tree_codes;
    while (list($idOrg) = $this->db->fetch_row($res2)) {
      $query = "SELECT t1.idOrg, t1.code, t2.translation "
			   ."FROM %adm_org_chart_tree as t1 JOIN %adm_org_chart as t2 "
			   ."ON ( t1.idOrg = t2.id_dir ) "
			   ."WHERE t2.lang_code = '".Lang::get()."' "
			   .($only_with_code ? " AND t1.code != '' " : '')
         ."AND (t1.idst_oc =".$idOrg." OR t1.idst_ocd =".$idOrg.")"
			   ."ORDER BY t2.translation";    
      if(!$res = $this->db->query($query)) return $tree_codes;
		  while(list($id, $code, $name) = $this->db->fetch_row($res)) {

			   $tree_codes[$id] = $name;
		  }
    }
		return $tree_codes;
	}
// FINE AGGIUNTA ROBYKIRK
Io ho testato il tutto su piattaforma locale e mi sembra funzioni correttamente.
se avete possibilità, testatelo anche voi.

Nel frattempo, metto come RISOLTO questo thread.


Ciao
Roby Kirk
User avatar
robykirk
FormaLms User
Posts: 140
Joined: Mon Mar 12, 2012 10:06 pm

Re: [RISOLTO] Organigramma e campi supplementari

Post by robykirk »

scusate, ho eliminato l'array

Code: Select all

$tree_codes_org = array ();
che era rimasto dalla programmazione e che non serve a nulla.

Ciao
Roby Kirk
User avatar
max
FormaLms Guru
Posts: 2735
Joined: Thu Mar 01, 2012 10:41 am
Version: forma.lms 2.4
Contact:

Re: [RISOLTO] Organigramma e campi supplementari

Post by max »

Ciao Roby,
grazie per il tuo contributo.
Non ho ancora avuto il tempo di riprodurre quello che stai cercando di ottenere, volevo però solo dire che le opzioni di registrazione sono un po' più articolate. Il codice infatti non deve per forza essere un ramo di organigramma, ma può appunto essere un codice. Ecco le opzioni possibili:
Tipo di utilizzo del codice registrazione
  • Nessuno
  • Chiedi un codice di accesso all'organigramma che deve essere inserito manualmente dall'utente
  • Chiedi un codice di accesso all'organigramma, il codice sarà scelto da un menu a tendina
  • Chiedi un codice di accesso che è una combinazione tra codice organigramma e codice corso. Ogni porzione di codice deve essere formata da 10 caratteri per un totale di 20
  • Richiedi codice creato attraverso il modulo codici
Se una delle opzioni di registrazione con codice riportate sopra è abilitata gli utenti sono obbligati ad inserire il codice di registrazione

Se usi il modulo codici, allora devi scegliere l'ultima di queste opzioni. E il codice deve essere inserito a mano.
CI aggiorniamo
---------------------
Massimiliano Ferrari
Elearnit - Elearning e Knowledge Management
https://www.elearnit.net
https://www.linkedin.com/in/massimilianoferrari
m.ferrari[at]elearnit.net
Skype: m_ferrari_it
User avatar
robykirk
FormaLms User
Posts: 140
Joined: Mon Mar 12, 2012 10:06 pm

Re: [RISOLTO] Organigramma e campi supplementari

Post by robykirk »

Ciao Max, ho provato anche le altre opzioni ma il mio scopo era quello di far decidere al nuovo iscritto la tipologia di iscrizione da menù a tendina, senza codici da inserire manualmente.

Es. Devo iscrivermi per un corso FAD, allora seleziono fad e mi ritrovo nel ramo opportuno... oppure devo iscrivermi a corsi interni dedicati al personale della società che gestisce la piattaforma, allora seleziono ad esempio "corsi interni società s.p.a." e mi ritrovo in un altro ramo.
Logicamente per tale soluzione, deve essere impostata la registrazione tramite approvazione.

A cosa serve? Probabilmente a poco ma permette di avere una gestione più generica della piattaforma, applicabile a più realtà.
Un altro esempio: se appartengo ad un gruppo con N società che svolgono attività diverse (pensa ad esempio a Hyundai o altre società orientali) potrei iscrivermi alla società di appartenenza (es produzione condizionatori) e trovarmi nel nodo opportuno invece di trovarmi insieme a chi produce automobili.

Detto questo, utilizzando il codice ciò funzionava correttamente ma mi impediva di escludere i rami che non dovevano apparire (rami per i quali non è prevista autoregistrazione).
La mia modifica permette di decidere da amministrazione quali rami devono apparire nel menù a tendina.

Saluti
Roby Kirk
Post Reply