Advertisement
Guest User

DiscussionExcerpt2 1.3

a guest
Aug 17th, 2010
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.86 KB | None | 0 0
  1. <?php
  2. // Define the plugin:
  3. $PluginInfo['DiscussionExcerpt2'] = array(
  4.    'Description' => 'Shows configurable amount of words from discussion in discussion list',
  5.    'Version' => '1.3',
  6.    'Author' => "Robert Ivanov",
  7.    'AuthorEmail' => '[email protected]',
  8.    'AuthorUrl' => 'http://www.robi-bobi.net'
  9. );
  10.  
  11.  
  12. class DiscussionExcerpt2 implements Gdn_IPlugin {
  13.    public function PluginController_DiscussionExcerpt2_Create(&$Sender) {
  14.       $Sender->AddSideMenu('plugin/discussionexcerpt2');
  15.       $Sender->Form = new Gdn_Form();
  16.       $Validation = new Gdn_Validation();
  17.       $ConfigurationModel = new Gdn_ConfigurationModel($Validation);
  18.       $ConfigurationModel->SetField(array('DiscussionExcerpt2.Number_of_words'));
  19.       $ConfigurationModel->SetField(array('DiscussionExcerpt2.Show_announcements'));
  20.       $Sender->Form->SetModel($ConfigurationModel);
  21.            
  22.       if ($Sender->Form->AuthenticatedPostBack() === FALSE) {    
  23.          $Sender->Form->SetData($ConfigurationModel->Data);    
  24.       } else {
  25.          $Data = $Sender->Form->FormValues();
  26.          $ConfigurationModel->Validation->ApplyRule('DiscussionExcerpt2.Number_of_words', array('Required', 'Integer'));
  27.          if ($Sender->Form->Save() !== FALSE)
  28.             $Sender->StatusMessage = T("Your settings have been saved.");
  29.       }
  30.      
  31.       // creates the page for the plugin options such as display options
  32.       $Sender->View = dirname(__FILE__).DS.'views'.DS.'discussionexcerpt2.php';
  33.       $Sender->Render();
  34.    }
  35.  
  36.    public function Base_GetAppSettingsMenuItems_Handler(&$Sender) {
  37.       $Menu = $Sender->EventArguments['SideMenu'];
  38.       $Menu->AddLink('Add-ons', 'DiscussionExcerpt2', 'plugin/discussionexcerpt2', 'Garden.Themes.Manage');
  39.    }
  40.  
  41.    public function DiscussionsController_AfterDiscussionTitle_Handler(&$Sender) {
  42.        $Discussion = $Sender->EventArguments['Discussion'];
  43.        $Body = strip_tags($Discussion->Body);
  44.            $Announce = $Discussion->Announce;
  45.  
  46.        $Number_of_words = Gdn::Config('DiscussionExcerpt2.Number_of_words', 15);
  47.        $Show_announcements = Gdn::Config('DiscussionExcerpt2.Show_announcements', false);
  48.        $words = explode(' ', $Body);
  49.        if ( ($Announce != 1 ) || ( $Announce && $Show_announcements )) {
  50.              if (count($words) > $Number_of_words) {
  51.              echo '<div class="DiscussionExcerpt2">' . implode(' ', array_slice($words, 0, $Number_of_words)) . ' ...</div>';
  52.          } else {
  53.                  echo '<small>' . $Body . '</small>';
  54.          }
  55.        }
  56.        return;
  57.    }
  58.  
  59.     /**
  60.     * This method is called when discussion list is shown for some category
  61.     * Method provided by @NickE
  62.     **/
  63.     public function CategoriesController_AfterDiscussionTitle_Handler(&$Sender) {
  64.         $this->DiscussionsController_AfterDiscussionTitle_Handler($Sender);
  65.     }
  66.  
  67.    public function Setup() {
  68.       //no setup needed
  69.    }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement