diff options
| author | Max Kremmel <xing@synapse.plus.com> | 2007-04-14 18:48:05 +0000 |
|---|---|---|
| committer | Max Kremmel <xing@synapse.plus.com> | 2007-04-14 18:48:05 +0000 |
| commit | e76e18d31676437df9669815f009d27863a18cc5 (patch) | |
| tree | 39e80db4efb9348033468ebf6a02283443585ca8 | |
| parent | 7aea4d36587168edc3147eb005b6f2064963f573 (diff) | |
| download | themes-e76e18d31676437df9669815f009d27863a18cc5.tar.gz themes-e76e18d31676437df9669815f009d27863a18cc5.tar.bz2 themes-e76e18d31676437df9669815f009d27863a18cc5.zip | |
various UI updates to the layout manager, add method to clone layouts for quick customisation.
| -rw-r--r-- | BitThemes.php | 21 | ||||
| -rw-r--r-- | admin/admin_layout_inc.php | 38 | ||||
| -rw-r--r-- | templates/admin_layout.tpl | 99 | ||||
| -rw-r--r-- | templates/admin_layout_overview.tpl | 11 | ||||
| -rw-r--r-- | templates/module_config_inc.tpl | 93 |
5 files changed, 144 insertions, 118 deletions
diff --git a/BitThemes.php b/BitThemes.php index 3acfa12..4c6015e 100644 --- a/BitThemes.php +++ b/BitThemes.php @@ -388,7 +388,7 @@ class BitThemes extends BitBase { foreach( $layout as $column ) { $i = 5; foreach( $column as $module ) { - $this->mDb->query( "UPDATE `".BIT_DB_PREFIX."themes_layouts` SET pos=? WHERE module_id=?", array( $i, $module['module_id'] )); + $this->mDb->query( "UPDATE `".BIT_DB_PREFIX."themes_layouts` SET pos=? WHERE `module_id`=?", array( $i, $module['module_id'] )); $i += 5; } } @@ -412,6 +412,23 @@ class BitThemes extends BitBase { return $layouts; } + function cloneLayout( $pFromLayout, $pToLayout ) { + global $gBitSystem; + if( !empty( $pFromLayout ) && in_array( $pFromLayout, array_keys( $gBitSystem->mPackages )) && !empty( $pToLayout ) && in_array( $pToLayout, array_keys( $gBitSystem->mPackages ))) { + // nuke existing layout + $this->mDb->query( "DELETE FROM `".BIT_DB_PREFIX."themes_layouts` WHERE `layout`=?", array( $pToLayout )); + // get requested layout + $layout = $this->mDb->getAll( " + SELECT `title`, `layout_area`, `module_rows`, `module_rsrc`, `params`, `cache_time`, `groups`, `pos` + FROM `".BIT_DB_PREFIX."themes_layouts` WHERE `layout`=?", array( $pFromLayout )); + foreach( $layout as $module ) { + $module['layout'] = $pToLayout; + $this->storeModule( $module ); + } + } + return TRUE; + } + /** * expungeLayout * @@ -422,7 +439,7 @@ class BitThemes extends BitBase { function expungeLayout( $pLayout = NULL ) { $bindVars; if( !empty( $pLayout )) { - $whereSql = "WHERE layout=?"; + $whereSql = "WHERE `layout`=?"; $bindVars[] = $pLayout; } $this->mDb->query( "DELETE FROM `".BIT_DB_PREFIX."themes_layouts` $whereSql", $bindVars ); diff --git a/admin/admin_layout_inc.php b/admin/admin_layout_inc.php index 979dd25..2b844a6 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.4 2007/04/12 17:56:08 squareing Exp $ +// $Header: /cvsroot/bitweaver/_bit_themes/admin/admin_layout_inc.php,v 1.5 2007/04/14 18:48:05 squareing Exp $ // Initialization require_once( '../../bit_setup_inc.php' ); @@ -19,17 +19,7 @@ $layoutHash = array( ); $layout = $gBitThemes->getLayout( $layoutHash ); -/* this is now part of the overview page to simpify the ui on this page -if( !empty( $_REQUEST['update_modules'] ) && is_array( $_REQUEST['modules'] )) { - foreach( $_REQUEST['modules'] as $module_id => $module ) { - $module['module_id'] = $module_id; - $module['user_id'] = ROOT_USER_ID; - $gBitThemes->storeModule( $module ); - } -} - */ - -if( !empty( $_REQUEST['fix_pos'] )) { +if( !empty( $_REQUEST['fixpos'] )) { $gBitThemes->fixPositions( $_REQUEST['module_package'] ); } @@ -60,6 +50,7 @@ $formMiscFeatures = array( ); $gBitSmarty->assign( 'formMiscFeatures',$formMiscFeatures ); +// hide columns in individual packages foreach( $gBitSystem->mPackages as $key => $package ) { if( !empty( $package['installed'] ) && ( !empty( $package['activatable'] ) || !empty( $package['tables'] ) ) ) { if( $package['name'] == 'kernel' ) { @@ -71,6 +62,13 @@ foreach( $gBitSystem->mPackages as $key => $package ) { asort( $hideColumns ); $gBitSmarty->assign( 'hideColumns', $hideColumns ); +// clone existing layout +$cloneLayouts = $gBitThemes->getAllLayouts(); +$gBitSmarty->assign( 'cloneLayouts', $cloneLayouts ); +if( !empty( $_REQUEST['from_layout'] ) && !empty( $_REQUEST['to_layout'] )) { + $gBitThemes->cloneLayout( $_REQUEST['from_layout'], $_REQUEST['to_layout'] ); +} + // process form - check what tab was used and set it $processForm = set_tab(); @@ -84,16 +82,16 @@ if( $processForm == 'Hide' ) { // evaluate what columns to hide foreach( $hideable as $area ) { - foreach( array_keys( $hideColumns ) as $package ) { - $pref = "{$package}_hide_{$area}_col"; - if( isset( $_REQUEST['hide'][$pref] ) ) { - $gBitSystem->storeConfig( $pref, 'y', THEMES_PKG_NAME ); - } else { - // remove the setting from the db if it's not set - $gBitSystem->storeConfig( $pref, NULL ); + foreach( array_keys( $hideColumns ) as $package ) { + $pref = "{$package}_hide_{$area}_col"; + if( isset( $_REQUEST['hide'][$pref] ) ) { + $gBitSystem->storeConfig( $pref, 'y', THEMES_PKG_NAME ); + } else { + // remove the setting from the db if it's not set + $gBitSystem->storeConfig( $pref, NULL ); + } } } - } } elseif( isset( $_REQUEST['module_id'] ) && !empty( $_REQUEST['move_module'] )) { if( isset( $_REQUEST['move_module'] )) { switch( $_REQUEST['move_module'] ) { diff --git a/templates/admin_layout.tpl b/templates/admin_layout.tpl index e17874a..de6a2c1 100644 --- a/templates/admin_layout.tpl +++ b/templates/admin_layout.tpl @@ -1,6 +1,55 @@ {strip} {formfeedback hash=$feedback} +{form legend="Create Layout for Section"} + <input type="hidden" name="page" value="{$page}" /> + <div class="row"> + {formlabel label="Create Customized layout for" for="module_package"} + {forminput} + <select name="module_package" id="module_package" onchange="this.form.submit();"> + {foreach key=name item=package from=$gBitSystem->mPackages} + {if $package.installed and ($package.activatable or $package.tables)} + <option value="{$name}" {if $module_package == $name}selected="selected"{/if}> + {if $name eq 'kernel'} + {tr}Site Default{/tr} + {else} + {tr}{$name|capitalize}{/tr} + {/if} + </option> + {/if} + {/foreach} + <option value="home" {if $module_package == 'home'}selected="selected"{/if}>{tr}User Homepages{/tr}</option> + </select> + + <noscript> + {formhelp note="Apply this setting before you customise and assign modules below."} + </noscript> + {/forminput} + </div> + + {if $cloneLayouts and $module_package != kernel} + <div class="row"> + {formlabel label="Copy existing layout" for="clone_layout"} + {forminput} + <ul> + {foreach from=$cloneLayouts item=clone_layout key=clone_package} + {if $clone_package != $module_package} + <li><a href="{$smarty.const.KERNEL_PKG_URL}admin/index.php?page={$page}&from_layout={$clone_package}&to_layout={$module_package}&module_package={$module_package}">{if $clone_package == kernel}{tr}Site Default{/tr}{else}{tr}{$clone_package|capitalize}{/tr}{/if}</a></li> + {/if} + {/foreach} + </ul> + {tr}to {if $module_package == kernel}Site Default{else}{$module_package|capitalize}{/if}{/tr} + {/forminput} + </div> + {/if} + + <noscript> + <div class="row submit"> + <input type="submit" name="fSubmitCustomize" value="{tr}Customize{/tr}" /> + </div> + </noscript> +{/form} + <table style="width:100%" cellpadding="5" cellspacing="0" border="0"> <caption>{tr}Current Layout of '{if !$module_package || $module_package=='kernel'}Site Default{else}{$module_package|capitalize}{/if}'{/tr}</caption> <tr> @@ -43,46 +92,16 @@ </tr> </table> -{form} - <input type="hidden" name="page" value="{$page}" /> - - <div class="submit"> - <input type="submit" name="fix_pos" value="{tr}Adjust module positions{/tr}" /> - </div> -{/form} - -{form legend="Select Section"} - <input type="hidden" name="page" value="{$page}" /> - <div class="row"> - {formlabel label="Create Customized layout for" for="module_package"} - {forminput} - <select name="module_package" id="module_package" onchange="this.form.submit();"> - {foreach key=name item=package from=$gBitSystem->mPackages} - {if $package.installed and ($package.activatable or $package.tables)} - <option value="{$name}" {if $module_package == $name}selected="selected"{/if}> - {if $name eq 'kernel'} - {tr}Site Default{/tr} - {else} - {tr}{$name|capitalize}{/tr} - {/if} - </option> - {/if} - {/foreach} - <option value="home" {if $module_package == 'home'}selected="selected"{/if}>{tr}User Homepages{/tr}</option> - </select> - - <noscript> - {formhelp note="Apply this setting before you customise and assign modules below."} - </noscript> - {/forminput} - </div> - - <noscript> - <div class="row submit"> - <input type="submit" name="fSubmitCustomize" value="{tr}Customize{/tr}" /> - </div> - </noscript> -{/form} +<ul> + <li> + {smartlink ititle="Adjust module positions" page=$page fixpos=1 module_package=$module_package} + {formhelp note="This will reset the position numbers of all modules using increments of 5."} + </li> + <li> + {smartlink ititle="Confugre Layouts" page=layout_overview} + {formhelp note="On this page you can configure all modules in all layouts."} + </li> +</ul> {jstabs} {jstab title="Assign column module"} diff --git a/templates/admin_layout_overview.tpl b/templates/admin_layout_overview.tpl index 8126570..14456e0 100644 --- a/templates/admin_layout_overview.tpl +++ b/templates/admin_layout_overview.tpl @@ -5,22 +5,23 @@ <input type="hidden" name="page" value="{$page}" /> {foreach from=$layouts item=layout key=module_package} - <h1> + <h1 id="{$module_package}"> {tr}Current Layout of '{if !$module_package || $module_package=='kernel'}Site Default{else}{$module_package|capitalize}{/if}'{/tr} {smartlink ititle="Remove this Layout" ibiticon="icons/edit-delete" page=$page remove_layout=$module_package ionclick="return confirm('{tr}Are you sure you want to remove this layout? This can not be undone.{/tr}')"} </h1> <table style="width:100%" cellpadding="5" cellspacing="0" border="0"> <tr> + {cycle values="even,odd" print=0} {foreach from=$layoutAreas item=area key=colkey} {if $colkey =='top'} - <td class="{cycle values="even,odd"}" colspan="3" style="vertical-align:top;"> + <td class="{cycle}" colspan="3" style="vertical-align:top;"> {elseif $colkey =='bottom'} </tr> <tr> - <td class="{cycle values="even,odd"}" colspan="3" style="vertical-align:top;"> + <td class="{cycle}" colspan="3" style="vertical-align:top;"> {else} - <td class="{cycle values="even,odd"}" style="width:33%; vertical-align:top;"> + <td class="{cycle}" style="width:33%; vertical-align:top;"> {/if} <table class="data" style="width:100%"> @@ -54,7 +55,7 @@ {/foreach} <div class="submit"> - <input type="submit" name="update_modules" value="{tr}Update Module Settings{/tr}" /> + <input type="submit" name="update_modules" value="{tr}Apply module settings{/tr}" /> <input type="submit" name="fix_pos" value="{tr}Adjust module positions{/tr}" /> </div> {/form} diff --git a/templates/module_config_inc.tpl b/templates/module_config_inc.tpl index 0f94766..7190758 100644 --- a/templates/module_config_inc.tpl +++ b/templates/module_config_inc.tpl @@ -1,35 +1,34 @@ {strip} {if $condensed} - <div style="text-align:center"> - {$modInfo.name} + <strong>{$modInfo.name}</strong> + <br /> + {if !$gBitThemes->isCustomModule( $modInfo.module_rsrc ) and $modInfo.title} + {tr}Title{/tr}: <em>{$modInfo.title|escape}</em> <br /> - {if !$gBitThemes->isCustomModule( $modInfo.module_rsrc ) and $modInfo.title} - {tr}Title{/tr}: {$modInfo.title|escape} - <br /> + {/if} + {tr}Position{/tr}: {$modInfo.pos} + <br /> + {smartlink ititle="Up" ibiticon="icons/go-up" iforce="icon" page=$page move_module=up module_package=$module_package module_id=`$modInfo.module_id`} + {biticon ipackage=liberty iname=spacer} + {smartlink ititle="Down" ibiticon="icons/go-down" iforce="icon" page=$page move_module=down module_package=$module_package module_id=`$modInfo.module_id`} + {biticon ipackage=liberty iname=spacer} + {if $colkey eq 'left' or $colkey eq 'right'} + {if $colkey == 'left'} + {assign var=icon value=next} + {assign var=move value=right} + {elseif $colkey == 'right'} + {assign var=icon value=previous} + {assign var=move value=left} {/if} - {tr}Position{/tr}: {$modInfo.pos} + {smartlink ititle="Move module" ibiticon="icons/go-$icon" iforce="icon" page=$page move_module=$move module_package=$module_package module_id=$modInfo.module_id} {biticon ipackage=liberty iname=spacer} - {smartlink ititle="Up" ibiticon="icons/go-up" iforce="icon" page=$page move_module=up 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} {biticon ipackage=liberty iname=spacer} - {smartlink ititle="Down" ibiticon="icons/go-down" iforce="icon" page=$page move_module=down module_package=$module_package module_id=`$modInfo.module_id`} - {biticon ipackage=liberty iname=spacer} - {if $colkey eq 'left' or $colkey eq 'right'} - {if $colkey == 'left'} - {assign var=icon value=next} - {assign var=move value=right} - {elseif $colkey == 'right'} - {assign var=icon value=previous} - {assign var=move value=left} - {/if} - {smartlink ititle="Move module" ibiticon="icons/go-$icon" iforce="icon" page=$page move_module=$move module_package=$module_package module_id=$modInfo.module_id} - {biticon ipackage=liberty iname=spacer} - {/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} - {biticon ipackage=liberty iname=spacer} - {/if} - {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} - </div> + {/if} + {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} + <hr /> {else} <table class="data"> <tr> @@ -43,9 +42,23 @@ <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=$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`} + <input type="text" size="4" name="modules[{$modInfo.module_id}][pos]" value="{$modInfo.pos}" /> + {smartlink ianchor=$modInfo.layout ititle="Up" ibiticon="icons/go-up" iforce="icon" page=$page move_module=up module_package=$module_package module_id=`$modInfo.module_id`} + {smartlink ianchor=$modInfo.layout ititle="Down" ibiticon="icons/go-down" iforce="icon" page=$page move_module=down module_package=$module_package module_id=`$modInfo.module_id`} + {if $colkey eq 'left' or $colkey eq 'right'} + {if $colkey == 'left'} + {assign var=icon value=next} + {assign var=move value=right} + {elseif $colkey == 'right'} + {assign var=icon value=previous} + {assign var=move value=left} + {/if} + {smartlink ianchor=$modInfo.layout 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 ianchor=$modInfo.layout 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> @@ -85,28 +98,6 @@ </select> </td> </tr> - - <tr> - <td style="text-align:right"></td> - <td> - {if $colkey eq 'left' or $colkey eq 'right'} - {if $colkey == 'left'} - {assign var=icon value=next} - {assign var=move value=right} - {elseif $colkey == 'right'} - {assign var=icon value=previous} - {assign var=move value=left} - {/if} - {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=$page move_module=unassign module_package=$module_package module_id=$modInfo.module_id} - </td> - </tr> </table> {/if} {/strip} |
