/** * Tag management (let admins rename tags, remove tags, etc). * TODO: manage the Plugins.Tagging.Required boolean setting that makes tagging required or not. * @param SettingsController $Sender */ public function SettingsController_Tagging_Create($Sender, $Args) { $Sender->Permission('Garden.Settings.Manage'); $Sender->Title('Tagging'); $Sender->AddSideMenu('settings/tagging'); $Sender->AddCSSFile('plugins/Tagging/design/tagadmin.css'); $Sender->AddJSFile('plugins/Tagging/admin.js'); $SQL = Gdn::SQL(); $Sender->Form->Method = 'get'; $Sender->Form->InputPrefix = ''; $Sender->Form->Action = '/settings/tagging'; list($Offset, $Limit) = OffsetLimit($Sender->Request->Get('Page'), 100); $Sender->SetData('_Limit', $Limit); if ($Search = $Sender->Request->Get('Search')) { $SQL->Like('Name', $Search, 'right'); } $Data = $SQL->Select('t.*')->From('Tag t')->OrderBy('t.Name', 'asc')->OrderBy('t.CountDiscussions', 'desc')->Limit($Limit, $Offset)->Get()->ResultArray(); $Sender->SetData('Tags', $Data); if ($Search = $Sender->Request->Get('Search')) { $SQL->Like('Name', $Search, 'right'); } $Sender->SetData('RecordCount', $SQL->GetCount('Tag')); $Sender->Render('Tagging', '', 'plugins/Tagging'); }
/** * List all tags and allow searching * * @param SettingsController $Sender */ public function SettingsController_Tagging_Create($Sender, $Search = NULL, $Type = NULL, $Page = NULL) { $Sender->Title('Tagging'); $Sender->AddSideMenu('settings/tagging'); $Sender->AddCSSFile('plugins/Tagging/design/tagadmin.css'); $Sender->AddJSFile('plugins/Tagging/js/admin.js'); $SQL = Gdn::SQL(); // Get all tag types $TagModel = TagModel::instance(); $TagTypes = $TagModel->getTagTypes(); $Sender->Form->Method = 'get'; $Sender->Form->InputPrefix = ''; list($Offset, $Limit) = OffsetLimit($Page, 100); $Sender->SetData('_Limit', $Limit); if ($Search) { $SQL->Like('FullName', $Search, 'right'); } // This type doesn't actually exist, but it will represent the // blank types in the column. if (strtolower($Type) == 'tags') { $Type = ''; } if (!$Search) { if ($Type !== NULL) { if ($Type === 'null') { $Type = NULL; } $SQL->Where('Type', $Type); } else { if ($Type == '') { $SQL->Where('Type', ''); } } } else { $Type = 'Search Results'; // This is made up, and exists so search results can be placed in // their own tab. $TagTypes[$Type] = array('key' => $Type); } $TagTypes = array_change_key_case($TagTypes, CASE_LOWER); // Store type for view $TagType = !empty($Type) ? $Type : 'Tags'; $Sender->SetData('_TagType', $TagType); // Store tag types $Sender->SetData('_TagTypes', $TagTypes); // Determine if new tags can be added for the current type. $CanAddTags = !empty($TagTypes[$Type]['addtag']) && $TagTypes[$Type]['addtag'] ? 1 : 0; $Sender->SetData('_CanAddTags', $CanAddTags); $Data = $SQL->Select('t.*')->From('Tag t')->OrderBy('t.FullName', 'asc')->OrderBy('t.CountDiscussions', 'desc')->Limit($Limit, $Offset)->Get()->ResultArray(); $Sender->SetData('Tags', $Data); if ($Search) { $SQL->Like('Name', $Search, 'right'); } // Make sure search uses its own search type, so results appear // in their own tab. $Sender->Form->Action = Url('/settings/tagging/?type=' . $TagType); // Search results pagination will mess up a bit, so don't provide a type // in the count. $RecordCountWhere = array('Type' => $Type); if ($Type == '') { $RecordCountWhere = array('Type' => ''); } if ($Search) { $RecordCountWhere = array(); } $Sender->SetData('RecordCount', $SQL->GetCount('Tag', $RecordCountWhere)); $Sender->Render('tagging', '', 'plugins/Tagging'); }
/** * List all tags and allow searching * * @param SettingsController $Sender */ public function SettingsController_Tagging_Create($Sender, $Search = NULL, $Type = NULL, $Page = NULL) { $Sender->Title('Tagging'); $Sender->AddSideMenu('settings/tagging'); $Sender->AddCSSFile('plugins/Tagging/design/tagadmin.css'); $Sender->AddJSFile('plugins/Tagging/js/admin.js'); $SQL = Gdn::SQL(); $Sender->Form->Method = 'get'; $Sender->Form->InputPrefix = ''; //$Sender->Form->Action = '/settings/tagging'; list($Offset, $Limit) = OffsetLimit($Page, 100); $Sender->SetData('_Limit', $Limit); if ($Search) { $SQL->Like('FullName', $Search, 'right'); } if ($Type !== NULL) { if ($Type === 'null') { $Type = NULL; } $SQL->Where('Type', $Type); } $Data = $SQL->Select('t.*')->From('Tag t')->OrderBy('t.FullName', 'asc')->OrderBy('t.CountDiscussions', 'desc')->Limit($Limit, $Offset)->Get()->ResultArray(); $Sender->SetData('Tags', $Data); if ($Search = $Sender->Request->Get('Search')) { $SQL->Like('Name', $Search, 'right'); } $Sender->SetData('RecordCount', $SQL->GetCount('Tag')); $Sender->Render('tagging', '', 'plugins/Tagging'); }