⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 admin.templates.php

📁 mambo的cms源代码
💻 PHP
字号:
<?php/*** @version $Id: admin.templates.php,v 1.7 2005/02/16 14:31:26 kochp Exp $* @package Mambo* @subpackage Templates* @copyright (C) 2000 - 2005 Miro International Pty Ltd* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL* Mambo is Free Software*//** ensure this file is being included by a parent file */defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );// ensure user has access to this functionif (!$acl->acl_check( 'administration', 'manage', 'users', $GLOBALS['my']->usertype, 'components', 'com_templates' )) {	mosRedirect( 'index2.php', _NOT_AUTH );}require_once( $mainframe->getPath( 'admin_html' ) );require_once( $mosConfig_absolute_path .'/administrator/components/com_templates/admin.templates.class.php' );// XML libraryrequire_once( $mosConfig_absolute_path .'/includes/domit/xml_domit_lite_include.php' );$task = trim( strtolower( mosGetParam( $_REQUEST, "task", "" ) ) );$cid = mosGetParam( $_REQUEST, "cid", array(0) );$client = mosGetParam( $_REQUEST, 'client', '' );if (!is_array( $cid )) {	$cid = array(0);}switch ($task) {	case 'new':		mosRedirect ( 'index2.php?option=com_installer&element=template&client='. $client );		break;	case 'edit_source':		editTemplateSource( $cid[0], $option, $client );		break;	case 'save_source':		saveTemplateSource( $option, $client );		break;	case 'edit_css':		editTemplateCSS( $cid[0], $option, $client );		break;	case 'save_css':		saveTemplateCSS( $option, $client );		break;	case 'remove':		removeTemplate( $cid[0], $option, $client );		break;	case 'publish':		defaultTemplate( $cid[0], $option, $client );		break;	case 'default':		defaultTemplate( $cid[0], $option, $client );		break;	case 'assign':		assignTemplate( $cid[0], $option, $client );		break;	case 'save_assign':		saveTemplateAssign( $option, $client );		break;	case 'cancel':		mosRedirect( 'index2.php?option='. $option .'&client='. $client );		break;	case 'positions':	    editPositions( $option );	    break;	case 'save_positions':	    savePositions( $option );	    break;	default:		viewTemplates( $option, $client );		break;}/*** Compiles a list of installed, version 4.5+ templates** Based on xml files found.  If no xml file found the template* is ignored*/function viewTemplates( $option, $client ) {	global $database, $mainframe;	global $mosConfig_absolute_path, $mosConfig_list_limit;	$limit = $mainframe->getUserStateFromRequest( 'viewlistlimit', 'limit', $mosConfig_list_limit );	$limitstart = $mainframe->getUserStateFromRequest( "view{$option}limitstart", 'limitstart', 0 );	if ($client == 'admin') {		$templateBaseDir = mosPathName( $mosConfig_absolute_path . '/administrator/templates' );	} else {		$templateBaseDir = mosPathName( $mosConfig_absolute_path . '/templates' );	}	$rows = array();	// Read the template dir to find templates	$templateDirs		= mosReadDirectory($templateBaseDir);	$id = intval( $client == 'admin' );	if ($client=='admin') {		$database->setQuery( "SELECT template FROM #__templates_menu WHERE client_id='1' AND menuid='0'" );	} else {		$database->setQuery( "SELECT template FROM #__templates_menu WHERE client_id='0' AND menuid='0'" );	}	$cur_template = $database->loadResult();	$rowid = 0;	// Check that the directory contains an xml file	foreach($templateDirs as $templateDir) {		$dirName = mosPathName($templateBaseDir . $templateDir);		$xmlFilesInDir = mosReadDirectory($dirName,'.xml$');		foreach($xmlFilesInDir as $xmlfile) {			// Read the file to see if it's a valid template XML file			$xmlDoc =& new DOMIT_Lite_Document();			$xmlDoc->resolveErrors( true );			if (!$xmlDoc->loadXML( $dirName . $xmlfile, false, true )) {				continue;			}			$element = &$xmlDoc->documentElement;			if ($element->getTagName() != 'mosinstall') {				continue;			}			if ($element->getAttribute( 'type' ) != 'template') {				continue;			}			$row = new StdClass();			$row->id = $rowid;			$row->directory = $templateDir;			$element = &$xmlDoc->getElementsByPath('name', 1 );			$row->name = $element->getText();			$element = &$xmlDoc->getElementsByPath('creationDate', 1);			$row->creationdate = $element ? $element->getText() : 'Unknown';			$element = &$xmlDoc->getElementsByPath('author', 1);			$row->author = $element ? $element->getText() : 'Unknown';			$element = &$xmlDoc->getElementsByPath('copyright', 1);			$row->copyright = $element ? $element->getText() : '';			$element = &$xmlDoc->getElementsByPath('authorEmail', 1);			$row->authorEmail = $element ? $element->getText() : '';			$element = &$xmlDoc->getElementsByPath('authorUrl', 1);			$row->authorUrl = $element ? $element->getText() : '';			$element = &$xmlDoc->getElementsByPath('version', 1);			$row->version = $element ? $element->getText() : '';			// Get info from db			if ($cur_template == $templateDir) {				$row->published	= 1;			} else {				$row->published = 0;			}			$row->checked_out = 0;			$row->mosname = strtolower( str_replace( ' ', '_', $row->name ) );			// check if template is assigned			$database->setQuery( "SELECT count(*) FROM #__templates_menu WHERE client_id='0' AND template='$row->directory' AND menuid<>'0'" );			$row->assigned = $database->loadResult() ? 1 : 0;			$rows[] = $row;			$rowid++;		}	}	require_once( $GLOBALS['mosConfig_absolute_path'] . '/administrator/includes/pageNavigation.php' );	$pageNav = new mosPageNav( count( $rows ), $limitstart, $limit );	$rows = array_slice( $rows, $pageNav->limitstart, $pageNav->limit );	HTML_templates::showTemplates( $rows, $pageNav, $option, $client );}/*** Publish, or make current, the selected template*/function defaultTemplate( $p_tname, $option, $client ) {	global $database;	if ($client=='admin') {		$database->setQuery("DELETE FROM #__templates_menu WHERE client_id='1' AND menuid='0'");		$database->query();		$database->setQuery("INSERT INTO #__templates_menu SET client_id='1', template='$p_tname', menuid='0'");		$database->query();	} else {		$database->setQuery("DELETE FROM #__templates_menu WHERE client_id='0' AND menuid='0'");		$database->query();		$database->setQuery("INSERT INTO #__templates_menu SET client_id='0', template='$p_tname', menuid='0'");		$database->query();		$_SESSION['cur_template'] = $p_tname;	}	mosRedirect('index2.php?option='. $option .'&client='. $client);}/*** Remove the selected template*/function removeTemplate( $cid, $option, $client ) {	global $database, $adminLanguage;	$client_id = $client=='admin' ? 1 : 0;	$database->setQuery("SELECT template FROM #__templates_menu WHERE client_id='$client_id' AND menuid='0'");	$cur_template = $database->loadResult();	if ($cur_template == $cid) {		echo "<script>alert(\"". $adminLanguage->A_COMP_TEMP_CANNOT ."\"); window.history.go(-1); </script>\n";		exit();	}	// Un-assign	$database->setQuery( "DELETE FROM #__templates_menu WHERE template='$cid' AND client_id='$client_id' AND menuid<>'0'" );	$database->query();	mosRedirect( 'index2.php?option=com_installer&element=template&client='. $client .'&task=remove&cid[]='. $cid );}function editTemplateSource( $p_tname, $option, $client ) {	global $mosConfig_absolute_path, $adminLanguage;	if ( $client == 'admin' ) {		$file = $mosConfig_absolute_path .'/administrator/templates/'. $p_tname .'/index.php';	} else {		$file = $mosConfig_absolute_path .'/templates/'. $p_tname .'/index.php';	}	if ( $fp = fopen( $file, 'r' ) ) {		$content = fread( $fp, filesize( $file ) );		$content = htmlspecialchars( $content );		HTML_templates::editTemplateSource( $p_tname, $content, $option, $client );	} else {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_NOT_OPEN .' '. $file );	}}function saveTemplateSource( $option, $client ) {	global $mosConfig_absolute_path, $adminLanguage;	$template = mosGetParam( $_POST, 'template', '' );	$filecontent = mosGetParam( $_POST, 'filecontent', '', _MOS_ALLOWHTML );	if ( !$template ) {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_SPEC );	}	if ( !$filecontent ) {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_EMPTY );	}	if ( $client == 'admin' ) {		$file = $mosConfig_absolute_path .'/administrator/templates/'. $template .'/index.php';	} else {		$file = $mosConfig_absolute_path .'/templates/'. $template .'/index.php';	}    $enable_write = mosGetParam($_POST,'enable_write',0);	$oldperms = fileperms($file);	if ($enable_write) @chmod($file, $oldperms | 0222);	clearstatcache();	if ( is_writable( $file ) == false ) {		mosRedirect( 'index2.php?option='. $option , 'Operation failed: '. $file .' is not writable.' );	}	if ( $fp = fopen ($file, 'w' ) ) {		fputs( $fp, stripslashes( $filecontent ), strlen( $filecontent ) );		fclose( $fp );		if ($enable_write) {			@chmod($file, $oldperms);		} else {			if (mosGetParam($_POST,'disable_write',0))				@chmod($file, $oldperms & 0777555);		} // if		mosRedirect( 'index2.php?option='. $option .'&client='. $client );	} else {		if ($enable_write) @chmod($file, $oldperms);		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_WRT );	}}function editTemplateCSS( $p_tname, $option, $client ) {	global $mosConfig_absolute_path, $adminLanguage;	if ( $client == 'admin' ) {		$file = $mosConfig_absolute_path .'/administrator/templates/'. $p_tname .(!$adminLanguage->RTLsupport ? '/css/template_css.css' : '/css/template_css_rtl.css'); /* rtl change */	} else {		$file = $mosConfig_absolute_path .'/templates/'. $p_tname .'/css/template_css.css';	}	if ($fp = fopen( $file, 'r' )) {		$content = fread( $fp, filesize( $file ) );		$content = htmlspecialchars( $content );		HTML_templates::editCSSSource( $p_tname, $content, $option, $client );	} else {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_NOT_OPEN .' '. $file );	}}function saveTemplateCSS( $option, $client ) {	global $mosConfig_absolute_path, $adminLanguage;	$template = trim( mosGetParam( $_POST, 'template', '' ) );	$filecontent = mosGetParam( $_POST, 'filecontent', '', _MOS_ALLOWHTML );	if ( !$template ) {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_SPEC );	}	if ( !$filecontent ) {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_EMPTY );	}	if ( $client == 'admin' ) {		$file = $mosConfig_absolute_path .'/administrator/templates/'. $template .(!$adminLanguage->RTLsupport ? '/css/template_css.css' : '/css/template_css_rtl.css'); /* rtl change */	} else {		$file = $mosConfig_absolute_path .'/templates/'. $template .'/css/template_css.css';	}    $enable_write = mosGetParam($_POST,'enable_write',0);	$oldperms = fileperms($file);	if ($enable_write) @chmod($file, $oldperms | 0222);	clearstatcache();	if ( is_writable( $file ) == false ) {		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_NOT );	}	if ($fp = fopen ($file, 'w')) {		fputs( $fp, stripslashes( $filecontent ) );		fclose( $fp );		if ($enable_write) {			@chmod($file, $oldperms);		} else {			if (mosGetParam($_POST,'disable_write',0))				@chmod($file, $oldperms & 0777555);		} // if		mosRedirect( 'index2.php?option='. $option );	} else {		if ($enable_write) @chmod($file, $oldperms);		mosRedirect( 'index2.php?option='. $option .'&client='. $client, $adminLanguage->A_COMP_TEMP_FLD_WRT );	}}function assignTemplate( $p_tname, $option, $client ) {	global $database;	// get selected pages for $menulist	if ( $p_tname ) {		$database->setQuery( "SELECT menuid AS value FROM #__templates_menu WHERE client_id='0' AND template='$p_tname'" );		$lookup = $database->loadObjectList();	}	// build the html select list	$menulist = mosAdminMenus::MenuLinks( $lookup, 0, 1 );	HTML_templates::assignTemplate( $p_tname, $menulist, $option, $client );}function saveTemplateAssign( $option, $client ) {	global $database;	$menus = mosGetParam( $_POST, 'selections', array() );	$template = mosGetParam( $_POST, 'template', '' );	$database->setQuery( "DELETE FROM #__templates_menu WHERE client_id='0' AND template='$template' AND menuid<>'0'" );	$database->query();	if ( !in_array( '', $menus ) ) {		foreach ( $menus as $menuid ){			// If 'None' is not in array			if ( $menuid <> -999 ) {				// check if there is already a template assigned to this menu item				$database->setQuery( "DELETE FROM #__templates_menu WHERE client_id='0' AND menuid='$menuid'" );				$database->query();				$database->setQuery( "INSERT INTO #__templates_menu SET client_id='0', template='$template', menuid='$menuid'" );				$database->query();			}		}	}	mosRedirect( 'index2.php?option='. $option .'&client='. $client );}/***/function editPositions( $option ) {	global $database;	$database->setQuery( "SELECT * FROM #__template_positions" );	$positions = $database->loadObjectList();	HTML_templates::editPositions( $positions, $option );}/***/function savePositions( $option ) {	global $database, $adminLanguage;	$positions = mosGetParam( $_POST, 'position', array() );	$descriptions = mosGetParam( $_POST, 'description', array() );	$query = 'DELETE FROM #__template_positions';	$database->setQuery( $query );	$database->query();	foreach ($positions as $id=>$position) {	    $position = trim( $database->getEscaped( $position ) );	    $description = mosGetParam( $descriptions, $id, '' );		if ($position != '') {		    $id = intval( $id );		    $query = "INSERT INTO #__template_positions"				. "\nVALUES ($id,'$position','$description')";			$database->setQuery( $query );			$database->query();		}	}	mosRedirect( 'index2.php?option='. $option .'&task=positions', $adminLanguage->A_COMP_TEMP_SAVED );}?>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -