[code.view]

[top] / php / GetSimpleCMS-3.2.3 / admin / theme-edit.php

     <?php 
     /**
      * Edit Theme
      *
      * Allows you to edit a theme file
      *
      * @package GetSimple
      * @subpackage Theme
      */
     
     # setup inclusions
     $load['plugin'] = true;
     include('inc/common.php');
     
     # variable settings
     login_cookie_check();
     $theme_options 		= ''; 
     $template_file 		= ''; 
     $template 			= $TEMPLATE; 
     $theme_templates 	= '';
     
     # were changes submitted?
     if (isset($_GET['t'])) {
     	$_GET['t'] = strippath($_GET['t']);
     	if ($_GET['t']&&is_dir(GSTHEMESPATH . $_GET['t'].'/')) {
     		$template = $_GET['t'];
     	}
     }
     if (isset($_GET['f'])) {
     	$_GET['f'] = $_GET['f'];
     	if ($_GET['f']&&is_file(GSTHEMESPATH . $template.'/'.$_GET['f'])) {
     		$template_file = $_GET['f'];
     	}
     }
     
     $themepath = GSTHEMESPATH.$template.DIRECTORY_SEPARATOR;
     if($template_file!='' and !filepath_is_safe($themepath.$template_file,$themepath)) die();
     
     # if no template is selected, use the default
     if ($template_file == '') {
     	$template_file = 'template.php';
     }
     
     # check for form submission
     if((isset($_POST['submitsave']))){
     	
     	# check for csrf
     	if (!defined('GSNOCSRF') || (GSNOCSRF == FALSE) ) {
     		$nonce = $_POST['nonce'];
     		if(!check_nonce($nonce, "save")) {
     			die("CSRF detected!");
     		}
     	}
     	
     	# save edited template file
     	$SavedFile = $_POST['edited_file'];
     	$FileContents = get_magic_quotes_gpc() ? stripslashes($_POST['content']) : $_POST['content'];	
     	$fh = fopen(GSTHEMESPATH . $SavedFile, 'w') or die("can't open file");
     	fwrite($fh, $FileContents);
     	fclose($fh);
     	$success = sprintf(i18n_r('TEMPLATE_FILE'), $SavedFile);
     }
     
     # create themes dropdown
     $themes_path = GSTHEMESPATH;
     $themes_handle = opendir($themes_path);
     $theme_options .= '<select class="text" style="width:225px;" name="t" id="theme-folder" >';	
     while ($file = readdir($themes_handle)) {
     	$curpath = $themes_path .'/'. $file;
     	if( is_dir($curpath) && $file != "." && $file != ".." ) {
     		$theme_dir_array[] = $file;
     		$sel="";
     		
     		if (file_exists($curpath.'/template.php')){
     			if ($template == $file){ 
     				$sel="selected"; 
     			}
     			
     			$theme_options .= '<option '.$sel.' value="'.$file.'" >'.$file.'</option>';
     		}
     	}
     }
     $theme_options .= '</select> ';
     
     # check to see how many themes are available
     if (count($theme_dir_array) == 1){ $theme_options = ''; }
     
     $templates = directoryToArray(GSTHEMESPATH . $template . '/', true);
     $theme_templates .= '<span id="themefiles"><select class="text" id="theme_files" style="width:425px;" name="f" >';
     $allowed_extensions=array('php','css','js','html','htm');
     foreach ($templates as $file){
       $extension=pathinfo($file,PATHINFO_EXTENSION);
       if (in_array($extension, $allowed_extensions)){
       $filename=pathinfo($file,PATHINFO_BASENAME);
       $filenamefull=substr(strstr($file,'/theme/'.$template.'/'),strlen('/theme/'.$template.'/'));   
       if ($template_file == $filenamefull){ 
               $sel="selected"; 
       } else { 
               $sel="";
       }
       if ($filename == 'template.php'){ 
               $templatename=i18n_r('DEFAULT_TEMPLATE'); 
       } else { 
               $templatename=$filenamefull; 
       }
       $theme_templates .= '<option '.$sel.' value="'.$templatename.'" >'.$templatename.'</option>';
       }
     }
     $theme_templates .= "</select></span>";
     
     if (!defined('GSNOHIGHLIGHT') || GSNOHIGHLIGHT!=true){
     	register_script('codemirror', $SITEURL.$GSADMIN.'/template/js/codemirror/lib/codemirror-compressed.js', '0.2.0', FALSE);
     	
     	register_style('codemirror-css',$SITEURL.$GSADMIN.'/template/js/codemirror/lib/codemirror.css','screen',FALSE);
     	register_style('codemirror-theme',$SITEURL.$GSADMIN.'/template/js/codemirror/theme/default.css','screen',FALSE);
     	
     	queue_script('codemirror', GSBACK);
     	
     	queue_style('codemirror-css', GSBACK);
     	queue_style('codemirror-theme', GSBACK);
     
     }
     
     get_template('header', cl($SITENAME).' » '.i18n_r('THEME_MANAGEMENT')); 
     ?>
     
     <?php include('template/include-nav.php');
     
     if (!defined('GSNOHIGHLIGHT') || GSNOHIGHLIGHT!=true){
     
     	switch (pathinfo($template_file,PATHINFO_EXTENSION)) {
     		case 'css':
     			$mode = 'text/css';
     			break;
     		case 'js':
     			$mode = 'text/javascript';
     			break;
     		case 'html':
     			$mode = 'text/html';
     			break;
     		default:
     			$mode = 'application/x-httpd-php';
     	}
     
     ?>
     
     <script>
     window.onload = function() {
     	  var foldFunc = CodeMirror.newFoldFunction(CodeMirror.braceRangeFinder);
     	  function keyEvent(cm, e) {
     	    if (e.keyCode == 81 && e.ctrlKey) {
     	      if (e.type == "keydown") {
     	        e.stop();
     	        setTimeout(function() {foldFunc(cm, cm.getCursor().line);}, 50);
     	      }
     	      return true;
     	    }
     	  }
     	  function toggleFullscreenEditing()
     	    {
     	        var editorDiv = $('.CodeMirror-scroll');
     	        if (!editorDiv.hasClass('fullscreen')) {
     	            toggleFullscreenEditing.beforeFullscreen = { height: editorDiv.height(), width: editorDiv.width() }
     	            editorDiv.addClass('fullscreen');
     	            editorDiv.height('100%');
     	            editorDiv.width('100%');
     	            editor.refresh();
     	        }
     	        else {
     	            editorDiv.removeClass('fullscreen');
     	            editorDiv.height(toggleFullscreenEditing.beforeFullscreen.height);
     	            editorDiv.width(toggleFullscreenEditing.beforeFullscreen.width);
     	            editor.refresh();
     	        }
     	    }
           var editor = CodeMirror.fromTextArea(document.getElementById("codetext"), {
             lineNumbers: true,
             matchBrackets: true,
             indentUnit: 4,
             indentWithTabs: true,
             enterMode: "keep",
             mode:"<?php echo $mode; ?>",
             tabMode: "shift",
             theme:'default',
         	onGutterClick: foldFunc,
         	extraKeys: {"Ctrl-Q": function(cm){foldFunc(cm, cm.getCursor().line);},
         				"F11": toggleFullscreenEditing, "Esc": toggleFullscreenEditing},
             onCursorActivity: function() {
     		   	editor.setLineClass(hlLine, null);
     		   	hlLine = editor.setLineClass(editor.getCursor().line, "activeline");
     		}
           	});
          var hlLine = editor.setLineClass(0, "activeline");
         
          }
          
     </script>
     <?php 
     }
     ?>
     <div class="bodycontent clearfix">
     	
     	<div id="maincontent">
     		<div class="main">
     		<h3><?php i18n('EDIT_THEME'); ?></h3>
     		<form action="<?php myself(); ?>" method="get" accept-charset="utf-8" >
     		<p><?php echo $theme_options; ?><?php echo $theme_templates; ?>   <input class="submit" type="submit" name="s" value="<?php i18n('EDIT'); ?>" /></p>
     		</form>
     		
     		<p><b><?php i18n('EDITING_FILE'); ?>:</b> <code><?php echo $SITEURL.'theme/'. tsl($template) .'<b>'. $template_file; ?></b></code></p>
     		<?php $content = file_get_contents(GSTHEMESPATH . tsl($template) . $template_file); ?>
     		
     		<form action="<?php myself(); ?>?t=<?php echo $template; ?>&f=<?php echo $template_file; ?>" method="post" >
     			<input id="nonce" name="nonce" type="hidden" value="<?php echo get_nonce("save"); ?>" />
     			<textarea name="content" id="codetext" wrap='off' ><?php echo htmlentities($content, ENT_QUOTES, 'UTF-8'); ?></textarea>
     			<input type="hidden" value="<?php echo tsl($template) . $template_file; ?>" name="edited_file" />
     			<?php exec_action('theme-edit-extras'); ?>
     			<p id="submit_line" >
     				<span><input class="submit" type="submit" name="submitsave" value="<?php i18n('BTN_SAVECHANGES'); ?>" /></span>   <?php i18n('OR'); ?>   <a class="cancel" href="theme-edit.php?cancel"><?php i18n('CANCEL'); ?></a>
     			</p>
     		</form>
     		</div>
     	
     	</div>
     	
     	<div id="sidebar" >
     		<?php include('template/sidebar-theme.php'); ?>
     	</div>
     </div>
     <?php get_template('footer'); ?>
     

[top] / php / GetSimpleCMS-3.2.3 / admin / theme-edit.php

contact | logmethods.com