Make CSS compiler to use theme settings , make admin to compile all files at once

This commit is contained in:
Matias Griese
2015-03-17 12:57:37 +02:00
parent 3e706cb583
commit 1dbc39348b
59 changed files with 731 additions and 413 deletions
+6 -10
View File
@@ -3,22 +3,21 @@
ehthumbs.db
Thumbs.db
# Composer
composer.lock
vendor/**
# PhpStorm
.idea
# Composer
src/composer.lock
src/vendor/**
# Symbolic links in admin
platforms/joomla/com_gantry5/*/common
platforms/*/*/common
platforms/*/*/src
platforms/*/*/vendor
# Symbolic links in themes
themes/*/*/common
themes/*/*/src
themes/*/*/vendor
themes/*/*/cache
themes/*/*/custom
themes/*/magento/design/default/gantry/common
@@ -26,11 +25,8 @@ themes/*/magento/design/default/gantry/src
themes/*/magento/design/default/gantry/vendor
themes/*/magento/skin/default/common
!**/scss/vendor
# Compiled
.sass-cache/*
**/.sass-cache
node_modules/*
platforms/wordpress/gantryadmin/cache
platforms/common/node_modules
.sass-cache
+43 -18
View File
@@ -5,32 +5,57 @@ OPT_DELETE=0
if [ -f $GIT_TARGET/configuration.php ]; then
PLATFORM=Joomla
mkdir "$GIT_TARGET/media/gantry"
mkdir "$GIT_TARGET/libraries/gantry5"
mkdir "$GIT_TARGET/media/gantry5"
sources=(
'platforms/joomla/com_gantryadmin'
# Manifest files
'platforms/joomla/pkg_gantry5.xml'
'platforms/joomla/lib_gantry5/gantry5.xml'
'platforms/joomla/gantry5_media/gantry5_media.xml'
# Component
'platforms/joomla/com_gantry5/admin'
'platforms/common'
'src'
'vendor'
'platforms/joomla/plg_system_gantryadmin'
# Library
'src/classes'
'platforms/joomla/lib_gantry5/language'
'src/vendor'
'src/Loader.php'
# Plugins
'platforms/joomla/plg_system_gantry5'
'platforms/joomla/plg_quickicon_gantry5'
# Media
'assets'
'engines'
# Templates
'themes/hydrogen/joomla'
'themes/hydrogen/common'
'themes/hydrogen-demo/joomla'
'themes/hydrogen-demo/common'
# 'themes/hydrogen-demo/joomla'
# 'themes/hydrogen-demo/common'
)
targets=(
'administrator/components/com_gantryadmin'
'administrator/components/com_gantryadmin/common'
'administrator/components/com_gantryadmin/src'
'administrator/components/com_gantryadmin/vendor'
'plugins/system/gantryadmin'
'media/gantry/assets'
'media/gantry/engines'
'templates/hydrogen'
'templates/hydrogen/common'
'templates/hydrogen-demo'
'templates/hydrogen-demo/common'
# Manifest files
'administrator/manifests/packages/pkg_gantry5.xml'
'administrator/manifests/libraries/gantry5.xml'
'administrator/manifests/files/gantry5_media.xml'
# Component
'administrator/components/com_gantry5'
'administrator/components/com_gantry5/common'
# Library
'libraries/gantry5/classes'
'libraries/gantry5/language'
'libraries/gantry5/vendor'
'libraries/gantry5/Loader.php'
# Plugins
'plugins/system/gantry5'
'plugins/quickicon/gantry5'
# Media
'media/gantry5/assets'
'media/gantry5/engines'
# Templates
'templates/g5_hydrogen'
'templates/g5_hydrogen/common'
# 'templates/g5_hydrogen-demo'
# 'templates/g5_hydrogen-demo/common'
)
elif [ -f $GIT_TARGET/wp-config.php ]; then
PLATFORM=WordPress
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE access>
<access component="com_gantryadmin">
<access component="com_gantry5">
<section name="component">
<action name="core.admin" title="JACTION_ADMIN" description="JACTION_ADMIN_COMPONENT_DESC" />
<action name="core.manage" title="JACTION_MANAGE" description="JACTION_MANAGE_COMPONENT_DESC" />
@@ -2,6 +2,6 @@
<!DOCTYPE config>
<config>
<fieldset name="permissions" label="JCONFIG_PERMISSIONS_LABEL" description="JCONFIG_PERMISSIONS_DESC">
<field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" class="inputbox" filter="rules" validate="rules" component="com_gantryadmin" section="component" />
<field name="rules" type="rules" label="JCONFIG_PERMISSIONS_LABEL" class="inputbox" filter="rules" validate="rules" component="com_gantry5" section="component" />
</fieldset>
</config>
@@ -1,19 +1,19 @@
body.com_gantryadmin {
body.com_gantry5 {
color: #ddd;
background-color: #404040 !important; }
body.com_gantryadmin a {
body.com_gantry5 a {
text-decoration: none; }
body.com_gantryadmin .subhead-collapse.collapse, body.com_gantryadmin .header {
body.com_gantry5 .subhead-collapse.collapse, body.com_gantry5 .header {
display: none; }
body.com_gantryadmin .container-main {
body.com_gantry5 .container-main {
padding: 0; }
body.com_gantryadmin #status {
body.com_gantry5 #status {
box-shadow: none !important; }
body.com_gantryadmin #footer a {
body.com_gantry5 #footer a {
color: #3180C2; }
body.com_gantryadmin #g5-container .inner-container {
body.com_gantry5 #g5-container .inner-container {
margin: 0 0 1.5rem 0; }
body.com_gantryadmin #g5-container li {
body.com_gantry5 #g5-container li {
line-height: inherit; }
#g5-container .button-primary {
@@ -23,43 +23,43 @@ body.com_gantryadmin {
background: #2b70aa;
color: #fff; }
body.com_gantryadmin #g5-container [data-mode-indicator="production"] {
body.com_gantry5 #g5-container [data-mode-indicator="production"] {
background-color: #3180C2; }
body.com_gantryadmin #g5-container #main-header .g-content {
body.com_gantry5 #g5-container #main-header .g-content {
padding: 0 1.563rem; }
body.com_gantryadmin #g5-container #main-header .dev-mode-toggle {
body.com_gantry5 #g5-container #main-header .dev-mode-toggle {
background: #276599; }
body.com_gantryadmin #g5-container #main-header .dev-mode-toggle a {
body.com_gantry5 #g5-container #main-header .dev-mode-toggle a {
background: #67a5d9; }
body.com_gantryadmin #g5-container #main-header .button-save {
body.com_gantry5 #g5-container #main-header .button-save {
background: #67a5d9;
color: #fff; }
body.com_gantryadmin #g5-container #main-header .button-save:hover {
body.com_gantry5 #g5-container #main-header .button-save:hover {
background: #4e96d2;
color: #fff; }
body.com_gantryadmin #g5-container #main-header ul li:hover a {
body.com_gantry5 #g5-container #main-header ul li:hover a {
background: #2c73ae; }
body.com_gantryadmin #g5-container #main-header ul li.active a {
body.com_gantry5 #g5-container #main-header ul li.active a {
background: #225885; }
body.com_gantryadmin #g5-container #navbar {
body.com_gantry5 #g5-container #navbar {
padding: 0 0.625rem; }
body.com_gantryadmin #g5-container .navbar-block .gantry-logo {
body.com_gantry5 #g5-container .navbar-block .gantry-logo {
right: 1.563rem; }
body.com_gantryadmin #g5-container .inner-header {
body.com_gantry5 #g5-container .inner-header {
background-color: #222;
color: #3180C2; }
body.com_gantryadmin #g5-container .inner-header .gantry-logo {
body.com_gantry5 #g5-container .inner-header .gantry-logo {
background-image: url(../images/gantrylogo.png); }
body.com_gantryadmin #g5-container .settings-state {
body.com_gantry5 #g5-container .settings-state {
background: #3180C2;
color: #fff; }
body.com_gantryadmin #g5-container .button.button-update {
body.com_gantry5 #g5-container .button.button-update {
background: #633679;
color: #fff; }
body.com_gantryadmin #g5-container .button.button-update:hover {
body.com_gantry5 #g5-container .button.button-update:hover {
background: #522c64;
color: #fff; }
body.com_gantryadmin #g5-container .tooltip {
body.com_gantry5 #g5-container .tooltip {
position: static;
opacity: 1;
line-height: inherit;
@@ -4,27 +4,25 @@ defined('_JEXEC') or die;
$user = JFactory::getUser();
// ACL for hardening the access to the template manager.
if (!$user->authorise('core.manage', 'com_templates')
if ((!$user->authorise('core.manage', 'com_templates') || !$user->authorise('core.manage', 'com_gantry5'))
|| !$user->authorise('core.edit', 'com_templates')
|| !$user->authorise('core.create', 'com_templates')
|| !$user->authorise('core.admin', 'com_templates'))
{
|| !$user->authorise('core.admin', 'com_templates')) {
$app = JFactory::getApplication();
$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'), 'error');
return false;
}
if (!defined('GANTRYADMIN_PATH'))
{
if (!defined('GANTRYADMIN_PATH')) {
define('GANTRYADMIN_PATH', JPATH_COMPONENT_ADMINISTRATOR);
}
// Bootstrap Gantry framework or fail gracefully (inside included file).
$gantry = include __DIR__ . '/includes/gantry.php';
// Setup Gantry Framework or throw exception.
Gantry5\Loader::setup();
$gantry['router'] = function ($c)
{
$gantry = Gantry\Framework\Gantry::instance();
$gantry['router'] = function ($c) {
return new \Gantry\Admin\Router($c);
};
@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="component" method="upgrade">
<name>COM_GANTRY5</name>
<version>@version@</version>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>COM_GANTRY5_DESCRIPTION</description>
<administration>
<files folder="admin">
<filename>access.xml</filename>
<filename>config.xml</filename>
<filename>gantry5.php</filename>
<folder>application</folder>
<folder>blueprints</folder>
<folder>css-compiled</folder>
<folder>fonts</folder>
<folder>images</folder>
<folder>js</folder>
<folder>language</folder>
<folder>node_modules</folder>
<folder>scss</folder>
<folder>templates</folder>
</files>
<menu>COM_GANTRY5</menu>
</administration>
</extension>
@@ -0,0 +1,3 @@
COM_GANTRY5="Gantry5 Templates"
COM_GANTRY5_DESC="Gantry5 templates administration."
COM_GANTRY5_CONFIGURATION="Gantry5 Configuration"
@@ -0,0 +1,2 @@
COM_GANTRY5="Gantry5 Templates"
COM_GANTRY5_DESC="Gantry5 templates administration."
@@ -1,5 +1,5 @@
body.com_gantryadmin {
color: $light-gray;
body.com_gantry5 {
color: $light-gray;
background-color: $body-bg !important;
a {
@@ -34,4 +34,4 @@ body.com_gantryadmin {
}
}
}
}
@@ -1,4 +1,4 @@
body.com_gantryadmin {
body.com_gantry5 {
#g5-container {
[data-mode-indicator="production"] {
@@ -77,4 +77,4 @@ body.com_gantryadmin {
}
}
}
}
@@ -1,32 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension method="upgrade" type="component" version="3.3">
<name>COM_GANTRYADMIN</name>
<author>RocketTheme, LLC</author>
<creationDate>September 4th, 2014</creationDate>
<copyright>(C) 2005 - 2014 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<version>5.0.0-DEV</version>
<description>Gantry Administration</description>
<administration>
<files>
<filename>controller.php</filename>
<filename>gantryadmin.php</filename>
<folder>assets</folder>
<folder>classes</folder>
<folder>language</folder>
<folder>views</folder>
</files>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.com_gantryadmin.ini</language>
<language tag="en-GB">en-GB/en-GB.com_gantryadmin.sys.ini</language>
</languages>
</administration>
<updateservers>
<server type="extension" priority="1" name="Gantry5">http://updates.gantry-framework.org/5.0/joomla/com_gantryadmin.xml</server>
</updateservers>
</extension>
@@ -1,47 +0,0 @@
<?php
defined('_JEXEC') or die;
use Gantry\Framework\Gantry;
try
{
// Attempt to locate Gantry Framework if it hasn't already been loaded.
if (!class_exists('Gantry'))
{
$gantryPaths = array(
GANTRYADMIN_PATH . '/src/bootstrap.php', // Look if Gantry has been included to the admin.
);
foreach ($gantryPaths as $gantryPath)
{
if ($gantryPath && is_file($gantryPath))
{
$gantryBootstrap = $gantryPath;
}
}
if (!isset($gantryBootstrap))
{
throw new LogicException('Gantry Framework not found!');
}
require_once $gantryBootstrap;
unset($gantryPaths, $gantryPath, $gantryBootstrap);
}
// Get Gantry instance and return it.
return Gantry::instance();
}
catch (Exception $e)
{
// Oops, something went wrong!
if (class_exists( '\Tracy\Debugger' ) && \Tracy\Debugger::isEnabled() && !\Tracy\Debugger::$productionMode ) {
// We have Tracy enabled; will display and/or log error with it.
throw $e;
}
// In frontend we want to prevent template from loading.
JError::raiseError(500, 'Failed to load admin: ' . $e->getMessage());
}
@@ -1 +0,0 @@
COM_GANTRYADMIN="Gantry Templates"
@@ -1 +0,0 @@
COM_GANTRYADMIN="Gantry Templates"
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="file" method="upgrade">
<name>Gantry5 Media Files</name>
<version>@version@</version>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>Gantry5 media files</description>
<fileset>
<files target="media/gantry5">
<folder>css</folder>
<folder>fonts</folder>
<folder>js</folder>
</files>
</fileset>
</extension>
+148
View File
@@ -0,0 +1,148 @@
<?php
defined('_JEXEC') or die;
/**
* Gantry5 package installer script.
*/
class Pkg_Gantry5InstallerScript {
/**
* List of supported versions. Newest version first!
* @var array
*/
protected $versions = array(
'PHP' => array (
'5.4' => '5.4.0',
'0' => '5.5.9' // Preferred version
),
'Joomla!' => array (
'3.4' => '3.4.0',
'0' => '3.4.0' // Preferred version
)
);
/**
* List of required PHP extensions.
* @var array
*/
protected $extensions = array ('json', 'pcre');
public function install($parent)
{
return true;
}
public function discover_install($parent)
{
return self::install($parent);
}
public function update($parent)
{
return self::install($parent);
}
public function uninstall($parent)
{
return true;
}
public function preflight($type, $parent)
{
/** @var JInstallerComponent $parent */
$manifest = $parent->getParent()->getManifest();
// Prevent installation if requirements are not met.
if (!$this->checkRequirements($manifest->version)) {
return false;
}
// Remove old log file before installation.
$logFile = JFactory::getConfig()->get('log_path') . '/gantry5-install.php';
if (is_file($logFile)) {
@unlink($logFile);
}
return true;
}
public function postflight($type, $parent)
{
// Clear Joomla system cache.
/** @var JCache|JCacheController $cache */
$cache = JFactory::getCache();
$cache->clean('_system');
// Remove all compiled files from APC cache.
if (function_exists('apc_clear_cache')) {
@apc_clear_cache();
}
if ($type == 'uninstall') return true;
$this->enablePlugin('system', 'gantry5');
$this->enablePlugin('quickicon', 'gantry5');
return true;
}
// Internal functions
protected function enablePlugin($group, $element)
{
$plugin = JTable::getInstance('extension');
if (!$plugin->load(array('type' => 'plugin', 'folder' => $group, 'element' => $element))) {
return false;
}
$plugin->enabled = 1;
return $plugin->store();
}
protected function checkRequirements($version)
{
$pass = $this->checkVersion('PHP', phpversion());
$pass &= $this->checkVersion('Joomla!', JVERSION);
$pass &= $this->checkExtensions($this->extensions);
return $pass;
}
protected function checkVersion($name, $version)
{
$app = JFactory::getApplication();
$major = $minor = 0;
foreach ($this->versions[$name] as $major=>$minor) {
if (!$major || version_compare($version, $major, '<')) continue;
if (version_compare($version, $minor, '>=')) return true;
break;
}
if (!$major) {
$minor = reset($this->versions[$name]);
}
$recommended = end($this->versions[$name]);
$app->enqueueMessage(sprintf("%s %s is not supported. Minimum required version is %s %s, but it is highly recommended to use %s %s or later.", $name, $version, $name, $minor, $name, $recommended), 'notice');
return false;
}
protected function checkExtensions($extensions)
{
$app = JFactory::getApplication();
$pass = 1;
foreach ($extensions as $name) {
if (!extension_loaded($name)) {
$pass = 0;
$app->enqueueMessage(sprintf("Required PHP extension '%s' is missing. Please install it into your system.", $name), 'notice');
}
}
return $pass;
}
}
+21
View File
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="library" method="upgrade">
<name>LIB_GANTRY5</name>
<libraryname>gantry5</libraryname>
<version>@version@</version>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>LIB_GANTRY5_DESCRIPTION</description>
<files>
<filename>bootstrap.php</filename>
<filename>Loader.php</filename>
<folder>classes</folder>
<folder>language</folder>
<folder>vendor</folder>
</files>
</extension>
@@ -0,0 +1,2 @@
LIB_GANTRY5="Gantry5 Framework"
LIB_GANTRY5_DESC="Gantry5 Framework"
@@ -0,0 +1,2 @@
LIB_GANTRY5="Gantry5 Framework"
LIB_GANTRY5_DESC="Gantry5 Framework"
+35
View File
@@ -0,0 +1,35 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="package" method="upgrade">
<name>Gantry5 Package</name>
<packagename>gantry5</packagename>
<version>5.0.0-DEV</version>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>Gantry5 Framework Package</description>
<scriptfile>install.php</scriptfile>
<files folder="packages">
<!-- Mandatory system plugin -->
<filename type="plugin" group="system" id="gantry5" >plg_system_gantry5_v@version@.zip</filename>
<!-- Quick icons -->
<filename type="plugin" group="quickicon" id="gantry5" >plg_quickicon_gantry5_v@version@.zip</filename>
<!-- Gantry framework library -->
<filename type="library" id="gantry5" >lib_gantry5_v@version@.zip</filename>
<!-- Common media files -->
<filename type="file" id="media_gantry5">media_gantry5_v@version@.zip</filename>
<!-- Administration component -->
<filename type="component" id="com_gantry5" >com_gantry5_v@version@.zip</filename>
<!-- Administration component -->
<filename type="template" id="g5_hydrogen" >tpl_g5_hydrogen_v@version@.zip</filename>
</files>
<updateservers>
<server type="extension" priority="1" name="Gantry5">http://updates.gantry-framework.org/5.0/joomla/pkg_gantry5.xml</server>
<server type="collection" priority="2" name="Gantry5">http://updates.gantry-framework.org/5.0/joomla/list.xml</server>
</updateservers>
</extension>
@@ -0,0 +1,84 @@
<?php
defined('_JEXEC') or die;
class plgQuickiconGantry5 extends JPlugin
{
public function __construct(&$subject, $config)
{
// Do not load if Gantry libraries are not installed or initialised.
if (!class_exists('Gantry5\Loader')) return;
parent::__construct($subject, $config);
// Always load language.
$lang = JFactory::getLanguage();
$lang->load('com_gantry5.sys') || $lang->load('com_gantry5.sys', JPATH_ADMINISTRATOR . '/components/com_gantry5');
$this->loadLanguage('plg_quickicon_gantry5.sys');
}
/**
* Display Gantry5 backend icon
*
* @param string $context
* @return array|null
*/
public function onGetIcons($context)
{
$user = JFactory::getUser();
if ($context != $this->params->get('context', 'mod_quickicon')
|| !$user->authorise('core.manage', 'com_gantry5')) {
return null;
}
try {
$updates = null;
if ($user->authorise('core.manage', 'com_installer'))
{
// Initialise Gantry.
Gantry5\Loader::setup();
$gantry = Gantry\Framework\Gantry::instance();
$gantry['streams'];
/** @var Gantry\Framework\Platform $platform */
$platform = $gantry['platform'];
$updates = $platform->updates();
}
} catch (Exception $e) {
$app = JFactory::getApplication();
$app->enqueueMessage($e->getMessage(), 'warning');
$updates = false;
}
$quickicons = array(
array(
'link' => JRoute::_('index.php?option=com_gantry5'),
'image' => 'eye',
'text' => JText::_('COM_GANTRY5'),
'group' => 'MOD_QUICKICON_EXTENSIONS',
'access' => array('core.manage', 'com_gantry5')
)
);
if ($updates === false) {
// Disabled
$quickicons[] = array(
'link' => JRoute::_('index.php?option=com_gantry5'),
'image' => 'eye',
'text' => JText::_('PLG_QUICKICON_GANTRY5_UPDATES_DISABLED'),
'group' => 'MOD_QUICKICON_MAINTENANCE'
);
} elseif (!empty($updates)) {
// Has updates
$quickicons[] = array(
'link' => JRoute::_('index.php?option=com_installer&view=update&filter_search=gantry5'),
'image' => 'download',
'text' => JText::_('PLG_QUICKICON_GANTRY5_UPDATE_NOW'),
'group' => 'MOD_QUICKICON_MAINTENANCE'
);
}
return $quickicons;
}
}
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="plugin" group="quickicon" method="upgrade">
<name>plg_quickicon_gantry5</name>
<version>@version@</version>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>Gantry5 Quick Icon</description>
<files>
<filename plugin="gantry5">gantry5.php</filename>
<folder>language</folder>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field name="context"
type="text"
default="mod_quickicon"
description="PLG_QUICKICON_GANTRY5_GROUP_DESC"
label="PLG_QUICKICON_GANTRY5_GROUP_LABEL"
/>
</fieldset>
</fields>
</config></extension>
@@ -0,0 +1,8 @@
PLG_QUICKICON_GANTRY5="Quick Icon - Gantry5"
PLG_QUICKICON_GANTRY5_DESC="Links to Gantry5 and displays if there are updates when you visit the Control Panel page."
PLG_QUICKICON_GANTRY5_UPDATE_NOW="Gantry5 - Update now!"
PLG_QUICKICON_GANTRY5_UPDATES_DISABLED="Gantry5 Updates disabled"
PLG_QUICKICON_GANTRY5_GROUP_DESC="The group of this plugin (this value is compared with the group value used in 'Quick Icons' modules to inject icons)"
PLG_QUICKICON_GANTRY5_GROUP_LABEL="Group"
@@ -1,10 +1,11 @@
<?php
defined('_JEXEC') or die;
jimport('joomla.plugin.plugin');
class plgSystemGantryadmin extends JPlugin
class plgSystemGantry5 extends JPlugin
{
/**
* @var JApplicationCms
*/
protected $app;
protected $styles;
@@ -12,6 +13,20 @@ class plgSystemGantryadmin extends JPlugin
{
$this->app = JFactory::getApplication();
JLoader::register('Gantry5\Loader', JPATH_LIBRARIES . '/gantry5/Loader.php');
// Detect Gantry Framework or fail gracefully.
if (!class_exists('Gantry5\Loader')) {
if ($this->app->isAdmin()) {
$this->loadLanguage('plg_system_gantry5.sys');
$this->app->enqueueMessage(
JText::sprintf('PLG_SYSTEM_GANTRY5_LIBRARY_MISSING', JText::_('PLG_SYSTEM_GANTRY5')),
'warning'
);
}
return;
}
parent::__construct($subject, $config);
}
@@ -20,12 +35,10 @@ class plgSystemGantryadmin extends JPlugin
*/
public function onAfterRoute()
{
if ($this->app->isSite())
{
if ($this->app->isSite()) {
$this->onAfterRouteSite();
}
elseif ($this->app->isAdmin())
{
} elseif ($this->app->isAdmin()) {
$this->onAfterRouteAdmin();
}
}
@@ -46,8 +59,7 @@ class plgSystemGantryadmin extends JPlugin
$view = $this->app->input->getString('view', 'styles');
$task = $this->app->input->getString('task');
if ($option == 'com_templates' && $view == 'styles' && !$task && $type == 'html')
{
if ($option == 'com_templates' && $view == 'styles' && !$task && $type == 'html') {
$this->styles = $this->getStyles();
$body = preg_replace_callback('/(<a\s[^>]*href=")([^"]*)("[^>]*>)(.*)(<\/a>)/siU', [$this, 'appendHtml'], $this->app->getBody());
@@ -62,14 +74,40 @@ class plgSystemGantryadmin extends JPlugin
private function onAfterRouteSite()
{
$template = $this->app->getTemplate(true);
$path = JPATH_THEMES . '/' . $template->template;
if (!file_exists("{$path}/includes/gantry.php"))
{
if (!file_exists(JPATH_THEMES . "/{$template->template}/gantry/theme.yaml")) {
return;
}
include "{$path}/includes/gantry.php";
$path = JPATH_THEMES . "/{$template->template}/includes/gantry.php";
if (is_file($path)) {
// Manually setup Gantry5 Framework from the template.
include $path;
return;
}
// Setup Gantry5 Framework or throw exception.
Gantry5\Loader::setup();
// Get Gantry instance.
$gantry = Gantry\Framework\Gantry::instance();
// Get information from the current template.
$app = JFactory::getApplication();
$template = $app->getTemplate(true);
// Initialize the template.
$gantry['theme.id'] = $template->id;
$gantry['theme.path'] = JPATH_THEMES . "/{$template->template}";
$gantry['theme.name'] = $template->template;
$gantry['theme.params'] = $template->params->toArray();
$themePath = $gantry['theme.path'] . '/includes/theme.php';
//if (is_file($themePath)) {
include_once $themePath;
}
/**
@@ -82,53 +120,31 @@ class plgSystemGantryadmin extends JPlugin
$option = $input->getCmd('option');
$task = $input->getCmd('task');
if ($option == 'com_templates' && $task && strpos($task, 'style') === 0)
{
if ($option == 'com_templates' && $task && strpos($task, 'style') === 0) {
// Get all ids.
$cid = $input->post->get('cid', (array) $input->getInt('id'), 'array');
if ($cid)
{
if ($cid) {
$styles = $this->getStyles();
$selected = array_intersect(array_keys($styles), $cid);
// If no Gantry templates were selected, just let com_templates deal with the request.
if (!$selected)
{
if (!$selected) {
return;
}
// Special handling for tasks coming from com_template.
switch ($task) {
case 'style.edit':
$id = (int) array_shift($cid);
if (isset($styles[$id])) {
$this->app->redirect('index.php?option=com_gantryadmin&view=about&style=' . $id);
}
break;
default:
// $this->setRequestOption('option', 'com_gantryadmin');
break;
if ($task == 'style.edit') {
$id = (int) array_shift($cid);
if (isset($styles[$id])) {
$this->app->redirect("index.php?option=com_gantry5&view=about&style={$id}");
}
}
}
}
}
/**
* @param string $key
* @param string $value
*/
private function setRequestOption($key, $value)
{
$this->app->input->set($key, $value);
$this->app->input->get->set($key, $value);
if (class_exists('JRequest'))
{
JRequest::setVar($key, $value, 'GET');
}
}
/**
* @param array $matches
* @return string
@@ -137,15 +153,13 @@ class plgSystemGantryadmin extends JPlugin
{
$html = $matches[0];
if (strpos($matches[2], 'task=style.edit'))
{
if (strpos($matches[2], 'task=style.edit')) {
$uri = new JUri($matches[2]);
$id = (int) $uri->getVar('id');
if ($id && $uri->getVar('option') == 'com_templates' && isset($this->styles[$id]))
{
if ($id && $uri->getVar('option') == 'com_templates' && isset($this->styles[$id])) {
$html = $matches[1] . $uri . $matches[3] . $matches[4] . $matches[5];
$html .= '<span style="white-space:nowrap;margin:0 10px;background:#439a86;color:#fff;padding:2px 4px;font-family:Helvetica,Arial,sans-serif;border-radius:3px;">Gantry</span>';
$html .= ' <span class="label" style="background:#439a86;color:#fff;">Gantry5</span>';
}
}
@@ -160,8 +174,7 @@ class plgSystemGantryadmin extends JPlugin
$cache = JFactory::getCache('com_templates', '');
$list = $cache->get('gantry-templates');
if ($list === false)
{
if ($list === false) {
// Load styles
$db = JFactory::getDbo();
$query = $db
@@ -177,11 +190,9 @@ class plgSystemGantryadmin extends JPlugin
$list = array();
foreach ($templates as $template)
{
if (file_exists(JPATH_SITE . '/templates/' . $template->template . '/includes/gantry.php'))
{
$params = new JRegistry;
foreach ($templates as $template) {
if (file_exists(JPATH_SITE . "/templates/{$template->template}/gantry/theme.yaml")) {
$params = new \Joomla\Registry\Registry;
$params->loadString($template->params);
$list[$template->id] = ($params->get('master') == 'true');
@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="plugin" group="system" method="upgrade">
<name>PLG_SYSTEM_GANTRY5</name>
<version>@version@</version>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>PLG_SYSTEM_GANTRY5_DESCRIPTION</description>
<files>
<filename plugin="gantry5">gantry5.php</filename>
<folder>language</folder>
</files>
<config>
<fields name="params">
</fields>
</config>
</extension>
@@ -0,0 +1,3 @@
PLG_SYSTEM_GANTRY5="System - Gantry5 Framework"
PLG_SYSTEM_GANTRY5_DESC="Gantry5 Framework"
PLG_SYSTEM_GANTRY5_LIBRARY_MISSING="%s: Gantry5 Library is missing!"
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.3" type="plugin" group="system" method="upgrade">
<name>PLG_SYSTEM_GANTRYADMIN</name>
<author>${author}</author>
<creationDate>${build_date}</creationDate>
<copyright>${copyright}</copyright>
<license>${license}</license>
<authorEmail>${authorEmail}</authorEmail>
<authorUrl>${authorUrl}</authorUrl>
<version>${project.version}</version>
<description>${project.description}</description>
<files>
<filename plugin="gantryadmin">gantryadmin.php</filename>
<folder>language</folder>
</files>
<config>
<fields name="params">
</fields>
</config>
</extension>
@@ -1 +0,0 @@
PLG_SYSTEM_GANTRYADMIN="System - Gantry Administration"
+3 -4
View File
@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE extensionset>
<extensionset name="Gantry5" description="Gantry Updates">
<extension name="Gantry5" description="Gantry Templates" element="com_gantryadmin" type="component" client="admin" version="5.0.0-DEV" detailsurl="http://update.gantry-framework.org/5.0/com_gantryadmin.xml"/>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extensionset name="Gantry5" description="Gantry5 Updates">
<extension name="Gantry5" description="Gantry5 Framework" element="pkg_gantry5" type="package" client="site" version="5.0.0-DEV" detailsurl="http://update.gantry-framework.org/5.0/pkg_gantry5.xml"/>
<extension name="Hydrogen" description="Hydrogen Template" element="tmpl_hydrogen" type="template" client="site" version="1.0.0-DEV" detailsurl="http://update.gantry-framework.org/5.0/tmpl_hydrogen.xml"/>
</extensionset>
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<updates>
<update>
<name>com_gantryadmin</name>
<description>Gantry Templates</description>
<element>com_gantryadmin</element>
<type>component</type>
<name>pkg_gantry5</name>
<description>Gantry Framework</description>
<element>pkg_gantry5</element>
<type>package</type>
<version>5.0.0-DEV</version>
<infourl title="Gantry 5.0.0-DEV">http://gantry-framework.org</infourl>
<downloads>
<downloadurl type="full" format="zip">http://update.gantry-framework.org/download/com_gantry-5.0.0-DEV.zip</downloadurl>
<downloadurl type="full" format="zip">http://update.gantry-framework.org/download/pkg_gantry-5.0.0-DEV.zip</downloadurl>
</downloads>
<tags>
<tag>dev</tag>
@@ -16,7 +16,7 @@
<maintainer>RocketTheme, LLC</maintainer>
<maintainerurl>http://gantry-framework.org</maintainerurl>
<section>Updates</section>
<targetplatform name="joomla" version="3.[34]"/>
<client>administrator</client>
<targetplatform name="joomla" version="3.4"/>
<client>site</client>
</update>
</updates>
@@ -1,14 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<updates>
<update>
<name>hydrogen</name>
<name>g5_hydrogen</name>
<description>Hydrogen Template</description>
<element>hydrogen</element>
<element>g5_hydrogen</element>
<type>template</type>
<version>1.0.0-DEV</version>
<infourl title="Hydrogen 1.0.0-DEV">http://gantry-framework.org</infourl>
<downloads>
<downloadurl type="full" format="zip">http://update.gantry-framework.org/download/tmpl_hydrogen-1.0.0-DEV.zip</downloadurl>
<downloadurl type="full" format="zip">http://update.gantry-framework.org/download/tpl_g5_hydrogen-1.0.0-DEV.zip</downloadurl>
</downloads>
<tags>
<tag>dev</tag>
@@ -16,7 +16,7 @@
<maintainer>RocketTheme, LLC</maintainer>
<maintainerurl>http://gantry-framework.org</maintainerurl>
<section>Updates</section>
<targetplatform name="joomla" version="3.[34]"/>
<targetplatform name="joomla" version="3.4"/>
<client>site</client>
</update>
</updates>
+84
View File
@@ -0,0 +1,84 @@
<?php
namespace Gantry5;
class Loader
{
public $loader;
public static function setup()
{
self::get();
}
public static function get()
{
static $instance;
if (!$instance) {
$instance = new Loader;
}
return $instance->loader;
}
protected function __construct()
{
$errorMessage = 'You are running PHP %s, but Gantry5 Framework needs at least PHP %s to run.';
// Fail safe version check for PHP <5.4.0.
if (version_compare($phpVersion = PHP_VERSION, '5.4.0', '<')) {
throw new \RuntimeException(sprintf($errorMessage, $phpVersion, '5.4.0'));
}
/**
* @name GANTRY_VERSION
*/
define('GANTRY5_VERSION', '5.0.0-DEV');
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('GANTRY5_DEBUG')) {
define('GANTRY5_DEBUG', false);
}
$this->loader = $this->autoload();
}
protected function autoload()
{
$base = __DIR__;
// Initialize auto-loading.
if (!file_exists($base . '/vendor/autoload.php')) {
throw new \LogicException('Please run composer in Gantry5 Library!');
}
/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require_once $base . '/vendor/autoload.php';
// Register platform specific overrides.
if (defined('JVERSION')) {
define('GANTRY5_ROOT', JPATH_ROOT);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Joomla', true);
} elseif (defined('WP_DEBUG')) {
define('GANTRY5_ROOT', ABSPATH);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/WordPress', true);
} elseif (defined('GRAV_VERSION')) {
define('GANTRY5_ROOT', rtrim(ROOT_DIR, '/'));
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Grav', true);
} elseif (defined('MAGENTO_ROOT')) {
define('GANTRY5_ROOT', MAGENTO_ROOT);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Magento', true);
} elseif (defined('IN_PHPBB')) {
global $phpbb_root_path;
define('GANTRY5_ROOT', $phpbb_root_path);
} elseif (defined('PRIME_ROOT')) {
define('GANTRY5_ROOT', PRIME_ROOT);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Prime', true);
}
return $loader;
}
}
+2 -30
View File
@@ -1,33 +1,5 @@
<?php
namespace Gantry;
use \Tracy\Debugger;
include __DIR__ . '/Loader.php';
function bootstrap()
{
$errorMessage = 'You are running PHP %s, but Gantry Framework needs at least PHP %s to run.';
// Fail safe version check for PHP <5.4.0, which do not support Bootstrap.
if (version_compare($phpVersion = PHP_VERSION, '5.4.0', '<')) {
throw new \RuntimeException(sprintf($errorMessage, $phpVersion, GANTRY5_MIN_PHP));
}
require_once __DIR__ . '/includes/defines.php';
require_once __DIR__ . '/includes/autoload.php';
$loader = autoload();
// If debug mode is enabled, enable tracy in development mode.
if (GANTRY_DEBUG && !Debugger::isEnabled()) {
Debugger::enable(Debugger::DEVELOPMENT);
}
// Allow nice debug messages by using tracy.
if (version_compare($phpVersion, GANTRY5_MIN_PHP, '<')) {
throw new \RuntimeException(sprintf($errorMessage, $phpVersion, GANTRY5_MIN_PHP));
}
return $loader;
}
return bootstrap();
return \Gantry5\Loader::get();
@@ -41,7 +41,7 @@ class JsonResponse extends Response
// Empty output buffer to make sure that the response is clean and valid.
while (($output = ob_get_clean()) !== false) {
// In debug mode send also output buffers (debug dumps, PHP notices and warnings).
if ($output && defined(GANTRY_DEBUG)) {
if ($output && defined(GANTRY5_DEBUG)) {
$this->messages['php'][] = $output;
}
}
@@ -99,7 +99,7 @@ class JsonResponse extends Response
'message' => $e->getMessage()
];
if (GANTRY_DEBUG) {
if (GANTRY5_DEBUG) {
$exception += [
'type' => get_class($e),
'file' => $e->getFile(),
@@ -110,7 +110,7 @@ class JsonResponse extends Response
$exceptions[] = $exception;
$e = $e->getPrevious();
}
while (GANTRY_DEBUG && $e);
while (GANTRY5_DEBUG && $e);
return $exceptions;
}
@@ -50,7 +50,7 @@ class Router extends BaseRouter
$this->container['theme.params'] = (new Registry($table->params))->toArray();
}
$this->container['base_url'] = \JUri::base(true) . '/index.php?option=com_gantryadmin';
$this->container['base_url'] = \JUri::base(true) . '/index.php?option=com_gantry5';
$this->container['ajax_suffix'] = '&format=json';
@@ -74,7 +74,7 @@ class ThemeList
$details['title'] = $template->title;
$details['thumbnail'] = 'template_thumbnail.png';
$details['preview_url'] = \JUri::root(false) . 'index.php?templateStyle=' . $template->id;
$details['admin_url'] = \JRoute::_('index.php?option=com_gantryadmin&view=about&style=' . $template->id, false);
$details['admin_url'] = \JRoute::_('index.php?option=com_gantry5&view=about&style=' . $template->id, false);
$details['params'] = $params->toArray();
$list[$template->id] = $details;
@@ -26,12 +26,12 @@ class Platform extends BasePlatform
public function getMediaPaths()
{
return ['' => ['gantry-theme://images', 'media/gantry']];
return ['' => ['gantry-theme://images', 'media/gantry5']];
}
public function getEnginesPaths()
{
return ['' => ['media/gantry/engines']];
return ['' => ['media/gantry5/engines']];
}
public function getEnginePaths()
@@ -41,7 +41,7 @@ class Platform extends BasePlatform
public function getAssetsPaths()
{
return ['' => ['gantry-theme://', 'media/gantry/assets']];
return ['' => ['gantry-theme://', 'media/gantry5/assets']];
}
public function getModules($position)
@@ -52,7 +52,7 @@ class Platform extends BasePlatform
public function settings()
{
return \JRoute::_('index.php?option=com_config&view=component&component=com_gantryadmin', false);
return \JRoute::_('index.php?option=com_config&view=component&component=com_gantry5', false);
}
public function update()
@@ -76,7 +76,7 @@ class Platform extends BasePlatform
$query
->select('*')
->from('#__updates')
->where("element='com_gantryadmin' OR extension_id IN ($extension_ids)");
->where("element='com_gantry5' OR extension_id IN ($extension_ids)");
$db->setQuery($query);
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "gantry",
"version":"5.0.0@dev",
"description": "Gantry Library",
"description": "Gantry Framework Library",
"license": "GPLv2",
"minimum-stability": "dev",
@@ -26,7 +26,7 @@
},
"autoload": {
"psr-4": {
"Gantry\\": "src/classes/Gantry"
"Gantry\\": "classes/Gantry"
}
}
}
-38
View File
@@ -1,38 +0,0 @@
<?php
namespace Gantry;
function autoload()
{
$base = dirname(__DIR__);
// Initialize auto-loading.
if (file_exists($base . '/../vendor/autoload.php')) {
/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require_once $base . '/../vendor/autoload.php';
} else {
throw new \LogicException('Please run composer in Gantry Library!');
}
// Register platform specific overrides.
if (defined('JVERSION')) {
define('GANTRY5_ROOT', JPATH_ROOT);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Joomla', true);
} elseif (defined('WP_DEBUG')) {
define('GANTRY5_ROOT', ABSPATH);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/WordPress', true);
} elseif (defined('GRAV_VERSION')) {
define('GANTRY5_ROOT', rtrim(ROOT_DIR, '/'));
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Grav', true);
} elseif (defined('MAGENTO_ROOT')) {
define('GANTRY5_ROOT', MAGENTO_ROOT);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Magento', true);
} elseif (defined('IN_PHPBB')) {
global $phpbb_root_path;
define('GANTRY5_ROOT', $phpbb_root_path);
} elseif (defined('PRIME_ROOT')) {
define('GANTRY5_ROOT', PRIME_ROOT);
$loader->addPsr4('Gantry\\', $base . '/classes/Gantry/Platform/Prime', true);
}
return $loader;
}
-16
View File
@@ -1,16 +0,0 @@
<?php
/**
* @name GANTRY_VERSION
*/
define('GANTRY5_VERSION', '${project.version}');
define('GANTRY5_MIN_PHP', '5.4.0');
if (!defined('DS')) {
define('DS', DIRECTORY_SEPARATOR);
}
if (!defined('GANTRY_DEBUG')) {
define('GANTRY_DEBUG', false);
}
+14 -38
View File
@@ -5,52 +5,30 @@ use Gantry\Framework\Gantry;
try
{
// Attempt to locate Gantry Framework if it hasn't already been loaded.
if (!class_exists('Gantry'))
{
$gantryPaths = array(
__DIR__ . '/../src/bootstrap.php', // Look if Gantry has been included to the template.
JPATH_ROOT . '/administrator/components/com_gantryadmin/src/bootstrap.php', // Look for the admin.
if (!class_exists('Gantry5\Loader')) {
$this->loadLanguage('plg_system_gantry5.sys');
$this->app->enqueueMessage(
JText::sprintf('PLG_SYSTEM_GANTRY5_LIBRARY_MISSING', JText::_('PLG_SYSTEM_GANTRY5')),
'warning'
);
foreach ($gantryPaths as $gantryPath)
{
if ($gantryPath && is_file($gantryPath))
{
$gantryBootstrap = $gantryPath;
}
}
if (!isset($gantryBootstrap))
{
throw new LogicException('Gantry Framework not found!');
}
require_once $gantryBootstrap;
unset($gantryPaths, $gantryPath, $gantryBootstrap);
return;
}
// Setup Gantry5 Framework or throw exception.
Gantry5\Loader::setup();
// Get Gantry instance and return it.
$gantry = Gantry::instance();
// Initialize the template if not done already.
if (!isset($gantry['theme.id']))
{
$app = JFactory::getApplication();
if ($app->isSite())
{
$template = $app->getTemplate(true);
$template = $app->getTemplate(true);
$gantry['theme.id'] = $template->id;
$gantry['theme.path'] = dirname(__DIR__);
$gantry['theme.name'] = $template->template;
$gantry['theme.params'] = $template->params->toArray();
}
else
{
throw new RuntimeException('Template was loaded in administration without properly initializing Gantry!');
}
$gantry['theme.id'] = $template->id;
$gantry['theme.path'] = dirname(__DIR__);
$gantry['theme.name'] = $template->template;
$gantry['theme.params'] = $template->params->toArray();
}
// Only a single template can be loaded at any time.
@@ -64,7 +42,5 @@ try
catch (Exception $e)
{
// Oops, something went wrong!
// In frontend we want to prevent template from loading.
JError::raiseError(500, 'Failed to load template: ' . $e->getMessage());
}
@@ -0,0 +1,2 @@
TPL_G5_HYDROGEN="Hydrogen"
TPL_G5_HYDROGEN_DESC="Hydrogen template for Gantry5"
@@ -0,0 +1,2 @@
TPL_G5_HYDROGEN="Hydrogen"
TPL_G5_HYDROGEN_DESC="Hydrogen template for Gantry5"
+33 -35
View File
@@ -1,46 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE install PUBLIC "-//Joomla! 2.5//DTD template 1.0//EN" "http://www.joomla.org/xml/dtd/2.5/template-install.dtd">
<extension version="3.3" type="template" client="site">
<name>hydrogen</name>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<extension version="3.4" type="template" client="site" method="upgrade">
<name>TPL_G5_HYDROGEN</name>
<version>1.0</version>
<creationDate>February 17, 2014</creationDate>
<creationDate>@versiondate@</creationDate>
<author>RocketTheme, LLC</author>
<authorEmail>support@rockettheme.com</authorEmail>
<authorUrl>http://www.rockettheme.com</authorUrl>
<copyright>(C) 2005 - 2015 RocketTheme, LLC. All rights reserved.</copyright>
<description>Default Gantry Template</description>
<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license>
<description>TPL_G5_HYDROGEN_DESC</description>
<files>
<folder>admin</folder>
<folder>blueprints</folder>
<folder>config</folder>
<folder>css</folder>
<folder>css-compiled</folder>
<folder>fonts</folder>
<folder>custom</folder>
<folder>gantry</folder>
<folder>includes</folder>
<folder>language</folder>
<folder>layouts</folder>
<folder>particles</folder>
<folder>scss</folder>
<folder>twig</folder>
<file>comingsoon.php</file>
<file>component.php</file>
<file>error.php</file>
<file>index.php</file>
<file>offline.php</file>
<file>template_preview.png</file>
<file>template_thumbnail.png</file>
<file>unsupported.php</file>
</files>
<positions>
<position id="header" name="Header" max_positions="6">Header</position>
<position id="drawer" name="Drawer" max_positions="1">Drawer</position>
<position id="top" name="Top" max_positions="6">Top</position>
<position id="utility" name="Utility" max_positions="6">Utility</position>
<position id="showcase" name="Showcase" max_positions="6">Showcase</position>
<position id="slideshow" name="Slideshow" max_positions="1">Slideshow</position>
<position id="breadcrumb" name="Breadcrumbs" max_positions="1">Breadcrumbs</position>
<position id="feature" name="Feature" max_positions="6">Feature</position>
<position id="maintop" name="Main Top" max_positions="6">Main Top</position>
<position id="expandedtop" name="Expanded Top" max_positions="6">Expanded Top</position>
<position id="sidebar" name="Sidebar" max_positions="3">Sidebar</position>
<position id="content-top" name="Content Top" max_positions="3">Content Top</position>
<position id="content-bottom" name="Content Bottom" max_positions="3">Content Bottom</position>
<position id="expandedbottom" name="Expanded Bottom" max_positions="6">Expanded Bottom</position>
<position id="mainbottom" name="Main Bottom" max_positions="6">Main Bottom</position>
<position id="extension" name="Extension" max_positions="6">Extension</position>
<position id="fullwidth" name="Full Width" max_positions="1">Full Width</position>
<position id="bottom" name="Bottom" max_positions="6">Bottom</position>
<position id="footer" name="Footer" max_positions="6">Footer</position>
<position id="copyright" name="Copyright" max_positions="6">Copyright</position>
<position id="debug" name="Debug" max_positions="1">Debug</position>
<position id="analytics" name="Analytics" max_positions="1">Analytics</position>
<position id="login" name="Login" max_positions="1">Login</position>
<position id="popup" name="Popup" max_positions="1">Popup</position>
</positions>
<languages folder="language">
<language tag="en-GB">en-GB/en-GB.tpl_hydrogen.ini</language>
<language tag="en-GB">en-GB/en-GB.tpl_hydrogen.sys.ini</language>
</languages>
<config>
<fields name="params">
<fieldset name="advanced">
@@ -48,7 +45,8 @@
</fieldset>
</fields>
</config>
<updateservers>
<server type="extension" priority="1" name="Hydrogen Template">http://updates.gantry-framework.org/5.0/joomla/tmpl_hydrogen.xml</server>
<server type="extension" priority="1" name="Hydrogen Template">http://updates.gantry-framework.org/5.0/joomla/tpl_g5_hydrogen.xml</server>
</updateservers>
</extension>