Aggiungere una bacheca nel plugin Groups di Elgg

Ciao a tutti

dopo avere studiato il plugin Groups fornito di default da Elgg,l'obiettivo del mio gruppo di sviluppo è di adattare in parte il plugin per trasformarlo in una sorta di bacheca;vi descrivo di seguito più dettagliatamente cosa intendo:

-L'utente,una volta loggato,accede alla sezione Groups del social e ha accesso a dei gruppi già esistenti.

-Dopo essere entrato in uno dei gruppi presenti,l'utente deve trovarsi davanti la classica pagina di presentazione del gruppo la quale però non ha più lo scopo di dare accesso ad un forum.

-Nella pagina di presentazione del gruppo,l'utente si ritrova invece una bacheca avente la seguente struttura: [1]Avatar/Descrizione del gruppo nella parte superiore della pagina(questo è già presente nel plugin originale e vogliamo che resti inalterato)[2]nella parte sottostante,l'utente non si ritroverà più la classica area nella quale vengono visualizzati i topic disponibili:si ritroverà invece (A) una textbox nella quale inserire un messaggio E il relativo bottone di SUBMIT per approvare la pubblicazione del messaggio (B) sopra la textbox,si ritroverà un area nella quale vengono visualizzati sia i suoi messaggi che quelli degli altri utenti[praticamente la pagina dei gruppi diviene una sorta di bacheca/blog].

-Ci stiamo lavorando da 2 giorni,e per quanto riguarda la creazione della textbox nella quale inserire il messagio abbiamo già provveduto.Il problema è invece quello di creare un area di testo sovrastante che pubblichi i messaggi,per questa avremmo bisogno se possibile di qualche suggerimento su come implementarla.

Di nuovo mi scuso per la richiesta un pò inusuale e ringrazio anticipatamente chi sarà in grado di darci dei consigli in merito :)

  • Aggiornamento:

    Cercando nella sezione plugin,ho trovato questo il cui scopo sembra fornire all'utente la possibilità di personalizzare l'aspetto del plugin Groups:

    http://community.elgg.org/pg/plugins/release/600742/developer/tulicipriota/group-custom-layout-v12

    Mi chiedevo se qualcuno per caso non l'ha già utilizzato o se ritiene che tramite esso sia possibile raggiungere l'obiettivo che vi ho appena descritto.

     

  • Aggiornamento 2:

    Altro plugin che sembra adattarsi al nostro scopo:

    http://community.elgg.org/mod/community_plugins/read.php?guid=580899

    Lo scopo pare quello di fornire all'utente la possibilità di personalizzare la pagina di profilo dei gruppi aggiungendovi dei widgets.

    Di nuovo apprezzerei moltissimo il vostro parere in merito.

    Grazie di nuovo,anche per la vostra pazienza :)

  • spulcia il codice del plugin "the WIRe" cosi prendi ispirazione

  • Nel caso che a qualcun'altro serva,mi è stato indicato questo plugin il quale svolge esattamente la funzione da me cercata:

    http://community.elgg.org/pg/plugins/release/114145/developer/webgalli/message-board-with-group-message-board-option

    Vi posto il link giusto nel caso che a qualcuno possa servire in futuro.

    Ringrazio comunque lord55 per l'aiuto,non mancherò di spulciarmi il codice di "the WIre" per esperienza personale [non posso mica sempre appoggiarmi ai plugin prefatti o non imparerò mai a programmare con Elgg :) ]

  • @bobaso bravo vedo che sei nello spirito di imparare, il suggerimento nasce dal fatto che se capisci come è programmato elgg, invece di scrivere tanto codice tuo, puoi utilizzare le classi e le funzioni di riferimento di elgg per ottere, per esempio, i risultati dal db con mezza stringa di codice.... tempo e fatica in  meno :-)

  • Riuppo questo topic per una richiesta di aiuto: come ho scritto giorni fa,abbiamo usato questo plugin

    http://community.elgg.org/pg/plugins/release/114145/developer/webgalli/message-board-with-group-message-board-option

    il cui scopo è quello di creare una messageboard direttamente nella pagina di profilo di un singolo gruppo.

    Il problema ci arriva dal file delete.php,situato nella directory actions il cui scopo è di cancellare i messaggi postati dal singolo utente. Dopo la cancellazione,si viene reindirizzati ad una pagina nella quale è presente la bacheca aggiornata E un link,tramite il quale si viene reindirizzati alla pagina del gruppo di origine.

    Qui casca l'asino:il nostro obiettivo è di eliminare questo passaggio intermedio,ovvero,dopo avere cancellato il messaggio si viene automaticamente reindirizzati alla pagina del profilo del gruppo senza fare il passaggio intermedio sopra citato.

    Personalmente ho provato a rilevare l'url del gruppo originale inserendo questa funzione nel file group.php del plugin Groups di default:

    <?php
    function curPageURL() {
     $pageURL = 'http';
     if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
     $pageURL .= "://";
     if ($_SERVER["SERVER_PORT"] != "80") {
      $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
     } else {
      $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
     }
     return $pageURL;
    }
    ?>

    (funzione trovata a questo indirizzo:http://www.webcheatsheet.com/PHP/get_current_page_url.php)

    per poi andare ad inserire un forward($pageURL) all'interno del file delete.php (contenuto dentro al plugin messageboard fornitovi tramite il link sovrastante).

    Tuttavia vengo reindirizzato alla pagina della dashboard,e non a quella del gruppo.

    Qualche suggerimento? Grazie in anticipo

    Aggiornamento:Allego il file delete.php contenuto all'interno del nuovo plugin Messageboard->

    <?php

        /**
         * Elgg Message board: delete message action
         *
         * @package ElggMessageBoard
         * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
         * @author Curverider Ltd <info@elgg.com>
         * @copyright Curverider Ltd 2008-2009
         * @link http://elgg.org/
         */

        // Ensure we're logged in
            if (!isloggedin()) forward();
           
       
       
       
        // Make sure we can get the comment in question
            $annotation_id = (int) get_input('annotation_id');
           
            //make sure that there is a message on the message board matching the passed id
            if ($message = get_annotation($annotation_id)) {
               
                //grab the user or group entity
                $entity = get_entity($message->entity_guid);
               
                //check to make sure the current user can actually edit the message board
                if ($message->canEdit()) {
                    //delete the comment
                    $message->delete();
                    //display message
                    system_message(elgg_echo("messageboard:deleted"));
                    //generate the url to forward to
                    $url = "pg/messageboard/" . $entity->username;
                    //forward the user back to their message board
                    forward($url);
                }
               
            } else {
                $url = "";
                system_message(elgg_echo("messageboard:notdeleted"));
               
            }
            forward($url);
           
           
           
    ?>
           
    Nel mio caso ho inserito il nuovo forward solo nel caso di successo del delete.trascurando il caso di insuccesso.       

    Se vi servisse,posso postare direttamente altri parti di codice del nuovo plugin Messageboard (vi risparmio lo sbatti di andarvi a cercare le parti necessarie e avendolo studiato posso incollarvi le parti da voi richieste).

  • per ora hai un foward

    //generate the url to forward to
                    $url = "pg/messageboard/" . $entity->username;

    prova a generarne uno verso il gruppo , tipo:

    $group_guid = get_input('group_guid');

    $group = get_entity($group_guid);

    forward($group->getURL());
                    exit;

  • Ok,ho provato ad editare il file delete.php come segue:

    --------------------------------------------------

    <?php

        /**
         * Elgg Message board: delete message action
         *
         * @package ElggMessageBoard
         * @license http://www.gnu.org/licenses/old-licenses/gpl-2.0.html GNU Public License version 2
         * @author Curverider Ltd <info@elgg.com>
         * @copyright Curverider Ltd 2008-2009
         * @link http://elgg.org/
         */

        // Ensure we're logged in
            if (!isloggedin()) forward();
           
        //ATTENZIONE->E' MODIFICATO! PER RITROVARE IL FORWARD ORIGINALE DEVI ANDARE A PRENDERLO NEL
        //MESSAGEBOARD ORIGINALE SITUATO NEL DESKTOP
       
       
        $group_guid = get_input('group_guid');

        $group = get_entity($group_guid);
       
        //FINE AGGIUNTA
       
        // Make sure we can get the comment in question
            $annotation_id = (int) get_input('annotation_id');
           
            //make sure that there is a message on the message board matching the passed id
            if ($message = get_annotation($annotation_id)) {
               
                //grab the user or group entity
                $entity = get_entity($message->entity_guid);
               
                //check to make sure the current user can actually edit the message board
                if ($message->canEdit()) {
                   
                   
                    //delete the comment
                $url=$group->getURL();
               
                $message->delete();
                   
                system_message(elgg_echo("messageboard:deleted"));
                   
                forward($url);
               
                   
                    }
                   
            } else {
               
                $url="";
               
                system_message(elgg_echo("messageboard:notdeleted"));
               
                forward($url);
            }
           
               
           
           
           
    ?>

    --------------------------------------------

    Dite che ho fatto degli errori di sintassi,oppure ho posizionato la variabile ($group) in una posizione tale da non riuscire a rilevare l'url della pagina del gruppo nel quale si trova l'utente loggato?

    Per come l'ho editato,al momento in seguito alla cancellazione mi rimanda ad una pagina inesistente.