Plugin Directory

Changeset 507489


Ignore:
Timestamp:
02/20/2012 01:10:19 AM (14 years ago)
Author:
nickohrn
Message:

Addition of Google Web Fonts is complete. Going to tag this as a branch and RC tag in a moment here.

Location:
web-fonts/trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • web-fonts/trunk/lib/template-tags.php

    r492472 r507489  
    55}
    66
    7 function web_fonts_prepare_font_item($provider_key, $font_id, $font_name, $font_family, $font_preview = 'The Quick Brown Fox Jumped Over The Lazy Dog', $font_selectors = array()) {
     7function web_fonts_prepare_font_item($provider_key, $font_id, $font_name, $font_family, $font_preview = 'The Quick Brown Fox Jumped Over The Lazy Dog', $font_selectors = array(), $additional_styles = array()) {
    88    return array(
    99        'family' => $font_family,
     
    1212        'preview' => $font_preview,
    1313        'provider' => $provider_key,
    14         'selectors' => (array)$font_selectors
     14        'selectors' => (array)$font_selectors,
     15        'additional_styles' => (array)$additional_styles
    1516    );
    1617}
  • web-fonts/trunk/modules/google-web-fonts/google-web-fonts.php

    r507482 r507489  
    147147            $enabled = ($data['enabled'] == 1);
    148148            $font_data = $data['font_data'];
     149            $font_key = sanitize_title_with_dashes($font_data['family_name']);
    149150           
    150151            $enabled_fonts = self::get_font_data();
    151152           
    152153            if($enabled) {
    153                 $enabled_fonts[$font_data['family_name']] = $font_data;
    154             } else {
    155                 unset($enabled_fonts[$font_data['family_name']]);
     154                $enabled_fonts[$font_key] = $font_data;
     155            } else {
     156                unset($enabled_fonts[$font_key]);
    156157            }
    157158           
     
    166167       
    167168        public static function add_stylesheet_fonts_and_selectors($data) {
    168             $settings = self::get_settings();
    169            
    170             // $data['selectors'][] = $prepared_selector = web_fonts_prepare_selector_item('fonts-com', $selector_data->SelectorID, $selector_data->SelectorTag, $selector_data->SelectorFallback, 'fonts-com-' . $selector_data->SelectorFontID);
    171        
    172             // $data['fonts'][] = web_fonts_prepare_font_item('fonts-com', $font_data->FontID, $font_data->FontName, $font_data->FontCSSName, $font_data->FontPreviewTextLong, $font_selector_map[$font_data->FontID]);
     169            $enabled_fonts = self::get_font_data();
     170            $enabled_selectors = self::get_selector_data();
     171           
     172            $font_selector_map = array();
     173           
     174            foreach($enabled_selectors as $enabled_selector_id => $enabled_selector) {
     175                $data['selectors'][] = $prepared_selector = web_fonts_prepare_selector_item('google-web-fonts', $enabled_selector_id, $enabled_selector['tag'], $enabled_selector['fallback'], 'google-web-fonts-' . $enabled_selector['font-id']);
     176               
     177                if(!empty($enabled_selector['font-id']) && isset($enabled_fonts[$enabled_selector['font-id']])) {
     178                    if(!is_array($font_selector_map[$enabled_selector['font-id']])) {
     179                        $font_selector_map[$enabled_selector['font-id']] = array();
     180                    }
     181                    $font_selector_map[$enabled_selector['font-id']][] = $prepared_selector;
     182                }
     183            }
     184           
     185            foreach($enabled_fonts as $enabled_font_id => $enabled_font) {
     186                $data['fonts'][] = web_fonts_prepare_font_item('google-web-fonts', $enabled_font_id, $enabled_font['family_name'], $enabled_font['family'], 'Quick Brown Fox Jumped Over The Lazy Dog', $font_selector_map[$enabled_font_id], array('font-style' => $enabled_font['style'], 'font-weight' => $enabled_font['weight']));
     187            }
    173188       
    174189            return $data;
     
    180195       
    181196        public static function enqueue_administrative_resources($hook) {
     197            // This is a kludy hack and I hate it, but oh well - have to do it
     198            if('toplevel_page_' . Web_Fonts::SETTINGS_PAGE_SLUG === $hook) {
     199                self::enqueue_frontend_resources();
     200            }
     201           
    182202            if(!in_array($hook, self::$admin_page_hooks)) { return; }
    183203           
     
    195215       
    196216        public static function enqueue_frontend_resources() {
    197            
     217            $enabled_fonts = self::get_font_data();
     218           
     219            if(!empty($enabled_fonts)) {
     220                $url_parts = array();
     221                foreach($enabled_fonts as $enabled_font) {
     222                    $url_parts[] = $enabled_font['url_param'];
     223                }
     224
     225                $url_parts = array_filter($url_parts);
     226                $url = add_query_arg(array('family' => implode('|', $url_parts)), 'http://fonts.googleapis.com/css');
     227                wp_enqueue_style('google-web-fonts', $url, array(), self::VERSION);
     228            }
    198229        }
    199230       
    200231        public static function handle_stylesheet_fonts($fonts) {
    201            
     232            $selectors_to_save = array();
     233           
     234            foreach($fonts as $font) {
     235                if('google-web-fonts' == $font->provider && is_array($font->selectors)) {
     236                    foreach($font->selectors as $selector) {
     237                        $selectors_to_save['google-web-fonts-' . $selector->tag] = array(
     238                            'font-id' => $font->id,
     239                            'fallback' => $selector->fallback,
     240                            'tag' => $selector->tag,
     241                        );
     242                    }
     243                }
     244            }
     245           
     246            self::set_selector_data($selectors_to_save);
    202247           
    203248            return $fonts;
     
    205250       
    206251        public static function handle_stylesheet_selectors($selectors) {
    207            
     252            $selectors_to_save = array();
     253           
     254            foreach($selectors as $selector) {
     255                $font = $selector->font;
     256               
     257                if(is_object($font) && 0 === strpos($font->id, 'google-web-fonts-')) {
     258                    $selectors_to_save['google-web-fonts-' . $selector->tag] = array(
     259                        'font-id' => str_replace('google-web-fonts-', '', $font->id),
     260                        'fallback' => $selector->fallback,
     261                        'tag' => $selector->tag,
     262                    );
     263                }
     264            }
     265           
     266            self::set_selector_data($selectors_to_save);
    208267           
    209268            return $selectors;
     
    213272       
    214273        public static function display_styles() {
     274            $font_data = self::get_font_data();
    215275            $selector_data = self::get_selector_data();
    216276           
     
    218278                echo "\n<!-- Google Web Fonts Style Declarations -->\n";
    219279                echo '<style type="text/css">';
    220                 foreach($selector_data as $selector => $data) {
    221                     printf('%s{font-family: "%s"%s;}', $selector, esc_attr($data['family']), empty($data['fallback']) ? '' : ',' . esc_attr($data['fallback']));
     280                foreach($selector_data as $selector) {
     281                    if(isset($font_data[$selector['font-id']])) {
     282                        $font = $font_data[$selector['font-id']];
     283                       
     284                        printf('%s{font-family: "%s"%s; font-style: %s, font-weight: %d}', $selector['tag'], esc_attr($font['family']), empty($selector['fallback']) ? '' : ',' . esc_attr($selector['fallback']), $font['style'], $font['weight']);
     285                    }
    222286                }
    223287                echo '</style>';
     
    275339           
    276340            if(!is_array($selector_data)) {
    277                 $selector_data = get_option(self::SELECTOR_DATA_KEY);
     341                $selector_data = get_option(self::SELECTOR_DATA_KEY, array());
    278342                wp_cache_set(self::SELECTOR_DATA_KEY, $selector_data, null, time() + CACHE_PERIOD);
    279343            }
  • web-fonts/trunk/modules/google-web-fonts/resources/backend/google-web-fonts.js

    r507482 r507489  
    1717    }
    1818   
    19     var web_fonts_google_view_model_font = function(family, family_name, is_enabled, style, style_string, weight, weight_string) {
     19    var web_fonts_google_view_model_font = function(family, family_name, is_enabled, style, style_string, url_param, weight, weight_string) {
    2020        var font = {
    2121            family: ko.observable(family),
     
    2424            style: ko.observable(style),
    2525            style_string: ko.observable(style_string),
     26            url_param: ko.observable(url_param),
    2627            weight: ko.observable(weight),
    2728            weight_string: ko.observable(weight_string)
     
    7778               
    7879                $.each(data.enabled_fonts, function(index, font) {
    79                     self.enabled_fonts.push(web_fonts_google_view_model_font(font.family, font.family_name, font.is_enabled, font.style, font.style_string, font.weight, font.weight_string));
     80                    self.enabled_fonts.push(web_fonts_google_view_model_font(font.family, font.family_name, font.is_enabled, font.style, font.style_string, font.url_param, font.weight, font.weight_string));
    8081                });
    8182               
    8283                $.each(data.fonts, function(index, font) {
    8384                    web_fonts_google_create_style_link(font);
    84                     self.fonts.push(web_fonts_google_view_model_font(font.family, font.family_name, font.is_enabled, font.style, font.style_string, font.weight, font.weight_string));
     85                    self.fonts.push(web_fonts_google_view_model_font(font.family, font.family_name, font.is_enabled, font.style, font.style_string, font.url_param, font.weight, font.weight_string));
    8586                });
    8687               
     
    99100                self.enabled_fonts.removeAll();
    100101                $.each(data.enabled_fonts, function(index, font) {
    101                     self.enabled_fonts.push(web_fonts_google_view_model_font(font.family, font.family_name, font.is_enabled, font.style, font.style_string, font.weight, font.weight_string));
     102                    self.enabled_fonts.push(web_fonts_google_view_model_font(font.family, font.family_name, font.is_enabled, font.style, font.style_string, font.url_param, font.weight, font.weight_string));
    102103                });
    103104               
  • web-fonts/trunk/modules/google-web-fonts/views/backend/settings/_inc/fonts/enabled.php

    r507471 r507489  
    22    <div id="google-web-fonts-enabled-fonts-list-inner">
    33        <h3><?php _e('Enabled Fonts'); ?></h3>
     4       
     5        <ul data-bind="visible: enabled_fonts().length == 0">
     6            <li><?php _e('You do not have any fonts enabled.'); ?></li>
     7        </ul>
    48       
    59        <ul data-bind="foreach: enabled_fonts" id="google-web-fonts-enabled-fonts-list-items">
  • web-fonts/trunk/resources/backend/web-fonts.js

    r492472 r507489  
    88    object.provider = font.provider;
    99    object.selectors = ko.observableArray(font.selectors);
     10   
     11    object.style_properties = { 'font-family': object.family };
     12    for(var style_property in font.additional_styles) {
     13        object.style_properties[style_property] = font.additional_styles[style_property];
     14    }
    1015   
    1116    // For adding a new selector to the font
  • web-fonts/trunk/views/backend/settings/_inc/selectors-by-font.php

    r492472 r507489  
    77            <p><em><?php _e('If you just added this font, it may take up to a minute before the preview below appears with the correct font face.'); ?></em></p>
    88           
    9             <div data-bind="style: { 'font-family': family }">
     9            <div data-bind="style: style_properties">
    1010                <div class="web-fonts-font-details-preview web-fonts-font-details-preview-light" data-bind="text: preview_text"></div>
    1111               
  • web-fonts/trunk/web-fonts.php

    r507063 r507489  
    2121       
    2222        //// SLUGS
    23         const SETTINGS_PAGE_SLUG = 'web-fonts-settings';
     23        const SETTINGS_PAGE_SLUG = 'web-fonts';
    2424       
    2525        //// CACHE
     
    5050        public static function add_administrative_interface_items() {
    5151            if(!empty(self::$registered_providers)) {
    52                 self::$admin_page_hooks[] = $settings = add_menu_page(__('Web Fonts'), __('Web Fonts'), 'manage_options', 'web-fonts', array(__CLASS__, 'display_stylesheet_page'));
    53                 self::$admin_page_hooks[] = $stylesheet = add_submenu_page('web-fonts', __('Manage Web Font Stylesheet'), __('Manage Stylesheet'), 'manage_options', 'web-fonts', array(__CLASS__, 'display_stylesheet_page'));
     52                self::$admin_page_hooks[] = $settings = add_menu_page(__('Web Fonts'), __('Web Fonts'), 'manage_options', self::SETTINGS_PAGE_SLUG, array(__CLASS__, 'display_stylesheet_page'));
     53                self::$admin_page_hooks[] = $stylesheet = add_submenu_page(self::SETTINGS_PAGE_SLUG, __('Manage Web Font Stylesheet'), __('Manage Stylesheet'), 'manage_options', 'web-fonts', array(__CLASS__, 'display_stylesheet_page'));
    5454               
    5555                add_action("load-{$stylesheet}", array(__CLASS__, 'process_manage_stylesheet'));
     
    5858                    $provider_name = call_user_func(array($provider_class_name, 'get_provider_name'));
    5959                   
    60                     self::$admin_page_hooks[] = $menu_slug = add_submenu_page('web-fonts', sprintf(__('Web Fonts - %s'), $provider_name), $provider_name, 'manage_options', self::get_page_slug_for_provider($provider_class_name), array(__CLASS__, 'display_settings_page'));
     60                    self::$admin_page_hooks[] = $menu_slug = add_submenu_page(self::SETTINGS_PAGE_SLUG, sprintf(__('Web Fonts - %s'), $provider_name), $provider_name, 'manage_options', self::get_page_slug_for_provider($provider_class_name), array(__CLASS__, 'display_settings_page'));
    6161                   
    6262                    call_user_func(array($provider_class_name, 'settings_page_registered'), $menu_slug);
Note: See TracChangeset for help on using the changeset viewer.