diff --git a/src/components/com_weblinks/models/category.php b/src/components/com_weblinks/models/category.php index d145e8c..b7658cc 100644 --- a/src/components/com_weblinks/models/category.php +++ b/src/components/com_weblinks/models/category.php @@ -121,9 +121,20 @@ class WeblinksModelCategory extends JModelList // Filter by category. if ($categoryId = $this->getState('category.id')) { - $query->where('a.catid = ' . (int) $categoryId) - ->join('LEFT', '#__categories AS c ON c.id = a.catid') - ->where('c.access IN (' . $groups . ')'); + // Group by subcategory + if($this->getState('category.group', 0)) + { + $query->select('c.title AS category_title') + ->where('c.parent_id = ' . (int) $categoryId) + ->join('LEFT', '#__categories AS c ON c.id = a.catid') + ->where('c.access IN (' . $groups . ')'); + } + else + { + $query->where('a.catid = ' . (int) $categoryId) + ->join('LEFT', '#__categories AS c ON c.id = a.catid') + ->where('c.access IN (' . $groups . ')'); + } // Filter by published category $cpublished = $this->getState('filter.c.published'); @@ -176,6 +187,16 @@ class WeblinksModelCategory extends JModelList $search = $db->quote('%' . $db->escape($search, true) . '%'); $query->where('(a.title LIKE ' . $search . ')'); } + + // If grouping by subcategory, add the subcategory list ordering clause. + if($this->getState('category.group', 0)) + { + $query->order( + $db->escape( + $this->getState('category.ordering', 'c.lft')) . ' ' . $db->escape($this->getState('category.direction', 'ASC') + ) + ); + } // Add the list ordering clause. $query->order( diff --git a/src/language/en-GB/en-GB.mod_weblinks.ini b/src/language/en-GB/en-GB.mod_weblinks.ini index 6e5588a..604433d 100644 --- a/src/language/en-GB/en-GB.mod_weblinks.ini +++ b/src/language/en-GB/en-GB.mod_weblinks.ini @@ -5,6 +5,16 @@ MOD_WEBLINKS="Web Links" MOD_WEBLINKS_FIELD_CATEGORY_DESC="Choose the Web Links category to display." +MOD_WEBLINKS_FIELD_GROUPBY_DESC="If set to yes, weblinks will be grouped by subcategories." +MOD_WEBLINKS_FIELD_GROUPBY_LABEL="Group By Subcategories" +MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_DESC="If set to yes, will show groups titles (valid only if grouping)." +MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_LABEL="Show Group Title" +MOD_WEBLINKS_FIELD_GROUPBYORDERING_DESC="Ordering for the subcategories (valid only if grouping)." +MOD_WEBLINKS_FIELD_GROUPBYORDERING_LABEL="Group Ordering" +MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_DESC="Direction for the subcategories (valid only if grouping)." +MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_LABEL="Group Ordering Direction" +MOD_WEBLINKS_FIELD_COLUMNS_DESC="When grouping by subcategories, split into # columns." +MOD_WEBLINKS_FIELD_COLUMNS_LABEL="Columns" MOD_WEBLINKS_FIELD_COUNT_DESC="Number of Web Links to display." MOD_WEBLINKS_FIELD_COUNT_LABEL="Count" MOD_WEBLINKS_FIELD_COUNTCLICKS_DESC="If set to yes, the number of times the link has been clicked will be recorded." diff --git a/src/modules/mod_weblinks/helper.php b/src/modules/mod_weblinks/helper.php index 11c031b..7dee5dd 100644 --- a/src/modules/mod_weblinks/helper.php +++ b/src/modules/mod_weblinks/helper.php @@ -57,6 +57,9 @@ class ModWeblinksHelper $catid = (int) $params->get('catid', 0); $model->setState('category.id', $catid); + $model->setState('category.group', $params->get('groupby', 0)); + $model->setState('category.ordering', $params->get('groupby_ordering', 'c.lft')); + $model->setState('category.direction', $params->get('groupby_direction', 'ASC')); // Create query object $db = JFactory::getDbo(); diff --git a/src/modules/mod_weblinks/mod_weblinks.xml b/src/modules/mod_weblinks/mod_weblinks.xml index 1fa8a84..644f488 100644 --- a/src/modules/mod_weblinks/mod_weblinks.xml +++ b/src/modules/mod_weblinks/mod_weblinks.xml @@ -20,141 +20,204 @@
+ name="catid" + type="category" + extension="com_weblinks" + required="true" + label="JCATEGORY" + description="MOD_WEBLINKS_FIELD_CATEGORY_DESC" /> - + name="groupby" + type="radio" + class="btn-group btn-group-yesno" + default="0" + label="MOD_WEBLINKS_FIELD_GROUPBY_LABEL" + description="MOD_WEBLINKS_FIELD_GROUPBY_DESC"> + value="1">JYES - + value="0">JNO + name="groupby_showtitle" + type="radio" + class="btn-group btn-group-yesno" + default="1" + label="MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_LABEL" + description="MOD_WEBLINKS_FIELD_GROUPBYSHOWTITLE_DESC"> + value="1">JYES + value="0">JNO + name="groupby_ordering" + type="list" + default="c.lft" + label="MOD_WEBLINKS_FIELD_GROUPBYORDERING_LABEL" + description="MOD_WEBLINKS_FIELD_GROUPBYORDERING_DESC"> + value="c.title">JGLOBAL_TITLE - + value="c.lft">MOD_WEBLINKS_FIELD_VALUE_ORDER + name="groupby_direction" + type="list" + default="asc" + label="MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_LABEL" + description="MOD_WEBLINKS_FIELD_GROUPBYDIRECTION_DESC"> + value="asc">MOD_WEBLINKS_FIELD_VALUE_ASCENDING + value="desc">MOD_WEBLINKS_FIELD_VALUE_DESCENDING + name="groupby_columns" + type="list" + default="3" + label="MOD_WEBLINKS_FIELD_COLUMNS_LABEL" + description="MOD_WEBLINKS_FIELD_COLUMNS_DESC"> + value="1">1 + + value="3">3 + + + name="count" + type="text" + default="5" + label="MOD_WEBLINKS_FIELD_COUNT_LABEL" + description="MOD_WEBLINKS_FIELD_COUNT_DESC" /> + + value="title">JGLOBAL_TITLE + value="order">MOD_WEBLINKS_FIELD_VALUE_ORDER + + + + + + + + + + + + + + + + + + + + + + + name="count_clicks" + type="list" + class="chzn-color" + default="0" + label="MOD_WEBLINKS_FIELD_COUNTCLICKS_LABEL" + description="MOD_WEBLINKS_FIELD_COUNTCLICKS_DESC"> + + value="0">JNO - + value="1">JYES
+ name="advanced"> + name="layout" + type="modulelayout" + label="JFIELD_ALT_LAYOUT_LABEL" + description="JFIELD_ALT_MODULE_LAYOUT_DESC" /> + name="moduleclass_sfx" + type="textarea" rows="3" + label="COM_MODULES_FIELD_MODULECLASS_SFX_LABEL" + description="COM_MODULES_FIELD_MODULECLASS_SFX_DESC" /> + name="cache" + type="list" + default="1" + label="COM_MODULES_FIELD_CACHING_LABEL" + description="COM_MODULES_FIELD_CACHING_DESC"> + value="1">JGLOBAL_USE_GLOBAL + value="0">COM_MODULES_FIELD_VALUE_NOCACHING + name="cache_time" + type="text" + default="900" + label="COM_MODULES_FIELD_CACHE_TIME_LABEL" + description="COM_MODULES_FIELD_CACHE_TIME_DESC" /> + name="cachemode" + type="hidden" + default="static"> + value="static">
diff --git a/src/modules/mod_weblinks/tmpl/default.php b/src/modules/mod_weblinks/tmpl/default.php index 52c7ad5..3342cb0 100644 --- a/src/modules/mod_weblinks/tmpl/default.php +++ b/src/modules/mod_weblinks/tmpl/default.php @@ -9,47 +9,120 @@ defined('_JEXEC') or die; ?> - + $items = array(); + + foreach ($list as $item) + if ($item->catid == $cat['catid']) + $items[] = $item; +?> + 1) : ?> + +
+ +
+ + get('groupby_showtitle', 1)) : ?> +

+ + + 1) : ?> +
+ +
+ + + + + +