/** * Render content to group template * * @param string */ public function render() { // get the scope $scope = isset($this->params->scope) ? $this->params->scope : 'main'; // based on which scope display content switch ($scope) { case 'before': return View::displayBeforeSectionsContent($this->group); break; default: return $this->content; } }
<?php // output group options echo \Components\Groups\Helpers\View::displayToolbar($this->group); // output group menu echo \Components\Groups\Helpers\View::displaySections($this->group); ?> </div><!-- /#page_sidebar --> <div id="page_main"> <?php if ($this->tab == 'overview') { ?> <div id="page_header"> <h3> <?php echo \Components\Groups\Helpers\View::displayTab($this->group); ?> </h3> <?php $gt = new \Components\Groups\Models\Tags($this->group->get('gidNumber')); echo $gt->render(); ?> </div><!-- /#page_header --> <?php } ?> <?php if (count($this->notifications) > 0) { ?>
/** * Edit Group Page * * @return void */ public function editTask() { //get request vars $pageid = Request::getInt('pageid', 0, 'get'); // load page object $this->view->page = new Page($pageid); $this->view->version = $this->view->page->version(); //are we adding or editing $new = $this->view->page->get('id') === null && $pageid == null ? true : false; // make sure page exists if (!$this->view->page->exists() && !$new) { App::abort(404, Lang::txt('COM_GROUPS_PAGES_PAGE_NOT_FOUND')); } // make sure page belongs to group - if editing if (!$this->view->page->belongsToGroup($this->group) && !$new) { App::abort(403, Lang::txt('COM_GROUPS_PAGES_PAGE_NOT_AUTH')); } // are we passing in a page from someplace else if ($this->page) { $this->view->page = $this->page; } if ($this->version) { $this->view->version = $this->version; } // checkout page Helpers\Pages::checkout($this->view->page->get('id')); // get a list of all pages for page ordering $pageArchive = Page\Archive::getInstance(); $this->view->pages = $pageArchive->pages('list', array('gidNumber' => $this->group->get('gidNumber'), 'state' => array(0, 1), 'orderby' => 'lft')); // get page categories $categoryArchive = new Page\Category\Archive(); $this->view->categories = $categoryArchive->categories('list', array('gidNumber' => $this->group->get('gidNumber'), 'orderby' => 'title')); // get stylesheets for editor // [!] (zooley) 07/2015 // This causes extreme performance issues under certain situations // Bypassing until a better solution can be found. $this->view->stylesheets = array(); //Helpers\View::getPageCss($this->group); // get page templates $this->view->pageTemplates = Helpers\View::getPageTemplates($this->group); // build the title $this->_buildTitle(); // build pathway $this->_buildPathway(); // get view notifications $this->view->notifications = $this->getNotifications(); $this->view->notifications = $this->view->notifications ? $this->view->notifications : array(); $this->view->group = $this->group; $this->view->config = $this->config; //display layout $this->view->setLayout('edit')->display(); }
/** * Edit a group page * * @return void */ public function editTask() { // get request vars $ids = Request::getVar('id', array()); $id = isset($ids[0]) ? $ids[0] : null; // get the page & version objects $this->view->page = new Page($id); $this->view->version = $this->view->page->version(); $this->view->firstversion = $this->view->page->version(1); // get a list of all pages for creating module menu $pageArchive = Page\Archive::getInstance(); $this->view->pages = $pageArchive->pages('list', array('gidNumber' => $this->group->get('gidNumber'), 'state' => array(0, 1), 'orderby' => 'lft ASC')); // get page categories $categoryArchive = new Page\Category\Archive(); $this->view->categories = $categoryArchive->categories('list', array('gidNumber' => $this->group->get('gidNumber'), 'orderby' => 'title')); // pass vars to view $this->view->group = $this->group; // get page templates $this->view->pageTemplates = Helpers\View::getPageTemplates($this->group); // Set any errors foreach ($this->getErrors() as $error) { $this->view->setError($error); } // Output the HTML $this->view->setLayout('edit')->display(); }
$section['icon'] = 'f009'; } //if we are on the overview tab and we have group pages if ($section['name'] == 'overview' && count($this->pages) > 0) { $trueTab = strtolower(Request::getVar('active', 'overview')); $liClass = $trueTab != $this->tab ? '' : $liClass; if ($access == 'registered' && User::isGuest() || $access == 'members' && !in_array(User::get("id"), $this->group->get('members'))) { $item = "<li class=\"protected group-overview-tab\"><span data-icon=\"&#x{$section['icon']};\" class=\"disabled overview\">Overview</span>"; } else { $item = "<li class=\"{$liClass} group-overview-tab\">"; $item .= "<a class=\"overview\" data-icon=\"&#x{$section['icon']};\" title=\"{$this->group->get('description')}'s Overview Page\" href=\"{$link}\">Overview</a>"; } // append pages html // only pass in the children of the root node // basically skip the overview page here $item .= \Components\Groups\Helpers\View::buildRecursivePageMenu($this->group, $this->pages[0]->get('children')); } else { if ($access == 'nobody') { $item = ''; } elseif ($access == 'members' && !in_array(User::get('id'), $this->group->get('members'))) { $item = '<li class="protected members-only group-' . $class . '-tab" title="' . Lang::txt('This page is restricted to group members only!') . '">'; $item .= '<span data-icon="&#x' . $section['icon'] . '" class="disabled ' . $class . '">' . $title . '</span>'; $item .= '</li>'; } elseif ($access == 'registered' && User::isGuest()) { $item = '<li class="protected registered-only group-' . $class . '-tab" title="' . Lang::txt('This page is restricted to registered hub users only!') . '">'; $item .= '<span data-icon="&#x' . $section['icon'] . '" class="disabled ' . $class . '">' . $title . '</span>'; $item .= '</li>'; } else { //menu item meta data vars $metadata = isset($this->sectionsContent[$k]['metadata']) ? $this->sectionsContent[$k]['metadata'] : array(); $meta_count = isset($metadata['count']) && $metadata['count'] != '' ? $metadata['count'] : '';
/** * Check if user is authorized in groups * * @param boolean $checkOnlyMembership Do we want to check joomla admin * @return boolean True if authorized, false if not */ protected function _authorize($checkOnlyMembership = true) { $group = Group::getInstance($this->cn); if (!is_object($group)) { return false; } return View::authorize($group, $checkOnlyMembership); }
/** * Generate Group Page Preview * * @param $page Group page object * @return void */ public static function generatePreview($page, $version = 0, $contentOnly = false) { // get groups $gidNumber = $page->get('gidNumber'); $group = \Hubzero\User\Group::getInstance($gidNumber); //get config $config = Component::params('com_groups'); // load page version $content = $page->version($version)->content('parsed'); // create new group document helper $groupDocument = new Document(); // strip out scripts & php tags if not super group if (!$group->isSuperGroup()) { $content = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $content); $content = preg_replace('/<\\?[\\s\\S]*?\\?>/', '', $content); } // are we allowed to display group modules if (!$group->isSuperGroup() && !$config->get('page_modules', 0)) { $groupDocument->set('allowed_tags', array()); } // set group doc needed props // parse and render content $groupDocument->set('group', $group)->set('page', $page)->set('document', $content)->parse()->render(); // get doc content $content = $groupDocument->output(); // only parse php if Super Group if ($group->isSuperGroup()) { // run as closure to ensure no $this scope $eval = function () use($content) { ob_start(); unset($this); eval("?>{$content}<?php "); $content = ob_get_clean(); return $content; }; $content = $eval(); } // do we want to retun only content? if ($contentOnly) { return $content; } // get group css $pageCss = View::getPageCss($group); $css = ''; foreach ($pageCss as $p) { $p = rtrim(Request::root(), '/') . '/' . ltrim($p, '/'); $css .= '<link rel="stylesheet" href="' . $p . '" />'; } // output html $html = '<!DOCTYPE html> <html> <head> <title>' . $group->get('description') . '</title> ' . $css . ' <style>#system-debug { display: none !important; }</style> </head> <body class="group-page-preview"> ' . $content . ' </body> </html>'; // return html return $html; }
/** * Display Group Page * * @param Object $group \Hubzero\User\Group Object * @param Object $page \Components\Groups\Models\Page Object * @return String */ public static function displayPage($group, $page, $markHit = true) { // create view object $view = new \Hubzero\Component\View(array('name' => 'pages', 'layout' => '_view')); // if super group add super group folder // to available paths if ($group->isSuperGroup()) { $base = $group->getBasePath(); $view->addTemplatePath(PATH_APP . $base . DS . 'template' . DS . 'pages'); } // get needed vars $database = \App::get('db'); $authorized = \Components\Groups\Helpers\View::authorize($group); $version = $page ? $page->approvedVersion() : null; // stops from displaying pages that dont exist if ($page === null) { App::abort(404, Lang::txt('Group Page Not Found')); return; } // stops from displaying unpublished pages // make sure we have approved version to display if ($page->get('state') == $page::APP_STATE_UNPUBLISHED || $version === null) { // determine which layout to use $layout = $version === null ? '_view_notapproved' : '_view_unpublished'; // show unpublished or no version layout if ($authorized == 'manager' || \Hubzero\User\Profile::userHasPermissionForGroupAction($group, 'group.pages')) { $view->setLayout($layout); $view->group = $group; $view->page = $page; $view->version = $version; return $view->loadTemplate(); } // show 404 App::abort(404, Lang::txt('Group Page Not Found')); return; } // build page hit object // mark page hit if ($markHit) { $groupsTablePageHit = new PageHit($database); $pageHit = new stdClass(); $pageHit->gidNumber = $group->get('gidNumber'); $pageHit->pageid = $page->get('id'); $pageHit->userid = User::get('id'); $pageHit->date = date('Y-m-d H:i:s'); $pageHit->ip = $_SERVER['REMOTE_ADDR']; $groupsTablePageHit->save($pageHit); } // parse old wiki content //$content = self::parseWiki($group, $version->get('content'), $fullparse = true); $content = $version->get('content'); // parse php tags and modules $content = self::parse($group, $page, $content); // set content $version->set('content', trim($content)); // set vars to view $view->user = User::getRoot(); $view->group = $group; $view->page = $page; $view->version = $version; $view->authorized = $authorized; $view->config = Component::params('com_groups'); // return rendered template return $view->loadTemplate(); }
/** * View Group * * @return array */ public function viewTask() { // set the needed layout $this->view->setLayout('view'); // validate the incoming cname if (!$this->_validCn($this->cn, true)) { $this->_errorHandler(404, Lang::txt('COM_GROUPS_ERROR_NOT_FOUND')); } // Load the group object $this->view->group = Group::getInstance($this->cn); // check to make sure we were able to load group if (!is_object($this->view->group) || !$this->view->group->get('gidNumber') || !$this->view->group->get('cn')) { $this->suggestNonExistingGroupTask(); return; } // Ensure it's an allowable group type to display if (!in_array($this->view->group->get('type'), array(1, 3))) { $this->_errorHandler(404, Lang::txt('COM_GROUPS_ERROR_NOT_FOUND')); } // ensure the group is published if ($this->view->group->get('published') != 1) { $this->_errorHandler(404, Lang::txt('COM_GROUPS_ERROR_NOT_FOUND')); } // Ensure the group has been published or has been approved if ($this->view->group->get('approved') != 1) { //get list of members & managers & invitees $managers = $this->view->group->get('managers'); $members = $this->view->group->get('members'); $invitees = $this->view->group->get('invitees'); $members_invitees = array_merge($members, $invitees); $managers_members_invitees = array_merge($managers, $members, $invitees); //if user is not member, manager, or invitee deny access if (!in_array(User::get('id'), $managers_members_invitees)) { $this->_errorHandler(404, Lang::txt('COM_GROUPS_ERROR_NOT_FOUND')); } //if user is NOT manager but member or invitee if (!in_array(User::get('id'), $managers) && in_array(User::get('id'), $members_invitees)) { $this->unapprovedGroupTask(); return; } //set notification and clear after $this->setNotification(Lang::txt('COM_GROUPS_PENDING_APPROVAL_WARNING'), 'warning'); } // Get the group params $this->view->gparams = new \Hubzero\Config\Registry($this->view->group->get('params')); // Check authorization $this->view->authorized = Helpers\View::authorize($this->view->group); // get active tab $this->view->tab = Helpers\View::getTab($this->view->group); $this->view->trueTab = strtolower(Request::getVar('active', 'overview')); // get group pages if any $pageArchive = Page\Archive::getInstance(); $pages = $pageArchive->pages('list', array('gidNumber' => $this->view->group->get('gidNumber'), 'state' => array(0, 1), 'orderby' => 'lft ASC')); // custom error handling for super groups Helpers\View::attachCustomErrorHandler($this->view->group); // add the overview content $overviewContent = ''; $activePage = null; if ($this->view->tab == 'overview') { // add home page to pages list $pages = Helpers\Pages::addHomePage($this->view->group, $pages); // fetch the active page $activePage = Helpers\Pages::getActivePage($this->view->group, $pages); // are we on the login if ($this->view->trueTab == 'login') { $overviewContent = Helpers\View::superGroupLogin($this->view->group); } // check to see if we have super group component or php page if ($overviewContent == null && $this->config->get('super_components', 0)) { $overviewContent = Helpers\View::superGroupComponents($this->view->group, $this->view->trueTab); } // do we have group php pages if ($overviewContent == null) { $overviewContent = Helpers\View::superGroupPhpPages($this->view->group); } //set overview content if ($overviewContent == null) { $overviewContent = Helpers\Pages::displayPage($this->view->group, $activePage); } } // build the title $this->_buildTitle($pages); // build pathway $this->_buildPathway($pages); //set some vars for view $this->view->title = $this->_title; $this->view->content = Helpers\View::displaySectionsContent($this->view->group, $overviewContent); $this->view->activePage = $activePage; $this->view->notifications = $this->getNotifications() ? $this->getNotifications() : array(); //is this a super group? if ($this->view->group->isSuperGroup()) { //use group template file if we have it Request::setVar('tmpl', 'group'); // must call here cause otherwise doesnt load template $this->view->css()->js(); // load super group template // parse & render $superGroupTemplate = new Helpers\Template(); $superGroupTemplate->set('group', $this->view->group)->set('tab', $this->view->trueTab)->set('content', $this->view->content)->set('page', $this->view->activePage)->parse()->render(); // echo content & stop execution return $superGroupTemplate->output(true); } //display view $this->view->display(); }
/** * Render menu to group template * * @param string */ public function render() { return View::displaySections($this->group, 'class="cf"'); }
/** * Preview Group Module * * @return void */ public function previewTask() { // make sure we are approvers if (!Helpers\Pages::isPageApprover()) { App::redirect(Route::url('index.php?option=' . $this->_option . '&controller=' . $this->_controller . '&gid=' . $this->gid, false), Lang::txt('COM_GROUPS_MODULES_AUTHORIZED_APPROVERS_ONLY'), 'error'); return; } // get reqest vars $moduleid = Request::getInt('moduleid', 0, 'get'); // page object $module = new Module($moduleid); // make sure page belongs to this group if (!$module->belongsToGroup($this->group)) { App::abort(403, Lang::txt('COM_GROUPS_MODULES_NOT_AUTHORIZED')); } // get first module menu's page id $pageid = $module->menu()->first()->get('pageid'); // check if pageid 0 if ($pageid == 0) { // get a list of all pages $pageArchive = Page\Archive::getInstance(); $pages = $pageArchive->pages('list', array('gidNumber' => $this->group->get('gidNumber'), 'state' => array(1), 'orderby' => 'ordering')); // get first page $pageid = $pages->first()->get('id'); } // load page $page = new Page($pageid); // load page version $content = $page->version()->content('parsed'); // create new group document helper $groupDocument = new Helpers\Document(); // strip out scripts & php tags if not super group if (!$this->group->isSuperGroup()) { $content = preg_replace('#<script(.*?)>(.*?)</script>#is', '', $content); $content = preg_replace('/<\\?[\\s\\S]*?\\?>/', '', $content); } // are we allowed to display group modules if (!$this->group->isSuperGroup() && !$this->config->get('page_modules', 0)) { $groupDocument->set('allowed_tags', array()); } // set group doc needed props // parse and render content $groupDocument->set('group', $this->group)->set('page', $page)->set('document', $content)->set('allMods', true)->parse()->render(); // get doc content $content = $groupDocument->output(); // only parse php if Super Group if ($this->group->isSuperGroup()) { // run as closure to ensure no $this scope $eval = function () use($content) { ob_start(); unset($this); eval("?> {$content} <?php "); $content = ob_get_clean(); return $content; }; $content = $eval(); } // get group css $pageCss = Helpers\View::getPageCss($this->group); $css = ''; foreach ($pageCss as $p) { $css .= '<link rel="stylesheet" href="' . $p . '" />'; } // output html $html = '<!DOCTYPE html> <html> <head> <title>' . $this->group->get('description') . '</title> ' . $css . ' </head> <body> ' . $content . ' </body> </html>'; //echo content and exit echo $html; exit; }
/** * Edit Module * * @return void */ public function editTask() { //set to edit layout $this->view->setLayout('edit'); // get request vars $moduleid = Request::getInt('moduleid', 0); // get the category object $this->view->module = new Module($moduleid); // are we passing a module object if ($this->module) { $this->view->module = $this->module; } // get a list of all pages for creating module menu $pageArchive = Page\Archive::getInstance(); $this->view->pages = $pageArchive->pages('list', array('gidNumber' => $this->group->get('gidNumber'), 'state' => array(0, 1), 'orderby' => 'lft asc')); // get a list of all pages for creating module menu $moduleArchive = Module\Archive::getInstance(); $this->view->order = $moduleArchive->modules('list', array('gidNumber' => $this->group->get('gidNumber'), 'position' => $this->view->module->get('position'), 'state' => array(0, 1), 'orderby' => 'ordering')); // get stylesheets for editor $this->view->stylesheets = Helpers\View::getPageCss($this->group); // build the title $this->_buildTitle(); // build pathway $this->_buildPathway(); // get view notifications $this->view->notifications = $this->getNotifications() ? $this->getNotifications() : array(); $this->view->group = $this->group; //display layout $this->view->display(); }
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. * * HUBzero is a registered trademark of Purdue University. * * @package hubzero-cms * @author Shawn Rice <*****@*****.**> * @copyright Copyright 2005-2015 HUBzero Foundation, LLC. * @license http://opensource.org/licenses/MIT MIT */ // No direct access defined('_HZEXEC_') or die; $editPageUrl = 'index.php?option=com_groups&cn=' . $this->group->get('cn') . '&controller=pages&task=edit&pageid=' . $this->page->get('id'); // add page stylesheets $stylesheets = \Components\Groups\Helpers\View::getPageCss($this->group); foreach ($stylesheets as $stylesheet) { Document::addStylesheet($stylesheet); } include_once Component::path('com_wiki') . DS . 'helpers' . DS . 'differenceengine.php'; // add styles & scripts $this->css()->js()->js('jquery.cycle2', 'system'); ?> <header id="content-header"> <h2><?php echo Lang::txt('COM_GROUPS_PAGES_VERSIONS_FOR_PAGE', $this->page->get('title')); ?> </h2> <div id="content-header-extra"> <ul id="useroptions">