| [ Index ] |
PHP Cross Reference of Wordpress 2.7.1 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Theme editor administration panel. 4 * 5 * @package WordPress 6 * @subpackage Administration 7 */ 8 9 /** WordPress Administration Bootstrap */ 10 require_once ('admin.php'); 11 12 $title = __("Edit Themes"); 13 $parent_file = 'themes.php'; 14 15 wp_reset_vars(array('action', 'redirect', 'profile', 'error', 'warning', 'a', 'file', 'theme')); 16 17 wp_admin_css( 'theme-editor' ); 18 19 $themes = get_themes(); 20 21 if (empty($theme)) { 22 $theme = get_current_theme(); 23 } else { 24 $theme = stripslashes($theme); 25 } 26 27 28 if ( ! isset($themes[$theme]) ) 29 wp_die(__('The requested theme does not exist.')); 30 31 $allowed_files = array_merge($themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files']); 32 33 if (empty($file)) { 34 $file = $allowed_files[0]; 35 } 36 37 $file = validate_file_to_edit($file, $allowed_files); 38 $real_file = get_real_file_to_edit($file); 39 40 $file_show = basename( $file ); 41 42 switch($action) { 43 44 case 'update': 45 46 check_admin_referer('edit-theme_' . $file . $theme); 47 48 if ( !current_user_can('edit_themes') ) 49 wp_die('<p>'.__('You do not have sufficient permissions to edit templates for this blog.').'</p>'); 50 51 $newcontent = stripslashes($_POST['newcontent']); 52 $theme = urlencode($theme); 53 if (is_writeable($real_file)) { 54 //is_writable() not always reliable, check return value. see comments @ http://uk.php.net/is_writable 55 $f = fopen($real_file, 'w+'); 56 if ($f !== FALSE) { 57 fwrite($f, $newcontent); 58 fclose($f); 59 $location = "theme-editor.php?file=$file&theme=$theme&a=te"; 60 } else { 61 $location = "theme-editor.php?file=$file&theme=$theme"; 62 } 63 } else { 64 $location = "theme-editor.php?file=$file&theme=$theme"; 65 } 66 67 $location = wp_kses_no_null($location); 68 $strip = array('%0d', '%0a'); 69 $location = str_replace($strip, '', $location); 70 header("Location: $location"); 71 exit(); 72 73 break; 74 75 default: 76 77 if ( !current_user_can('edit_themes') ) 78 wp_die('<p>'.__('You do not have sufficient permissions to edit themes for this blog.').'</p>'); 79 80 require_once ('admin-header.php'); 81 82 update_recently_edited($file); 83 84 if (!is_file($real_file)) 85 $error = 1; 86 87 if (!$error && filesize($real_file) > 0) { 88 $f = fopen($real_file, 'r'); 89 $content = fread($f, filesize($real_file)); 90 $content = htmlspecialchars($content); 91 } 92 93 ?> 94 <?php if (isset($_GET['a'])) : ?> 95 <div id="message" class="updated fade"><p><?php _e('File edited successfully.') ?></p></div> 96 <?php endif; 97 98 $description = get_file_description($file); 99 $desc_header = ( $description != $file_show ) ? "<strong>$description</strong> (%s)" : "%s"; 100 ?> 101 <div class="wrap"> 102 <?php screen_icon(); ?> 103 <h2><?php echo wp_specialchars( $title ); ?></h2> 104 <div class="bordertitle"> 105 <form id="themeselector" action="theme-editor.php" method="post"> 106 <strong><label for="theme"><?php _e('Select theme to edit:'); ?> </label></strong> 107 <select name="theme" id="theme"> 108 <?php 109 foreach ($themes as $a_theme) { 110 $theme_name = $a_theme['Name']; 111 if ($theme_name == $theme) $selected = " selected='selected'"; 112 else $selected = ''; 113 $theme_name = attribute_escape($theme_name); 114 echo "\n\t<option value=\"$theme_name\" $selected>$theme_name</option>"; 115 } 116 ?> 117 </select> 118 <input type="submit" name="Submit" value="<?php _e('Select') ?>" class="button" /> 119 </form> 120 </div> 121 <div class="tablenav"> 122 <div class="alignleft"> 123 <big><?php echo sprintf($desc_header, $file_show); ?></big> 124 </div> 125 <br class="clear" /> 126 </div> 127 <br class="clear" /> 128 <div id="templateside"> 129 <h3 id="bordertitle"><?php _e("Theme Files"); ?></h3> 130 131 <?php 132 if ($allowed_files) : 133 ?> 134 <h4><?php _e('Templates'); ?></h4> 135 <ul> 136 <?php 137 $template_mapping = array(); 138 $template_dir = $themes[$theme]['Template Dir']; 139 foreach($themes[$theme]['Template Files'] as $template_file) { 140 $description = trim( get_file_description($template_file) ); 141 $template_show = basename($template_file); 142 $filedesc = ( $description != $template_file ) ? "$description <span class='nonessential'>($template_show)</span>" : "$description"; 143 $filedesc = ( $template_file == $file ) ? "<span class='highlight'>$description <span class='nonessential'>($template_show)</span></span>" : $filedesc; 144 145 // If we have two files of the same name prefer the one in the Template Directory 146 // This means that we display the correct files for child themes which overload Templates as well as Styles 147 if( array_key_exists($description, $template_mapping ) ) { 148 if ( false !== strpos( $template_file, $template_dir ) ) { 149 $template_mapping[ $description ] = array( $template_file, $filedesc ); 150 } 151 } else { 152 $template_mapping[ $description ] = array( $template_file, $filedesc ); 153 } 154 } 155 ksort( $template_mapping ); 156 while ( list( $template_sorted_key, list( $template_file, $filedesc ) ) = each( $template_mapping ) ) : 157 ?> 158 <li><a href="theme-editor.php?file=<?php echo "$template_file"; ?>&theme=<?php echo urlencode($theme) ?>"><?php echo $filedesc ?></a></li> 159 <?php endwhile; ?> 160 </ul> 161 <h4><?php echo _c('Styles|Theme stylesheets in theme editor'); ?></h4> 162 <ul> 163 <?php 164 $template_mapping = array(); 165 foreach($themes[$theme]['Stylesheet Files'] as $style_file) { 166 $description = trim( get_file_description($style_file) ); 167 $style_show = basename($style_file); 168 $filedesc = ( $description != $style_file ) ? "$description <span class='nonessential'>($style_show)</span>" : "$description"; 169 $filedesc = ( $style_file == $file ) ? "<span class='highlight'>$description <span class='nonessential'>($style_show)</span></span>" : $filedesc; 170 $template_mapping[ $description ] = array( $style_file, $filedesc ); 171 } 172 ksort( $template_mapping ); 173 while ( list( $template_sorted_key, list( $style_file, $filedesc ) ) = each( $template_mapping ) ) : 174 ?> 175 <li><a href="theme-editor.php?file=<?php echo "$style_file"; ?>&theme=<?php echo urlencode($theme) ?>"><?php echo $filedesc ?></a></li> 176 <?php endwhile; ?> 177 </ul> 178 <?php endif; ?> 179 </div> 180 <?php 181 if (!$error) { 182 ?> 183 <form name="template" id="template" action="theme-editor.php" method="post"> 184 <?php wp_nonce_field('edit-theme_' . $file . $theme) ?> 185 <div><textarea cols="70" rows="25" name="newcontent" id="newcontent" tabindex="1"><?php echo $content ?></textarea> 186 <input type="hidden" name="action" value="update" /> 187 <input type="hidden" name="file" value="<?php echo $file ?>" /> 188 <input type="hidden" name="theme" value="<?php echo $theme ?>" /> 189 </div> 190 191 <div> 192 <?php if ( is_writeable($real_file) ) : ?> 193 <p class="submit"> 194 <?php 195 echo "<input type='submit' name='submit' class='button-primary' value='" . __('Update File') . "' tabindex='2' />"; 196 ?> 197 </p> 198 <?php else : ?> 199 <p><em><?php _e('You need to make this file writable before you can save your changes. See <a href="http://codex.wordpress.org/Changing_File_Permissions">the Codex</a> for more information.'); ?></em></p> 200 <?php endif; ?> 201 </div> 202 </form> 203 <?php 204 } else { 205 echo '<div class="error"><p>' . __('Oops, no such file exists! Double check the name and try again, merci.') . '</p></div>'; 206 } 207 ?> 208 <div class="clear"> </div> 209 </div> 210 <?php 211 break; 212 } 213 214 include ("admin-footer.php") ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Mon Mar 23 16:23:02 2009 | Cross-referenced by PHPXref 0.7 |