SobiPro - Limit Entries for Users

google-plus Scritto da . Postato in Joomla!

Un quesitp che può porsi qualora si decida di creare una directory con il componente SobiPro, è lasciare la possibilità agli utenti del sito di registrarsi e solo successivamente di creare una sola scheda - entry.

Per fare questo, senza complicare inutilmente la logica di controllo del componente, ho adottato la soluzione di inserire una funzione nella abstract class del template da me usato per la directory SobiPro.

Al momento della richiesta di inserimento di una nuova entry da parte dell'utente, la funzione fa un controllo sull'esistenza di una entry dell'utente nella section indicata.
Se questo è verificato, sfrutta la funzione Sobi::Redirect per ridirezionare l'utente alla sua scheda - entry in modalità modifica 'entry.edit'

File template.php funzione Redirect

Aprite il file template.php nella cartella del template SobiPro da voi utilizzato.
Ecco il codice da inserire all'interno della abstract class:

public static function Redirect($id, 
            $orderBy = 'createdTime', $section = null, $type = 'entry')
      {
        if ($id && (int)$id)  {
          $section = $section ? $section : -1;
          $listing = SPFactory::Controller('listing');
          $listing = new SPListingCtrl();
          $entries = $listing->entries($orderBy, null, null, false, array('owner' => $id), false, $section);
          if (count($entries)) {
            foreach ( $entries as $id ) {
                $entry = SPFactory::Entry($id);          
                if( SPRequest::task() == 'entry.add' ) {          
                    $url = htmlspecialchars(
                        Sobi::Url(
                            array(
                                'task' => 'entry.edit',
                                'sid' => $entry->get('id')
                            )
                        )
                    );
                    Sobi::Redirect($url);
                    break;
                }
            }        
          }
        }
      }       

Modifica del file edit.xsl

La parte restante del codice, va inserito invece nel file edit.xsl che si trova all'interno della cartella entry del template SobiPro. Modificarlo inserendo le seguenti righe di codice:

<xsl:variable name="user">
      <xsl:value-of select="php:function('SobiPro::My','id')" />
    </xsl:variable>
    
    <xsl:value-of select="
        php:function(
          'RestaurantsTpl::Redirect',
          $user
        )"
    />   

Ora, se l'utente registrato è abilitato all'inserimento e ha già una scheda - entry nella section, verrà reindirizzato verso quest'ultima in modalità di modifica 'task=entry.edit'

Se hai gradito l'articolo, condividilo, basta un click!

Aggiungi commento


Codice di sicurezza
Aggiorna

  • logo prontopro
  • logo boutique serramento
  • koilab japan and tropical fish farm
  • Trasloco economico - gruppo Arco Traslochi
  • logo flash pulizie
  • logo revolution
  • logo planetkoi small
  • logo finiture
  • ick logo template
  • montaggio mobili trento

Realizzato da: Daniele Gagliardi
Viale Monache 3 - 38062 Arco - TN
- Contattami -

Per essere più facile ed intuitivo, il blog fa uso dei cookie, piccole porzioni di dati che consentono di capire come gli utenti navighino e ne visualizzino le pagine. I cookie non registrano alcuna informazione personale sull'utente ed eventuali dati identificabili non verranno memorizzati. La nostra Privacy Policy è cambiata: Ti invitiamo a prenderne visione. Oppure visiona la nostra Cookie Policy: