Created
April 29, 2011 22:08
-
-
Save AmyStephen/949129 to your computer and use it in GitHub Desktop.
Site Single Model: Molajo (Top) comparison to Joomla! 1.6 (Bottom)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* @version $id: view.html.php | |
* @package Molajo | |
* @subpackage Multiple View | |
* @copyright Copyright (C) 2011 Individual Molajo Contributors. All rights reserved. | |
* @license GNU General Public License Version 2, or later http://www.gnu.org/licenses/gpl.html | |
*/ | |
defined('MOLAJO') or die; | |
/** | |
* View to edit an Item. | |
* | |
* @package Molajo | |
* @subpackage Multiple View | |
* @since 1.6 | |
*/ | |
class ThingsViewThings extends MolajoViewMultiple {} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* version $Id: view.html.php 21098 2011-04-07 15:40:48Z dextercowley $ | |
* @package Joomla.Site | |
* @subpackage com_content | |
* @copyright Copyright (C) 2005 - 2011 Open Source Matters, Inc. All rights reserved. | |
* @license GNU General Public License version 2 or later; see LICENSE.txt | |
*/ | |
// Check to ensure this file is included in Joomla! | |
defined('_JEXEC') or die; | |
jimport('joomla.application.component.view'); | |
/** | |
* HTML View class for the Content component | |
* | |
* @package Joomla.Site | |
* @subpackage com_content | |
* @since 1.5 | |
*/ | |
class ContentViewCategory extends JView | |
{ | |
protected $state; | |
protected $items; | |
protected $category; | |
protected $children; | |
protected $pagination; | |
protected $lead_items = array(); | |
protected $intro_items = array(); | |
protected $link_items = array(); | |
protected $columns = 1; | |
function display($tpl = null) | |
{ | |
$app = JFactory::getApplication(); | |
$user = JFactory::getUser(); | |
// Get some data from the models | |
$state = $this->get('State'); | |
$params = $state->params; | |
$items = $this->get('Items'); | |
$category = $this->get('Category'); | |
$children = $this->get('Children'); | |
$parent = $this->get('Parent'); | |
$pagination = $this->get('Pagination'); | |
// Check for errors. | |
if (count($errors = $this->get('Errors'))) { | |
JError::raiseError(500, implode("\n", $errors)); | |
return false; | |
} | |
if ($category == false) { | |
return JError::raiseError(404, JText::_('JGLOBAL_CATEGORY_NOT_FOUND')); | |
} | |
if ($parent == false) { | |
return JError::raiseError(404, JText::_('JGLOBAL_CATEGORY_NOT_FOUND')); | |
} | |
// Setup the category parameters. | |
$cparams = $category->getParams(); | |
$category->params = clone($params); | |
$category->params->merge($cparams); | |
// Check whether category access level allows access. | |
$user = JFactory::getUser(); | |
$groups = $user->getAuthorisedViewLevels(); | |
if (!in_array($category->access, $groups)) { | |
return JError::raiseError(403, JText::_("JERROR_ALERTNOAUTHOR")); | |
} | |
// PREPARE THE DATA | |
// Get the metrics for the structural page layout. | |
$numLeading = $params->def('num_leading_articles', 1); | |
$numIntro = $params->def('num_intro_articles', 4); | |
$numLinks = $params->def('num_links', 4); | |
// Compute the article slugs and prepare introtext (runs content plugins). | |
for ($i = 0, $n = count($items); $i < $n; $i++) | |
{ | |
$item = &$items[$i]; | |
$item->slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id; | |
// No link for ROOT category | |
if ($item->parent_alias == 'root') { | |
$item->parent_slug = null; | |
} | |
$item->event = new stdClass(); | |
$dispatcher = JDispatcher::getInstance(); | |
// Ignore content plugins on links. | |
if ($i < $numLeading + $numIntro) { | |
$item->introtext = JHtml::_('content.prepare', $item->introtext); | |
$results = $dispatcher->trigger('onContentAfterTitle', array('com_content.article', &$item, &$item->params, 0)); | |
$item->event->afterDisplayTitle = trim(implode("\n", $results)); | |
$results = $dispatcher->trigger('onContentBeforeDisplay', array('com_content.article', &$item, &$item->params, 0)); | |
$item->event->beforeDisplayContent = trim(implode("\n", $results)); | |
$results = $dispatcher->trigger('onContentAfterDisplay', array('com_content.article', &$item, &$item->params, 0)); | |
$item->event->afterDisplayContent = trim(implode("\n", $results)); | |
} | |
} | |
// Check for layout override only if this is not the active menu item | |
// If it is the active menu item, then the view and category id will match | |
$active = $app->getMenu()->getActive(); | |
if ((!$active) || ((strpos($active->link, 'view=category') === false) || (strpos($active->link, '&id=' . (string) $category->id) === false))) { | |
// Get the layout from the merged category params | |
if ($layout = $category->params->get('category_layout')) { | |
$this->setLayout($layout); | |
} | |
} | |
// At this point, we are in a menu item, so we don't override the layout | |
elseif (isset($active->query['layout'])) { | |
// We need to set the layout from the query in case this is an alternative menu item (with an alternative layout) | |
$this->setLayout($active->query['layout']); | |
} | |
// For blog layouts, preprocess the breakdown of leading, intro and linked articles. | |
// This makes it much easier for the designer to just interrogate the arrays. | |
if ($this->getLayout() != 'default') { | |
$max = count($items); | |
// The first group is the leading articles. | |
$limit = $numLeading; | |
for ($i = 0; $i < $limit && $i < $max; $i++) { | |
$this->lead_items[$i] = &$items[$i]; | |
} | |
// The second group is the intro articles. | |
$limit = $numLeading + $numIntro; | |
// Order articles across, then down (or single column mode) | |
for ($i = $numLeading; $i < $limit && $i < $max; $i++) { | |
$this->intro_items[$i] = &$items[$i]; | |
} | |
$this->columns = max(1, $params->def('num_columns', 1)); | |
$order = $params->def('multi_column_order', 1); | |
if ($order == 0 && $this->columns > 1) { | |
// call order down helper | |
$this->intro_items = ContentHelperQuery::orderDownColumns($this->intro_items, $this->columns); | |
} | |
$limit = $numLeading + $numIntro + $numLinks; | |
// The remainder are the links. | |
for ($i = $numLeading + $numIntro; $i < $limit && $i < $max;$i++) | |
{ | |
$this->link_items[$i] = &$items[$i]; | |
} | |
} | |
$children = array($category->id => $children); | |
//Escape strings for HTML output | |
$this->pageclass_sfx = htmlspecialchars($params->get('pageclass_sfx')); | |
$this->assign('maxLevel', $params->get('maxLevel', -1)); | |
$this->assignRef('state', $state); | |
$this->assignRef('items', $items); | |
$this->assignRef('category', $category); | |
$this->assignRef('children', $children); | |
$this->assignRef('params', $params); | |
$this->assignRef('parent', $parent); | |
$this->assignRef('pagination', $pagination); | |
$this->assignRef('user', $user); | |
$this->_prepareDocument(); | |
parent::display($tpl); | |
} | |
/** | |
* Prepares the document | |
*/ | |
protected function _prepareDocument() | |
{ | |
$app = JFactory::getApplication(); | |
$menus = $app->getMenu(); | |
$pathway = $app->getPathway(); | |
$title = null; | |
// Because the application sets a default page title, | |
// we need to get it from the menu item itself | |
$menu = $menus->getActive(); | |
if ($menu) { | |
$this->params->def('page_heading', $this->params->get('page_title', $menu->title)); | |
} | |
else { | |
$this->params->def('page_heading', JText::_('JGLOBAL_ARTICLES')); | |
} | |
$id = (int) @$menu->query['id']; | |
if ($menu && ($menu->query['option'] != 'com_content' || $menu->query['view'] == 'article' || $id != $this->category->id)) { | |
$path = array(array('title' => $this->category->title, 'link' => '')); | |
$category = $this->category->getParent(); | |
while (($menu->query['option'] != 'com_content' || $menu->query['view'] == 'article' || $id != $category->id) && $category->id > 1) | |
{ | |
$path[] = array('title' => $category->title, 'link' => ContentHelperRoute::getCategoryRoute($category->id)); | |
$category = $category->getParent(); | |
} | |
$path = array_reverse($path); | |
foreach ($path as $item) | |
{ | |
$pathway->addItem($item['title'], $item['link']); | |
} | |
} | |
$title = $this->params->get('page_title', ''); | |
if (empty($title)) { | |
$title = $app->getCfg('sitename'); | |
} | |
elseif ($app->getCfg('sitename_pagetitles', 0)) { | |
$title = JText::sprintf('JPAGETITLE', $app->getCfg('sitename'), $title); | |
} | |
$this->document->setTitle($title); | |
if ($this->category->metadesc) | |
{ | |
$this->document->setDescription($this->category->metadesc); | |
} | |
elseif (!$this->category->metadesc && $this->params->get('menu-meta_description')) | |
{ | |
$this->document->setDescription($this->params->get('menu-meta_description')); | |
} | |
if ($this->category->metakey) | |
{ | |
$this->document->setMetadata('keywords', $this->category->metakey); | |
} | |
elseif (!$this->category->metakey && $this->params->get('menu-meta_keywords')) | |
{ | |
$this->document->setMetadata('keywords', $this->params->get('menu-meta_keywords')); | |
} | |
if ($this->params->get('robots')) | |
{ | |
$this->document->setMetadata('robots', $this->params->get('robots')); | |
} | |
if ($app->getCfg('MetaTitle') == '1') { | |
$this->document->setMetaData('title', $this->category->getMetadata()->get('page_title')); | |
} | |
if ($app->getCfg('MetaAuthor') == '1') { | |
$this->document->setMetaData('author', $this->category->getMetadata()->get('author')); | |
} | |
$mdata = $this->category->getMetadata()->toArray(); | |
foreach ($mdata as $k => $v) | |
{ | |
if ($v) { | |
$this->document->setMetadata($k, $v); | |
} | |
} | |
// Add feed links | |
if ($this->params->get('show_feed_link', 1)) { | |
$link = '&format=feed&limitstart='; | |
$attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0'); | |
$this->document->addHeadLink(JRoute::_($link . '&type=rss'), 'alternate', 'rel', $attribs); | |
$attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0'); | |
$this->document->addHeadLink(JRoute::_($link . '&type=atom'), 'alternate', 'rel', $attribs); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment