2009-10-28 23:52:56 +00:00
< ? php
2006-12-02 04:36:16 +00:00
/*
2009-08-27 12:58:29 +00:00
* e107 website system
*
2009-11-18 01:06:08 +00:00
* Copyright ( C ) 2008 - 2009 e107 Inc ( e107 . org )
2009-08-27 12:58:29 +00:00
* Released under the terms and conditions of the
* GNU General Public License ( http :// www . gnu . org / licenses / gpl . txt )
*
* e107 Admin Theme Handler
*
* $Source : / cvs_backup / e107_0 . 8 / e107_handlers / theme_handler . php , v $
2010-02-10 18:18:01 +00:00
* $Revision $
* $Date $
* $Author $
2009-10-28 23:45:46 +00:00
*/
2006-12-02 04:36:16 +00:00
2009-10-28 23:45:46 +00:00
if ( ! defined ( 'e107_INIT' ))
{
exit ;
}
2006-12-02 04:36:16 +00:00
2009-08-27 12:58:29 +00:00
/**
* Base e107 Admin Theme Handler
*
* @ package e107
* @ category e107_handlers
* @ version 1.0
* @ author Cameron
* @ copyright Copyright ( c ) 2009 , e107 Inc .
*/
2009-10-28 23:45:46 +00:00
class themeHandler
{
2009-10-28 23:52:56 +00:00
2006-12-02 04:36:16 +00:00
var $themeArray ;
var $action ;
var $id ;
2009-07-06 05:59:42 +00:00
var $frm ;
2009-07-12 14:44:57 +00:00
var $fl ;
2009-08-17 11:25:01 +00:00
var $themeConfigObj = null ;
2009-09-17 00:13:40 +00:00
var $noLog = FALSE ;
2012-11-29 22:03:36 -08:00
2013-03-03 16:53:17 -08:00
private $approvedAdminThemes = array ( 'bootstrap' );
2012-11-29 22:03:36 -08:00
2009-10-28 23:45:46 +00:00
public $allowedCategories = array ( 'generic' ,
'adult' ,
'blog' ,
'clan' ,
'children' ,
'corporate' ,
'forum' ,
'gaming' ,
'gallery' ,
'news' ,
'social' ,
'video' ,
'multimedia' );
2006-12-02 04:36:16 +00:00
/* constructor */
2009-10-28 23:45:46 +00:00
function themeHandler ()
{
2009-10-28 23:52:56 +00:00
2012-11-28 02:22:23 -08:00
global $e107cache , $pref ;
$mes = e107 :: getMessage ();
2009-10-28 23:45:46 +00:00
require_once ( e_HANDLER . " form_handler.php " );
2012-11-28 04:32:05 -08:00
2009-10-28 23:52:56 +00:00
//enable inner tabindex counter
$this -> frm = new e_form ();
2009-10-28 23:45:46 +00:00
$this -> fl = e107 :: getFile ();
2009-07-06 05:59:42 +00:00
2009-10-28 23:45:46 +00:00
if ( isset ( $_POST [ 'upload' ]))
2009-07-18 03:41:49 +00:00
{
2009-10-28 23:45:46 +00:00
$this -> themeUpload ();
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2013-03-08 04:46:02 -08:00
if ( vartrue ( $_POST [ 'installContent' ]))
{
$this -> installContent ( $_POST [ 'installContent' ]);
}
2009-10-28 23:45:46 +00:00
$this -> themeArray = ( defined ( 'E107_INSTALL' )) ? $this -> getThemes ( 'xml' ) : $this -> getThemes ();
// print_a($this -> themeArray);
foreach ( $_POST as $key => $post )
2006-12-02 04:36:16 +00:00
{
2009-10-28 23:45:46 +00:00
if ( strstr ( $key , " preview " ))
2006-12-02 04:36:16 +00:00
{
2009-10-28 23:45:46 +00:00
// $this -> id = str_replace("preview_", "", $key);
$this -> id = key ( $post );
$this -> themePreview ();
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
if ( strstr ( $key , " selectmain " ))
2006-12-02 04:36:16 +00:00
{
2009-10-28 23:45:46 +00:00
// $this -> id = str_replace("selectmain_", "", $key);
$this -> id = key ( $post );
$this -> setTheme ();
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
if ( strstr ( $key , " selectadmin " ))
2006-12-02 04:36:16 +00:00
{
2009-10-28 23:45:46 +00:00
$this -> id = key ( $post );
$this -> setAdminTheme ();
$this -> refreshPage ( 'admin' );
2006-12-02 04:36:16 +00:00
}
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
if ( isset ( $_POST [ 'submit_adminstyle' ]))
{
2009-10-28 23:45:46 +00:00
$this -> id = $_POST [ 'curTheme' ];
if ( $this -> setAdminStyle ())
2009-08-17 14:40:23 +00:00
{
eMessage :: getInstance () -> add ( TPVLAN_43 , E_MESSAGE_SUCCESS );
}
e107 :: getConfig () -> save ( true );
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
if ( isset ( $_POST [ 'submit_style' ]))
{
2009-10-28 23:45:46 +00:00
$this -> id = $_POST [ 'curTheme' ];
$this -> SetCustomPages ( $_POST [ 'custompages' ]);
$this -> setStyle ();
e107 :: getConfig () -> save ( true );
2009-10-28 23:52:56 +00:00
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2009-07-14 03:18:17 +00:00
if ( isset ( $_POST [ 'installplugin' ]))
{
$key = key ( $_POST [ 'installplugin' ]);
2009-10-28 23:45:46 +00:00
2009-07-14 03:18:17 +00:00
include_lan ( e_LANGUAGEDIR . e_LANGUAGE . " /admin/lan_plugin.php " );
2009-10-28 23:45:46 +00:00
require_once ( e_HANDLER . " plugin_class.php " );
2009-07-14 03:18:17 +00:00
$eplug = new e107plugin ;
2009-10-28 23:45:46 +00:00
$message = $eplug -> install_plugin ( $key );
2012-11-28 02:22:23 -08:00
$mes -> add ( $message , E_MESSAGE_SUCCESS );
2009-07-14 03:18:17 +00:00
}
2009-10-28 23:45:46 +00:00
2009-07-16 02:55:19 +00:00
if ( isset ( $_POST [ 'setMenuPreset' ]))
{
2009-10-28 23:45:46 +00:00
$key = key ( $_POST [ 'setMenuPreset' ]);
include_lan ( e_LANGUAGEDIR . e_LANGUAGE . " /admin/lan_menus.php " );
require_once ( e_HANDLER . " menumanager_class.php " );
2009-08-16 16:30:56 +00:00
$men = new e_menuManager ();
2009-07-16 02:55:19 +00:00
$men -> curLayout = $key ;
2009-10-28 23:52:56 +00:00
//menu_layout is left blank when it's default.
$men -> dbLayout = ( $men -> curLayout != $pref [ 'sitetheme_deflayout' ]) ? $men -> curLayout : " " ;
2009-10-28 23:45:46 +00:00
2009-07-16 02:55:19 +00:00
if ( $areas = $men -> menuSetPreset ())
{
2009-10-28 23:45:46 +00:00
foreach ( $areas as $val )
2009-07-16 02:55:19 +00:00
{
2009-10-28 23:45:46 +00:00
$ar [ $val [ 'menu_location' ]][] = $val [ 'menu_name' ];
2009-07-16 02:55:19 +00:00
}
2009-10-28 23:45:46 +00:00
foreach ( $ar as $k => $v )
2009-07-16 02:55:19 +00:00
{
2009-10-28 23:45:46 +00:00
$message .= MENLAN_14 . " " . $k . " : " . implode ( " , " , $v ) . " <br /> " ;
2009-07-16 02:55:19 +00:00
}
2009-10-28 23:45:46 +00:00
2012-11-28 02:22:23 -08:00
$mes -> add ( MENLAN_43 . " : " . $key . " <br /> " . $message , E_MESSAGE_SUCCESS );
2009-07-16 02:55:19 +00:00
}
2009-10-28 23:52:56 +00:00
2009-07-16 02:55:19 +00:00
}
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
}
2006-12-02 04:36:16 +00:00
2009-10-28 23:45:46 +00:00
function getThemes ( $mode = FALSE )
2006-12-02 04:36:16 +00:00
{
$themeArray = array ();
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
$tloop = 1 ;
2012-11-29 23:12:20 -08:00
$fl = e107 :: getFile ();
$array = $fl -> get_dirs ( e_THEME );
2009-10-28 23:45:46 +00:00
2012-11-29 23:12:20 -08:00
foreach ( $array as $file )
2008-04-08 21:24:32 +00:00
{
2012-11-29 23:12:20 -08:00
2009-09-17 00:13:40 +00:00
if (( $mode == 'xml' ) && ! is_readable ( e_THEME . $file . " /theme.xml " ))
{
continue ;
}
2009-10-28 23:45:46 +00:00
if ( $file != " . " && $file != " .. " && $file != " CVS " && $file != " templates " && is_dir ( e_THEME . $file ) && is_readable ( e_THEME . $file . " /theme.php " ))
{
2008-11-17 07:17:23 +00:00
if ( $mode == " id " )
2008-04-08 21:24:32 +00:00
{
2008-11-17 07:17:23 +00:00
$themeArray [ $tloop ] = $file ;
2006-12-02 04:36:16 +00:00
}
2008-11-17 07:17:23 +00:00
else
2008-04-08 21:24:32 +00:00
{
2009-07-12 14:44:57 +00:00
$themeArray [ $file ] = $this -> getThemeInfo ( $file );
2008-11-17 07:17:23 +00:00
$themeArray [ $file ][ 'id' ] = $tloop ;
2006-12-02 04:36:16 +00:00
}
2008-11-17 07:17:23 +00:00
$tloop ++ ;
2009-10-28 23:45:46 +00:00
}
2009-07-12 14:44:57 +00:00
}
2012-11-29 23:12:20 -08:00
// echo "<pre>";
// print_r($themeArray);
// echo "</pre>";
2009-07-12 14:44:57 +00:00
2009-10-28 23:45:46 +00:00
2009-07-12 14:44:57 +00:00
return $themeArray ;
}
2009-10-28 23:45:46 +00:00
function getThemeInfo ( $file )
2009-07-12 14:44:57 +00:00
{
2009-10-28 23:45:46 +00:00
$STYLESHEET = FALSE ;
$reject = array ( '$.' ,
'$..' ,
'/' ,
'CVS' ,
'thumbs.db' ,
'*._$' ,
'index' ,
'null*' ,
'e_*' );
$handle2 = $this -> fl -> get_files ( e_THEME . $file . " / " , " .php|.css|.xml|preview.jpg|preview.png " , $reject , 1 );
foreach ( $handle2 as $fln )
{
$file2 = str_replace ( e_THEME . $file . " / " , " " , $fln [ 'path' ]) . $fln [ 'fname' ];
$themeArray [ $file ][ 'files' ][] = $file2 ;
if ( strstr ( $file2 , " preview. " ))
{
$themeArray [ $file ][ 'preview' ] = e_THEME . $file . " / " . $file2 ;
}
2009-07-12 14:44:57 +00:00
2009-10-28 23:45:46 +00:00
// ---------------- get information string for css file
2008-11-17 07:17:23 +00:00
2009-10-28 23:45:46 +00:00
if ( strstr ( $file2 , " css " ) && ! strstr ( $file2 , " menu.css " ) && strpos ( $file2 , " e_ " ) !== 0 )
{
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
if ( $fp = fopen ( e_THEME . $file . " / " . $file2 , " r " ))
{
// FIXME: use info from theme.xml alternateStyleSheet instead
$cssContents = fread ( $fp , filesize ( e_THEME . $file . " / " . $file2 ));
fclose ( $fp );
$nonadmin = preg_match ( '/\* Non-Admin(.*?)\*\//' , $cssContents ) ? true : false ;
preg_match ( '/\* info:(.*?)\*\//' , $cssContents , $match );
$match [ 1 ] = varset ( $match [ 1 ], '' );
$themeArray [ $file ][ 'css' ][] = array ( " name " => $file2 ,
" info " => $match [ 1 ],
" nonadmin " => $nonadmin );
if ( $STYLESHEET )
2008-11-17 07:17:23 +00:00
{
2009-10-28 23:45:46 +00:00
$themeArray [ $file ][ 'multipleStylesheets' ] = TRUE ;
}
else
2008-11-17 07:17:23 +00:00
{
2009-10-28 23:45:46 +00:00
$STYLESHEET = TRUE ;
}
}
}
2009-07-12 14:44:57 +00:00
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
} // end while..
2009-07-12 14:44:57 +00:00
2009-10-28 23:45:46 +00:00
// echo "<hr />";
// closedir($handle2);
// Load Theme information and merge with existing array. theme.xml (0.8 themes) is given priority over theme.php (0.7).
if ( in_array ( " theme.xml " , $themeArray [ $file ][ 'files' ]))
{
$themeArray [ $file ] = array_merge ( $themeArray [ $file ], $this -> parse_theme_xml ( $file ));
}
elseif ( in_array ( " theme.php " , $themeArray [ $file ][ 'files' ]))
{
$themeArray [ $file ] = array_merge ( $themeArray [ $file ], $this -> parse_theme_php ( $file ));
}
2009-07-12 14:44:57 +00:00
2009-10-28 23:45:46 +00:00
return $themeArray [ $file ];
2009-07-12 14:44:57 +00:00
2009-10-28 23:52:56 +00:00
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2009-09-02 02:38:50 +00:00
/**
2009-11-17 14:50:37 +00:00
* Validate and return the name of the categories .
*
* @ param string [ optional ] $categoryfromXML
* @ return string
2009-09-02 02:38:50 +00:00
*/
2009-10-28 23:45:46 +00:00
function getThemeCategory ( $categoryfromXML = '' )
2009-09-02 02:38:50 +00:00
{
2009-09-17 00:13:40 +00:00
if ( ! $categoryfromXML )
{
2009-10-28 23:45:46 +00:00
return 'generic' ;
2009-09-17 00:13:40 +00:00
}
2009-10-28 23:45:46 +00:00
$tmp = explode ( " , " , $categoryfromXML );
2009-09-02 02:38:50 +00:00
$category = array ();
2009-10-28 23:45:46 +00:00
foreach ( $tmp as $cat )
2009-09-02 02:38:50 +00:00
{
$cat = trim ( $cat );
2009-10-28 23:45:46 +00:00
if ( in_array ( $cat , $this -> allowedCategories ))
2009-09-02 02:38:50 +00:00
{
$category [] = $cat ;
}
else
{
2009-10-28 23:45:46 +00:00
$category [] = 'generic' ;
2009-09-02 02:38:50 +00:00
}
}
2009-10-28 23:45:46 +00:00
return implode ( ', ' , $category );
2009-10-28 23:52:56 +00:00
2009-09-02 02:38:50 +00:00
}
2009-07-12 14:44:57 +00:00
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
function themeUpload ()
{
2009-10-28 23:45:46 +00:00
if ( ! $_POST [ 'ac' ] == md5 ( ADMINPWCHANGE ))
{
2006-12-02 04:36:16 +00:00
exit ;
}
2012-11-28 02:22:23 -08:00
$mes = e107 :: getMessage ();
$ns = e107 :: getRender ();
2006-12-02 04:36:16 +00:00
extract ( $_FILES );
2008-11-17 07:17:23 +00:00
if ( ! is_writable ( e_THEME ))
{
2009-10-28 23:45:46 +00:00
// $ns->tablerender(TPVLAN_16, TPVLAN_20);
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_20 , E_MESSAGE_INFO );
2009-07-18 03:41:49 +00:00
return FALSE ;
2008-11-17 07:17:23 +00:00
}
else
{
2009-10-28 23:45:46 +00:00
require_once ( e_HANDLER . " upload_handler.php " );
2006-12-02 04:36:16 +00:00
$fileName = $file_userfile [ 'name' ][ 0 ];
$fileSize = $file_userfile [ 'size' ][ 0 ];
$fileType = $file_userfile [ 'type' ][ 0 ];
2009-10-28 23:45:46 +00:00
if ( strstr ( $file_userfile [ 'type' ][ 0 ], " gzip " ))
{
2006-12-02 04:36:16 +00:00
$fileType = " tar " ;
2009-10-28 23:45:46 +00:00
}
else
if ( strstr ( $file_userfile [ 'type' ][ 0 ], " zip " ))
{
2006-12-02 04:36:16 +00:00
$fileType = " zip " ;
2009-10-28 23:45:46 +00:00
}
else
{
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_17 , E_MESSAGE_ERROR );
2009-10-28 23:45:46 +00:00
// $ns->tablerender(TPVLAN_16, TPVLAN_17);
// require_once("footer.php");
2009-07-18 03:41:49 +00:00
return FALSE ;
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
if ( $fileSize )
{
2009-10-28 23:52:56 +00:00
2006-12-02 04:36:16 +00:00
$uploaded = file_upload ( e_THEME );
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
$archiveName = $uploaded [ 0 ][ 'name' ];
2009-10-28 23:45:46 +00:00
if ( $fileType == " zip " )
{
require_once ( e_HANDLER . " pclzip.lib.php " );
2006-12-02 04:36:16 +00:00
$archive = new PclZip ( e_THEME . $archiveName );
2009-10-28 23:45:46 +00:00
$unarc = ( $fileList = $archive -> extract ( PCLZIP_OPT_PATH , e_THEME , PCLZIP_OPT_SET_CHMOD , 0666 ));
}
else
{
require_once ( e_HANDLER . " pcltar.lib.php " );
2006-12-02 04:36:16 +00:00
$unarc = ( $fileList = PclTarExtract ( $archiveName , e_THEME ));
}
2009-10-28 23:45:46 +00:00
2009-07-18 03:41:49 +00:00
if ( ! $unarc )
{
if ( $fileType == " zip " )
{
2009-10-28 23:45:46 +00:00
$error = TPVLAN_46 . " ' " . $archive -> errorName ( TRUE ) . " ' " ;
2009-07-18 03:41:49 +00:00
}
else
{
$error = TPVLAN_47 . PclErrorString () . " , " . TPVLAN_48 . intval ( PclErrorCode ());
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_18 . " " . $archiveName . " " . $error , E_MESSAGE_ERROR );
2009-10-28 23:45:46 +00:00
// $ns->tablerender(TPVLAN_16, TPVLAN_18." ".$archiveName." ".$error);
2009-07-18 03:41:49 +00:00
return FALSE ;
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
$folderName = substr ( $fileList [ 0 ][ 'stored_filename' ], 0 , ( strpos ( $fileList [ 0 ][ 'stored_filename' ], " / " )));
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_19 , E_MESSAGE_SUCCESS );
2009-10-28 23:45:46 +00:00
2009-07-18 03:41:49 +00:00
if ( varset ( $_POST [ 'setUploadTheme' ]))
{
$themeArray = $this -> getThemes ();
$this -> id = $themeArray [ $folderName ][ 'id' ];
2009-10-28 23:45:46 +00:00
$this -> setTheme ();
2009-10-28 23:52:56 +00:00
2009-07-18 03:41:49 +00:00
}
2009-10-28 23:45:46 +00:00
// $ns->tablerender(TPVLAN_16, "<div class='center'>".TPVLAN_19."</div>");
2006-12-02 04:36:16 +00:00
@ unlink ( e_THEME . $archiveName );
}
}
}
2009-10-28 23:45:46 +00:00
function showThemes ( $mode = 'main' )
2006-12-02 04:36:16 +00:00
{
2012-11-28 02:22:23 -08:00
global $pref ;
$mes = e107 :: getMessage ();
$ns = e107 :: getRender ();
2013-01-30 16:51:06 -08:00
$tp = e107 :: getParser ();
2013-03-04 00:47:56 -08:00
$frm = e107 :: getForm ();
$srch = preg_replace ( '/[^\w]/' , '' , vartrue ( $_GET [ 'srch' ]));
2009-10-28 23:45:46 +00:00
2013-03-04 00:47:56 -08:00
echo " <div> " ;
2009-10-28 23:45:46 +00:00
if ( $mode == " main " || ! $mode ) // Show Main Configuration
2006-12-02 04:36:16 +00:00
{
2009-10-28 23:45:46 +00:00
foreach ( $this -> themeArray as $key => $theme )
2006-12-02 04:36:16 +00:00
{
2009-07-06 05:59:42 +00:00
if ( $key == $pref [ 'sitetheme' ])
{
2009-10-28 23:45:46 +00:00
$text = $this -> renderTheme ( 1 , $theme );
2009-07-06 05:59:42 +00:00
}
2006-12-02 04:36:16 +00:00
}
2013-03-04 00:47:56 -08:00
echo " <form enctype='multipart/form-data' method='post' action=' " . e_SELF . " ? " . $mode . " '> \n " ;
2013-02-22 21:34:06 -08:00
$ns -> tablerender ( TPVLAN_26 . SEP . TPVLAN_33 , $mes -> render () . $text );
2009-10-28 23:45:46 +00:00
}
2009-10-28 23:52:56 +00:00
// Show Admin Configuration
if ( $mode == " admin " )
2006-12-02 04:36:16 +00:00
{
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
foreach ( $this -> themeArray as $key => $theme )
2006-12-02 04:36:16 +00:00
{
2009-07-06 05:59:42 +00:00
if ( $key == $pref [ 'admintheme' ])
{
2009-10-28 23:45:46 +00:00
$text = $this -> renderTheme ( 2 , $theme );
2009-07-06 05:59:42 +00:00
}
2006-12-02 04:36:16 +00:00
}
2013-03-04 00:47:56 -08:00
echo " <form enctype='multipart/form-data' method='post' action=' " . e_SELF . " ? " . $mode . " '> \n " ;
2013-02-22 21:34:06 -08:00
$ns -> tablerender ( TPVLAN_26 . SEP . TPVLAN_34 , $mes -> render () . $text );
2009-10-28 23:45:46 +00:00
}
2009-10-28 23:52:56 +00:00
// Show Upload Form
if ( $mode == " upload " )
2008-05-25 09:04:16 +00:00
{
2009-10-28 23:45:46 +00:00
$this -> renderUploadForm ();
2009-07-10 14:25:23 +00:00
}
2009-10-28 23:45:46 +00:00
2009-10-28 23:52:56 +00:00
// Show All Themes
if ( $mode == " choose " )
2013-03-04 00:47:56 -08:00
{
2012-12-15 16:41:37 -08:00
$text = " " ;
2009-10-28 23:45:46 +00:00
foreach ( $this -> themeArray as $key => $theme )
2009-07-10 14:25:23 +00:00
{
2009-10-28 23:45:46 +00:00
$text .= $this -> renderTheme ( FALSE , $theme );
2013-01-25 19:30:26 -08:00
// print_a($theme);
2009-07-10 14:25:23 +00:00
}
2009-10-28 23:45:46 +00:00
$text .= " <div class='clear'> </div> " ;
2013-03-04 00:47:56 -08:00
echo " <form enctype='multipart/form-data' method='post' action=' " . e_SELF . " ? " . $mode . " '> \n " ;
2013-02-22 21:34:06 -08:00
$ns -> tablerender ( TPVLAN_26 . SEP . TPVLAN_39 , $mes -> render () . $text );
2012-11-28 04:32:05 -08:00
2009-07-10 14:25:23 +00:00
}
2013-01-25 19:30:26 -08:00
if ( $mode == " online " )
{
$e107 = e107 :: getInstance ();
$xml = e107 :: getXml ();
$mes = e107 :: getMessage ();
2013-01-31 01:49:00 -08:00
// $mes->addWarning("This area is experimental.");
2013-01-25 19:30:26 -08:00
$from = intval ( varset ( $_GET [ 'frm' ]));
2013-03-04 03:39:27 -08:00
$limit = 18 ;
2013-01-25 19:30:26 -08:00
// $file = SITEURLBASE.e_PLUGIN_ABS."release/release.php"; // temporary testing
2013-03-04 00:47:56 -08:00
2013-03-04 03:39:27 -08:00
$file = " http://e107.org/feed?type=theme&frm= " . $from . " &srch= " . $srch . " &limit= " . $limit ;
$mes -> addDebug ( " File = " . $file );
2013-01-25 19:30:26 -08:00
2013-01-30 16:51:06 -08:00
$xml -> setOptArrayTags ( 'theme,screenshots/image' ); // make sure 'theme' tag always returns an array
// $xdata = $xml->loadXMLfile($file,'advanced',true);
$xdata = $xml -> loadXMLfile ( $file , true , false );
2013-01-25 19:30:26 -08:00
$total = $xdata [ '@attributes' ][ 'total' ];
2013-03-04 00:47:56 -08:00
$text = "
< form action = '".e_SELF."?".e_QUERY."' id = 'core-plugin-list-form' method = 'get' >
< div class = 'e-search' > " . $frm->search ('srch', $srch , 'go', $filterName , $filterArray , $filterVal ). $frm->hidden ('mode','online'). " </ div >
</ form > " ;
2013-01-25 19:30:26 -08:00
// print_a($xdata);
//TODO use admin_ui including filter capabilities by sending search queries back to the xml script.
// XML data array.
$c = 1 ;
2013-03-04 00:47:56 -08:00
2013-03-04 03:39:27 -08:00
if ( is_array ( $xdata [ 'theme' ] ))
2013-01-25 19:30:26 -08:00
{
2013-03-04 03:39:27 -08:00
foreach ( $xdata [ 'theme' ] as $r )
2013-03-03 16:53:17 -08:00
{
2013-03-04 03:39:27 -08:00
if ( E107_DBG_PATH )
{
$mes -> addDebug ( print_a ( $r , true ));
}
$theme = array (
'name' => stripslashes ( $r [ '@attributes' ][ 'name' ]),
'category' => $r [ 'category' ],
'preview' => $r [ 'screenshots' ][ 'image' ],
'date' => $r [ '@attributes' ][ 'date' ],
'version' => $r [ '@attributes' ][ 'version' ],
'thumbnail' => $r [ '@attributes' ][ 'thumbnail' ],
'url' => $r [ '@attributes' ][ 'url' ],
'author' => $r [ '@attributes' ][ 'author' ],
'website' => $r [ '@attributes' ][ 'authorUrl' ],
'compatibility' => $r [ '@attributes' ][ 'compatibility' ],
'description' => varset ( $r [ 'description' ]),
);
$text .= $this -> renderTheme ( FALSE , $theme );
/*
[ author ] => e107 Inc
[ summary ] => Bootstrap e107 admin theme
[ category ] => generic
[ keywords ] => Array
(
[ word ] => Array
(
[ 0 ] => bootstrap
[ 1 ] => clean
)
2013-01-25 19:30:26 -08:00
2013-03-04 03:39:27 -08:00
)
[ name ] => bootstrap
[ version ] => 1.0
[ date ] => 2012 - 12 - 01
[ compatibility ] => 2.0
[ releaseUrl ] =>
[ email ] => e107inc @ something . com
[ website ] => http :// e107 . org
[ info ] => Bootstrap e107 admin theme
[ compliance ] => Array
(
[ @ attributes ] => Array
(
[ xhtml ] =>
[ css ] =>
)
2013-01-25 19:30:26 -08:00
2013-03-04 03:39:27 -08:00
)
2013-01-25 19:30:26 -08:00
2013-03-04 03:39:27 -08:00
[ xhtmlcompliant ] =>
[ csscompliant ] =>
[ path ] => bootstrap
*/
}
$text .= " <div class='clear'> </div> " ;
}
else
{
$mes -> addInfo ( " No Themes found which match your search criteria " );
2013-01-25 19:30:26 -08:00
}
2013-03-04 03:39:27 -08:00
$amount = $limit ;
2013-01-30 16:51:06 -08:00
2013-01-25 19:30:26 -08:00
2013-03-04 03:39:27 -08:00
$ns -> tablerender ( TPVLAN_26 . SEP . " Available for Download " , $text . $mes -> render ());
if ( $total > $amount )
{
$parms = $total . " , " . $amount . " , " . $from . " , " . e_SELF . '?mode=' . $_GET [ 'mode' ] . '&frm=[FROM]' ;
echo " <div class='center'> " . $tp -> parseTemplate ( " { NEXTPREV= $parms } " , TRUE ) . " </div> " ;
}
2013-01-25 19:30:26 -08:00
2013-03-04 03:39:27 -08:00
}
2013-01-25 19:30:26 -08:00
2013-03-08 04:46:02 -08:00
2009-07-10 14:25:23 +00:00
echo " </form> \n </div> \n " ;
2012-11-28 04:32:05 -08:00
2009-07-10 14:25:23 +00:00
}
2012-11-28 04:32:05 -08:00
2009-10-28 23:45:46 +00:00
function renderUploadForm ()
2009-07-10 14:25:23 +00:00
{
2012-11-28 02:22:23 -08:00
$mes = e107 :: getMessage ();
$ns = e107 :: getRender ();
$sql = e107 :: getDb ();
2009-10-28 23:45:46 +00:00
if ( ! is_writable ( e_THEME ))
{
$ns -> tablerender ( TPVLAN_16 , TPVLAN_15 );
$text = " " ;
}
else
{
require_once ( e_HANDLER . 'upload_handler.php' );
$max_file_size = get_user_max_upload ();
$text = "
2012-11-26 03:23:20 -08:00
< table class = 'table adminform' >
2012-05-17 05:09:59 +00:00
< colgroup >
2009-07-10 14:25:23 +00:00
< col class = 'col-label' />
< col class = 'col-control' />
</ colgroup >
2009-07-06 05:59:42 +00:00
< tr >
2009-07-10 14:25:23 +00:00
< td > " .TPVLAN_13. " </ td >
< td >
2009-07-06 05:59:42 +00:00
< input type = 'hidden' name = 'MAX_FILE_SIZE' value = '{$max_file_size}' />
< input type = 'hidden' name = 'ac' value = '".md5(ADMINPWCHANGE)."' />
< input class = 'tbox' type = 'file' name = 'file_userfile[]' size = '50' />
2009-07-18 03:41:49 +00:00
</ td >
</ tr >
< tr >
< td > " .TPVLAN_10. " </ td >
< td >
< input type = 'checkbox' name = 'setUploadTheme' value = '1' />
2009-07-06 05:59:42 +00:00
</ td >
</ tr >
</ table >
2009-07-10 14:25:23 +00:00
< div class = 'buttons-bar center' > " ;
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
$text .= $this -> frm -> admin_button ( 'upload' , TPVLAN_14 , 'submit' );
$text .= "
2009-07-10 14:25:23 +00:00
</ div >
2012-11-28 02:22:23 -08:00
\n " ;
2009-10-28 23:45:46 +00:00
}
2013-02-22 21:34:06 -08:00
$ns -> tablerender ( TPVLAN_26 . SEP . TPVLAN_38 , $mes -> render () . $text );
2009-07-10 14:25:23 +00:00
}
2009-10-28 23:45:46 +00:00
function renderThemeInfo ( $theme )
2006-12-02 04:36:16 +00:00
{
2012-12-11 00:34:08 -08:00
2009-10-28 23:45:46 +00:00
global $pref ;
2013-01-30 16:51:06 -08:00
$author = ( $theme [ 'email' ] ? " <a href='mailto: " . $theme [ 'email' ] . " ' title=' " . $theme [ 'email' ] . " '> " . $theme [ 'author' ] . " </a> " : $theme [ 'author' ]);
$website = ( $theme [ 'website' ] ? " <a href=' " . $theme [ 'website' ] . " ' rel='external'> " . $theme [ 'website' ] . " </a> " : " " );
$preview = " <a href=' " . e_BASE . " news.php?themepreview. " . $theme [ 'id' ] . " ' title=' " . TPVLAN_9 . " ' > " . ( $theme [ 'preview' ] ? " <img src=' " . $theme [ 'preview' ] . " ' style='border: 1px solid #000;width:200px' alt='' /> " : " <img src=' " . e_IMAGE_ABS . " admin_images/nopreview.png' title=' " . TPVLAN_12 . " ' alt='' /> " ) . " </a> " ;
2013-01-31 01:49:00 -08:00
$description = vartrue ( $theme [ 'description' ], '' );
2013-03-03 17:50:30 -08:00
$compat = ( intval ( $theme [ 'compatibility' ]) == 2 ) ? " <span class='label label-warning'> " . number_format ( $theme [ 'compatibility' ], 1 , '.' , '' ) . " </span><span class='text-warning'> Recommended!</span> " : vartrue ( number_format ( $theme [ 'compatibility' ], 1 , '.' , '' ), '1.0' );
2013-03-03 16:53:17 -08:00
$text = " <table class='table table-striped'> " ;
// $text .= "<tr><th colspan='2'><h3>".$theme['name']." ".$theme['version']."</h3></th></tr>";
2013-03-03 17:50:30 -08:00
2009-10-31 00:36:09 +00:00
$text .= $author ? " <tr><td style='vertical-align:top; width:24%'><b> " . TPVLAN_4 . " </b>:</td><td style='vertical-align:top'> " . $author . " </td></tr> " : " " ;
$text .= $website ? " <tr><td style='vertical-align:top; width:24%'><b> " . TPVLAN_5 . " </b>:</td><td style='vertical-align:top'> " . $website . " </td></tr> " : " " ;
$text .= $theme [ 'date' ] ? " <tr><td style='vertical-align:top; width:24%'><b> " . TPVLAN_6 . " </b>:</td><td style='vertical-align:top'> " . $theme [ 'date' ] . " </td></tr> " : " " ;
2013-03-03 17:50:30 -08:00
$text .= $compat ? " <tr><td style='vertical-align:top; width:24%'><b> " . TPVLAN_57 . " </b>:</td><td style='vertical-align:top'> " . $compat . " </td></tr> " : " " ;
2013-01-31 01:49:00 -08:00
$text .= $description ? " <tr><td style='vertical-align:top; width:24%'><b>Description</b>:</td><td style='vertical-align:top'> " . $description . " </td></tr> " : " " ;
// $text .= "<tr><td style='vertical-align:top; width:24%'><b>".TPVLAN_49."</b>:</td>
// <td style='vertical-align:top'>XHTML ";
// $text .= ($theme['xhtmlcompliant']) ? ADMIN_TRUE_ICON : ADMIN_FALSE_ICON;
// $text .= " CSS ";
// $text .= ($theme['csscompliant']) ? ADMIN_TRUE_ICON : ADMIN_FALSE_ICON;
// $text .= "</td></tr>";
if ( vartrue ( $theme [ 'category' ]))
{
$text .= " <tr><td><b>Category</b></td><td> " . $theme [ 'category' ] . " </td></tr> " ;
}
2013-03-03 16:53:17 -08:00
2013-01-31 01:49:00 -08:00
2009-10-28 23:45:46 +00:00
2009-10-28 23:52:56 +00:00
// New in 0.8 WORK IN PROGRESS ----
if ( $theme [ 'layouts' ])
2008-11-17 07:17:23 +00:00
{
2009-10-28 23:45:46 +00:00
$itext .= " <tr>
2009-10-31 00:36:09 +00:00
< td style = 'vertical-align:top; width:24%' >< b > " .TPVLAN_50. " </ b >:</ td >
2013-03-03 16:53:17 -08:00
< td style = 'vertical-align:top' >< table class = 'table' style = 'margin-left:0px;margin-right:auto' >
2008-11-17 07:17:23 +00:00
< tr > " ;
2009-10-31 00:36:09 +00:00
$itext .= ( $mode == 1 ) ? " <td class='fcaption' style='text-align:center;vertical-align:top;'>Default</td> " : " " ;
2009-10-28 23:45:46 +00:00
$itext .= "
2008-11-17 07:17:23 +00:00
< td class = 'fcaption' > Title </ td >
< td class = 'fcaption' > Requirements </ td >
2009-10-31 00:36:09 +00:00
< td class = 'fcaption' style = 'text-align:center;width:100px' > Menu Preset </ td >
2008-11-17 07:17:23 +00:00
</ tr > \n " ;
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
foreach ( $theme [ 'layouts' ] as $key => $val )
{
$itext .= "
2008-11-17 07:17:23 +00:00
< tr > " ;
if ( $mode == 1 )
{
2009-07-05 11:57:40 +00:00
if ( ! $pref [ 'sitetheme_deflayout' ])
2008-11-17 07:17:23 +00:00
{
2009-10-28 23:45:46 +00:00
$pref [ 'sitetheme_deflayout' ] = ( $val [ '@attributes' ][ 'default' ] == 'true' ) ? $key : " " ;
// echo "------------- NODEFAULT";
2008-11-17 07:17:23 +00:00
}
$itext .= "
2009-10-31 00:36:09 +00:00
< td style = 'vertical-align:top width:auto;text-align:center' >
2009-10-28 23:45:46 +00:00
< input type = 'radio' name = 'layout_default' value = '{$key}' " .( $pref['sitetheme_deflayout'] == $key ? " checked = 'checked' " : " " ). " />
2008-11-17 07:17:23 +00:00
</ td > " ;
}
2009-10-28 23:45:46 +00:00
2009-10-31 00:36:09 +00:00
$itext .= " <td style='vertical-align:top'> " ;
2008-11-17 07:17:23 +00:00
$itext .= ( $val [ '@attributes' ][ 'previewFull' ]) ? " <a href=' " . e_THEME_ABS . $theme [ 'path' ] . " / " . $val [ '@attributes' ][ 'previewFull' ] . " ' > " : " " ;
$itext .= $val [ '@attributes' ][ 'title' ];
$itext .= ( $val [ '@attributes' ][ 'previewFull' ]) ? " </a> " : " " ;
2009-10-28 23:45:46 +00:00
$itext .= ( $pref [ 'sitetheme_deflayout' ] == $key ) ? " (default) " : " " ;
2008-11-17 07:17:23 +00:00
$itext .= " </td>
2009-10-31 00:36:09 +00:00
< td style = 'vertical-align:top' > " . $val['@attributes'] ['plugins']. " & nbsp ; </ td >
< td style = 'vertical-align:top;text-align:center' > " ;
2009-10-28 23:45:46 +00:00
$itext .= ( $val [ 'menuPresets' ]) ? ADMIN_TRUE_ICON : " " ;
$itext .= " </td>
2008-11-17 07:17:23 +00:00
</ tr > " ;
}
2013-03-03 16:53:17 -08:00
2009-10-28 23:45:46 +00:00
2008-11-17 07:17:23 +00:00
$itext .= " </table></td></tr> " ;
}
2009-10-28 23:45:46 +00:00
2013-03-03 16:53:17 -08:00
2013-01-31 01:49:00 -08:00
// $text .= "<tr><td><b>".TPVLAN_22.": </b></td><td colspan='2'>";
// foreach ($theme['css'] as $val)
// {
// $text .= $val['name']."<br />";
// }
// $text .= "</td></tr>";
2009-10-28 23:45:46 +00:00
$text .= $itext . " </table> " ;
2013-03-03 16:53:17 -08:00
if ( count ( $theme [ 'preview' ]))
{
$text .= " <tr><td colspan='2'> " ;
foreach ( $theme [ 'preview' ] as $pic )
{
$picFull = ( substr ( $pic , 0 , 4 ) == 'http' ) ? $pic : e_THEME . $theme [ 'path' ] . " / " . $pic ;
$text .= " <div style='padding:5px;width:700px'>
< img src = '".$picFull."' alt = \ " " . $theme [ 'name' ] . " \" />
</ div > " ;
}
// $text .= "</td>
// </tr>";
}
2012-11-28 04:32:05 -08:00
// $text .= "<div class='right'><a href='#themeInfo_".$theme['id']."' class='e-expandit'>Close</a></div>";
2013-03-03 16:53:17 -08:00
if ( E107_DEBUG_LEVEL > 0 )
{
$text .= print_a ( $theme , true );
}
2009-10-28 23:45:46 +00:00
return $text ;
2009-07-06 05:59:42 +00:00
}
2009-10-28 23:45:46 +00:00
function loadThemeConfig ()
2009-07-09 11:37:36 +00:00
{
2012-11-29 22:03:36 -08:00
$mes = e107 :: getMessage ();
2009-07-09 11:37:36 +00:00
$confile = e_THEME . $this -> id . " / " . $this -> id . " _config.php " ;
2009-10-28 23:45:46 +00:00
2009-08-17 11:25:01 +00:00
if (( $this -> themeConfigObj === null ) && is_readable ( $confile ))
2009-07-09 11:37:36 +00:00
{
2012-11-29 22:03:36 -08:00
$mes -> addDebug ( " Loading : " . $confile );
2009-10-28 23:45:46 +00:00
include ( $confile );
$className = 'theme_' . $this -> id ;
2009-08-17 11:25:01 +00:00
if ( class_exists ( $className ))
{
$this -> themeConfigObj = new $className ();
}
else
{
2009-10-28 23:45:46 +00:00
$this -> themeConfigObj = FALSE ;
2009-08-17 11:25:01 +00:00
}
2009-10-28 23:45:46 +00:00
}
2009-10-28 23:52:56 +00:00
2009-07-09 11:37:36 +00:00
}
2009-10-28 23:45:46 +00:00
2009-10-28 23:52:56 +00:00
// TODO process custom theme configuration - .
function renderThemeConfig ()
2009-07-06 05:59:42 +00:00
{
2012-11-29 22:03:36 -08:00
$mes = e107 :: getMessage ();
$mes -> addDebug ( " Rendering Theme Config " );
2009-10-28 23:45:46 +00:00
$this -> loadThemeConfig ();
if ( $this -> themeConfigObj )
{
$var = call_user_func ( array ( & $this -> themeConfigObj , 'config' ));
foreach ( $var as $val )
2009-07-09 11:37:36 +00:00
{
2012-12-08 15:52:40 +01:00
$text = " <tr><td><b> " . $val [ 'caption' ] . " </b>:</td><td colspan='2'> " . $val [ 'html' ] . " </td></tr> " ;
2009-07-09 11:37:36 +00:00
}
2009-10-28 23:45:46 +00:00
return $text ;
}
2009-10-28 23:52:56 +00:00
2009-07-09 11:37:36 +00:00
}
2009-10-28 23:45:46 +00:00
2009-07-09 11:37:36 +00:00
function renderThemeHelp ()
{
2009-08-17 11:25:01 +00:00
if ( $this -> themeConfigObj )
2009-10-28 23:45:46 +00:00
{
2009-08-27 12:58:29 +00:00
return call_user_func ( array ( & $this -> themeConfigObj , 'help' ));
2009-07-09 11:37:36 +00:00
}
2009-07-06 05:59:42 +00:00
}
2009-10-28 23:45:46 +00:00
2009-07-06 05:59:42 +00:00
function setThemeConfig ()
{
2009-10-28 23:45:46 +00:00
$this -> loadThemeConfig ();
if ( $this -> themeConfigObj )
{
2009-08-27 12:58:29 +00:00
return call_user_func ( array ( & $this -> themeConfigObj , 'process' ));
2009-08-17 11:25:01 +00:00
}
2009-07-06 05:59:42 +00:00
}
2009-10-28 23:45:46 +00:00
2013-01-30 16:51:06 -08:00
/**
mode = 0 :: normal
mode = 1 :: selected site theme
mode = 2 :: selected admin theme
*/
2009-10-28 23:45:46 +00:00
function renderTheme ( $mode = FALSE , $theme )
2009-07-06 05:59:42 +00:00
{
2012-12-11 00:34:08 -08:00
$ns = e107 :: getRender ();
$pref = e107 :: getPref ();
$frm = e107 :: getForm ();
2009-10-28 23:45:46 +00:00
2013-01-30 16:51:06 -08:00
$author = ( $theme [ 'email' ] ? " <a href='mailto: " . $theme [ 'email' ] . " ' title=' " . $theme [ 'email' ] . " '> " . $theme [ 'author' ] . " </a> " : $theme [ 'author' ]);
$website = ( $theme [ 'website' ] ? " <a href=' " . $theme [ 'website' ] . " ' rel='external'> " . $theme [ 'website' ] . " </a> " : " " );
$preview = " <a href=' " . e_BASE . " news.php?themepreview. " . $theme [ 'id' ] . " ' title=' " . TPVLAN_9 . " ' > " . ( $theme [ 'preview' ] ? " <img src=' " . $theme [ 'preview' ] . " ' style='border: 1px solid #000;width:200px' alt='' /> " : " <img src=' " . e_IMAGE_ABS . " admin_images/nopreview.png' title=' " . TPVLAN_12 . " ' alt='' /> " ) . " </a> " ;
2013-03-03 16:53:17 -08:00
$main_icon = ( $pref [ 'sitetheme' ] != $theme [ 'path' ]) ? " <input class='top' type='image' src=' " . e_IMAGE_ABS . " admin_images/main_32.png' name='selectmain[ " . $theme [ 'id' ] . " ]' alt= \" " . TPVLAN_10 . " \" title= \" " . TPVLAN_10 . " \" /> " : E_32_TRUE ;
2013-01-30 16:51:06 -08:00
// $info_icon = "<a data-toggle='modal' data-target='".e_SELF."' href='#themeInfo_".$theme['id']."' class='e-tip' title='".TPVLAN_7."'><img src='".e_IMAGE_ABS."admin_images/info_32.png' alt='' class='icon S32' /></a>";
2013-03-03 16:53:17 -08:00
$info_icon = " <a data-toggle='modal' data-modal-caption= \" " . $theme [ 'name' ] . " " . $theme [ 'version' ] . " \" href=' " . e_SELF . " ?id= " . $theme [ 'path' ] . " ' data-target='#uiModal' title=' " . TPVLAN_7 . " '> " . E_32_CAT_ABOUT . " </a> " ;
$preview_icon = " <a title='Preview : " . $theme [ 'name' ] . " ' rel='external' class='e-dialog' href=' " . e_BASE . " index.php?themepreview. " . $theme [ 'id' ] . " '> " . E_32_SEARCH . " </a> " ;
$admin_icon = ( $pref [ 'admintheme' ] != $theme [ 'path' ] ) ? " <input class='top' type='image' src=' " . e_IMAGE_ABS . " e107_icon_32.png' name='selectadmin[ " . $theme [ 'id' ] . " ]' alt= \" " . TPVLAN_32 . " \" title= \" " . TPVLAN_32 . " \" /> \n " : E_32_TRUE ;
2012-11-28 04:32:05 -08:00
2013-01-30 18:37:42 -08:00
if ( $_GET [ 'mode' ] == 'online' )
{
$d = http_build_query ( $theme , false , '&' );
$url = e_SELF . " ?src= " . base64_encode ( $d );
$id = $frm -> name2id ( $theme [ 'name' ]);
2013-03-03 16:53:17 -08:00
$main_icon = " <a data-src=' " . $url . " ' href='#' data-target=' { $id } ' data-loading=' " . e_IMAGE . " /generic/loading_32.gif' class='e-ajax' title='Download' ><img class='top' src=' " . e_IMAGE_ABS . " icons/download_32.png' alt='' /></a> " ;
$info_icon = " <a data-toggle='modal' data-modal-caption= \" " . $theme [ 'name' ] . " " . $theme [ 'version' ] . " \" href=' " . $url . " &info=1' data-cache='false' data-target='#uiModal' title=' " . TPVLAN_7 . " '> " . E_32_CAT_ABOUT . " </a> " ;
2013-01-31 01:49:00 -08:00
//XXX modal-Cache is currently enabled by default. Awaiting inclusion of data-cache feature.
// See here: https://github.com/twitter/bootstrap/pull/4224
2013-01-30 18:37:42 -08:00
}
2012-11-29 22:03:36 -08:00
if ( ! in_array ( $theme [ 'path' ], $this -> approvedAdminThemes ))
{
$admin_icon = " " ;
}
2012-11-28 04:32:05 -08:00
2013-01-30 16:51:06 -08:00
if ( $theme [ 'name' ] == 'bootstrap' )
2012-12-11 00:34:08 -08:00
{
2013-01-30 16:51:06 -08:00
// print_a($theme);
2012-12-11 00:34:08 -08:00
}
//
2013-01-30 16:51:06 -08:00
// $thumbPath = (substr($theme['thumbnail'],0,4) == 'http') ? $theme['thumbnail'] : e_THEME.$theme['path'] ."/".$theme['preview'][0];
// $thumbnail = "<a href='".e_BASE."news.php?themepreview.".$theme['id']."' title='".TPVLAN_9."' >";
if ( substr ( $theme [ 'thumbnail' ], 0 , 4 ) == 'http' )
{
$thumbPath = $theme [ 'thumbnail' ];
$previewPath = $theme [ 'preview' ][ 0 ];
}
elseif ( vartrue ( $theme [ 'preview' ][ 0 ]))
{
$thumbPath = e_THEME . $theme [ 'path' ] . " / " . $theme [ 'preview' ][ 0 ];
$previewPath = e_THEME . $theme [ 'path' ] . " / " . $theme [ 'preview' ][ 0 ];
}
else
{
$thumbPath = e_IMAGE_ABS . " admin_images/nopreview.png " ;
$previewPath = e_BASE . " index.php?themepreview. " . $theme [ 'id' ];
}
$thumbnail = " <img src=' " . $thumbPath . " ' style='width:200px; height:160px;' alt='' /> " ;
2013-03-03 16:53:17 -08:00
$preview_icon = " <a title='Preview : " . $theme [ 'name' ] . " ' rel='external' class='e-dialog' href=' " . $previewPath . " '> " . E_32_SEARCH . " </a> " ;
2013-01-30 16:51:06 -08:00
// $thumbnail .= "</a>";
2009-10-28 23:45:46 +00:00
2009-10-28 23:52:56 +00:00
// Choose a Theme to Install.
if ( ! $mode )
2009-07-06 05:59:42 +00:00
{
// styles NEED to be put into style.css
2012-06-03 09:45:20 +00:00
2012-11-29 22:03:36 -08:00
if ( $pref [ 'sitetheme' ] == $theme [ 'path' ])
{
$borderStyle = " admin-theme-cell-site " ;
}
elseif ( $pref [ 'admintheme' ] == $theme [ 'path' ])
{
$borderStyle = " admin-theme-cell-admin " ;
}
else
{
$borderStyle = " admin-theme-cell-default " ;
}
2013-03-15 03:54:34 -07:00
$borderStyle = 'well' ;
2012-11-29 22:03:36 -08:00
$text = "
< div class = 'f-left block-text admin-theme-cell ".$borderStyle."' >
2013-01-30 16:51:06 -08:00
< div class = 'admin-theme-thumb' > " . $thumbnail . " </ div >
2013-01-30 18:37:42 -08:00
< div id = '".$frm->name2id($theme[' name '])."' class = 'admin-theme-options' > " . $main_icon . $admin_icon . $info_icon . $preview_icon . " </ div >
2012-11-29 22:03:36 -08:00
< div class = 'admin-theme-title' > " . $theme['name'] . " " . $theme['version'] . " </ div >
</ div > " ;
2009-10-28 23:45:46 +00:00
return $text ;
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
$this -> id = $theme [ 'path' ];
2009-10-28 23:52:56 +00:00
// load customn theme configuration fields.
$this -> loadThemeConfig ();
2009-10-28 23:45:46 +00:00
2009-07-09 11:37:36 +00:00
$text = "
2009-07-09 02:47:17 +00:00
< h2 class = 'caption' > " . $theme['name'] . " </ h2 >
2013-02-25 02:47:23 -08:00
< ul class = 'nav nav-tabs' >
< li class = 'active' >< a data - toggle = 'tab' href = '#core-thememanager-configure' > " .LAN_CONFIGURE. " </ a ></ li > " ;
2009-10-28 23:52:56 +00:00
2009-10-28 23:45:46 +00:00
if ( $this -> themeConfigObj && call_user_func ( array ( & $this -> themeConfigObj , 'help' )))
2009-07-09 11:37:36 +00:00
{
2013-02-25 02:47:23 -08:00
$text .= " <li><a data-toggle='tab' href='#core-thememanager-help'> " . LAN_HELP . " </a></li> \n " ;
2009-07-09 11:37:36 +00:00
}
2009-10-28 23:45:46 +00:00
2012-11-29 22:03:36 -08:00
$text .= " </ul>
2013-02-25 02:47:23 -08:00
< div class = 'tab-content' >
< div class = 'tab-pane active' id = 'core-thememanager-configure' >
< table class = 'table adminform' >
< colgroup >
< col class = 'col-label' />
< col class = 'col-control' />
< col class = 'col-control' />
</ colgroup >
2009-07-06 05:59:42 +00:00
< tr >
2013-02-25 02:47:23 -08:00
< td >< b > " .TPVLAN_11. " </ b ></ td >
< td > " . $theme['version'] . " </ td >
2013-03-15 03:54:34 -07:00
< td class = 'well center middle' rowspan = '6' style = 'text-align:center; vertical-align:middle;width:25%' > " . $thumbnail . " </ td >
2013-02-25 02:47:23 -08:00
</ tr > " ;
$text .= " <tr><td style='vertical-align:top; width:25%'><b> " . TPVLAN_4 . " </b>:</td><td style='vertical-align:top'> " . $author . " </td></tr> " ;
$text .= " <tr><td style='vertical-align:top; width:25%'><b> " . TPVLAN_5 . " </b>:</td><td style='vertical-align:top'> " . $website . " </td></tr> " ;
$text .= " <tr><td style='vertical-align:top; width:25%'><b> " . TPVLAN_6 . " </b>:</td><td style='vertical-align:top'> " . $theme [ 'date' ] . " </td></tr> " ;
2009-10-28 23:45:46 +00:00
2013-03-03 17:50:30 -08:00
$text .= " <tr><td style='vertical-align:top; width:25%'><b> " . TPVLAN_7 . " </b>:</td><td style='vertical-align:top'> " . strip_tags ( $theme [ 'info' ], 'b' ) . " </td></tr> " ;
2013-02-25 02:47:23 -08:00
$text .= " <tr><td style='vertical-align:top; width:25%'><b> " . LAN_CATEGORY . " </b>:</td><td style='vertical-align:top'> " . $theme [ 'category' ] . " </td></tr> " ;
$text .= " <tr><td style='vertical-align:top; width:25%'><b> " . TPVLAN_49 . " </b>:</td>
< td style = 'vertical-align:top' colspan = '2' > " ;
$text .= ( $theme [ 'xhtmlcompliant' ]) ? " W3C XHTML " . $theme [ 'xhtmlcompliant' ] : " Not Specified " ;
$text .= ( $theme [ 'csscompliant' ]) ? " & CSS " . $theme [ 'csscompliant' ] : " " ;
$text .= " </td></tr> " ;
// site theme..
if ( $mode == 1 )
2009-10-28 23:45:46 +00:00
{
2013-02-25 02:47:23 -08:00
$text .= "
< tr >
< td style = 'vertical-align:top; width:24%;' >< b > " .TPVLAN_53. " </ b ></ td >
< td colspan = '2' style = 'vertical-align:top width:auto;' > " ;
if ( varset ( $theme [ 'plugins' ]))
2009-10-28 23:45:46 +00:00
{
2013-02-25 02:47:23 -08:00
foreach ( $theme [ 'plugins' ] as $key => $val )
{
$text .= $this -> renderPlugins ( $theme [ 'plugins' ]);
$text .= " " ;
}
2009-10-28 23:45:46 +00:00
}
2013-02-25 02:47:23 -08:00
$text .= " </td>
2009-07-06 05:59:42 +00:00
</ tr > " ;
2013-02-25 02:47:23 -08:00
$text .= "
< tr >
< td style = 'vertical-align:top; width:24%;' >< b > " .TPVLAN_30. " </ b ></ td >
< td colspan = '2' style = 'vertical-align:top width:auto;' >
< input type = 'radio' name = 'image_preload' value = '1' " .( $pref['image_preload'] ? " checked = 'checked' " : " " ). " /> " .TPVLAN_28. " & nbsp ; & nbsp ;
< input type = 'radio' name = 'image_preload' value = '0' " .(! $pref['image_preload'] ? " checked = 'checked' " : " " ). " /> " .TPVLAN_29. "
</ td >
</ tr > " ;
}
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
// New in 0.8 ---- site theme.
if ( $mode == 1 )
{
$itext = " <tr>
< td style = 'vertical-align:top; width:24%' >< b > " .TPVLAN_50. " </ b >:</ td >
< td colspan = '2' style = 'vertical-align:top' >
< table class = 'table adminlist' >
< colgroup >
< col class = 'col-tm-layout-default' style = 'width:10%' />
< col class = 'col-tm-layout-name' style = 'width:20%' />
< col class = 'col-tm-layout-visibility' style = 'width:35%' />
< col class = 'col-tm-layout-preset' style = 'width:35%' />
</ colgroup >
< tr > " ;
$itext .= ( $mode == 1 ) ? " <td class='center top'> " . TPVLAN_55 . " </td> " : " " ;
$itext .= "
< td > " .TPVLAN_52. " </ td >
< td > " .TPVLAN_56. " </ td >
< td > " .TPVLAN_54. " </ td >
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
</ tr > \n " ;
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
foreach ( $theme [ 'layouts' ] as $key => $val )
{
$itext .= "
< tr > " ;
if ( $mode == 1 )
{
if ( ! $pref [ 'sitetheme_deflayout' ])
{
$pref [ 'sitetheme_deflayout' ] = ( $val [ '@attributes' ][ 'default' ] == 'true' ) ? $key : " " ;
}
$itext .= " <td class='center'> \n " ;
$itext .= "
< input type = 'radio' name = 'layout_default' value = '{$key}' " .( $pref['sitetheme_deflayout'] == $key ? " checked = 'checked' " : " " ). " />
</ td > " ;
}
$itext .= " <td style='vertical-align:top'> " ;
// $itext .= ($val['@attributes']['previewFull']) ? "<a href='".e_THEME_ABS.$theme['path']."/".$val['@attributes']['previewFull']."' >" : "";
$itext .= $val [ '@attributes' ][ 'title' ];
// $itext .= ($val['@attributes']['previewFull']) ? "</a>" : "";
$custompage_count = ( isset ( $pref [ 'sitetheme_custompages' ][ $key ])) ? " [ " . count ( $pref [ 'sitetheme_custompages' ][ $key ]) . " ] " : " " ;
$custompage_diz = " " ;
$count = 1 ;
if ( isset ( $pref [ 'sitetheme_custompages' ][ $key ]) && count ( $pref [ 'sitetheme_custompages' ][ $key ]) > 0 )
{
foreach ( $pref [ 'sitetheme_custompages' ][ $key ] as $cp )
{
$custompage_diz .= " <a href='#element-to-be-shown- { $key } ' class='btn btn-mini e-expandit'> " . trim ( $cp ) . " </a> " ;
if ( $count > 4 )
{
$custompage_diz .= " ... " ;
break ;
}
$count ++ ;
}
}
else
{
$custompage_diz = " <a href='#element-to-be-shown- { $key } ' title='Set pages which should automatically use this layout. One per line.' class='e-tip btn btn-mini e-expandit'>None</a> " ;
}
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
$itext .= " </td>
< td style = 'vertical-align:top' > " ;
// Default
$itext .= ( $pref [ 'sitetheme_deflayout' ] != $key ) ? $custompage_diz . " <div class='e-hideme' id='element-to-be-shown- { $key } '><textarea style='width:97%' rows='6' placeholder='usersettings.php' cols='20' name='custompages[ " . $key . " ]' > " . ( isset ( $pref [ 'sitetheme_custompages' ][ $key ]) ? implode ( " \n " , $pref [ 'sitetheme_custompages' ][ $key ]) : " " ) . " </textarea></div> \n " : TPVLAN_55 ;
$itext .= " </td> " ;
$itext .= " <td> " ;
$itext .= ( varset ( $val [ 'menuPresets' ])) ? $this -> frm -> admin_button ( " setMenuPreset[ " . $key . " ] " , " Use Preset " ) : " " ;
$itext .= " </td>
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
</ tr > " ;
}
$itext .= " </table></td></tr> " ;
}
2009-10-24 07:53:30 +00:00
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
// $itext .= !$mode ? "<tr><td style='vertical-align:top;width:24%'><b>".TPVLAN_8."</b>:</td><td style='vertical-align:top'>".$previewbutton.$selectmainbutton.$selectadminbutton."</td></tr>" : "";
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
if ( $mode == 2 )
{
$astext = " " ;
$file = e107 :: getFile ();
$adminstyles = $file -> get_files ( e_ADMIN . " includes " );
$astext = " \n <select id='mode2' name='adminstyle' class='tbox'> \n " ;
foreach ( $adminstyles as $as )
{
$style = str_replace ( " .php " , " " , $as [ 'fname' ]);
$astext .= " <option value=' { $style } ' " . ( $pref [ 'adminstyle' ] == $style ? " selected='selected' " : " " ) . " > " . $style . " </option> \n " ;
}
$astext .= " </select> " ;
$text .= "
< tr >
< td >< b > " .TPVLAN_41. " :</ b ></ td >
< td colspan = '2' > " . $astext . " </ td >
</ tr >
\n " ;
}
2009-08-06 22:27:47 +00:00
2013-02-25 02:47:23 -08:00
$text .= $itext ;
2012-12-16 21:10:42 -08:00
2013-02-25 02:47:23 -08:00
if ( array_key_exists ( " multipleStylesheets " , $theme ) && $mode )
2012-12-16 21:10:42 -08:00
{
2013-02-25 02:47:23 -08:00
$text .= "
< tr >< td style = 'vertical-align:top;' >< b > " .TPVLAN_22. " :</ b ></ td >
< td colspan = '2' style = 'vertical-align:top' >
< table class = 'table adminlist' >
< tr >
< td class = 'center' style = 'width:10%' > " .TPVLAN_55. " </ td >
< td style = 'width:20%' > " .TPVLAN_52. " </ td >
< td class = 'left' > " .TPVLAN_7. " </ td >
</ tr > " ;
foreach ( $theme [ 'css' ] as $css )
{
$text2 = " " ;
if ( $mode == 2 ) // ADMIN MODE
{
if ( $css [ 'name' ] == " style.css " || ! vartrue ( $css [ 'info' ])) // Hide the admin css unless it has a header. eg. /* info: Default stylesheet */
{
continue ;
}
if ( ! $css [ 'nonadmin' ])
{
$text2 = "
< td class = 'center' > " .
2013-03-15 03:54:34 -07:00
$frm -> radio ( 'admincss' , $css [ 'name' ], vartrue ( $pref [ 'admincss' ]) == $css [ 'name' ]) . "
2013-02-25 02:47:23 -08:00
</ td >
< td >< label for = 'admincss' > " . $css['name'] . " </ label ></ td >
< td > " .( $css['info'] ? $css['info'] : ( $css['name'] == " admin_style . css " ? TPVLAN_23 : TPVLAN_24)). " </ td > \n " ;
}
}
if ( $mode == 1 ) // SITE-THEME Mode
{
2013-03-15 03:54:34 -07:00
if ( substr ( $css [ 'name' ], 0 , 6 ) == " admin_ " || ! strstr ( $css [ 'name' ], 'style' ))
2013-02-25 02:47:23 -08:00
{
continue ;
}
$text2 = "
< td class = 'center' >
< input type = 'radio' name = 'themecss' value = '".$css[' name ']."' " .( $pref['themecss'] == $css['name'] || (! $pref['themecss'] && $css['name'] == " style . css " ) ? " checked = 'checked' " : " " ). " />
</ td >
< td > " . $css['name'] . "
</ td >
< td > " .( $css['info'] ? $css['info'] : ( $css['name'] == " style . css " ? TPVLAN_23 : TPVLAN_24)). " </ td > \n " ;
}
$text .= ( $text2 ) ? " <tr> " . $text2 . " </tr> " : " " ;
}
$text .= " </table></td></tr> " ;
2012-12-16 21:10:42 -08:00
}
2013-02-25 02:47:23 -08:00
if ( $mode == 1 )
2006-12-02 04:36:16 +00:00
{
2013-02-25 02:47:23 -08:00
$text .= $this -> renderThemeConfig ();
2006-12-02 04:36:16 +00:00
}
2013-02-25 02:47:23 -08:00
$text .= " </table>
< div class = 'center buttons-bar' > " ;
if ( $mode == 2 ) // admin
{
$mainid = " selectmain[ " . $theme [ 'id' ] . " ] " ;
$text .= $this -> frm -> admin_button ( 'submit_adminstyle' , TPVLAN_35 , 'update' );
2013-02-28 16:12:35 +02:00
//$text .= $this->frm->admin_button($mainid, TPVLAN_10, 'other');
2013-02-25 02:47:23 -08:00
}
else // main
2012-12-16 21:10:42 -08:00
{
2013-02-25 02:47:23 -08:00
$adminid = " selectadmin[ " . $theme [ 'id' ] . " ] " ;
$text .= $this -> frm -> admin_button ( 'submit_style' , TPVLAN_35 , 'update' );
2013-02-28 16:12:35 +02:00
//$text .= $this->frm->admin_button($adminid, TPVLAN_32, 'other');
2012-12-16 21:10:42 -08:00
}
2009-10-28 23:52:56 +00:00
2013-02-25 02:47:23 -08:00
$text .= " <input type='hidden' name='curTheme' value=' " . $theme [ 'path' ] . " ' /> " ;
2009-10-28 23:52:56 +00:00
2013-02-25 02:47:23 -08:00
$text .= " </div>
</ div >
2009-10-28 23:45:46 +00:00
2013-02-25 02:47:23 -08:00
< div class = 'tab-pane' id = 'core-thememanager-help' > " . $this->renderThemeHelp (). " </ div >
2009-07-09 11:37:36 +00:00
</ div >
\n " ;
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
return $text ;
}
2009-10-28 23:45:46 +00:00
function renderPlugins ( $pluginOpts )
2009-07-06 08:45:19 +00:00
{
2009-10-31 00:36:09 +00:00
global $frm , $sql ;
2009-10-28 23:45:46 +00:00
2009-10-28 23:52:56 +00:00
// if there is 1 entry, then it's not the same array.
$tmp = ( varset ( $pluginOpts [ 'plugin' ][ 1 ])) ? $pluginOpts [ 'plugin' ] : $pluginOpts ;
2009-10-28 23:45:46 +00:00
$text = " " ;
foreach ( $tmp as $p )
2009-07-06 08:45:19 +00:00
{
2009-07-14 03:18:17 +00:00
$plug = trim ( $p [ '@attributes' ][ 'name' ]);
2009-10-28 23:45:46 +00:00
if ( plugInstalled ( $plug ))
2009-07-06 08:45:19 +00:00
{
2009-10-28 23:45:46 +00:00
$text .= $plug . " " . ADMIN_TRUE_ICON ;
2009-07-06 08:45:19 +00:00
}
else
{
2009-10-28 23:45:46 +00:00
// echo $plug;
if ( $sql -> db_Select ( " plugin " , " plugin_id " , " plugin_path = ' " . $plug . " ' LIMIT 1 " ))
{
$row = $sql -> db_Fetch ( MYSQL_ASSOC );
2009-07-14 03:18:17 +00:00
$name = " installplugin[ " . $row [ 'plugin_id' ] . " ] " ;
2009-10-28 23:45:46 +00:00
$text .= $this -> frm -> admin_button ( $name , ADLAN_121 . " " . $plug . " " , 'delete' );
2009-07-14 03:18:17 +00:00
}
else
{
2009-10-28 23:45:46 +00:00
$text .= ( varset ( $p [ '@attributes' ][ 'url' ]) && ( $p [ '@attributes' ][ 'url' ] != 'core' )) ? " <a rel='external' href=' " . $p [ '@attributes' ][ 'url' ] . " '> " . $plug . " </a> " : " <i> " . $plug . " </i> " ;
2009-07-14 03:18:17 +00:00
$text .= ADMIN_FALSE_ICON ;
}
2009-10-28 23:52:56 +00:00
2009-07-06 08:45:19 +00:00
}
2009-10-28 23:45:46 +00:00
$text .= " " ;
2009-07-06 08:45:19 +00:00
}
2009-10-28 23:45:46 +00:00
return $text ;
2009-07-06 08:45:19 +00:00
}
2009-10-28 23:45:46 +00:00
function refreshPage ( $page = e_QUERY )
2009-07-07 02:25:05 +00:00
{
2009-10-28 23:45:46 +00:00
header ( " Location: " . e_SELF . " ? " . $page );
exit ;
2009-07-07 02:25:05 +00:00
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
function themePreview ()
{
2009-10-28 23:45:46 +00:00
echo " <script type='text/javascript'>document.location.href=' " . e_BASE . " index.php?themepreview. " . $this -> id . " '</script> \n " ;
2006-12-02 04:36:16 +00:00
exit ;
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
function showPreview ()
{
2008-04-10 19:23:51 +00:00
include_lan ( e_LANGUAGEDIR . e_LANGUAGE . " /admin/lan_theme.php " );
2006-12-02 04:36:16 +00:00
$text = " <br /><div class='indent'> " . TPVLAN_1 . " .</div><br /> " ;
global $ns ;
$ns -> tablerender ( TPVLAN_2 , $text );
}
2009-10-28 23:45:46 +00:00
2009-09-17 00:13:40 +00:00
/**
2009-10-28 23:45:46 +00:00
* Set Theme as Main Theme .
2009-11-17 14:50:37 +00:00
*
* @ param string $name [ optional ] name ( folder ) of the theme to set .
* @ return boolean TRUE on success , FALSE otherwise
2009-09-17 00:13:40 +00:00
*/
2009-10-28 23:45:46 +00:00
function setTheme ( $name = '' )
2006-12-02 04:36:16 +00:00
{
2009-09-17 00:13:40 +00:00
$core = e107 :: getConfig ( 'core' );
2009-10-28 23:45:46 +00:00
$sql = e107 :: getDb ();
2012-11-28 02:22:23 -08:00
$mes = e107 :: getMessage ();
2009-09-17 00:13:40 +00:00
2009-10-28 23:45:46 +00:00
$themeArray = $this -> getThemes ( " id " );
2012-11-29 23:12:20 -08:00
$name = ( $name ) ? $name : vartrue ( $themeArray [ $this -> id ]);
2009-10-28 23:45:46 +00:00
$layout = $pref [ 'sitetheme_layouts' ] = is_array ( $this -> themeArray [ $name ][ 'layouts' ]) ? $this -> themeArray [ $name ][ 'layouts' ] : array ();
$deflayout = $this -> findDefault ( $name );
$customPages = $this -> themeArray [ $name ][ 'custompages' ];
$version = $this -> themeArray [ $name ][ 'version' ];
$core -> set ( 'sitetheme' , $name );
$core -> set ( 'themecss' , 'style.css' );
$core -> set ( 'sitetheme_layouts' , $layout );
$core -> set ( 'sitetheme_deflayout' , $deflayout );
$core -> set ( 'sitetheme_custompages' , $customPages );
$core -> set ( 'sitetheme_version' , $version );
2013-03-08 02:19:18 -08:00
// $core->set('sitetheme_releaseUrl', $this->themeArray[$name]['releaseUrl']);
2009-10-28 23:45:46 +00:00
$sql -> db_Delete ( " menus " , " menu_layout !='' " );
2012-12-15 03:49:15 -08:00
e107 :: getCache () -> clear_sys ();
2009-09-17 00:13:40 +00:00
2009-10-28 23:45:46 +00:00
if ( $core -> save ())
2009-07-14 03:18:17 +00:00
{
2009-09-17 00:13:40 +00:00
//TODO LANs
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_3 . " <b>' " . $name . " v " . $version . " '</b> " , E_MESSAGE_SUCCESS );
$mes -> add ( " Default Layout: " . $deflayout , E_MESSAGE_SUCCESS );
2012-12-17 13:22:17 -08:00
$mes -> addDebug ( " Custom Pages: " . print_a ( $customPages , true ));
2009-09-17 00:13:40 +00:00
2012-12-06 21:41:53 -08:00
$med = e107 :: getMedia ();
$med -> import ( '_common_image' , e_THEME . $name , " ^.*?logo.*?( \ .png| \ .jpeg| \ .jpg| \ .JPG| \ .GIF| \ .PNG) $ " );
2013-03-08 02:19:18 -08:00
$med -> import ( '_common_image' , e_THEME . $name , '' , 'min-size=20000' );
2013-03-08 04:46:02 -08:00
$this -> installContentCheck ( $name );
2013-03-08 02:19:18 -08:00
2012-12-06 21:41:53 -08:00
2009-10-28 23:45:46 +00:00
$this -> theme_adminlog ( '01' , $name . ', style.css' );
2013-03-08 04:46:02 -08:00
2009-09-17 00:13:40 +00:00
return TRUE ;
2009-07-14 03:18:17 +00:00
}
else
{
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_3 . " <b>' " . $name . " '</b> " , E_MESSAGE_ERROR );
2009-09-17 00:13:40 +00:00
return FALSE ;
2009-07-14 03:18:17 +00:00
}
2009-10-28 23:52:56 +00:00
2006-12-02 04:36:16 +00:00
}
2013-03-08 04:46:02 -08:00
function installContentCheck ( $name )
{
$file = e_THEME . $name . " /install/install.xml " ;
$frm = e107 :: getForm ();
if ( ! is_readable ( $file ))
{
return false ;
}
$mes = e107 :: getMessage ();
$xmlArray = e107 :: getXml () -> loadXMLfile ( $file , 'advanced' );
$text = "
< form action = '".e_SELF."' method = 'post' >
< div > This theme would like to make the following changes to your database :
< ul > " ;
$lng = e107 :: getLanguage ();
foreach ( $xmlArray [ 'database' ][ 'dbTable' ] as $key => $val )
{
$count = count ( $val [ 'item' ]);
$data = array ( 'x' => $count , 'y' => $val [ '@attributes' ][ 'name' ]);
$lan = " Replace/Overwrite [x] record(s) in your [y] table. " ;
$text .= " <li> " . $lng -> translate ( $lan , $data ) . " </li> " ;
}
$text .= " </ul>
" . $frm->admin_button ('installContent', $name , 'warning', " Agree " ). "
" . $frm->admin_button ('dismiss',0, 'cancel', 'Dismiss'). "
</ div >
</ form >
" ;
// $text .= print_a($xmlArray, true);
$mes -> addWarning ( $text );
}
function installContent ( $name )
{
$mes = e107 :: getMessage ();
$file = e_THEME . $name . " /install/install.xml " ;
e107 :: getXml () -> e107Import ( $file , 'replace' , true , false ); // Overwrite specific core pref and tables entries.
$mes -> addSuccess ( LAN_UPDATED );
}
2009-10-28 23:45:46 +00:00
2009-07-05 11:57:40 +00:00
function findDefault ( $theme )
{
if ( varset ( $_POST [ 'layout_default' ]))
{
2009-10-28 23:45:46 +00:00
return $_POST [ 'layout_default' ];
2009-07-05 11:57:40 +00:00
}
2009-10-28 23:45:46 +00:00
$l = $this -> themeArray [ $theme ];
2009-07-12 14:44:57 +00:00
if ( ! $l )
{
2009-10-28 23:45:46 +00:00
$l = $this -> getThemeInfo ( $theme );
2009-07-12 14:44:57 +00:00
}
2009-10-28 23:45:46 +00:00
2009-07-08 06:58:00 +00:00
if ( $l [ 'layouts' ])
2009-07-05 11:57:40 +00:00
{
2009-10-28 23:45:46 +00:00
foreach ( $l [ 'layouts' ] as $key => $val )
2009-07-05 11:57:40 +00:00
{
2009-10-28 23:45:46 +00:00
if ( isset ( $val [ '@attributes' ][ 'default' ]) && ( $val [ '@attributes' ][ 'default' ] == " true " ))
2009-07-08 06:58:00 +00:00
{
2009-10-28 23:45:46 +00:00
return $key ;
2009-07-08 06:58:00 +00:00
}
2009-07-05 11:57:40 +00:00
}
}
2009-07-12 14:44:57 +00:00
else
{
2009-10-28 23:45:46 +00:00
return " " ;
2009-07-12 14:44:57 +00:00
}
2009-07-05 11:57:40 +00:00
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
function setAdminTheme ()
{
2012-11-28 02:22:23 -08:00
global $pref , $e107cache ;
$ns = e107 :: getRender ();
$mes = e107 :: getMessage ();
2009-10-28 23:45:46 +00:00
$themeArray = $this -> getThemes ( " id " );
$pref [ 'admintheme' ] = $themeArray [ $this -> id ];
2013-03-15 03:54:34 -07:00
$pref [ 'admincss' ] = file_exists ( e_THEME . $pref [ 'admintheme' ] . '/dark_style.css' ) ? 'dark_style.css' : 'light_style.css' ;
2008-08-25 10:46:46 +00:00
$e107cache -> clear_sys ();
2009-07-14 03:18:17 +00:00
if ( save_prefs ())
{
2009-10-28 23:52:56 +00:00
// Default Message
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_40 . " <b>' " . $themeArray [ $this -> id ] . " '</b> " , E_MESSAGE_SUCCESS );
2009-10-28 23:45:46 +00:00
$this -> theme_adminlog ( '02' , $pref [ 'admintheme' ] . ', ' . $pref [ 'admincss' ]);
2009-07-14 03:18:17 +00:00
}
2009-10-28 23:45:46 +00:00
2009-10-31 00:36:09 +00:00
// $ns->tablerender("Admin Message", "<br /><div style='text-align:center;'>".TPVLAN_40." <b>'".$themeArray[$this -> id]."'</b>.</div><br />");
2009-10-28 23:45:46 +00:00
// $this->showThemes('admin');
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
function setStyle ()
{
2012-11-28 02:22:23 -08:00
global $pref , $e107cache ;
$sql = e107 :: getDb ();
$ns = e107 :: getRender ();
$mes = e107 :: getMessage ();
2009-08-17 14:40:23 +00:00
//TODO adminlog
2009-10-28 23:45:46 +00:00
e107 :: getConfig () -> setPosted ( 'themecss' , $_POST [ 'themecss' ]) -> setPosted ( 'image_preload' , $_POST [ 'image_preload' ]) -> setPosted ( 'sitetheme_deflayout' ,
$_POST [ 'layout_default' ]);
2009-08-17 14:40:23 +00:00
$msg = $this -> setThemeConfig ();
if ( $msg )
2009-07-14 03:18:17 +00:00
{
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_37 , E_MESSAGE_SUCCESS );
2009-08-17 14:40:23 +00:00
if ( is_array ( $msg ))
2012-11-28 02:22:23 -08:00
$mes -> add ( $msg [ 0 ], $msg [ 1 ]);
2009-07-14 03:18:17 +00:00
}
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
2006-12-02 04:36:16 +00:00
function setAdminStyle ()
{
2012-11-28 02:22:23 -08:00
global $pref , $e107cache ;
$ns = e107 :: getRender ();
$mes = e107 :: getMessage ();
2009-08-17 14:40:23 +00:00
/* $pref [ 'admincss' ] = $_POST [ 'admincss' ];
2009-10-28 23:45:46 +00:00
$pref [ 'adminstyle' ] = $_POST [ 'adminstyle' ];
$e107cache -> clear_sys ();
if ( save_prefs ())
{
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_43 , E_MESSAGE_SUCCESS );
2009-10-31 00:36:09 +00:00
$this -> theme_adminlog ( '04' , $pref [ 'adminstyle' ] . ', ' . $pref [ 'admincss' ]);
2009-10-28 23:45:46 +00:00
}
else
{
2012-11-28 02:22:23 -08:00
$mes -> add ( TPVLAN_43 , E_MESSAGE_ERROR );
2009-10-28 23:45:46 +00:00
} */
2009-07-06 09:17:27 +00:00
2009-10-28 23:45:46 +00:00
2009-08-17 14:40:23 +00:00
//TODO adminlog
2009-10-28 23:45:46 +00:00
e107 :: getConfig () -> setPosted ( 'admincss' , $_POST [ 'admincss' ]) -> setPosted ( 'adminstyle' , $_POST [ 'adminstyle' ]);
2009-08-17 14:40:23 +00:00
return ( e107 :: getConfig () -> dataHasChangedFor ( 'admincss' ) || e107 :: getConfig () -> dataHasChangedFor ( 'adminstyle' ));
2006-12-02 04:36:16 +00:00
}
2009-10-28 23:45:46 +00:00
function SetCustomPages ( $array )
2009-07-09 08:31:38 +00:00
{
2009-10-28 23:45:46 +00:00
if ( ! is_array ( $array ))
{
return ;
}
2010-01-10 16:24:09 +00:00
$newprefs = array ();
foreach ( $array as $key => $newpref )
{
$newpref = trim ( str_replace ( " \r \n " , " \n " , $newpref ));
$newprefs [ $key ] = array_filter ( explode ( " \n " , $newpref ));
$newprefs [ $key ] = array_unique ( $newprefs [ $key ]);
}
2009-10-28 23:45:46 +00:00
2009-08-17 14:40:23 +00:00
if ( e107 :: getPref ( 'sitetheme_deflayout' ) == 'legacyCustom' )
2009-07-09 08:31:38 +00:00
{
2009-08-17 14:40:23 +00:00
$newprefs [ 'legacyCustom' ] = array ();
2009-07-09 08:31:38 +00:00
}
2010-01-10 16:24:09 +00:00
2009-08-17 14:40:23 +00:00
//setPosted couldn't be used here - sitetheme_custompages structure is not defined
e107 :: getConfig () -> set ( 'sitetheme_custompages' , e107 :: getParser () -> toDB ( $newprefs ));
2009-07-09 08:31:38 +00:00
}
2009-10-28 23:45:46 +00:00
2008-11-02 10:28:30 +00:00
// Log event to admin log
2009-10-28 23:45:46 +00:00
function theme_adminlog ( $msg_num = '00' , $woffle = '' )
2008-11-02 10:28:30 +00:00
{
2009-09-17 00:13:40 +00:00
if ( $this -> noLog )
{
return ;
}
2009-10-31 00:36:09 +00:00
global $pref , $admin_log ;
2008-11-02 10:28:30 +00:00
// if (!varset($pref['admin_log_log']['admin_banlist'],0)) return;
2009-10-28 23:45:46 +00:00
$admin_log -> log_event ( 'THEME_' . $msg_num , $woffle , E_LOG_INFORMATIVE , '' );
2008-11-02 10:28:30 +00:00
}
2009-10-28 23:45:46 +00:00
2008-11-17 07:17:23 +00:00
function parse_theme_php ( $path )
{
2009-10-28 23:45:46 +00:00
$CUSTOMPAGES = " " ;
$fp = fopen ( e_THEME . $path . " /theme.php " , " r " );
$themeContents = fread ( $fp , filesize ( e_THEME . $path . " /theme.php " ));
2008-11-17 07:17:23 +00:00
fclose ( $fp );
2009-10-28 23:45:46 +00:00
2008-11-17 07:17:23 +00:00
preg_match ( '/themename(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'name' ] = varset ( $match [ 3 ], '' );
2008-11-17 07:17:23 +00:00
preg_match ( '/themeversion(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'version' ] = varset ( $match [ 3 ], '' );
2008-11-17 07:17:23 +00:00
preg_match ( '/themeauthor(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'author' ] = varset ( $match [ 3 ], '' );
2008-11-17 07:17:23 +00:00
preg_match ( '/themeemail(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'email' ] = varset ( $match [ 3 ], '' );
2008-11-17 07:17:23 +00:00
preg_match ( '/themewebsite(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'website' ] = varset ( $match [ 3 ], '' );
2008-11-17 07:17:23 +00:00
preg_match ( '/themedate(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'date' ] = varset ( $match [ 3 ], '' );
2008-11-17 07:17:23 +00:00
preg_match ( '/themeinfo(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-28 23:45:46 +00:00
$themeArray [ 'info' ] = varset ( $match [ 3 ], '' );
preg_match ( '/xhtmlcompliant(\s*?=\s*?)(\S*?);/si' , $themeContents , $match );
2008-11-17 07:17:23 +00:00
$xhtml = strtolower ( $match [ 2 ]);
2009-07-24 12:54:39 +00:00
$themeArray [ 'xhtmlcompliant' ] = ( $xhtml == " true " ? " 1.1 " : false );
2009-10-28 23:45:46 +00:00
2008-11-17 07:17:23 +00:00
preg_match ( '/csscompliant(\s*?=\s*?)(\S*?);/si' , $themeContents , $match );
$css = strtolower ( $match [ 2 ]);
2009-07-24 12:54:39 +00:00
$themeArray [ 'csscompliant' ] = ( $css == " true " ? " 2.1 " : false );
2009-10-28 23:45:46 +00:00
/* preg_match ( '/CUSTOMPAGES(\s*?=\s*?)("|\')(.*?)("|\');/si' , $themeContents , $match );
2009-10-31 00:36:09 +00:00
$themeArray [ 'custompages' ] = array_filter ( explode ( " " , $match [ 3 ])); */
2009-10-28 23:45:46 +00:00
$themeContentsArray = explode ( " \n " , $themeContents );
2009-11-09 00:13:59 +00:00
preg_match_all ( " # \\ $ " . " CUSTOMHEADER \ [( \" |')(.*?)('| \" ) \ ].*?# " , $themeContents , $match );
$customHeaderArray = $match [ 2 ];
preg_match_all ( " # \\ $ " . " CUSTOMFOOTER \ [( \" |')(.*?)('| \" ) \ ].*?# " , $themeContents , $match );
2009-11-09 00:27:43 +00:00
$customFooterArray = $match [ 2 ];
2009-10-28 23:45:46 +00:00
if ( ! $themeArray [ 'name' ])
2008-11-17 07:17:23 +00:00
{
2008-12-03 18:09:00 +00:00
unset ( $themeArray );
}
2009-07-12 14:44:57 +00:00
2009-10-28 23:45:46 +00:00
$lays [ 'legacyDefault' ][ '@attributes' ] = array ( 'title' => 'Default' ,
'plugins' => '' ,
'default' => 'true' );
2009-10-28 23:52:56 +00:00
// load custompages from theme.php only when theme.xml doesn't exist.
if ( ! file_exists ( e_THEME . $path . " theme.xml " ))
2009-07-07 16:04:51 +00:00
{
2009-11-09 00:27:43 +00:00
foreach ( $themeContentsArray as $line )
{
if ( strstr ( $line , " CUSTOMPAGES " ))
{
eval ( str_replace ( " $ " , " \$ " , $line )); // detect arrays also.
}
}
2009-11-09 00:13:59 +00:00
2009-10-28 23:45:46 +00:00
if ( is_array ( $CUSTOMPAGES ))
2009-07-12 14:44:57 +00:00
{
2009-10-28 23:45:46 +00:00
foreach ( $CUSTOMPAGES as $key => $val )
{
$themeArray [ 'custompages' ][ $key ] = explode ( " " , $val );
}
2009-07-12 14:44:57 +00:00
}
elseif ( $CUSTOMPAGES )
{
2009-10-28 23:45:46 +00:00
$themeArray [ 'custompages' ][ 'legacyCustom' ] = explode ( " " , $CUSTOMPAGES );
$lays [ 'legacyCustom' ][ '@attributes' ] = array ( 'title' => 'Custom' ,
'plugins' => '' );
2009-07-07 16:04:51 +00:00
}
2009-11-09 00:13:59 +00:00
foreach ( $customHeaderArray as $tm )
{
$lays [ $tm ][ '@attributes' ] = array ( 'title' => str_replace ( " _ " , " " , $tm ),
'plugins' => '' );
}
foreach ( $customFooterArray as $tm )
{
$lays [ $tm ][ '@attributes' ] = array ( 'title' => str_replace ( " _ " , " " , $tm ),
'plugins' => '' );
}
2009-07-07 16:04:51 +00:00
}
2009-11-09 00:13:59 +00:00
2009-07-06 05:59:42 +00:00
$themeArray [ 'path' ] = $path ;
2009-07-09 08:31:38 +00:00
$themeArray [ 'layouts' ] = $lays ;
2012-12-11 00:34:08 -08:00
if ( file_exists ( e_THEME . $path . " /preview.jpg " ))
{
$themeArray [ 'preview' ] = array ( " preview.jpg " );
2013-01-30 16:51:06 -08:00
$themeArray [ 'thumbnail' ] = " preview.jpg " ;
2012-12-11 00:34:08 -08:00
}
if ( file_exists ( e_THEME . $path . " /preview.png " ))
{
$themeArray [ 'preview' ] = array ( " preview.png " );
2013-01-30 16:51:06 -08:00
$themeArray [ 'thumbnail' ] = " preview.png " ;
2012-12-11 00:34:08 -08:00
}
2009-11-09 00:13:59 +00:00
// echo "<h2>".$themeArray['name']."</h2>";
// print_a($lays);
2009-10-28 23:45:46 +00:00
return $themeArray ;
2008-11-17 07:17:23 +00:00
}
2009-10-28 23:45:46 +00:00
function parse_theme_xml ( $path )
2008-11-17 07:17:23 +00:00
{
2009-11-05 09:15:19 +00:00
$tp = e107 :: getParser ();
$xml = e107 :: getXml ();
// loadLanFiles($path, 'admin'); // Look for LAN files on default paths
2009-10-28 23:52:56 +00:00
// layout should always be an array.
2012-12-11 00:34:08 -08:00
$xml -> setOptArrayTags ( 'layout,screenshots/image' );
2009-10-28 23:45:46 +00:00
$xml -> setOptStringTags ( 'menuPresets,customPages' );
2012-12-11 00:34:08 -08:00
2008-11-17 07:17:23 +00:00
$vars = $xml -> loadXMLfile ( e_THEME . $path . '/theme.xml' , true , true );
2009-10-28 23:45:46 +00:00
2013-01-30 16:51:06 -08:00
$vars [ 'name' ] = varset ( $vars [ '@attributes' ][ 'name' ]);
$vars [ 'version' ] = varset ( $vars [ '@attributes' ][ 'version' ]);
$vars [ 'date' ] = varset ( $vars [ '@attributes' ][ 'date' ]);
$vars [ 'compatibility' ] = varset ( $vars [ '@attributes' ][ 'compatibility' ]);
$vars [ 'releaseUrl' ] = varset ( $vars [ '@attributes' ][ 'releaseUrl' ]);
$vars [ 'email' ] = varset ( $vars [ 'author' ][ '@attributes' ][ 'email' ]);
$vars [ 'website' ] = varset ( $vars [ 'author' ][ '@attributes' ][ 'url' ]);
$vars [ 'author' ] = varset ( $vars [ 'author' ][ '@attributes' ][ 'name' ]);
$vars [ 'info' ] = varset ( $vars [ 'description' ]);
$vars [ 'category' ] = $this -> getThemeCategory ( varset ( $vars [ 'category' ]));
2009-10-28 23:45:46 +00:00
$vars [ 'xhtmlcompliant' ] = varset ( $vars [ 'compliance' ][ '@attributes' ][ 'xhtml' ]);
2013-01-30 16:51:06 -08:00
$vars [ 'csscompliant' ] = varset ( $vars [ 'compliance' ][ '@attributes' ][ 'css' ]);
$vars [ 'path' ] = $path ;
2009-09-17 00:13:40 +00:00
$vars [ '@attributes' ][ 'default' ] = ( varset ( $vars [ '@attributes' ][ 'default' ]) && strtolower ( $vars [ '@attributes' ][ 'default' ]) == 'true' ) ? 1 : 0 ;
2013-01-30 16:51:06 -08:00
$vars [ 'preview' ] = varset ( $vars [ 'screenshots' ][ 'image' ]);
$vars [ 'thumbnail' ] = $vars [ 'preview' ][ 0 ];
2009-09-17 00:13:40 +00:00
2012-12-11 00:34:08 -08:00
unset ( $vars [ 'authorEmail' ], $vars [ 'authorUrl' ], $vars [ 'xhtmlCompliant' ], $vars [ 'cssCompliant' ], $vars [ 'description' ], $vars [ 'screenshots' ]);
2009-09-17 00:13:40 +00:00
2009-10-28 23:45:46 +00:00
// Compile layout information into a more usable format.
2009-09-17 00:13:40 +00:00
2009-10-28 23:45:46 +00:00
$custom = array ();
2013-03-15 05:28:27 -07:00
/*
2009-10-28 23:45:46 +00:00
foreach ( $vars [ 'layouts' ] as $layout )
2008-11-17 07:17:23 +00:00
{
2009-10-28 23:45:46 +00:00
foreach ( $layout as $key => $val )
2008-11-17 07:17:23 +00:00
{
2009-09-17 00:13:40 +00:00
$name = $val [ '@attributes' ][ 'name' ];
unset ( $val [ '@attributes' ][ 'name' ]);
$lays [ $name ] = $val ;
2013-03-15 05:28:27 -07:00
2012-12-16 21:10:42 -08:00
2009-09-17 00:13:40 +00:00
if ( isset ( $val [ 'customPages' ]))
2009-07-06 08:45:19 +00:00
{
2013-03-15 05:28:27 -07:00
$cusArray = explode ( " " , $val [ 'customPages' ]);
$custom [ $name ] = array_filter ( $cusArray );
2009-07-07 16:04:51 +00:00
}
2012-12-16 21:10:42 -08:00
if ( isset ( $val [ 'custompages' ]))
{
2013-03-15 05:28:27 -07:00
$cusArray = explode ( " " , $val [ 'custompages' ]);
2012-12-16 21:10:42 -08:00
$custom [ $name ] = array_filter ( explode ( " " , $val [ 'custompages' ]));
}
2009-07-06 08:45:19 +00:00
}
2009-10-28 23:45:46 +00:00
}
2013-03-15 05:28:27 -07:00
*/
foreach ( $vars [ 'layouts' ][ 'layout' ] as $k => $val )
{
$name = $val [ '@attributes' ][ 'name' ];
unset ( $val [ '@attributes' ][ 'name' ]);
$lays [ $name ] = $val ;
if ( is_string ( $val [ 'custompages' ]))
{
$custom [ $name ] = array_filter ( explode ( " " , $val [ 'custompages' ]));
}
}
2009-10-28 23:45:46 +00:00
2012-12-16 21:10:42 -08:00
$vars [ 'layouts' ] = $lays ;
$vars [ 'path' ] = $path ;
$vars [ 'custompages' ] = $custom ;
2013-01-30 16:51:06 -08:00
2012-12-16 21:10:42 -08:00
$mes = e107 :: getMessage (); // DEBUG
2013-03-15 05:28:27 -07:00
if ( $path == " bootstrap " )
2012-11-26 03:23:20 -08:00
{
2013-03-15 05:28:27 -07:00
2012-11-26 03:23:20 -08:00
$mes -> addDebug ( " <h2> " . $path . " </h2> " );
$mes -> addDebug ( print_a ( $vars , true ));
$mes -> addDebug ( " <hr /> " );
}
2013-03-15 05:28:27 -07:00
2012-12-11 00:34:08 -08:00
2009-10-28 23:45:46 +00:00
return $vars ;
2008-11-17 07:17:23 +00:00
}
2009-10-28 23:52:56 +00:00
2009-08-27 12:58:29 +00:00
}
2009-08-17 12:48:52 +00:00
2009-08-27 12:58:29 +00:00
interface e_theme_config
{
/**
* Triggered on theme settings submit
* Catch and save theme configuration
*/
public function process ();
2009-10-28 23:45:46 +00:00
2009-08-27 12:58:29 +00:00
/**
* Theme configuration user interface
2009-10-28 23:45:46 +00:00
* Print out config fields
2009-08-27 12:58:29 +00:00
*/
public function config ();
/**
* Theme help tab
2009-10-28 23:45:46 +00:00
* Print out theme help content
2009-08-27 12:58:29 +00:00
*/
public function help ();
2007-01-17 20:47:41 +00:00
}