Example #1
0
 /**
  * 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;
     }
 }
Example #2
0
				<?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) {
        ?>
Example #3
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();
 }
Example #4
0
 /**
  * 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();
 }
Example #5
0
     $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'] : '';
Example #6
0
 /**
  * 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);
 }
Example #7
0
    /**
     * 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;
    }
Example #8
0
 /**
  * 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();
 }
Example #9
0
 /**
  * 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();
 }
Example #10
0
 /**
  * Render menu to group template
  *
  * @param    string
  */
 public function render()
 {
     return View::displaySections($this->group, 'class="cf"');
 }
Example #11
0
    /**
     * 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;
    }
Example #12
0
 /**
  * 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();
 }
Example #13
0
 * 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">