diff options
| author | Max Kremmel <xing@synapse.plus.com> | 2007-04-04 18:07:15 +0000 |
|---|---|---|
| committer | Max Kremmel <xing@synapse.plus.com> | 2007-04-04 18:07:15 +0000 |
| commit | 8959a99af9e044ce1162c4c5e6533d321152f4ad (patch) | |
| tree | 4f515902796a6a442e946ede3cd92c756e4f7bff | |
| parent | fab0348c3a8259b16a7bf4f59c5f8c38b0d7b1d8 (diff) | |
| download | themes-8959a99af9e044ce1162c4c5e6533d321152f4ad.tar.gz themes-8959a99af9e044ce1162c4c5e6533d321152f4ad.tar.bz2 themes-8959a99af9e044ce1162c4c5e6533d321152f4ad.zip | |
add new layout admin page which gives full access to all modules in all layouts. should we simplify the original layout page now or leave as is?
| -rw-r--r-- | BitThemes.php | 92 | ||||
| -rw-r--r-- | admin/admin_layout_inc.php | 3 | ||||
| -rw-r--r-- | templates/menu_themes_admin.tpl | 3 | ||||
| -rw-r--r-- | templates/module_config_inc.tpl | 16 |
4 files changed, 74 insertions, 40 deletions
diff --git a/BitThemes.php b/BitThemes.php index 7433cf2..cfa7f1b 100644 --- a/BitThemes.php +++ b/BitThemes.php @@ -333,28 +333,7 @@ class BitThemes extends BitBase { $row["visible"] = TRUE; $row["module_groups"] = array(); } else { - // convert groups string to hash - if( preg_match( '/[A-Za-z]/', $row["groups"] )) { - // old style serialized group names - $row["module_groups"] = array(); - if( $grps = @unserialize( $row["groups"] )) { - foreach( $grps as $grp ) { - global $gBitUser; - if( !( $groupId = array_search( $grp, $gBitUser->mGroups ))) { - if( $gBitUser->isAdmin() ) { - $row["module_groups"][] = $gBitUser->groupExists( $grp, '*' ); - } - } - - if( @$this->verifyId( $groupId )) { - $row["module_groups"][] = $groupId; - } - } - } - } else { - // new imploded style - $row["module_groups"] = explode( ' ', $row["groups"] ); - } + $row['module_groups'] = $this->parseGroups( $row['groups'] ); if( $gBitUser->isAdmin() ) { $row["visible"] = TRUE; @@ -389,6 +368,55 @@ class BitThemes extends BitBase { return $ret; } + /** + * get a brief summary of set layouts + * + * @access public + * @return TRUE on success, FALSE on failure - mErrors will contain reason for failure + */ + function getAllLayouts() { + $layouts = array(); + $modules = $this->mDb->getAll( "SELECT tl.* FROM `".BIT_DB_PREFIX."themes_layouts` tl ORDER BY ".$this->mDb->convertSortmode( "pos_asc" )); + foreach( $modules as $module ) { + $module['module_groups'] = $this->parseGroups( $module['groups'] ); + $layouts[$module['layout']][$module['layout_area']][] = $module; + } + return $layouts; + } + + /** + * transform groups string to handy array + * + * @param array $pParseString either space separated list of groups or serialised array + * @access public + * @return array of groups + */ + function parseGroups( $pParseString ) { + $ret = array(); + // convert groups string to hash + if( preg_match( '/[A-Za-z]/', $pParseString )) { + // old style serialized group names + if( $grps = @unserialize( $pParseString )) { + foreach( $grps as $grp ) { + global $gBitUser; + if( !( $groupId = array_search( $grp, $gBitUser->mGroups ))) { + if( $gBitUser->isAdmin() ) { + $ret[] = $gBitUser->groupExists( $grp, '*' ); + } + } + + if( @$this->verifyId( $groupId )) { + $ret[] = $groupId; + } + } + } + } else { + // new imploded style + $ret = explode( ' ', $pParseString ); + } + return $ret; + } + @@ -479,8 +507,8 @@ class BitThemes extends BitBase { if( @BitBase::verifyId( $pModuleId )) { // first we get next module we want to swap with $moduleData = $this->getModuleData( $pModuleId ); - $query = "SELECT MAX(`module_id`) FROM `".BIT_DB_PREFIX."themes_layouts` WHERE `layout_area`=? AND `pos`<=? AND `module_id`<>?"; - $swapModuleId = $this->mDb->getOne( $query, array( $moduleData['layout_area'], $moduleData['pos'], $moduleData['module_id'] )); + $query = "SELECT MAX(`module_id`) FROM `".BIT_DB_PREFIX."themes_layouts` WHERE `layout`=? AND `layout_area`=? AND `pos`<=? AND `module_id`<>?"; + $swapModuleId = $this->mDb->getOne( $query, array( $moduleData['layout'], $moduleData['layout_area'], $moduleData['pos'], $moduleData['module_id'] )); if( $moduleSwap = $this->getModuleData( $swapModuleId )) { if( $moduleData['pos'] == $moduleSwap['pos'] ) { $query = "UPDATE `".BIT_DB_PREFIX."themes_layouts` SET `pos`=`pos`-1 WHERE `module_id`=?"; @@ -506,8 +534,8 @@ class BitThemes extends BitBase { if( @BitBase::verifyId( $pModuleId )) { // first we get next module we want to swap with $moduleData = $this->getModuleData( $pModuleId ); - $query = "SELECT MIN(`module_id`) FROM `".BIT_DB_PREFIX."themes_layouts` WHERE `layout_area`=? AND `pos`>=? AND `module_id`<>?"; - $swapModuleId = $this->mDb->getOne( $query, array( $moduleData['layout_area'], $moduleData['pos'], $moduleData['module_id'] )); + $query = "SELECT MIN(`module_id`) FROM `".BIT_DB_PREFIX."themes_layouts` WHERE `layout`=? AND `layout_area`=? AND `pos`>=? AND `module_id`<>?"; + $swapModuleId = $this->mDb->getOne( $query, array( $moduleData['layout'], $moduleData['layout_area'], $moduleData['pos'], $moduleData['module_id'] )); if( $moduleSwap = $this->getModuleData( $swapModuleId )) { if( $moduleData['pos'] == $moduleSwap['pos'] ) { $query = "UPDATE `".BIT_DB_PREFIX."themes_layouts` SET `pos`=`pos`+1 WHERE `module_id`=?"; @@ -574,11 +602,11 @@ class BitThemes extends BitBase { } /** - * generateModuleNames + * generates module names on full hash by reference * - * @param array $p2DHash + * @param array $p2DHash layout hash * @access public - * @return TRUE on success, FALSE on failure - mErrors will contain reason for failure + * @return void */ function generateModuleNames( &$p2DHash ) { if( is_array( $p2DHash )) { @@ -586,15 +614,15 @@ class BitThemes extends BitBase { foreach( array_keys( $p2DHash ) as $col ) { if( count( $p2DHash[$col] )) { foreach( array_keys( $p2DHash["$col"] ) as $mod ) { - list($source, $file) = split( '/', $p2DHash[$col][$mod]['module_rsrc'] ); - @list($rsrc, $package) = split( ':', $source ); + list( $source, $file ) = split( '/', $p2DHash[$col][$mod]['module_rsrc'] ); + @list( $rsrc, $package ) = split( ':', $source ); // handle special case for custom modules if( !isset( $package )) { $package = $rsrc; } $file = str_replace( 'mod_', '', $file ); $file = str_replace( '.tpl', '', $file ); - $p2DHash[$col][$mod]['name'] = $package.' -> '.str_replace( '_', ' ', $file ); + $p2DHash[$col][$mod]['name'] = $package.' » '.str_replace( '_', ' ', $file ); } } } diff --git a/admin/admin_layout_inc.php b/admin/admin_layout_inc.php index 158e5f0..6e1ca6b 100644 --- a/admin/admin_layout_inc.php +++ b/admin/admin_layout_inc.php @@ -1,5 +1,5 @@ <?php -// $Header: /cvsroot/bitweaver/_bit_themes/admin/admin_layout_inc.php,v 1.1 2007/04/02 18:55:01 squareing Exp $ +// $Header: /cvsroot/bitweaver/_bit_themes/admin/admin_layout_inc.php,v 1.2 2007/04/04 18:07:15 squareing Exp $ // Initialization require_once( '../../bit_setup_inc.php' ); @@ -22,7 +22,6 @@ $layout = $gBitThemes->getLayout( $layoutHash ); if( !empty( $_REQUEST['update_modules'] ) && is_array( $_REQUEST['modules'] )) { foreach( $_REQUEST['modules'] as $module_id => $module ) { $module['module_id'] = $module_id; - $module['layout'] = $_REQUEST['module_package']; $module['user_id'] = ROOT_USER_ID; $gBitThemes->storeModule( $module ); } diff --git a/templates/menu_themes_admin.tpl b/templates/menu_themes_admin.tpl index 2c2bcc6..9d2ae09 100644 --- a/templates/menu_themes_admin.tpl +++ b/templates/menu_themes_admin.tpl @@ -2,7 +2,8 @@ <ul> <li><a class="item" href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page=themes" >{tr}Theme Settings{/tr}</a></li> <li><a class="item" href="{$smarty.const.THEMES_PKG_URL}admin/admin_themes_manager.php">{tr}Themes Manager{/tr}</a></li> - <li><a class="item" href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page=layout" >{tr}Layout{/tr}</a></li> + <li><a class="item" href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page=layout" >{tr}Create Layout{/tr}</a></li> + <li><a class="item" href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page=layout_overview" >{tr}Configure Layouts{/tr}</a></li> <li><a class="item" href="{$smarty.const.THEMES_PKG_URL}admin/menus.php">{tr}Menus{/tr}</a></li> {* <li><a class="item" href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page=modules">{tr}Module Settings{/tr}</a></li> *} <li><a class="item" href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page=custom_modules">{tr}Custom Modules{/tr}</a></li> diff --git a/templates/module_config_inc.tpl b/templates/module_config_inc.tpl index a55b331..1f19243 100644 --- a/templates/module_config_inc.tpl +++ b/templates/module_config_inc.tpl @@ -1,19 +1,22 @@ {strip} -<table> +<table class="data"> <tr> <th colspan="2"> {$modInfo.name} <input type="hidden" name="modules[{$modInfo.module_id}][layout_area]" value="{$area}" /> + <input type="hidden" name="modules[{$modInfo.module_id}][layout]" value="{$module_package}" /> </th> </tr> + <tr> <td style="text-align:right">{tr}Position{/tr}</td> <td> <input type="text" size="10" name="modules[{$modInfo.module_id}][pos]" value="{$modInfo.pos}" /> - {smartlink ititle="Up" ibiticon="icons/go-up" iforce="icon" page=layout move_module=up module_package=$module_package module_id=`$modInfo.module_id`} - {smartlink ititle="Down" ibiticon="icons/go-down" iforce="icon" page=layout move_module=down module_package=$module_package module_id=`$modInfo.module_id`} + {smartlink ititle="Up" ibiticon="icons/go-up" iforce="icon" page=$page move_module=up module_package=$module_package module_id=`$modInfo.module_id`} + {smartlink ititle="Down" ibiticon="icons/go-down" iforce="icon" page=$page move_module=down module_package=$module_package module_id=`$modInfo.module_id`} </td> </tr> + {if !$gBitThemes->isCustomModule( $modInfo.module_rsrc )} <tr> <td style="text-align:right">{tr}Title{/tr}</td> @@ -28,10 +31,12 @@ <td><input type="text" size="15" name="modules[{$modInfo.module_id}][params]" value="{$modInfo.params}" /></td> </tr> {/if} + <tr> <td style="text-align:right">{tr}Cache Time{/tr}</td> <td><input type="text" size="15" name="modules[{$modInfo.module_id}][cache_time]" value="{$modInfo.cache_time}" /></td> </tr> + <tr> <td style="text-align:right">{tr}Groups{/tr}</td> <td> @@ -48,6 +53,7 @@ </select> </td> </tr> + <tr> <td style="text-align:right"></td> <td> @@ -59,14 +65,14 @@ {assign var=icon value=previous} {assign var=move value=left} {/if} - {smartlink ititle="Move module" ibiticon="icons/go-$icon" iforce="icon" page=layout move_module=$move module_package=$module_package module_id=$modInfo.module_id} + {smartlink ititle="Move module" ibiticon="icons/go-$icon" iforce="icon" page=$page move_module=$move module_package=$module_package module_id=$modInfo.module_id} {/if} {if $gBitThemes->isCustomModule( $modInfo.module_rsrc )} {smartlink ititle="Edit" ibiticon="icons/accessories-text-editor" iforce=icon page=custom_modules name=$modInfo.module_rsrc|regex_replace:"!.*\/!":"" action=edit} {/if} - {smartlink ititle="Unassign" ibiticon="icons/edit-delete" iforce=icon ionclick="return confirm('Are you sure you want to remove `$modInfo.name`?');" page=layout move_module=unassign module_package=$module_package module_id=$modInfo.module_id} + {smartlink ititle="Unassign" ibiticon="icons/edit-delete" iforce=icon ionclick="return confirm('Are you sure you want to remove `$modInfo.name`?');" page=$page move_module=unassign module_package=$module_package module_id=$modInfo.module_id} </td> </tr> </table> |
