summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Pigeonholes.php40
-rw-r--r--admin/admin_pigeonholes_inc.php60
-rw-r--r--templates/admin_pigeonholes.tpl50
-rw-r--r--templates/view_table_inc.tpl8
4 files changed, 113 insertions, 45 deletions
diff --git a/Pigeonholes.php b/Pigeonholes.php
index 68df914..59b62ff 100644
--- a/Pigeonholes.php
+++ b/Pigeonholes.php
@@ -1,6 +1,6 @@
<?php
/**
- * @version $Header: /cvsroot/bitweaver/_bit_pigeonholes/Pigeonholes.php,v 1.114 2007/10/21 06:36:33 squareing Exp $
+ * @version $Header: /cvsroot/bitweaver/_bit_pigeonholes/Pigeonholes.php,v 1.115 2007/10/21 08:34:35 squareing Exp $
*
* +----------------------------------------------------------------------+
* | Copyright ( c ) 2004, bitweaver.org
@@ -17,7 +17,7 @@
* Pigeonholes class
*
* @author xing <xing@synapse.plus.com>
- * @version $Revision: 1.114 $
+ * @version $Revision: 1.115 $
* @package pigeonholes
*/
@@ -150,13 +150,15 @@ class Pigeonholes extends LibertyAttachable {
SELECT pigm.*,
lc.`content_id`, lc.`last_modified`, lc.`user_id`, lc.`title`, lc.`content_type_guid`, lc.`created`,
lct.`content_description`, lcds.`data` AS `summary`,
- uu.`login`, uu.`real_name` $select
+ uu.`login`, uu.`real_name`, lf.`storage_path` $select
FROM `".BIT_DB_PREFIX."pigeonhole_members` pigm
INNER JOIN `".BIT_DB_PREFIX."pigeonholes` pig ON ( pig.`content_id` = pigm.`parent_id` )
INNER JOIN `".BIT_DB_PREFIX."liberty_content` lc ON ( lc.`content_id` = pigm.`content_id` )
INNER JOIN `".BIT_DB_PREFIX."liberty_content_types` lct ON ( lc.`content_type_guid` = lct.`content_type_guid` )
INNER JOIN `".BIT_DB_PREFIX."users_users` uu ON ( uu.`user_id` = lc.`user_id` )
- LEFT OUTER JOIN `".BIT_DB_PREFIX."liberty_content_data` lcds ON ( lcds.`content_id` = lc.`content_id` AND lcds.`data_type`='summary' )
+ LEFT OUTER JOIN `".BIT_DB_PREFIX."liberty_content_data` lcds ON ( lcds.`content_id` = lc.`content_id` AND lcds.`data_type` = 'summary' )
+ LEFT OUTER JOIN `".BIT_DB_PREFIX."liberty_attachments` latt ON ( latt.`content_id` = lc.`content_id` AND latt.`is_primary` = 'y' )
+ LEFT OUTER JOIN `".BIT_DB_PREFIX."liberty_files` lf ON ( lf.`file_id` = latt.`foreign_id` )
$join $where $order";
$result = $this->mDb->query( $query, $bindVars, @BitBase::verifyId( $pListHash['max_records'] ) ? $pListHash['max_records'] : NULL, @BitBase::verifyId( $pListHash['offset'] ) ? $pListHash['offset'] : NULL );
$contentTypes = $gLibertySystem->mContentTypes;
@@ -169,8 +171,12 @@ class Pigeonholes extends LibertyAttachable {
$type['content_object'] = new $type['handler_class']();
}
if( $type['content_object']->isViewable( $aux['content_id'] )) {
+ $aux['display_url'] = $type['content_object']->getDisplayUrl( NULL, $aux );
$aux['display_link'] = $type['content_object']->getDisplayLink( $aux['title'], $aux );
$aux['title'] = $type['content_object']->getTitle( $aux );
+ if( $gBitSystem->isFeatureActive( 'pigeonholes_member_thumb' ) && !empty( $aux['storage_path'] )) {
+ $aux['thumbnail_url'] = liberty_fetch_thumbnails( $aux['storage_path'] );
+ }
$ret[] = $aux;
}
}
@@ -287,11 +293,11 @@ class Pigeonholes extends LibertyAttachable {
* @TODO We need to sort the returned values that successive pigoenholes are grouped together.
*/
function getPigeonholesPathList( $pContentId=NULL, $pTruncate = FALSE, $pShowAll = FALSE ) {
- global $gBitSystem;
- $where = $join = '';
+ global $gBitSystem;
+ $where = $join = '';
if( $gBitSystem->isFeatureActive( 'pigeonholes_allow_forbid_insertion' ) && !$pShowAll ) {
- $where .= empty( $where ) ? ' WHERE ' : ' AND ';
+ $where .= empty( $where ) ? ' WHERE ' : ' AND ';
$where .= ' lcp.`pref_value` IS NULL OR lcp.`pref_value` != \'on\' ';
$join .= ' LEFT JOIN `'.BIT_DB_PREFIX.'liberty_content_prefs` lcp ON (pig.`content_id` = lcp.`content_id` AND lcp.`pref_name` = \'no_insert\') ';
}
@@ -519,17 +525,15 @@ class Pigeonholes extends LibertyAttachable {
$aux['display_path'] = Pigeonholes::getDisplayPath( $aux['path'] );
// Move all the members data into the right place
$memberListHash =
- array(
- 'content_id' => $aux['content_id'],
+ array (
+ 'content_id' => $aux['content_id'],
'content_type_guid' => !empty( $pListHash['content_type_guid'] ) ? $pListHash['content_type_guid'] : NULL,
- 'max_records' => !empty( $pListHash['members_max_records'] ) ? $pListHash['members_max_records'] : NULL,
- 'list_page' => !empty( $pListHash['members_list_page'] ) ? $pListHash['members_list_page'] : NULL,
- 'sort_mode' => !empty( $pListHash['members_sort_mode'] ) ? $pListHash['members_sort_mode'] : NULL,
- 'find' => !empty( $pListHash['members_find'] ) ? $pListHash['members_find'] : NULL,
- );
- $aux['members'] = $this->getMemberList(
- $memberListHash
- );
+ 'max_records' => !empty( $pListHash['members_max_records'] ) ? $pListHash['members_max_records'] : NULL,
+ 'list_page' => !empty( $pListHash['members_list_page'] ) ? $pListHash['members_list_page'] : NULL,
+ 'sort_mode' => !empty( $pListHash['members_sort_mode'] ) ? $pListHash['members_sort_mode'] : NULL,
+ 'find' => !empty( $pListHash['members_find'] ) ? $pListHash['members_find'] : NULL,
+ );
+ $aux['members'] = $this->getMemberList( $memberListHash );
$aux['listInfo'] = $memberListHash['listInfo'];
//$aux['members_count'] = count( $aux['members'] );
@@ -588,7 +592,7 @@ class Pigeonholes extends LibertyAttachable {
global $gBitSystem;
if( !empty( $pMememberHash ) ) {
usort( $pMememberHash, "pigeonholes_alphabetiser" );
- $per_column = ceil( count( $pMememberHash ) / $gBitSystem->getConfig( 'pigeonhole_display_columns', 3 ) );
+ $per_column = ceil( count( $pMememberHash ) / $gBitSystem->getConfig( 'pigeonholes_display_columns', 3 ) );
$i = 1;
$j = 1;
foreach( $pMememberHash as $member ) {
diff --git a/admin/admin_pigeonholes_inc.php b/admin/admin_pigeonholes_inc.php
index 1db9969..e7456f6 100644
--- a/admin/admin_pigeonholes_inc.php
+++ b/admin/admin_pigeonholes_inc.php
@@ -1,19 +1,27 @@
<?php
-// $Header: /cvsroot/bitweaver/_bit_pigeonholes/admin/admin_pigeonholes_inc.php,v 1.19 2007/08/24 19:44:04 squareing Exp $
+// $Header: /cvsroot/bitweaver/_bit_pigeonholes/admin/admin_pigeonholes_inc.php,v 1.20 2007/10/21 08:34:35 squareing Exp $
$pigeonholeDisplaySettings = array(
'pigeonholes_display_path' => array(
'label' => 'Display Path',
'note' => 'Display category paths above the page leading to the object.',
),
- 'pigeonholes_display_members' => array(
- 'label' => 'Display Members',
- 'note' => 'Show the other members of the same categories at the bottom of the page.',
- ),
'pigeonholes_display_description' => array(
'label' => 'Display Description',
'note' => 'When showing the category members, you can display the category description as well.',
),
+ 'pigeonholes_list_filter' => array(
+ 'label' => 'Listing Filter',
+ 'note' => 'When viewing a listing of content items, users can limit the listing based on category.',
+ ),
+ 'pigeonholes_display_members' => array(
+ 'label' => 'Display Members',
+ 'note' => 'Show the other members of the same categories at the bottom of the page.',
+ ),
+);
+$gBitSmarty->assign( 'pigeonholeDisplaySettings', $pigeonholeDisplaySettings );
+
+$pigeonholeListSettings = array(
'pigeonholes_display_subtree' => array(
'label' => 'Display Subtree',
'note' => 'When viewing the category list, you can display the subcategories as well.',
@@ -22,10 +30,10 @@ $pigeonholeDisplaySettings = array(
'label' => 'Display Content Type',
'note' => 'When viewing the category members, you can display the content type alongside the item.',
),
- 'pigeonholes_list_filter' => array(
- 'label' => 'Listing Filter',
- 'note' => 'When viewing a listing of content items, users can limit the listing based on category.',
- ),
+);
+$gBitSmarty->assign( 'pigeonholeListSettings', $pigeonholeListSettings );
+
+$pigeonholeEditSettings = array(
'pigeonholes_themes' => array(
'label' => 'Theme selection',
'note' => 'Allow the selection of a different theme to use for a category.',
@@ -47,15 +55,15 @@ $pigeonholeDisplaySettings = array(
'note' => 'Allows pigeonholes to be set to forbid insertion of new members. This is good for heirarchical categories where only leaf categories should have members.'
),
);
-$gBitSmarty->assign( 'pigeonholeDisplaySettings', $pigeonholeDisplaySettings );
+$gBitSmarty->assign( 'pigeonholeEditSettings', $pigeonholeEditSettings );
-$pigeonholeEditSettings = array(
+$pigeonholeContentEditSettings = array(
'pigeonholes_use_jstab' => array(
'label' => 'Use separate Tab',
'note' => 'When editing content use a separate tab to categorise.',
),
);
-$gBitSmarty->assign( 'pigeonholeEditSettings', $pigeonholeEditSettings );
+$gBitSmarty->assign( 'pigeonholeContentEditSettings', $pigeonholeContentEditSettings );
$listStyles = array(
'dynamic' => tra( 'Dynamic list' ),
@@ -63,25 +71,35 @@ $listStyles = array(
);
$gBitSmarty->assign( 'listStyles', $listStyles );
+// sensible table column numbers
+$tableColumns = range( 0, 6 );
+unset( $tableColumns[0] );
+$gBitSmarty->assign( 'tableColumns', $tableColumns );
+
$memberLimit = array(
- '0' => tra( 'None' ),
- '10' => 10,
- '20' => 20,
- '30' => 30,
- '50' => 50,
- '100' => 100,
+ '0' => tra( 'Only display category title' ),
+ '10' => 10,
+ '20' => 20,
+ '30' => 30,
+ '50' => 50,
+ '100' => 100,
'9999' => tra( 'Unlimited' ),
);
$gBitSmarty->assign( 'memberLimit', $memberLimit );
+// various image sizes
+$gBitSmarty->assign( 'imageSizes', get_image_size_options() );
+
if( !empty( $_REQUEST['pigeonhole_settings'] ) ) {
- $pigeonholeSettings = array_merge( $pigeonholeDisplaySettings, $pigeonholeEditSettings );
+ $pigeonholeSettings = array_merge( $pigeonholeDisplaySettings, $pigeonholeContentEditSettings );
foreach( array_keys( $pigeonholeSettings ) as $item ) {
simple_set_toggle( $item, PIGEONHOLES_PKG_NAME );
}
- simple_set_value( 'pigeonholes_limit_member_number', PIGEONHOLES_PKG_NAME );
+ simple_set_int( 'pigeonholes_display_columns', PIGEONHOLES_PKG_NAME );
+ simple_set_int( 'pigeonholes_limit_member_number', PIGEONHOLES_PKG_NAME );
+ simple_set_int( 'pigeonholes_scrolling_list_number', PIGEONHOLES_PKG_NAME );
+ simple_set_value( 'pigeonholes_member_thumb', PIGEONHOLES_PKG_NAME );
simple_set_value( 'pigeonholes_list_style', PIGEONHOLES_PKG_NAME );
- simple_set_value( 'pigeonholes_scrolling_list_number', PIGEONHOLES_PKG_NAME );
}
?>
diff --git a/templates/admin_pigeonholes.tpl b/templates/admin_pigeonholes.tpl
index 1a160cc..21400bd 100644
--- a/templates/admin_pigeonholes.tpl
+++ b/templates/admin_pigeonholes.tpl
@@ -1,9 +1,9 @@
-{* $Header: /cvsroot/bitweaver/_bit_pigeonholes/templates/admin_pigeonholes.tpl,v 1.8 2006/06/11 11:02:05 squareing Exp $ *}
+{* $Header: /cvsroot/bitweaver/_bit_pigeonholes/templates/admin_pigeonholes.tpl,v 1.9 2007/10/21 08:34:36 squareing Exp $ *}
{strip}
{form}
<input type="hidden" name="page" value="{$page}" />
- {legend legend="Pigeonhole Display Settings"}
+ {legend legend="Display Settings"}
{foreach from=$pigeonholeDisplaySettings key=feature item=output}
<div class="row">
{formlabel label=`$output.label` for=$feature}
@@ -15,6 +15,26 @@
{/foreach}
<div class="row">
+ {formlabel label="Number of Members" for="member_number"}
+ {forminput}
+ {html_options name="pigeonholes_limit_member_number" options=$memberLimit values=$memberLimit selected=$gBitSystem->getConfig('pigeonholes_limit_member_number') id=member_number}
+ {formhelp note="Here you can specify what number of members are displayed at the bottom of a page."}
+ {/forminput}
+ </div>
+ {/legend}
+
+ {legend legend="Listing Settings"}
+ {foreach from=$pigeonholeListSettings key=feature item=output}
+ <div class="row">
+ {formlabel label=`$output.label` for=$feature}
+ {forminput}
+ {html_checkboxes name="$feature" values="y" checked=$gBitSystem->getConfig($feature) labels=false id=$feature}
+ {formhelp note=`$output.note` page=`$output.page`}
+ {/forminput}
+ </div>
+ {/foreach}
+
+ <div class="row">
{formlabel label="List style" for="pigeonholes_list_style"}
{forminput}
{html_options name="pigeonholes_list_style" options=$listStyles values=$listStyles selected=$gBitSystem->getConfig('pigeonholes_list_style') id=pigeonholes_list_style}
@@ -23,10 +43,18 @@
</div>
<div class="row">
- {formlabel label="Number of Members" for="member_number"}
+ {formlabel label="Member Thumbnail"}
{forminput}
- {html_options name="pigeonholes_limit_member_number" options=$memberLimit values=$memberLimit selected=$gBitSystem->getConfig('pigeonholes_limit_member_number') id=member_number}
- {formhelp note="Here you can specify what number of members are displayed at the bottom of a page."}
+ {html_options values=$imageSizes options=$imageSizes name="pigeonholes_member_thumb" selected=$gBitSystem->getConfig('pigeonholes_member_thumb')}
+ {formhelp note="This is the size of category members with a primary attachment."}
+ {/forminput}
+ </div>
+
+ <div class="row">
+ {formlabel label="Table Columns" for="pigeonholes_display_columns"}
+ {forminput}
+ {html_options name="pigeonholes_display_columns" options=$tableColumns values=$tableColumns selected=$gBitSystem->getConfig('pigeonholes_display_columns',3) id=pigeonholes_display_columns}
+ {formhelp note="Set the number of columns you want to display the table in."}
{/forminput}
</div>
{/legend}
@@ -41,6 +69,18 @@
{/forminput}
</div>
{/foreach}
+ {/legend}
+
+ {legend legend="Pigeonhole Content Edit Settings"}
+ {foreach from=$pigeonholeContentEditSettings key=feature item=output}
+ <div class="row">
+ {formlabel label=`$output.label` for=$feature}
+ {forminput}
+ {html_checkboxes name="$feature" values="y" checked=$gBitSystem->getConfig($feature) labels=false id=$feature}
+ {formhelp note=`$output.note` page=`$output.page`}
+ {/forminput}
+ </div>
+ {/foreach}
<div class="row">
{formlabel label="Number of categories for a scrolling list" for="pigeonholes_scrolling_list_number"}
diff --git a/templates/view_table_inc.tpl b/templates/view_table_inc.tpl
index c7d6e3d..b7c1492 100644
--- a/templates/view_table_inc.tpl
+++ b/templates/view_table_inc.tpl
@@ -23,7 +23,13 @@
<ul>
{foreach from=$members item=member}
<li>
- {$member.display_link}{if $gBitSystem->isFeatureActive( 'pigeonholes_display_content_type' )} &nbsp; <small>{tr}{$member.content_description}{/tr}</small>{/if}
+ {assign var=size value=$gBitSystem->getConfig('pigeonholes_member_thumb')}
+ <a href="{$member.display_url}">
+ {if $gBitSystem->isFeatureActive( 'pigeonholes_member_thumb' ) && $member.thumbnail_url.$size}
+ <img src="{$member.thumbnail_url.$size}" alt="{$member.title|escape}" title="{$member.title|escape}" /><br />
+ {/if}
+ {$member.title|escape}{if $gBitSystem->isFeatureActive( 'pigeonholes_display_content_type' )} &nbsp; <small>{tr}{$member.content_description}{/tr}</small>{/if}
+ </a>
</li>
{/foreach}
</ul>