diff options
| -rw-r--r-- | Pigeonholes.php | 40 | ||||
| -rw-r--r-- | admin/admin_pigeonholes_inc.php | 60 | ||||
| -rw-r--r-- | templates/admin_pigeonholes.tpl | 50 | ||||
| -rw-r--r-- | templates/view_table_inc.tpl | 8 |
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' )} <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' )} <small>{tr}{$member.content_description}{/tr}</small>{/if} + </a> </li> {/foreach} </ul> |
