Ticket #11214: 11214-first-pass.diff

File 11214-first-pass.diff, 2.6 KB (added by westi, 16 months ago)

A first pass at a simple implementation of this

  • wp-includes/theme.php

     
    350350                        while ( ($file = $stylesheet_dir->read()) !== false ) { 
    351351                                if ( !preg_match('|^\.+$|', $file) ) { 
    352352                                        if ( preg_match('|\.css$|', $file) ) 
    353                                                 $stylesheet_files[] = "$theme_root/$stylesheet/$file"; 
     353                                                $stylesheet_files[] = "$file"; 
    354354                                        elseif ( preg_match('|\.php$|', $file) ) 
    355                                                 $template_files[] = "$theme_root/$stylesheet/$file"; 
     355                                                $template_files[] = "$file"; 
    356356                                } 
    357357                        } 
    358358                        @ $stylesheet_dir->close(); 
     
    364364                                if ( preg_match('|^\.+$|', $file) ) 
    365365                                        continue; 
    366366                                if ( preg_match('|\.php$|', $file) ) { 
    367                                         $template_files[] = "$template_directory/$file"; 
     367                                        $template_files[] = "$file"; 
    368368                                } elseif ( is_dir("$template_directory/$file") ) { 
    369369                                        $template_subdir = @ dir("$template_directory/$file"); 
    370370                                        if ( !$template_subdir ) 
     
    373373                                                if ( preg_match('|^\.+$|', $subfile) ) 
    374374                                                        continue; 
    375375                                                if ( preg_match('|\.php$|', $subfile) ) 
    376                                                         $template_files[] = "$template_directory/$file/$subfile"; 
     376                                                        $template_files[] = "$file/$subfile"; 
    377377                                        } 
    378378                                        @ $template_subdir->close(); 
    379379                                } 
  • wp-admin/theme-editor.php

     
    5555if ( ! isset($themes[$theme]) ) 
    5656        wp_die(__('The requested theme does not exist.')); 
    5757 
    58 $allowed_files = array_merge( $themes[$theme]['Stylesheet Files'], $themes[$theme]['Template Files'] ); 
    5958 
     59$stylefiles = $themes[$theme]['Stylesheet Files']; 
     60foreach ( $stylefiles as $key => $filename ) 
     61        $stylefiles[$key] = $themes[$theme]['Stylesheet Dir'] . '/' . $filename; 
     62 
     63$themefiles = $themes[$theme]['Template Files']; 
     64foreach ( $themefiles as $key => $filename ) 
     65        $themefiles[$key] = $themes[$theme]['Template Dir'] . '/' . $filename; 
     66 
     67$allowed_files = array_merge( $stylefiles, $themefiles ); 
     68 
    6069if ( empty( $file ) ) { 
    6170        if ( false !== array_search( $themes[$theme]['Stylesheet Dir'] . '/style.css', $allowed_files ) ) 
    6271                $file = $themes[$theme]['Stylesheet Dir'] . '/style.css'; 
     
    6574} else { 
    6675        $file = stripslashes($file); 
    6776        if ( 'theme' == $dir ) { 
    68                 $file = dirname(dirname($themes[$theme]['Template Dir'])) . $file ; 
     77                $file = $themes[$theme]['Template Dir'] . '/' . $file ; 
    6978        } else if ( 'style' == $dir) { 
    70                 $file = dirname(dirname($themes[$theme]['Stylesheet Dir'])) . $file ; 
     79                $file = $themes[$theme]['Stylesheet Dir'] . '/' . $file ; 
    7180        } 
    7281} 
    7382