summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Kremmel <xing@synapse.plus.com>2007-04-04 18:07:15 +0000
committerMax Kremmel <xing@synapse.plus.com>2007-04-04 18:07:15 +0000
commit8959a99af9e044ce1162c4c5e6533d321152f4ad (patch)
tree4f515902796a6a442e946ede3cd92c756e4f7bff
parentfab0348c3a8259b16a7bf4f59c5f8c38b0d7b1d8 (diff)
downloadthemes-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.php92
-rw-r--r--admin/admin_layout_inc.php3
-rw-r--r--templates/menu_themes_admin.tpl3
-rw-r--r--templates/module_config_inc.tpl16
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.' &raquo; '.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}
&nbsp;&nbsp;
{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}
&nbsp;&nbsp;
{/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>