SobiPro - Limit Entries for Users

google-plus Scritto da .

Il presente articolo è stato scritto sulla base di una versione obsoleta del componente SobiPro (1.1.x): le informazioni ivi contenute potrebbero non essere aggiornate.

Un quesito 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

I commenti lasciati dagli utenti del blog sono sempre soggetti a controllo prima di eventuale pubblicazione. I commenti non considerati adatti per contenuti, spam o forma saranno eliminati e non pubblicati. Leggi i Termini e Condizioni di utilizzo per maggiori informazioni.


Codice di sicurezza
Aggiorna

  • logo teoca
  • materexcel collabora
  • logo flash pulizie
  • revolution srl
  • logo arcotraslochi
  • montaggio mobili trento
  • logo elevatori sito
  • logo prontopro

Prima di andartene...

Perché non rimanere in contatto?

Clicca sul pulsante "Mi piace" qui sotto per rimanere aggiornato su tutti i nuovi contenuti e ricevere notifica degli articoli interessanti che condivido giornalmente sulla Pagina Facebook dedicata al blog.

Puoi anche iscriverti alla newsletter e al nuovo canale YouTube di blog.dangerx82 così da rimanere sempre aggiornato sui nuovi contenuti...

x

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. Ti invitiamo a prendere visione della nostra Informativa sulla Privacy (aggiornata il 25/05/2020). Oppure visiona la nostra Cookie Policy (aggiornata il 17/10/2019):