it-swarm.dev

Check-out non riuscito con il seguente errore: l'utente che ha effettuato il checkout non corrisponde all'utente che ha estratto l'elemento

Sono andato a modificare gli articoli e i moduli del mio sito, dove ho visto alcuni oggetti con un lucchetto accanto ai loro titoli.
Quando faccio clic su questi elementi per modificarli, viene visualizzato il seguente errore:

Errore
Check-out non riuscito con il seguente errore: l'utente che ha effettuato il checkout non corrisponde all'utente che ha estratto l'elemento.
Non ti è permesso usare quel link per accedere direttamente a quella pagina (# 145).

Perché i miei articoli sono bloccati e come sbloccarli?

3
FFrewin

1. Cosa significa questo lucchetto:

I componenti di Joomla Core come contenuto (articoli), categorie, menu, moduli, estensioni, ecc., Contengono nella loro struttura di tabella del database un campo chiamato "Check-Out", che può assumere 2 valori: "0" per lo stato Check-in o l'ID utente effettivo per lo stato Check-out.

Quando un utente sta modificando un elemento specifico, ad es. un articolo, il sistema di Joomla modifica il valore "Estratto" di questo articolo da 0 all'ID di questo utente, il che significa che l'articolo è attualmente nello stato "Estratto".

L'articolo tornerà allo stato "Check-In" (Checked_Out = 0), quando l'utente fa clic su "Salva" o "Chiudi "pulsanti dell'articolo.

Durante lo stato Check-in, Joomla visualizza questa lucchetto icona accanto al titolo dell'elemento nell'elenco degli elementi, per indicare che l'oggetto è attualmente in fase di modifica da parte di un utente.

Inoltre, Joomla non consentirà a nessun altro utente di accedere allo stesso oggetto contemporaneamente.

Questo per evitare risultati indesiderati e confusione nel back-end, come se più di un utente fosse in grado di modificare lo stesso elemento nello stesso articolo, si verificherebbero solo le modifiche dell'ultimo utente che farebbe clic sul pulsante "Salva".

na nota a margine interessante qui:
Un lucchetto può apparire anche quando nessun altro utente amministratore ha effettuato l'accesso o anche quando il sito ha solo 1 amministratore.
Come detto, un elemento entrerà nello stato Check-Out, quando si trova in modalità Modifica. Lo stato tornerà a Check-in solo quando l'utente fa clic sul pulsante Salva o Chiudi.

Questi pulsanti attivano le funzioni per aggiornare il database. Se per qualsiasi motivo l'utente lascia la modalità di modifica di questo elemento, senza fare clic su quei pulsanti, l'elemento continuerà ad avere il valore di ID utente per il campo Checked_Out nel database, che renderà Joomla ritiene che questo elemento sia ancora in modalità di modifica.

2. Come sbloccare l'oggetto.

Di solito in ambienti multiutente, dovrai attendere il completamento dell'altro utente il suo lavoro su questo oggetto. Si consiglia di contattarlo e chiedergli lo stato del suo lavoro.
Puoi trovare chi è l'utente che modifica l'elemento, passando con il mouse sopra il lucchetto e apparirà un descrizione comando con le informazioni pertinenti.

Per sbloccare l'elemento, è necessario disporre di accesso all'amministrazione back-end e autorizzazioni necessarie per accedere alla funzionalità Check-in.

  • 1 articolo Check-In
    Nell'elenco degli articoli di amministrazione back-end (ad es. L'elenco degli articoli), puoi fare clic sul lucchetto icona per sbloccare quell'elemento specifico.

  • Check-in di più articoli dello stesso elenco
    Se ci sono più di 1 elementi bloccati che desideri sbloccare nell'elenco, puoi spuntare il loro casella di controllo e quindi fare clic sul pulsante Check-In, sulla barra degli strumenti.

  • Check-in database globale
    Infine c'è un check-in globale, nel menu "Sistema", dove è possibile effettuare il check-in di tutte le tabelle del database che supportano la funzionalità di check-out contemporaneamente.
    Attenzione, tuttavia, che dovrebbe essere usato con cautela, specialmente nei siti multiutente, per evitare problemi/confusioni come descritto sopra.

6
FFrewin

Ho creato un componente che può essere modificato da più utenti. Il metodo edit di JControllerForm cerca questa proprietà in questo modo:

// Get the previous record id (if any) and the current record id.
$recordId = (int) (count($cid) ? $cid[0] : $this->input->getInt($urlVar));
$checkin = property_exists($table, 'checked_out'); // <---

// ....

// Attempt to check-out the new record for editing and redirect.
if ($checkin && !$model->checkout($recordId)) // <---
{
    // Check-out failed, display a notice but allow the user to see the record.
    $this->setError(JText::sprintf('JLIB_APPLICATION_ERROR_CHECKOUT_FAILED', $model->getError()));
    $this->setMessage($this->getError(), 'error');
    // ....
}

Quindi un modo semplice per evitare questa funzionalità è semplicemente rimuovere checked_out campo dalla tabella correlata, quindi $checkin è sempre FALSE


Nota: questo non è un suggerimento per modificare il codice Joomla o qualsiasi database correlato. Sono venuto qui alla ricerca di informazioni sulla funzione Joomla cheking. Questa soluzione è adatta per lo sviluppo di componenti multiutente, ovvero per essere modificati da più utenti.

0
Igor Parra