Version Description
- Plugin publish initial release.
=
Download this release
Release Info
Developer | hivewebstudios |
Plugin | Font Organizer |
Version | 1.0.0 |
Comparing to | |
See all releases |
Version 1.0.0
- assets/css/settings.css +5 -0
- assets/js/settings.js +5 -0
- classes/class-ElementsTable.php +224 -0
- font-organizer.php +144 -0
- helpers.php +91 -0
- index.php +3 -0
- languages/font-organizer-he_IL.mo +0 -0
- languages/font-organizer-he_IL.po +515 -0
- languages/font-organizer.pot +373 -0
- readme.txt +69 -0
- settings.php +1443 -0
assets/css/settings.css
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
/* Custom elements table styles */
|
3 |
+
.wp-list-table .column-id { width: 10%; }
|
4 |
+
.wp-list-table .column-custom_elements { width: 73%; }
|
5 |
+
.wp-list-table .column-important { width: 17%;}
|
assets/js/settings.js
ADDED
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function(){
|
2 |
+
jQuery('#manage_font_id').change(function(){
|
3 |
+
select_font_form.submit();
|
4 |
+
});
|
5 |
+
});
|
classes/class-ElementsTable.php
ADDED
@@ -0,0 +1,224 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
defined( 'ABSPATH' ) or die( 'Jog on!' );
|
3 |
+
|
4 |
+
if ( ! class_exists( 'WP_List_Table' ) ) {
|
5 |
+
require_once ABSPATH . 'wp-admin/includes/class-wp-list-table.php';
|
6 |
+
}
|
7 |
+
|
8 |
+
class ElementsTable extends WP_List_Table {
|
9 |
+
|
10 |
+
private $custom_elements;
|
11 |
+
|
12 |
+
/** Class constructor */
|
13 |
+
public function __construct() {
|
14 |
+
parent::__construct( array(
|
15 |
+
'singular' => 'custom_element', //singular name of the listed records
|
16 |
+
'plural' => 'custom_elements', //plural name of the listed records
|
17 |
+
'ajax' => false, //does this table support ajax?
|
18 |
+
) );
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Optional. You can handle your bulk actions however you see fit. In this
|
22 |
+
* case, we'll handle them within our package just to keep things clean.
|
23 |
+
*/
|
24 |
+
$this->process_bulk_action();
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Render a column when no column specific method exist.
|
29 |
+
*
|
30 |
+
* @param array $item
|
31 |
+
* @param string $column_name
|
32 |
+
*
|
33 |
+
* @return mixed
|
34 |
+
*/
|
35 |
+
public function column_default( $item, $column_name ) {
|
36 |
+
switch ( $column_name ) {
|
37 |
+
case 'id':
|
38 |
+
case 'name':
|
39 |
+
case 'custom_elements':
|
40 |
+
case 'important':
|
41 |
+
return $item->$column_name;
|
42 |
+
default:
|
43 |
+
return print_r( $item, true ); //Show the whole array for troubleshooting purposes
|
44 |
+
}
|
45 |
+
}
|
46 |
+
|
47 |
+
/**
|
48 |
+
* Render the bulk edit checkbox
|
49 |
+
*
|
50 |
+
* @param array $item
|
51 |
+
*
|
52 |
+
* @return string
|
53 |
+
*/
|
54 |
+
function column_cb( $item ) {
|
55 |
+
return sprintf(
|
56 |
+
'<input type="checkbox" name="%1$s[]" value="%2$s" />',
|
57 |
+
/*$1%s*/ $this->_args['singular'], //Let's simply repurpose the table's singular label ("movie")
|
58 |
+
/*$2%s*/ $item->id //The value of the checkbox should be the record's id
|
59 |
+
);
|
60 |
+
}
|
61 |
+
|
62 |
+
|
63 |
+
/**
|
64 |
+
* Associative array of columns
|
65 |
+
*
|
66 |
+
* @return array
|
67 |
+
*/
|
68 |
+
function get_columns() {
|
69 |
+
$columns = array(
|
70 |
+
'cb' => '<input type="checkbox" />',
|
71 |
+
'id' => __( 'Id', 'font-organizer' ),
|
72 |
+
'custom_elements' => __( 'Custom Elements', 'font-organizer' ),
|
73 |
+
'important' => __( 'Important', 'font-organizer' ),
|
74 |
+
);
|
75 |
+
|
76 |
+
return $columns;
|
77 |
+
}
|
78 |
+
|
79 |
+
function column_important( $item ) {
|
80 |
+
//Return the title contents
|
81 |
+
return sprintf( '%1$s <span style="color:silver"></span>',
|
82 |
+
/*$1%s*/ $item->important ? __('Yes', 'font-organizer') : __('No', 'font-organizer')
|
83 |
+
);
|
84 |
+
}
|
85 |
+
|
86 |
+
function column_id( $item ) {
|
87 |
+
|
88 |
+
//Build row actions
|
89 |
+
$actions = array(
|
90 |
+
//'edit' => sprintf( '<a href="?page=%s&type=%s&id=%s">Edit</a>', $_REQUEST['page'], 'edit', $item->user_id ),
|
91 |
+
'delete' => sprintf( '<a href="?page=%s&action=%s&manage_font_id=%s&custom_element=%s#step6">Delete</a>', $_REQUEST['page'], 'delete', $item->font_id, $item->id ),
|
92 |
+
);
|
93 |
+
|
94 |
+
//Return the title contents
|
95 |
+
return sprintf( '%1$s %2$s',
|
96 |
+
/*$1%s*/ $item->id,
|
97 |
+
/*$2%s*/ $this->row_actions( $actions )
|
98 |
+
);
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* Columns to make sortable.
|
103 |
+
*
|
104 |
+
* @return array
|
105 |
+
*/
|
106 |
+
public function get_sortable_columns() {
|
107 |
+
$sortable_columns = array(
|
108 |
+
'id' => array( 'id', true ),
|
109 |
+
'important' => array( 'important', false ),
|
110 |
+
);
|
111 |
+
|
112 |
+
return $sortable_columns;
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Returns an associative array containing the bulk action
|
117 |
+
*
|
118 |
+
* @return array
|
119 |
+
*/
|
120 |
+
public function get_bulk_actions() {
|
121 |
+
$actions = array(
|
122 |
+
'bulk-delete' => __('Delete', 'font-organizer'),
|
123 |
+
);
|
124 |
+
|
125 |
+
return $actions;
|
126 |
+
}
|
127 |
+
|
128 |
+
/**
|
129 |
+
* Handles data query and filter, sorting, and pagination.
|
130 |
+
*/
|
131 |
+
public function prepare_items_by_font($custom_elements, $font_id) {
|
132 |
+
$this->custom_elements = $custom_elements;
|
133 |
+
|
134 |
+
$columns = $this->get_columns();
|
135 |
+
$hidden = array();
|
136 |
+
$sortable = $this->get_sortable_columns();
|
137 |
+
|
138 |
+
|
139 |
+
/**
|
140 |
+
* REQUIRED. Finally, we build an array to be used by the class for column
|
141 |
+
* headers. The $this->_column_headers property takes an array which contains
|
142 |
+
* 3 other arrays. One for all columns, one for hidden columns, and one
|
143 |
+
* for sortable columns.
|
144 |
+
*/
|
145 |
+
$this->_column_headers = array( $columns, $hidden, $sortable );
|
146 |
+
|
147 |
+
// Get the font given custom elements only!
|
148 |
+
$data = array();
|
149 |
+
foreach ($this->custom_elements as $custom_element) {
|
150 |
+
if($custom_element->font_id == $font_id)
|
151 |
+
$data[] = $custom_element;
|
152 |
+
}
|
153 |
+
|
154 |
+
$per_page = $this->get_items_per_page( 'custom_elements_per_page', 20 );
|
155 |
+
$current_page = $this->get_pagenum();
|
156 |
+
$total_items = count( $data );
|
157 |
+
|
158 |
+
$this->set_pagination_args( array(
|
159 |
+
'total_items' => $total_items, //WE have to calculate the total number of items
|
160 |
+
'per_page' => $per_page, //WE have to determine how many items to show on a page
|
161 |
+
'total_pages' => ceil( $total_items/$per_page ) //WE have to calculate the total number of pages
|
162 |
+
) );
|
163 |
+
|
164 |
+
/**
|
165 |
+
* This checks for sorting input and sorts the data in our array accordingly.
|
166 |
+
*
|
167 |
+
* In a real-world situation involving a database, you would probably want
|
168 |
+
* to handle sorting by passing the 'orderby' and 'order' values directly
|
169 |
+
* to a custom query. The returned data will be pre-sorted, and this array
|
170 |
+
* sorting technique would be unnecessary.
|
171 |
+
*/
|
172 |
+
function usort_reorder_custom_elements( $a, $b ) {
|
173 |
+
$orderby = ( !empty( $_REQUEST['orderby'] ) ) ? $_REQUEST['orderby'] : 'id'; //If no sort, default to date
|
174 |
+
$order = ( !empty( $_REQUEST['order'] ) ) ? $_REQUEST['order'] : 'desc'; //If no order, default to desc
|
175 |
+
$result = strcmp( $a->$orderby, $b->$orderby ); //Determine sort order
|
176 |
+
return ( $order==='asc' ) ? $result : -$result; //Send final sort direction to usort
|
177 |
+
}
|
178 |
+
|
179 |
+
usort( $data, 'usort_reorder_custom_elements' );
|
180 |
+
|
181 |
+
/**
|
182 |
+
* The WP_List_Table class does not handle pagination for us, so we need
|
183 |
+
* to ensure that the data is trimmed to only the current page. We can use
|
184 |
+
* array_slice() to
|
185 |
+
*/
|
186 |
+
$data = array_slice( $data, ( ( $current_page-1 )*$per_page ), $per_page );
|
187 |
+
$this->items = $data;
|
188 |
+
}
|
189 |
+
|
190 |
+
public function no_items() {
|
191 |
+
_e( 'No custom elements found.', 'font-organizer' );
|
192 |
+
}
|
193 |
+
|
194 |
+
private function delete_from_database($id){
|
195 |
+
global $wpdb;
|
196 |
+
$table_name = $wpdb->prefix . FO_ELEMENTS_DATABASE;
|
197 |
+
|
198 |
+
$wpdb->delete( $table_name, array( 'id' => $id ) );
|
199 |
+
}
|
200 |
+
|
201 |
+
public function process_bulk_action() {
|
202 |
+
|
203 |
+
//Detect when a bulk action is being triggered...
|
204 |
+
if ( 'delete' === $this->current_action() ) {
|
205 |
+
$this->delete_from_database( absint( $_GET['custom_element'] ) );
|
206 |
+
}
|
207 |
+
|
208 |
+
// If the delete bulk action is triggered
|
209 |
+
if ( ( isset( $_GET['action'] ) && $_GET['action'] == 'bulk-delete' )
|
210 |
+
|| ( isset( $_GET['action2'] ) && $_GET['action2'] == 'bulk-delete' )
|
211 |
+
) {
|
212 |
+
$delete_ids = esc_sql( $_GET['custom_element'] );
|
213 |
+
|
214 |
+
if(empty($delete_ids))
|
215 |
+
return;
|
216 |
+
|
217 |
+
// loop over the array of record IDs and delete them
|
218 |
+
foreach ( $delete_ids as $id ) {
|
219 |
+
$this->delete_from_database( absint( $id ) );
|
220 |
+
}
|
221 |
+
}
|
222 |
+
}
|
223 |
+
}
|
224 |
+
?>
|
font-organizer.php
ADDED
@@ -0,0 +1,144 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* @package Font_Organizer
|
4 |
+
* @version 1.0.0
|
5 |
+
*/
|
6 |
+
/*
|
7 |
+
Plugin Name: Font Organizer
|
8 |
+
Plugin URI: https://wordpress.org/plugins/font-organizer/
|
9 |
+
Description: Font Organizer is the complete solution for font implementation in WordPress websites.
|
10 |
+
Author: Hive
|
11 |
+
Version: 1.0.0
|
12 |
+
Author URI: https://hivewebstudios.com
|
13 |
+
*/
|
14 |
+
|
15 |
+
define( 'FO_ABSPATH', plugin_dir_path( __FILE__ ) );
|
16 |
+
define( 'FO_USABLE_FONTS_DATABASE', 'fo_usable_fonts' );
|
17 |
+
define( 'FO_ELEMENTS_DATABASE', 'fo_elements' );
|
18 |
+
define( 'FO_DEFAULT_ROLE', 'administrator' );
|
19 |
+
|
20 |
+
global $fo_db_version;
|
21 |
+
$fo_db_version = '1.0.0';
|
22 |
+
global $css_full_file_path;
|
23 |
+
global $css_full_url_path;
|
24 |
+
global $css_directory_path;
|
25 |
+
$css_full_file_path = wp_upload_dir()['basedir'] . '/font-organizer' . '/fo-fonts.css';
|
26 |
+
$css_full_url_path = wp_upload_dir()['baseurl'] . '/font-organizer' . '/fo-fonts.css';
|
27 |
+
$css_directory_path = wp_upload_dir()['basedir'] . '/font-organizer';
|
28 |
+
|
29 |
+
function fo_update_db_check() {
|
30 |
+
global $fo_db_version;
|
31 |
+
if ( get_site_option( 'fo_db_version' ) != $fo_db_version ) {
|
32 |
+
fo_install();
|
33 |
+
}
|
34 |
+
}
|
35 |
+
|
36 |
+
add_action( 'plugins_loaded', 'fo_update_db_check' );
|
37 |
+
register_activation_hook( __FILE__, 'fo_install' );
|
38 |
+
register_deactivation_hook( __FILE__, 'fo_uninstall' );
|
39 |
+
add_action( 'init', 'fo_init' );
|
40 |
+
add_action('plugins_loaded', 'fo_load_textdomain');
|
41 |
+
|
42 |
+
function fo_load_textdomain() {
|
43 |
+
load_plugin_textdomain( 'font-organizer', false, dirname( plugin_basename(__FILE__) ) . '/languages/' );
|
44 |
+
}
|
45 |
+
|
46 |
+
function fo_init(){
|
47 |
+
global $css_full_file_path;
|
48 |
+
|
49 |
+
if( is_admin() ){
|
50 |
+
add_filter('upload_mimes', 'fo_allow_upload_types');
|
51 |
+
add_filter( 'plugin_action_links', 'fo_add_action_plugin', 10, 5 );
|
52 |
+
|
53 |
+
include FO_ABSPATH . 'helpers.php';
|
54 |
+
|
55 |
+
include FO_ABSPATH . 'settings.php';
|
56 |
+
|
57 |
+
$settings_page = new FoSettingsPage();
|
58 |
+
}else{
|
59 |
+
if(file_exists($css_full_file_path)){
|
60 |
+
add_action( 'wp_enqueue_scripts', 'fo_enqueue_fonts_css' );
|
61 |
+
}
|
62 |
+
}
|
63 |
+
}
|
64 |
+
|
65 |
+
function fo_enqueue_fonts_css(){
|
66 |
+
global $css_full_url_path;
|
67 |
+
wp_enqueue_style('fo-fonts', $css_full_url_path);
|
68 |
+
}
|
69 |
+
|
70 |
+
function fo_allow_upload_types($existing_mimes = array()){
|
71 |
+
$existing_mimes['ttf'] = 'application/octet-stream';
|
72 |
+
$existing_mimes['woff'] = 'application/x-font-woff';
|
73 |
+
$existing_mimes['woff2'] = 'application/x-font-woff';
|
74 |
+
$existing_mimes['otf'] = 'application/x-font-woff';
|
75 |
+
|
76 |
+
return $existing_mimes;
|
77 |
+
}
|
78 |
+
|
79 |
+
function fo_uninstall(){
|
80 |
+
$roles = wp_roles();
|
81 |
+
|
82 |
+
// Remove all capabilities added by this plugin.
|
83 |
+
foreach ($roles as $role_name => $role) {
|
84 |
+
if(array_key_exists('manage_fonts', $role['capabilities']) && $role['capabilities']['manage_fonts'])
|
85 |
+
$roles->remove_cap( $role_name, 'manage_fonts' );
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
function fo_install() {
|
90 |
+
global $wpdb;
|
91 |
+
global $fo_db_version;
|
92 |
+
|
93 |
+
$usable_table_name = $wpdb->prefix . FO_USABLE_FONTS_DATABASE;
|
94 |
+
$elements_table_name = $wpdb->prefix . FO_ELEMENTS_DATABASE;
|
95 |
+
|
96 |
+
$charset_collate = $wpdb->get_charset_collate();
|
97 |
+
|
98 |
+
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
|
99 |
+
|
100 |
+
$sql = "CREATE TABLE IF NOT EXISTS $usable_table_name (
|
101 |
+
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
102 |
+
name varchar(255) NOT NULL,
|
103 |
+
url text DEFAULT NULL,
|
104 |
+
custom int(1) DEFAULT 0,
|
105 |
+
PRIMARY KEY (id)
|
106 |
+
) $charset_collate;";
|
107 |
+
|
108 |
+
dbDelta( $sql );
|
109 |
+
|
110 |
+
$sql = "CREATE TABLE IF NOT EXISTS $elements_table_name (
|
111 |
+
id mediumint(9) NOT NULL AUTO_INCREMENT,
|
112 |
+
font_id mediumint(9) NOT NULL,
|
113 |
+
important int(1) DEFAULT 0,
|
114 |
+
custom_elements TEXT DEFAULT NULL,
|
115 |
+
PRIMARY KEY (id)
|
116 |
+
) $charset_collate;";
|
117 |
+
|
118 |
+
dbDelta( $sql );
|
119 |
+
|
120 |
+
// Set the db version to current.
|
121 |
+
add_option( 'fo_db_version', $fo_db_version );
|
122 |
+
|
123 |
+
// Set roles
|
124 |
+
$role = get_role( 'administrator' );
|
125 |
+
if(!$role->has_cap('manage_fonts'))
|
126 |
+
$role->add_cap( 'manage_fonts' );
|
127 |
+
}
|
128 |
+
|
129 |
+
function fo_add_action_plugin( $actions, $plugin_file ) {
|
130 |
+
static $plugin;
|
131 |
+
|
132 |
+
if (!isset($plugin))
|
133 |
+
$plugin = plugin_basename(__FILE__);
|
134 |
+
|
135 |
+
if ($plugin == $plugin_file) {
|
136 |
+
|
137 |
+
$settings = array('settings' => '<a href="options-general.php?page=font-setting-admin">' . __('Font Settings', 'font-organizer') . '</a>');
|
138 |
+
$actions = array_merge($settings, $actions);
|
139 |
+
|
140 |
+
}
|
141 |
+
|
142 |
+
return $actions;
|
143 |
+
}
|
144 |
+
?>
|
helpers.php
ADDED
@@ -0,0 +1,91 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
function fo_do_settings_section($page, $section_name){
|
3 |
+
global $wp_settings_sections, $wp_settings_fields;
|
4 |
+
|
5 |
+
if ( ! isset( $wp_settings_sections[$page] ) )
|
6 |
+
return;
|
7 |
+
|
8 |
+
foreach ( (array) $wp_settings_sections[$page] as $section_from_page ) {
|
9 |
+
if($section_name !== $section_from_page['id'])
|
10 |
+
continue;
|
11 |
+
|
12 |
+
if ( $section_from_page['title'] )
|
13 |
+
echo "<h2>{$section_from_page['title']}</h2>\n";
|
14 |
+
|
15 |
+
if ( $section_from_page['callback'] )
|
16 |
+
call_user_func( $section_from_page['callback'], $section_from_page );
|
17 |
+
|
18 |
+
if ( ! isset( $wp_settings_fields ) || !isset( $wp_settings_fields[$page] ) || !isset( $wp_settings_fields[$page][$section_from_page['id']] ) )
|
19 |
+
continue;
|
20 |
+
|
21 |
+
echo '<table class="form-table">';
|
22 |
+
do_settings_fields( $page, $section_from_page['id'] );
|
23 |
+
echo '</table>';
|
24 |
+
}
|
25 |
+
}
|
26 |
+
|
27 |
+
function fo_print_links($fonts, $fonts_per_link = 150){
|
28 |
+
if(empty($fonts))
|
29 |
+
return;
|
30 |
+
|
31 |
+
// Create list of names with no spaces.
|
32 |
+
$font_names = array_map(function($font) { return str_replace(' ', '+', $font->family); }, $fonts);
|
33 |
+
|
34 |
+
// Prepare to load the fonts in bulks to improve performance. Cannot include all.
|
35 |
+
for ($i=0; $i < count($font_names); $i+=$fonts_per_link) {
|
36 |
+
$calculated_length = count($font_names) - $i > $fonts_per_link ? $fonts_per_link : count($font_names) - $i;
|
37 |
+
$font_names_to_load = array_slice($font_names, $i, $calculated_length);
|
38 |
+
echo "<link href='http://fonts.googleapis.com/css?family=". implode("|", $font_names_to_load) . "' rel='stylesheet' type='text/css'>";
|
39 |
+
}
|
40 |
+
}
|
41 |
+
|
42 |
+
function fo_upload_file($uploadedfile, $upload_dir_callback, $should_override = false){
|
43 |
+
if ( ! function_exists( 'wp_handle_upload' ) )
|
44 |
+
require_once( ABSPATH . 'wp-admin/includes/file.php' );
|
45 |
+
|
46 |
+
$upload_overrides = array( 'test_form' => false );
|
47 |
+
if($should_override){
|
48 |
+
$upload_overrides['unique_filename_callback'] = 'fo_unique_filename_callback';
|
49 |
+
}
|
50 |
+
// Register our path override.
|
51 |
+
add_filter( 'upload_dir', $upload_dir_callback );
|
52 |
+
|
53 |
+
$movefile = wp_handle_upload( $uploadedfile, $upload_overrides );
|
54 |
+
|
55 |
+
// Set everything back to normal.
|
56 |
+
remove_filter( 'upload_dir', $upload_dir_callback );
|
57 |
+
|
58 |
+
return $movefile;
|
59 |
+
}
|
60 |
+
|
61 |
+
function fo_unique_filename_callback($dir, $name, $ext){
|
62 |
+
return $name.$ext;
|
63 |
+
}
|
64 |
+
|
65 |
+
function fo_get_font_format($url){
|
66 |
+
$extension = pathinfo($url, PATHINFO_EXTENSION);
|
67 |
+
switch ($extension) {
|
68 |
+
case 'ttf':
|
69 |
+
return 'truetype';
|
70 |
+
default:
|
71 |
+
return $extension;
|
72 |
+
}
|
73 |
+
}
|
74 |
+
|
75 |
+
function fo_print_source($kind){
|
76 |
+
switch ($kind) {
|
77 |
+
case 'webfonts#webfont':
|
78 |
+
_e('Google', 'font-organizer');
|
79 |
+
break;
|
80 |
+
case 'standard':
|
81 |
+
_e('Standard', 'font-organizer');
|
82 |
+
break;
|
83 |
+
case 'custom':
|
84 |
+
_e('Custom', 'font-organizer');
|
85 |
+
break;
|
86 |
+
default:
|
87 |
+
_e(ucfirst($kind), 'font-organizer');
|
88 |
+
break;
|
89 |
+
}
|
90 |
+
}
|
91 |
+
?>
|
index.php
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
// Silence is golden.
|
3 |
+
?>
|
languages/font-organizer-he_IL.mo
ADDED
Binary file
|
languages/font-organizer-he_IL.po
ADDED
@@ -0,0 +1,515 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Font Organizer\n"
|
4 |
+
"POT-Creation-Date: 2016-11-19 20:36+0200\n"
|
5 |
+
"PO-Revision-Date: 2016-11-19 20:38+0200\n"
|
6 |
+
"Last-Translator: \n"
|
7 |
+
"Language-Team: \n"
|
8 |
+
"Language: he_IL\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.8.2\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"X-Poedit-WPHeader: font-organizer.php\n"
|
15 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
17 |
+
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;_n_noop:1,2;"
|
18 |
+
"_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
19 |
+
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
20 |
+
"X-Poedit-SearchPath-0: .\n"
|
21 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
22 |
+
|
23 |
+
#: classes/class-ElementsTable.php:71
|
24 |
+
msgid "Id"
|
25 |
+
msgstr "מזהה"
|
26 |
+
|
27 |
+
#: classes/class-ElementsTable.php:72
|
28 |
+
msgid "Custom Elements"
|
29 |
+
msgstr "אלמנט מותאם אישית"
|
30 |
+
|
31 |
+
#: classes/class-ElementsTable.php:73 settings.php:1010 settings.php:1027
|
32 |
+
msgid "Important"
|
33 |
+
msgstr "חשוב"
|
34 |
+
|
35 |
+
#: classes/class-ElementsTable.php:82
|
36 |
+
msgid "Yes"
|
37 |
+
msgstr "כן"
|
38 |
+
|
39 |
+
#: classes/class-ElementsTable.php:82
|
40 |
+
msgid "No"
|
41 |
+
msgstr "לא"
|
42 |
+
|
43 |
+
#: classes/class-ElementsTable.php:122
|
44 |
+
msgid "Delete"
|
45 |
+
msgstr "מחק"
|
46 |
+
|
47 |
+
#: classes/class-ElementsTable.php:191
|
48 |
+
msgid "No custom elements found."
|
49 |
+
msgstr "לא נמצאו אלמנטים מותאמים אישית."
|
50 |
+
|
51 |
+
#: font-organizer.php:137 settings.php:180 settings.php:332
|
52 |
+
msgid "Font Settings"
|
53 |
+
msgstr "הגדרות גופנים"
|
54 |
+
|
55 |
+
#: helpers.php:78
|
56 |
+
msgid "Google"
|
57 |
+
msgstr "גוגל"
|
58 |
+
|
59 |
+
#: helpers.php:81
|
60 |
+
msgid "Standard"
|
61 |
+
msgstr "סטנדרטי"
|
62 |
+
|
63 |
+
#: helpers.php:84
|
64 |
+
msgid "Custom"
|
65 |
+
msgstr "מיובא"
|
66 |
+
|
67 |
+
#: settings.php:113
|
68 |
+
msgid "<body> Font"
|
69 |
+
msgstr "גופן לתגית <body>"
|
70 |
+
|
71 |
+
#: settings.php:114
|
72 |
+
msgid "<h1> Font"
|
73 |
+
msgstr "גופן לתגית <h1>"
|
74 |
+
|
75 |
+
#: settings.php:115
|
76 |
+
msgid "<h2> Font"
|
77 |
+
msgstr "גופן לתגית <h2>"
|
78 |
+
|
79 |
+
#: settings.php:116
|
80 |
+
msgid "<h3> Font"
|
81 |
+
msgstr "גופן לתגית <h3>"
|
82 |
+
|
83 |
+
#: settings.php:117
|
84 |
+
msgid "<h4> Font"
|
85 |
+
msgstr "גופן לתגית <h4>"
|
86 |
+
|
87 |
+
#: settings.php:118
|
88 |
+
msgid "<h5> Font"
|
89 |
+
msgstr "גופן לתגית <h5>"
|
90 |
+
|
91 |
+
#: settings.php:119
|
92 |
+
msgid "<h6> Font"
|
93 |
+
msgstr "גופן לתגית <h6>"
|
94 |
+
|
95 |
+
#: settings.php:120
|
96 |
+
msgid "<p> Font"
|
97 |
+
msgstr "גופן לתגית <p>"
|
98 |
+
|
99 |
+
#: settings.php:121
|
100 |
+
msgid "<q> Font"
|
101 |
+
msgstr "גופן לתגית <q>"
|
102 |
+
|
103 |
+
#: settings.php:122
|
104 |
+
msgid "<li> Font"
|
105 |
+
msgstr "גופן לתגית <li>"
|
106 |
+
|
107 |
+
#: settings.php:123
|
108 |
+
msgid "<a> Font"
|
109 |
+
msgstr "גופן לתגית <a>"
|
110 |
+
|
111 |
+
#: settings.php:294
|
112 |
+
msgid "Google API key is not valid: "
|
113 |
+
msgstr "המפתח של גוגל אינה חוקי:"
|
114 |
+
|
115 |
+
#: settings.php:297
|
116 |
+
msgid "Google API key is not set! Cannot display google fonts."
|
117 |
+
msgstr "המפתח של גוגל אינו מוגדר! אין אפשרות להציג גופנים של גוגל."
|
118 |
+
|
119 |
+
#: settings.php:343
|
120 |
+
msgid "General Settings"
|
121 |
+
msgstr "הגדרות כלליות"
|
122 |
+
|
123 |
+
#: settings.php:359
|
124 |
+
msgid "1. Add Fonts"
|
125 |
+
msgstr "1. הוספת גופנים"
|
126 |
+
|
127 |
+
#: settings.php:361
|
128 |
+
msgid ""
|
129 |
+
"Step 1: Select and add fonts to be used in your website. Select as many as "
|
130 |
+
"you wish."
|
131 |
+
msgstr "שלב 1: בחר והוסף גופנים לאתר האינטרנט שלך. ניתן לבחר כמה שתרצה."
|
132 |
+
|
133 |
+
#: settings.php:363
|
134 |
+
msgid "You can select google or regular fonts."
|
135 |
+
msgstr "באפשרותך לבחור בגופנים של גוגל או גופנים מוכרים."
|
136 |
+
|
137 |
+
#: settings.php:367
|
138 |
+
msgid "Available Fonts"
|
139 |
+
msgstr "גופנים זמינים"
|
140 |
+
|
141 |
+
#: settings.php:374
|
142 |
+
msgid "Use This Font"
|
143 |
+
msgstr "השתמש בגופן זה"
|
144 |
+
|
145 |
+
#: settings.php:385
|
146 |
+
msgid "2. Custom Fonts"
|
147 |
+
msgstr "2. גופנים מיובאים"
|
148 |
+
|
149 |
+
#: settings.php:387
|
150 |
+
msgid ""
|
151 |
+
"Step 2: Upload custom fonts to be used in your website. Here too, you can "
|
152 |
+
"upload as many as you wish."
|
153 |
+
msgstr "שלב 2: כאן ניתן לעלות גופנים לאתר שלך. גם כאן, ניתן להעלות כמה שתרצה."
|
154 |
+
|
155 |
+
#: settings.php:391
|
156 |
+
msgid "Font Name"
|
157 |
+
msgstr "שם גופן"
|
158 |
+
|
159 |
+
#: settings.php:395
|
160 |
+
msgid "Font File"
|
161 |
+
msgstr "קובץ הגופן"
|
162 |
+
|
163 |
+
#: settings.php:398
|
164 |
+
msgid "Accepted Font Format : "
|
165 |
+
msgstr "פורמט גופן נתמך:"
|
166 |
+
|
167 |
+
#: settings.php:405
|
168 |
+
msgid "Upload"
|
169 |
+
msgstr "העלה"
|
170 |
+
|
171 |
+
#: settings.php:416
|
172 |
+
msgid "3. Known Elements Settings"
|
173 |
+
msgstr "3. הגדרות אלמנטים הידועים"
|
174 |
+
|
175 |
+
#: settings.php:419
|
176 |
+
msgid ""
|
177 |
+
"Step 3: For each element you can assign a font you have added in step 1 & 2."
|
178 |
+
msgstr "שלב 3: עבור כל אלמנט ניתן להקצות גופן שהוספת בשלב 1 & 2."
|
179 |
+
|
180 |
+
#: settings.php:420
|
181 |
+
msgid "Note: "
|
182 |
+
msgstr "הערה:"
|
183 |
+
|
184 |
+
#: settings.php:420
|
185 |
+
msgid "Custom fonts you uploaded are automatically used in your website."
|
186 |
+
msgstr "גופנים מיובאים אוטומטית נוספים לאתר שלך."
|
187 |
+
|
188 |
+
#: settings.php:436
|
189 |
+
msgid "4. Custom Elements Settings"
|
190 |
+
msgstr "4. הגדרות אלמנטים מותאמים אישית"
|
191 |
+
|
192 |
+
#: settings.php:439
|
193 |
+
msgid ""
|
194 |
+
"Step 4: Assign font that you have added to your website to custom elements."
|
195 |
+
msgstr ""
|
196 |
+
"שלב 4: כאן ניתן לשייך גופן שהוספת לאתר האינטרנט שלך לאלמנטים מותאמים אישית."
|
197 |
+
|
198 |
+
#: settings.php:443 settings.php:477
|
199 |
+
msgid "Font"
|
200 |
+
msgstr "גופן"
|
201 |
+
|
202 |
+
#: settings.php:447
|
203 |
+
msgid "Custom Element"
|
204 |
+
msgstr "רכיב מותאם אישית"
|
205 |
+
|
206 |
+
#: settings.php:450
|
207 |
+
msgid ""
|
208 |
+
"Custom elements can be seperated by commas to allow multiple elements. "
|
209 |
+
"Example: #myelementid, .myelementclass, .myelementclass .foo, etc."
|
210 |
+
msgstr ""
|
211 |
+
"רכיבים מותאמים אישית ניתן להפריד בפסיקים כדי לאפשר מספר אלמנטים. דוגמה: ."
|
212 |
+
"myelementclass, #myelementid, .myelementclass .foo, וכו '."
|
213 |
+
|
214 |
+
#: settings.php:461
|
215 |
+
msgid "Apply Custom Elements"
|
216 |
+
msgstr "החל על אלמנטים אלה"
|
217 |
+
|
218 |
+
#: settings.php:472
|
219 |
+
msgid "5. Manage Fonts"
|
220 |
+
msgstr "5. ניהול גופנים"
|
221 |
+
|
222 |
+
#: settings.php:478
|
223 |
+
msgid "-- Select Font --"
|
224 |
+
msgstr "-- בחירת גופן --"
|
225 |
+
|
226 |
+
#: settings.php:487
|
227 |
+
msgid "Source"
|
228 |
+
msgstr "מקור"
|
229 |
+
|
230 |
+
#: settings.php:491
|
231 |
+
msgid "Urls"
|
232 |
+
msgstr "כתובת"
|
233 |
+
|
234 |
+
#: settings.php:523
|
235 |
+
msgid "Thank you"
|
236 |
+
msgstr "תודה לך!"
|
237 |
+
|
238 |
+
#: settings.php:528
|
239 |
+
msgid ""
|
240 |
+
"Thank you for using an <a href=\"http://hivewebstudios.com\" target=\"_blank"
|
241 |
+
"\">Hive</a> plugin! We 5 star you already, so why don't you <a href="
|
242 |
+
"\"https://wordpress.org/support/plugin/font-organizer/reviews/?rate=5#new-"
|
243 |
+
"post\" target=\"_blank\">5 star us too</a>?<br /><br /><p>Anyway, if you "
|
244 |
+
"need anything, this may help:</p> <ul style=\"list-style-type:disc;margin: 0 "
|
245 |
+
"20px;\">\n"
|
246 |
+
" <li><a href=\"http://hivewebstudios."
|
247 |
+
"com/font-organizer#faqs\" target=\"_blank\">FAQ</a></li>\n"
|
248 |
+
" <li><a href=\"https://wordpress.org/"
|
249 |
+
"support/plugin/font-organizer/reviews/\" target=\"_blank\">Support Forums</"
|
250 |
+
"a></li>\n"
|
251 |
+
" <li><a href=\"http://hivewebstudios."
|
252 |
+
"com/font-organizer\" target=\"_blank\">Contact us</a></li>\n"
|
253 |
+
" <li><a href=\"https://www.facebook."
|
254 |
+
"com/hivewp\" target=\"_blank\">Hive Facebook page</a></li>\n"
|
255 |
+
" </ul>"
|
256 |
+
msgstr ""
|
257 |
+
"המון תודה שאתה משתמש בפלאגין של <a href=\"http://hivewebstudios.com\" target="
|
258 |
+
"\"_blank\">Hive</a>! אתה בשבילנו כבר 5 כוכבים, אז למה שלא <a href=\"https://"
|
259 |
+
"wordpress.org/support/plugin/font-organizer/reviews/?rate=5#new-post\" "
|
260 |
+
"target=\"_blank\">תדרג אותנו 5 כוכבים גם</a>?\n"
|
261 |
+
"<p>בכל מקרה, אם תצטרך משהו, אולי זה יעזור:</p> \n"
|
262 |
+
"<ul style=\"list-style-type:disc;margin: 0 20px;\">\n"
|
263 |
+
" <li><a href=\"http://hivewebstudios."
|
264 |
+
"com/font-organizer#faqs\" target=\"_blank\">שאלות ותשובות</a></li>\n"
|
265 |
+
" <li><a href=\"https://wordpress.org/"
|
266 |
+
"support/plugin/font-organizer/reviews/\" target=\"_blank\">פורום תמיכה</a></"
|
267 |
+
"li>\n"
|
268 |
+
" <li><a href=\"http://hivewebstudios."
|
269 |
+
"com/font-organizer\" target=\"_blank\">צור קשר</a></li>\n"
|
270 |
+
" <li><a href=\"https://www.facebook."
|
271 |
+
"com/hivewp\" target=\"_blank\">עמוד פייסבוק שלנו</a></li>\n"
|
272 |
+
" </ul>"
|
273 |
+
|
274 |
+
#: settings.php:546 settings.php:573 settings.php:588 settings.php:607
|
275 |
+
msgid "Session ended, please try again."
|
276 |
+
msgstr "הסתיים הטיפול, אנא נסה שנית."
|
277 |
+
|
278 |
+
#: settings.php:552
|
279 |
+
msgid "Font name is empty or invalid."
|
280 |
+
msgstr "שם גופן הוא ריק או לא חוקי."
|
281 |
+
|
282 |
+
#: settings.php:557
|
283 |
+
msgid "Font file is not selected."
|
284 |
+
msgstr "לא נבחר קובץ הגופן."
|
285 |
+
|
286 |
+
#: settings.php:564
|
287 |
+
msgid "Font file is not valid."
|
288 |
+
msgstr "קובץ הגופן אינו חוקי."
|
289 |
+
|
290 |
+
#: settings.php:579
|
291 |
+
msgid "Usable font is empty or invalid."
|
292 |
+
msgstr "גופן לשימוש הוא ריק או לא חוקי."
|
293 |
+
|
294 |
+
#: settings.php:594
|
295 |
+
msgid "Custom elements is empty or invalid."
|
296 |
+
msgstr "אלמנטים מותאמים אישית ריק או לא חוקי."
|
297 |
+
|
298 |
+
#: settings.php:613
|
299 |
+
msgid "Something went horribly wrong. Ask the support!"
|
300 |
+
msgstr "משהו השתבש בצורה נוראית. תשאל את התמיכה!"
|
301 |
+
|
302 |
+
#: settings.php:689
|
303 |
+
msgid "Custom elements added to your website!"
|
304 |
+
msgstr "אלמנטים מותאמים אישית התווספו לאתר שלך!"
|
305 |
+
|
306 |
+
#: settings.php:697
|
307 |
+
msgid "Font can now be used in your website!"
|
308 |
+
msgstr "כעת ניתן להשתמש בגופן באתר האינטרנט שלך!"
|
309 |
+
|
310 |
+
#: settings.php:705
|
311 |
+
msgid "Font deleted from your website!"
|
312 |
+
msgstr "גופן נמחק מהאתר שלך!"
|
313 |
+
|
314 |
+
#: settings.php:713
|
315 |
+
msgid "The file has been uploaded!"
|
316 |
+
msgstr "הקובץ הועלה בהצלחה."
|
317 |
+
|
318 |
+
#: settings.php:721
|
319 |
+
msgid "Error uploading the file: "
|
320 |
+
msgstr "שגיאה בהעלאת הקובץ:"
|
321 |
+
|
322 |
+
#: settings.php:729
|
323 |
+
msgid "Error adding font to website fonts: "
|
324 |
+
msgstr "שגיאה בעת הוספת גופן לאתר:"
|
325 |
+
|
326 |
+
#: settings.php:737
|
327 |
+
msgid "Error deleting font: "
|
328 |
+
msgstr "שגיאה במחיקת גופן:"
|
329 |
+
|
330 |
+
#: settings.php:745
|
331 |
+
msgid "Failed to open or create the css file. Check for permissions."
|
332 |
+
msgstr "לא ניתן לפתוח או ליצור את קובץ ה-css. בדוק אם יש הרשאות."
|
333 |
+
|
334 |
+
#: settings.php:787
|
335 |
+
msgid "Google API Key"
|
336 |
+
msgstr "מפתח API של גוגל"
|
337 |
+
|
338 |
+
#: settings.php:794
|
339 |
+
msgid "Show Font Family Preview"
|
340 |
+
msgstr "טען תצוגה מקדימה לגופנים"
|
341 |
+
|
342 |
+
#: settings.php:804
|
343 |
+
msgid "Access Settings Role"
|
344 |
+
msgstr "רמת הרשאה להגדרות"
|
345 |
+
|
346 |
+
#: settings.php:916
|
347 |
+
msgid "This is the general settings for the site."
|
348 |
+
msgstr "אלה הם הגדרות כלליות עבור התוסף."
|
349 |
+
|
350 |
+
#: settings.php:935
|
351 |
+
#, php-format
|
352 |
+
msgid ""
|
353 |
+
"To get all the fonts, Google requires the mandatory use of an API key, get "
|
354 |
+
"one from <a href=\"%s\" target=\"_blank\">HERE</a>"
|
355 |
+
msgstr ""
|
356 |
+
"כדי לקבל את כל הגופנים, גוגל מחייב שימוש ב-API, ניתן לקבל אחד מ <a href=\"%s"
|
357 |
+
"\" target=\"_blank\">כאן</a> בחינם ובמהירות."
|
358 |
+
|
359 |
+
#: settings.php:959
|
360 |
+
msgid "Include Font Family Preview"
|
361 |
+
msgstr "הוסף גופן לדף זה לצפיה בתוצגה מוקדמת"
|
362 |
+
|
363 |
+
#: settings.php:961
|
364 |
+
msgid "Show font preview when listing the fonts (might be slow)"
|
365 |
+
msgstr "הצג תצוגה מקדימה של הגופן ברשימה של גופנים (עשוי להיות איטי)."
|
366 |
+
|
367 |
+
#: settings.php:1013 settings.php:1030
|
368 |
+
msgid "Include !important to this element to always apply."
|
369 |
+
msgstr "הוסף תגית important! על מנת שגופן זה תמיד יופיע."
|
370 |
+
|
371 |
+
#: settings.php:1042
|
372 |
+
msgid "Default"
|
373 |
+
msgstr "ברירת מחדל"
|
374 |
+
|
375 |
+
#. Plugin Name of the plugin/theme
|
376 |
+
msgid "Font Organizer"
|
377 |
+
msgstr "מארגן הגופנים"
|
378 |
+
|
379 |
+
#. Plugin URI of the plugin/theme
|
380 |
+
msgid "https://wordpress.org/plugins/font-organizer/"
|
381 |
+
msgstr "https://wordpress.org/plugins/font-organizer/"
|
382 |
+
|
383 |
+
#. Description of the plugin/theme
|
384 |
+
msgid ""
|
385 |
+
"Font Organizer is the complete solution for font implementation in WordPress "
|
386 |
+
"websites."
|
387 |
+
msgstr "Font Organizer הוא הפתרון המושלם לניהול ושימוש גופנים באתר וורדפרס."
|
388 |
+
|
389 |
+
#. Author of the plugin/theme
|
390 |
+
msgid "Hive"
|
391 |
+
msgstr ""
|
392 |
+
|
393 |
+
#. Author URI of the plugin/theme
|
394 |
+
msgid "https://hivewebstudios.com"
|
395 |
+
msgstr ""
|
396 |
+
|
397 |
+
#~ msgid ""
|
398 |
+
#~ "Thank you for using an <a href=\"http://hivewebstudios.com\" target="
|
399 |
+
#~ "\"_blank\">Hive</a> plugin! We 5 star you already, so why don't you <a "
|
400 |
+
#~ "href=\"https://wordpress.org/support/plugin/font-organizer/reviews/?"
|
401 |
+
#~ "rate=5#new-post\" target=\"_blank\">5 star us too</a>?<br /><br /"
|
402 |
+
#~ "><p>Anyway, if you need anything, this may help:</p> <ul style=\"list-"
|
403 |
+
#~ "style-type:disc\">\n"
|
404 |
+
#~ " <li><a href=\"http://"
|
405 |
+
#~ "hivewebstudios.com/font-organizer#faqs\" target=\"_blank\">FAQ</a></li>\n"
|
406 |
+
#~ " <li><a href=\"http://"
|
407 |
+
#~ "hivewebstudios.com/font-organizer\" target=\"_blank\">Contact us</a></"
|
408 |
+
#~ "li>\n"
|
409 |
+
#~ " <li><a href=\"https://wordpress."
|
410 |
+
#~ "org/support/plugin/font-organizer/reviews/\" target=\"_blank\">Support "
|
411 |
+
#~ "Forums</a></li>\n"
|
412 |
+
#~ " <li><a href=\"https://www."
|
413 |
+
#~ "facebook.com/hivewp\" target=\"_blank\">Hive Facebook page</a></li>\n"
|
414 |
+
#~ " </ul>"
|
415 |
+
#~ msgstr ""
|
416 |
+
#~ "המון תודה שאתה משתמש בפלאגין של <a href=\"http://hivewebstudios.com\" "
|
417 |
+
#~ "target=\"_blank\">Hive</a>! אתה בשבילנו כבר 5 כוכבים, אז למה שלא <a href="
|
418 |
+
#~ "\"https://wordpress.org/support/plugin/font-organizer/reviews/?rate=5#new-"
|
419 |
+
#~ "post\" target=\"_blank\">תדרג אותנו 5 כוכבים גםo</a> ?\n"
|
420 |
+
#~ "<p>בכל מקרה, אם תצטרך משהו, אולי זה יעזור:</p> \n"
|
421 |
+
#~ "<ul style=\"list-style-type:disc\">\n"
|
422 |
+
#~ " <li><a href=\"http://"
|
423 |
+
#~ "hivewebstudios.com/font-organizer#faqs\" target=\"_blank\">שאלות ותשובות</"
|
424 |
+
#~ "a></li>\n"
|
425 |
+
#~ " <li><a href=\"http://"
|
426 |
+
#~ "hivewebstudios.com/font-organizer\" target=\"_blank\">צור קשר</a></li>\n"
|
427 |
+
#~ " <li><a href=\"https://wordpress."
|
428 |
+
#~ "org/support/plugin/font-organizer/reviews/\" target=\"_blank\">פורום "
|
429 |
+
#~ "תמיכה</a></li>\n"
|
430 |
+
#~ " <li><a href=\"https://www."
|
431 |
+
#~ "facebook.com/hivewp\" target=\"_blank\">עמוד הפייסבוק שלנו</a></li>\n"
|
432 |
+
#~ " </ul>"
|
433 |
+
|
434 |
+
#~ msgid ""
|
435 |
+
#~ "Thank you for using an <a href=\"http://hivewebstudios.com\" target="
|
436 |
+
#~ "\"_blank\">Hive</a> plugin! We 5 star you already, so why don't you <a "
|
437 |
+
#~ "href=\"https://wordpress.org/support/plugin/font-organizer/reviews/?"
|
438 |
+
#~ "rate=5#new-post\" target=\"_blank\">5 star us too</a>?<br /><br /"
|
439 |
+
#~ "><p>Anyway, if you need anything, this may help:</p> <ul style=\"list-"
|
440 |
+
#~ "style-type:circle\">\n"
|
441 |
+
#~ " <li><a href=\"http://"
|
442 |
+
#~ "hivewebstudios.com/font-organizer#faqs\" target=\"_blank\">FAQ</a></li>\n"
|
443 |
+
#~ " <li><a href=\"http://"
|
444 |
+
#~ "hivewebstudios.com/font-organizer\" target=\"_blank\">Contact us</a></"
|
445 |
+
#~ "li>\n"
|
446 |
+
#~ " <li><a href=\"https://wordpress."
|
447 |
+
#~ "org/support/plugin/font-organizer/reviews/\" target=\"_blank\">Support "
|
448 |
+
#~ "Forums</a></li>\n"
|
449 |
+
#~ " <li><a href=\"https://www."
|
450 |
+
#~ "facebook.com/hivewp\" target=\"_blank\">Hive Facebook page</a></li>\n"
|
451 |
+
#~ " </ul>"
|
452 |
+
#~ msgstr ""
|
453 |
+
#~ "תודה שאתה משתמש פלאגין של <a href=\"http://hivewebstudios.com\" target="
|
454 |
+
#~ "\"_blank\">Hive</a>! אנחנו כבר נותנים לך 5 כוכבים, למה שלא <a href="
|
455 |
+
#~ "\"https://wordpress.org/support/plugin/font-organizer/reviews/?rate=5#new-"
|
456 |
+
#~ "post\" target=\"_blank\">תדרג אותנו 5 כוכבים גם</a>?\n"
|
457 |
+
#~ "<br /><p>בכל מקרה, אם יש משהו שנוכל לעזור, אולי הקישורים האלו יעזרו: </"
|
458 |
+
#~ "p>\n"
|
459 |
+
#~ " <ul style=\"list-style-type:circle\">\n"
|
460 |
+
#~ " <li><a href=\"http://"
|
461 |
+
#~ "hivewebstudios.com/font-organizer#faqs\" target=\"_blank\">שאלות ותשובות</"
|
462 |
+
#~ "a></li>\n"
|
463 |
+
#~ " <li><a href=\"http://"
|
464 |
+
#~ "hivewebstudios.com/font-organizer\" target=\"_blank\">צור קשר</a></li>\n"
|
465 |
+
#~ " <li><a href=\"https://wordpress."
|
466 |
+
#~ "org/support/plugin/font-organizer/reviews/\" target=\"_blank\">פורום "
|
467 |
+
#~ "תמיכה</a></li>\n"
|
468 |
+
#~ " <li><a href=\"https://www."
|
469 |
+
#~ "facebook.com/hivewp\" target=\"_blank\">עמוד הפייסבוק שלנו</a></li>\n"
|
470 |
+
#~ " </ul>"
|
471 |
+
|
472 |
+
#~ msgid ""
|
473 |
+
#~ "Thank you for using an <a href=\"http://hivewebstudios.com\" target="
|
474 |
+
#~ "\"_blank\">HiveTeam</a> plugin! We 5 star you already, so why don't you "
|
475 |
+
#~ "<a href=\"http://xxxxx.xxx\" target=\"_blank\">5 star us too</a>?"
|
476 |
+
#~ msgstr ""
|
477 |
+
#~ "תודה לך על השימוש בתוסף של <a href=\"http://hivewebstudios.com\" target="
|
478 |
+
#~ "\"_blank\">HiveTeam</a>! אנחנו מדרגים אותך 5 כוכבים כבר, אז למה לא <a "
|
479 |
+
#~ "href=\"http://xxxxx.xxx\" target=\"_blank\">תדרג אותנו 5 כוכבים</a>?"
|
480 |
+
|
481 |
+
#~ msgid "afsaf."
|
482 |
+
#~ msgstr "תיאור"
|
483 |
+
|
484 |
+
#~ msgid "HiveTeam"
|
485 |
+
#~ msgstr "HiveTeam"
|
486 |
+
|
487 |
+
#~ msgid "Toggle panel: General Settings"
|
488 |
+
#~ msgstr "לוח דו-מצביים: הגדרות כלליות"
|
489 |
+
|
490 |
+
#~ msgid "Toggle panel: First Step: Add Fonts"
|
491 |
+
#~ msgstr "לוח דו-מצביים: שלב ראשון: הוספת גופנים"
|
492 |
+
|
493 |
+
#~ msgid "Toggle panel: Custom Fonts"
|
494 |
+
#~ msgstr "לוח דו-מצביים: גופנים מיובאים"
|
495 |
+
|
496 |
+
#~ msgid "Toggle panel: Known Elements Settings"
|
497 |
+
#~ msgstr "לוח דו-מצביים: הגדרות אלמנטים ידועים"
|
498 |
+
|
499 |
+
#~ msgid "Toggle panel: Custom Elements Settings"
|
500 |
+
#~ msgstr "לוח דו-מצביים: הגדרות אלמנטים מותאמים אישית"
|
501 |
+
|
502 |
+
#~ msgid "Toggle panel: Manage Fonts"
|
503 |
+
#~ msgstr "לוח דו-מצביים: ניהול גופנים"
|
504 |
+
|
505 |
+
#~ msgid "None"
|
506 |
+
#~ msgstr "ללא"
|
507 |
+
|
508 |
+
#~ msgid "Google API key is not valid!"
|
509 |
+
#~ msgstr "המפתח של גוגל אינו חוקי!"
|
510 |
+
|
511 |
+
#~ msgid "Custom fonts you uploaded are automaticly used in your website."
|
512 |
+
#~ msgstr "גופנים מיובאים אוטומטית נוספים לאתר האינטרנט שלך."
|
513 |
+
|
514 |
+
#~ msgid "Something went horribly worng. Ask the support!"
|
515 |
+
#~ msgstr "משהו הלך נורא עובדת. תשאל את התמיכה!"
|
languages/font-organizer.pot
ADDED
@@ -0,0 +1,373 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
#, fuzzy
|
2 |
+
msgid ""
|
3 |
+
msgstr ""
|
4 |
+
"Project-Id-Version: Font Organizer\n"
|
5 |
+
"POT-Creation-Date: 2016-11-19 20:38+0200\n"
|
6 |
+
"PO-Revision-Date: 2016-11-09 15:53+0200\n"
|
7 |
+
"Last-Translator: \n"
|
8 |
+
"Language-Team: \n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.8.2\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"X-Poedit-WPHeader: font-organizer.php\n"
|
15 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
16 |
+
"X-Poedit-KeywordsList: __;_e;_n:1,2;_x:1,2c;_ex:1,2c;_nx:4c,1,2;esc_attr__;"
|
17 |
+
"esc_attr_e;esc_attr_x:1,2c;esc_html__;esc_html_e;esc_html_x:1,2c;"
|
18 |
+
"_n_noop:1,2;_nx_noop:3c,1,2;__ngettext_noop:1,2\n"
|
19 |
+
"X-Poedit-SearchPath-0: .\n"
|
20 |
+
"X-Poedit-SearchPathExcluded-0: *.js\n"
|
21 |
+
|
22 |
+
#: classes/class-ElementsTable.php:71
|
23 |
+
msgid "Id"
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: classes/class-ElementsTable.php:72
|
27 |
+
msgid "Custom Elements"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: classes/class-ElementsTable.php:73 settings.php:1010 settings.php:1027
|
31 |
+
msgid "Important"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: classes/class-ElementsTable.php:82
|
35 |
+
msgid "Yes"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: classes/class-ElementsTable.php:82
|
39 |
+
msgid "No"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: classes/class-ElementsTable.php:122
|
43 |
+
msgid "Delete"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: classes/class-ElementsTable.php:191
|
47 |
+
msgid "No custom elements found."
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: font-organizer.php:137 settings.php:180 settings.php:332
|
51 |
+
msgid "Font Settings"
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: helpers.php:78
|
55 |
+
msgid "Google"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: helpers.php:81
|
59 |
+
msgid "Standard"
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: helpers.php:84
|
63 |
+
msgid "Custom"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: settings.php:113
|
67 |
+
msgid "<body> Font"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: settings.php:114
|
71 |
+
msgid "<h1> Font"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: settings.php:115
|
75 |
+
msgid "<h2> Font"
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: settings.php:116
|
79 |
+
msgid "<h3> Font"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: settings.php:117
|
83 |
+
msgid "<h4> Font"
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: settings.php:118
|
87 |
+
msgid "<h5> Font"
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
+
#: settings.php:119
|
91 |
+
msgid "<h6> Font"
|
92 |
+
msgstr ""
|
93 |
+
|
94 |
+
#: settings.php:120
|
95 |
+
msgid "<p> Font"
|
96 |
+
msgstr ""
|
97 |
+
|
98 |
+
#: settings.php:121
|
99 |
+
msgid "<q> Font"
|
100 |
+
msgstr ""
|
101 |
+
|
102 |
+
#: settings.php:122
|
103 |
+
msgid "<li> Font"
|
104 |
+
msgstr ""
|
105 |
+
|
106 |
+
#: settings.php:123
|
107 |
+
msgid "<a> Font"
|
108 |
+
msgstr ""
|
109 |
+
|
110 |
+
#: settings.php:294
|
111 |
+
msgid "Google API key is not valid: "
|
112 |
+
msgstr ""
|
113 |
+
|
114 |
+
#: settings.php:297
|
115 |
+
msgid "Google API key is not set! Cannot display google fonts."
|
116 |
+
msgstr ""
|
117 |
+
|
118 |
+
#: settings.php:343
|
119 |
+
msgid "General Settings"
|
120 |
+
msgstr ""
|
121 |
+
|
122 |
+
#: settings.php:359
|
123 |
+
msgid "1. Add Fonts"
|
124 |
+
msgstr ""
|
125 |
+
|
126 |
+
#: settings.php:361
|
127 |
+
msgid ""
|
128 |
+
"Step 1: Select and add fonts to be used in your website. Select as many as "
|
129 |
+
"you wish."
|
130 |
+
msgstr ""
|
131 |
+
|
132 |
+
#: settings.php:363
|
133 |
+
msgid "You can select google or regular fonts."
|
134 |
+
msgstr ""
|
135 |
+
|
136 |
+
#: settings.php:367
|
137 |
+
msgid "Available Fonts"
|
138 |
+
msgstr ""
|
139 |
+
|
140 |
+
#: settings.php:374
|
141 |
+
msgid "Use This Font"
|
142 |
+
msgstr ""
|
143 |
+
|
144 |
+
#: settings.php:385
|
145 |
+
msgid "2. Custom Fonts"
|
146 |
+
msgstr ""
|
147 |
+
|
148 |
+
#: settings.php:387
|
149 |
+
msgid ""
|
150 |
+
"Step 2: Upload custom fonts to be used in your website. Here too, you can "
|
151 |
+
"upload as many as you wish."
|
152 |
+
msgstr ""
|
153 |
+
|
154 |
+
#: settings.php:391
|
155 |
+
msgid "Font Name"
|
156 |
+
msgstr ""
|
157 |
+
|
158 |
+
#: settings.php:395
|
159 |
+
msgid "Font File"
|
160 |
+
msgstr ""
|
161 |
+
|
162 |
+
#: settings.php:398
|
163 |
+
msgid "Accepted Font Format : "
|
164 |
+
msgstr ""
|
165 |
+
|
166 |
+
#: settings.php:405
|
167 |
+
msgid "Upload"
|
168 |
+
msgstr ""
|
169 |
+
|
170 |
+
#: settings.php:416
|
171 |
+
msgid "3. Known Elements Settings"
|
172 |
+
msgstr ""
|
173 |
+
|
174 |
+
#: settings.php:419
|
175 |
+
msgid ""
|
176 |
+
"Step 3: For each element you can assign a font you have added in step 1 & 2."
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: settings.php:420
|
180 |
+
msgid "Note: "
|
181 |
+
msgstr ""
|
182 |
+
|
183 |
+
#: settings.php:420
|
184 |
+
msgid "Custom fonts you uploaded are automatically used in your website."
|
185 |
+
msgstr ""
|
186 |
+
|
187 |
+
#: settings.php:436
|
188 |
+
msgid "4. Custom Elements Settings"
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: settings.php:439
|
192 |
+
msgid ""
|
193 |
+
"Step 4: Assign font that you have added to your website to custom elements."
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: settings.php:443 settings.php:477
|
197 |
+
msgid "Font"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: settings.php:447
|
201 |
+
msgid "Custom Element"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: settings.php:450
|
205 |
+
msgid ""
|
206 |
+
"Custom elements can be seperated by commas to allow multiple elements. "
|
207 |
+
"Example: #myelementid, .myelementclass, .myelementclass .foo, etc."
|
208 |
+
msgstr ""
|
209 |
+
|
210 |
+
#: settings.php:461
|
211 |
+
msgid "Apply Custom Elements"
|
212 |
+
msgstr ""
|
213 |
+
|
214 |
+
#: settings.php:472
|
215 |
+
msgid "5. Manage Fonts"
|
216 |
+
msgstr ""
|
217 |
+
|
218 |
+
#: settings.php:478
|
219 |
+
msgid "-- Select Font --"
|
220 |
+
msgstr ""
|
221 |
+
|
222 |
+
#: settings.php:487
|
223 |
+
msgid "Source"
|
224 |
+
msgstr ""
|
225 |
+
|
226 |
+
#: settings.php:491
|
227 |
+
msgid "Urls"
|
228 |
+
msgstr ""
|
229 |
+
|
230 |
+
#: settings.php:523
|
231 |
+
msgid "Thank you"
|
232 |
+
msgstr ""
|
233 |
+
|
234 |
+
#: settings.php:528
|
235 |
+
msgid ""
|
236 |
+
"Thank you for using an <a href=\"http://hivewebstudios.com\" target=\"_blank"
|
237 |
+
"\">Hive</a> plugin! We 5 star you already, so why don't you <a href="
|
238 |
+
"\"https://wordpress.org/support/plugin/font-organizer/reviews/?rate=5#new-"
|
239 |
+
"post\" target=\"_blank\">5 star us too</a>?<br /><br /><p>Anyway, if you "
|
240 |
+
"need anything, this may help:</p> <ul style=\"list-style-type:disc;margin: "
|
241 |
+
"0 20px;\">\n"
|
242 |
+
" <li><a href=\"http://hivewebstudios."
|
243 |
+
"com/font-organizer#faqs\" target=\"_blank\">FAQ</a></li>\n"
|
244 |
+
" <li><a href=\"https://wordpress.org/"
|
245 |
+
"support/plugin/font-organizer/reviews/\" target=\"_blank\">Support Forums</"
|
246 |
+
"a></li>\n"
|
247 |
+
" <li><a href=\"http://hivewebstudios."
|
248 |
+
"com/font-organizer\" target=\"_blank\">Contact us</a></li>\n"
|
249 |
+
" <li><a href=\"https://www.facebook."
|
250 |
+
"com/hivewp\" target=\"_blank\">Hive Facebook page</a></li>\n"
|
251 |
+
" </ul>"
|
252 |
+
msgstr ""
|
253 |
+
|
254 |
+
#: settings.php:546 settings.php:573 settings.php:588 settings.php:607
|
255 |
+
msgid "Session ended, please try again."
|
256 |
+
msgstr ""
|
257 |
+
|
258 |
+
#: settings.php:552
|
259 |
+
msgid "Font name is empty or invalid."
|
260 |
+
msgstr ""
|
261 |
+
|
262 |
+
#: settings.php:557
|
263 |
+
msgid "Font file is not selected."
|
264 |
+
msgstr ""
|
265 |
+
|
266 |
+
#: settings.php:564
|
267 |
+
msgid "Font file is not valid."
|
268 |
+
msgstr ""
|
269 |
+
|
270 |
+
#: settings.php:579
|
271 |
+
msgid "Usable font is empty or invalid."
|
272 |
+
msgstr ""
|
273 |
+
|
274 |
+
#: settings.php:594
|
275 |
+
msgid "Custom elements is empty or invalid."
|
276 |
+
msgstr ""
|
277 |
+
|
278 |
+
#: settings.php:613
|
279 |
+
msgid "Something went horribly wrong. Ask the support!"
|
280 |
+
msgstr ""
|
281 |
+
|
282 |
+
#: settings.php:689
|
283 |
+
msgid "Custom elements added to your website!"
|
284 |
+
msgstr ""
|
285 |
+
|
286 |
+
#: settings.php:697
|
287 |
+
msgid "Font can now be used in your website!"
|
288 |
+
msgstr ""
|
289 |
+
|
290 |
+
#: settings.php:705
|
291 |
+
msgid "Font deleted from your website!"
|
292 |
+
msgstr ""
|
293 |
+
|
294 |
+
#: settings.php:713
|
295 |
+
msgid "The file has been uploaded!"
|
296 |
+
msgstr ""
|
297 |
+
|
298 |
+
#: settings.php:721
|
299 |
+
msgid "Error uploading the file: "
|
300 |
+
msgstr ""
|
301 |
+
|
302 |
+
#: settings.php:729
|
303 |
+
msgid "Error adding font to website fonts: "
|
304 |
+
msgstr ""
|
305 |
+
|
306 |
+
#: settings.php:737
|
307 |
+
msgid "Error deleting font: "
|
308 |
+
msgstr ""
|
309 |
+
|
310 |
+
#: settings.php:745
|
311 |
+
msgid "Failed to open or create the css file. Check for permissions."
|
312 |
+
msgstr ""
|
313 |
+
|
314 |
+
#: settings.php:787
|
315 |
+
msgid "Google API Key"
|
316 |
+
msgstr ""
|
317 |
+
|
318 |
+
#: settings.php:794
|
319 |
+
msgid "Show Font Family Preview"
|
320 |
+
msgstr ""
|
321 |
+
|
322 |
+
#: settings.php:804
|
323 |
+
msgid "Access Settings Role"
|
324 |
+
msgstr ""
|
325 |
+
|
326 |
+
#: settings.php:916
|
327 |
+
msgid "This is the general settings for the site."
|
328 |
+
msgstr ""
|
329 |
+
|
330 |
+
#: settings.php:935
|
331 |
+
#, php-format
|
332 |
+
msgid ""
|
333 |
+
"To get all the fonts, Google requires the mandatory use of an API key, get "
|
334 |
+
"one from <a href=\"%s\" target=\"_blank\">HERE</a>"
|
335 |
+
msgstr ""
|
336 |
+
|
337 |
+
#: settings.php:959
|
338 |
+
msgid "Include Font Family Preview"
|
339 |
+
msgstr ""
|
340 |
+
|
341 |
+
#: settings.php:961
|
342 |
+
msgid "Show font preview when listing the fonts (might be slow)"
|
343 |
+
msgstr ""
|
344 |
+
|
345 |
+
#: settings.php:1013 settings.php:1030
|
346 |
+
msgid "Include !important to this element to always apply."
|
347 |
+
msgstr ""
|
348 |
+
|
349 |
+
#: settings.php:1042
|
350 |
+
msgid "Default"
|
351 |
+
msgstr ""
|
352 |
+
|
353 |
+
#. Plugin Name of the plugin/theme
|
354 |
+
msgid "Font Organizer"
|
355 |
+
msgstr ""
|
356 |
+
|
357 |
+
#. Plugin URI of the plugin/theme
|
358 |
+
msgid "https://wordpress.org/plugins/font-organizer/"
|
359 |
+
msgstr ""
|
360 |
+
|
361 |
+
#. Description of the plugin/theme
|
362 |
+
msgid ""
|
363 |
+
"Font Organizer is the complete solution for font implementation in "
|
364 |
+
"WordPress websites."
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#. Author of the plugin/theme
|
368 |
+
msgid "Hive"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#. Author URI of the plugin/theme
|
372 |
+
msgid "https://hivewebstudios.com"
|
373 |
+
msgstr ""
|
readme.txt
ADDED
@@ -0,0 +1,69 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Font Organizer ===
|
2 |
+
Contributors: hivewebstudios,basaar,yardensade
|
3 |
+
Tags: fonts,google fonts,upload font,font,google
|
4 |
+
Requires at least: 3.0.1
|
5 |
+
Tested up to: 4.6.1
|
6 |
+
Stable tag: 1.0.0
|
7 |
+
License: GPLv2 or later
|
8 |
+
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
9 |
+
|
10 |
+
Font Organizer is the complete solution for font implementation including uploading custom fonts and using google fonts in WordPress websites.
|
11 |
+
|
12 |
+
== Description ==
|
13 |
+
|
14 |
+
Font Organizer is the complete solution for font implementation including uploading custom fonts and using google fonts in WordPress websites.
|
15 |
+
|
16 |
+
The plugin is intended for both developers and regular users in order to easily add native, google and custom fonts then assign
|
17 |
+
them to different elements in your website effortlessly.
|
18 |
+
|
19 |
+
Want to find out more? go to [our website](https://hivewebstudios.com/ "HiveWebStudios website") and find out more from us.
|
20 |
+
|
21 |
+
== Installation ==
|
22 |
+
Just download & install the plugin from your wordpress site. Or
|
23 |
+
|
24 |
+
1. Download the plugin from here.
|
25 |
+
|
26 |
+
2. Upload the plugin files to the `/wp-content/plugins/font-organizer` directory.
|
27 |
+
|
28 |
+
3. Activate the plugin through the 'Plugins' screen in your WordPress site.
|
29 |
+
|
30 |
+
4. Use the Settings->Font Settings screen to configure the plugin and follow the steps.
|
31 |
+
|
32 |
+
== Frequently Asked Questions ==
|
33 |
+
|
34 |
+
Q: What is API key, and why do I need it?
|
35 |
+
|
36 |
+
A: API key is a special key made by google in order to let users view their full list of fonts and use them in the plugin.
|
37 |
+
Without it the entire function of google fonts will not work.
|
38 |
+
|
39 |
+
Q: How do I create API key for the plugin?
|
40 |
+
|
41 |
+
A: Inside the plugin click on "HERE" at Settings->Font Settings->General Settings->Google API Key.
|
42 |
+
Open the Credentials page link. Select "Create a project".
|
43 |
+
Give the project a name, any name that makes sense to you is ok, then press OK.
|
44 |
+
Click on "Create credentials" > "API key".
|
45 |
+
There you go, google generated a brand new API key for you.
|
46 |
+
Copy the entire key and paste it on the designated place in the plugin settings.
|
47 |
+
|
48 |
+
Q: What the option "Show Font Family Preview" means?
|
49 |
+
|
50 |
+
A: When selecting fonts in section 1, you will see a lot of different fonts, ticking this option will let you to actually
|
51 |
+
see example of the font you are about to use.
|
52 |
+
Due to the need of loading each font example from google, this option will slow down the performance of the plugin page.
|
53 |
+
|
54 |
+
Q: What the option "Access Settings Role" means?
|
55 |
+
|
56 |
+
A: We wanted to give you the option to decide which roles in your wordpress website are allowed to use the plugin, so you may or may not allow other users with access to the website the ability to use the plugin.
|
57 |
+
|
58 |
+
== Screenshots ==
|
59 |
+
1.Choosing Google & uploading fonts in just 1 step.
|
60 |
+
2.Assigning the fonts you have chosen to various elements in your website.
|
61 |
+
3.Assigning the fonts you have chosen to your own elements in your website & managing all your fonts.
|
62 |
+
|
63 |
+
4.General settings & role restictions.
|
64 |
+
== Changelog ==
|
65 |
+
|
66 |
+
= 1.0.0 =
|
67 |
+
* Plugin publish initial release.
|
68 |
+
|
69 |
+
== Upgrade Notice ==
|
settings.php
ADDED
@@ -0,0 +1,1443 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FoSettingsPage
|
3 |
+
{
|
4 |
+
/**
|
5 |
+
* Holds the option values for the general section.
|
6 |
+
*/
|
7 |
+
private $general_options;
|
8 |
+
|
9 |
+
/**
|
10 |
+
* Holds the option values for the elements section.
|
11 |
+
*/
|
12 |
+
private $elements_options;
|
13 |
+
|
14 |
+
/**
|
15 |
+
* Holds all the fonts available.
|
16 |
+
* An Objects array that contains the information on each font.
|
17 |
+
*/
|
18 |
+
private $available_fonts;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* Holds all the usable to be used in the website from available fonts.
|
22 |
+
* An Objects array that contains the information on each font.
|
23 |
+
*/
|
24 |
+
private $usable_fonts;
|
25 |
+
|
26 |
+
/**
|
27 |
+
* Holds all the usable fonts from the database.
|
28 |
+
* An Objects array that contains the information on each font.
|
29 |
+
*/
|
30 |
+
private $usable_fonts_db;
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Holds the known fonts available.
|
34 |
+
* An Objects array that contains the information on each font.
|
35 |
+
*/
|
36 |
+
private $known_fonts;
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Holds the custom fonts available.
|
40 |
+
* An Objects array that contains the information on each font.
|
41 |
+
*/
|
42 |
+
private $custom_fonts;
|
43 |
+
|
44 |
+
/**
|
45 |
+
* Holds the google fonts available.
|
46 |
+
* An Objects array that contains the information on each font.
|
47 |
+
*/
|
48 |
+
private $google_fonts;
|
49 |
+
|
50 |
+
/**
|
51 |
+
* Holds the number of google fonts to load per request
|
52 |
+
*/
|
53 |
+
private $fonts_per_link;
|
54 |
+
|
55 |
+
/**
|
56 |
+
* Holds the list of the supported font files for this settings.
|
57 |
+
*/
|
58 |
+
private $supported_font_files;
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Holds the error, if any, recieved from uploading a font.
|
62 |
+
*/
|
63 |
+
private $recent_error;
|
64 |
+
|
65 |
+
/**
|
66 |
+
* Holds the known elements id and title to select a font for.
|
67 |
+
*/
|
68 |
+
private $elements;
|
69 |
+
|
70 |
+
/**
|
71 |
+
* Holds the value if it should include font link (aka include google fonts for the settings page).
|
72 |
+
* If set to false. loads only the usable fonts.
|
73 |
+
*/
|
74 |
+
private $include_font_link;
|
75 |
+
|
76 |
+
/**
|
77 |
+
* Holds a list of all the custom elements from the database.
|
78 |
+
*/
|
79 |
+
private $custom_elements;
|
80 |
+
|
81 |
+
/**
|
82 |
+
* The selected font to manage in last step.
|
83 |
+
*/
|
84 |
+
private $selected_manage_font;
|
85 |
+
|
86 |
+
/**
|
87 |
+
* Should create a css file (override if exists) based on recent actions made.
|
88 |
+
*/
|
89 |
+
private $should_create_css;
|
90 |
+
|
91 |
+
/**
|
92 |
+
* Is the current user admin or not.
|
93 |
+
*/
|
94 |
+
private $is_admin;
|
95 |
+
|
96 |
+
/**
|
97 |
+
* Start up
|
98 |
+
*/
|
99 |
+
public function __construct()
|
100 |
+
{
|
101 |
+
require_once FO_ABSPATH . 'classes/class-ElementsTable.php';
|
102 |
+
|
103 |
+
add_action( 'admin_menu', array( $this, 'add_plugin_page' ) );
|
104 |
+
add_action( 'admin_init', array( $this, 'page_init' ) );
|
105 |
+
|
106 |
+
$this->fonts_per_link = 150;
|
107 |
+
$this->supported_font_files = array('.woff', '.woff2', '.ttf','.otf');
|
108 |
+
$this->custom_fonts = array();
|
109 |
+
$this->available_fonts = array();
|
110 |
+
$this->google_fonts = array();
|
111 |
+
$this->should_create_css = false;
|
112 |
+
$this->is_admin = current_user_can('manage_options');
|
113 |
+
$this->elements = array('body_font' => __('<body> Font', 'font-organizer'),
|
114 |
+
'h1_font' => __('<h1> Font', 'font-organizer'),
|
115 |
+
'h2_font' => __('<h2> Font', 'font-organizer'),
|
116 |
+
'h3_font' => __('<h3> Font', 'font-organizer'),
|
117 |
+
'h4_font' => __('<h4> Font', 'font-organizer'),
|
118 |
+
'h5_font' => __('<h5> Font', 'font-organizer'),
|
119 |
+
'h6_font' => __('<h6> Font', 'font-organizer'),
|
120 |
+
'p_font' => __('<p> Font', 'font-organizer'),
|
121 |
+
'q_font' => __('<q> Font', 'font-organizer'),
|
122 |
+
'li_font' => __('<li> Font', 'font-organizer'),
|
123 |
+
'a_font' => __('<a> Font', 'font-organizer'),
|
124 |
+
);
|
125 |
+
|
126 |
+
// An upload is made. Upload the file and proccess it.
|
127 |
+
if (isset($_POST['submit_upload_font'])){
|
128 |
+
if($args = $this->validate_upload()){
|
129 |
+
$this->upload_file($args);
|
130 |
+
}else{
|
131 |
+
add_action( 'admin_notices', array($this, 'upload_failed_admin_notice') );
|
132 |
+
}
|
133 |
+
}
|
134 |
+
|
135 |
+
if (isset($_POST['submit_usable_font'])){
|
136 |
+
if($args = $this->validate_add_usable()){
|
137 |
+
$this->use_font($args);
|
138 |
+
}else{
|
139 |
+
add_action( 'admin_notices', array($this, 'use_font_failed_admin_notice') );
|
140 |
+
}
|
141 |
+
}
|
142 |
+
|
143 |
+
if (isset($_POST['delete_usable_font'])){
|
144 |
+
if($args = $this->validate_delete_usable()){
|
145 |
+
$this->delete_font($args);
|
146 |
+
$this->should_create_css = true;
|
147 |
+
}else{
|
148 |
+
add_action( 'admin_notices', array($this, 'delete_font_failed_admin_notice') );
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
if(isset($_POST['submit_custom_elements'])){
|
153 |
+
if($args = $this->validate_custom_elements()){
|
154 |
+
$this->add_custom_elements($args);
|
155 |
+
$this->should_create_css = true;
|
156 |
+
}else{
|
157 |
+
add_action( 'admin_notices', array($this, 'add_custom_elements_failed_admin_notice') );
|
158 |
+
}
|
159 |
+
}
|
160 |
+
}
|
161 |
+
|
162 |
+
/**
|
163 |
+
* Register all the required scripts for this page.
|
164 |
+
*/
|
165 |
+
public function register_scripts() {
|
166 |
+
wp_enqueue_script( 'jquery-ui-core' );
|
167 |
+
wp_enqueue_script( 'jquery-ui-autocomplete' );
|
168 |
+
wp_enqueue_script( 'fo-settings-script', plugins_url( 'assets/js/settings.js', __FILE__ ) , array( 'jquery' ) );
|
169 |
+
wp_enqueue_style( 'fo-settings-css', plugins_url( 'assets/css/settings.css', __FILE__ ) );
|
170 |
+
}
|
171 |
+
|
172 |
+
/**
|
173 |
+
* Add options settings page in the wordpress settings.
|
174 |
+
*/
|
175 |
+
public function add_plugin_page()
|
176 |
+
{
|
177 |
+
// This page will be under "Settings"
|
178 |
+
$hook = add_options_page(
|
179 |
+
'Settings Admin',
|
180 |
+
__('Font Settings', 'font-organizer'),
|
181 |
+
'manage_fonts',
|
182 |
+
'font-setting-admin',
|
183 |
+
array( $this, 'create_font_settings_page' )
|
184 |
+
);
|
185 |
+
|
186 |
+
add_action( 'load-' . $hook, array( $this, 'init_page' ) );
|
187 |
+
add_action( 'load-' . $hook, array( $this, 'register_scripts' ) );
|
188 |
+
add_action( 'load-' . $hook, array( $this, 'create_css_file' ) );
|
189 |
+
add_filter( 'option_page_capability_fo_general_options', array($this, 'options_capability') );
|
190 |
+
add_filter( 'option_page_capability_fo_elements_options', array($this, 'options_capability') );
|
191 |
+
}
|
192 |
+
|
193 |
+
// Allows to tell wordpress that the options named fo_general_options & fo_elements_options
|
194 |
+
// can be saved by manage_fonts capability and by any role with this capability.
|
195 |
+
public function options_capability( $cap ) {
|
196 |
+
return 'manage_fonts';
|
197 |
+
}
|
198 |
+
|
199 |
+
public function init_page(){
|
200 |
+
$this->init();
|
201 |
+
}
|
202 |
+
|
203 |
+
public function create_css_file(){
|
204 |
+
global $css_full_file_path;
|
205 |
+
global $css_directory_path;
|
206 |
+
|
207 |
+
if((!isset($_GET['settings-updated']) || !$_GET['settings-updated']) && !$this->should_create_css){
|
208 |
+
return;
|
209 |
+
}
|
210 |
+
|
211 |
+
$content = "/* This Awesome CSS file was created by Font Orgranizer from Hive :) */\n\n";
|
212 |
+
$custom_fonts_content = '';
|
213 |
+
$google_fonts = array();
|
214 |
+
foreach ($this->usable_fonts as $key => $usable_font) {
|
215 |
+
switch ($usable_font->kind) {
|
216 |
+
case 'custom':
|
217 |
+
$url = $usable_font->files->regular;
|
218 |
+
$custom_fonts_content .= "
|
219 |
+
@font-face {
|
220 |
+
font-family: '" . $usable_font->family . "';
|
221 |
+
src: url('" . $url . "') format('" . fo_get_font_format($url) . "');
|
222 |
+
font-weight: normal;
|
223 |
+
font-style: normal;
|
224 |
+
}\n";
|
225 |
+
break;
|
226 |
+
case 'webfonts#webfont': // Google font
|
227 |
+
$google_fonts[] = str_replace(' ', '+', $usable_font->family);
|
228 |
+
case 'regular':
|
229 |
+
default:
|
230 |
+
break;
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
// Add Google fonts to the css. MUST BE FIRST.
|
235 |
+
if(!empty($google_fonts)){
|
236 |
+
// We are assuming not to much google fonts. If it is, we need to split the request.
|
237 |
+
// $content .= "<link href='http://fonts.googleapis.com/css?family=". implode("|", $google_fonts) . "' rel='stylesheet' type='text/css'>\n";
|
238 |
+
$content .= "@import url('http://fonts.googleapis.com/css?family=". implode("|", $google_fonts) . "');\n";
|
239 |
+
}
|
240 |
+
|
241 |
+
// Add the custom fonts css that was created before.
|
242 |
+
$content .= $custom_fonts_content;
|
243 |
+
|
244 |
+
// Add the known elements css.
|
245 |
+
foreach ($this->elements_options as $key => $value) {
|
246 |
+
if(strpos($key, 'important') || !$value)
|
247 |
+
continue;
|
248 |
+
|
249 |
+
$strip_key = str_replace('_font', '', $key);
|
250 |
+
$important = $this->elements_options[$key . '_important'];
|
251 |
+
$content .= sprintf("%s { font-family: '%s'%s; }\n", $strip_key, $value, $important ? '!important' : '');
|
252 |
+
}
|
253 |
+
|
254 |
+
// Add custom elements css.
|
255 |
+
foreach ($this->custom_elements as $custom_element_db) {
|
256 |
+
$content .= sprintf("%s { font-family: '%s'%s; }\n", $custom_element_db->custom_elements, $custom_element_db->name, $custom_element_db->important ? '!important' : '');
|
257 |
+
}
|
258 |
+
|
259 |
+
if($content){
|
260 |
+
|
261 |
+
// Make sure directory exists.
|
262 |
+
if(!is_dir($css_directory_path))
|
263 |
+
mkdir($css_directory_path, 0755, true);
|
264 |
+
|
265 |
+
$fhandler = fopen($css_full_file_path, "w");
|
266 |
+
if(!$fhandler){
|
267 |
+
add_action( 'admin_notices', array($this, 'generate_css_failed_admin_notice') );
|
268 |
+
return;
|
269 |
+
}
|
270 |
+
|
271 |
+
fwrite($fhandler, $content);
|
272 |
+
fclose($fhandler);
|
273 |
+
}
|
274 |
+
}
|
275 |
+
|
276 |
+
/**
|
277 |
+
* Initialize the class private fields. Options, Google fonts list, known fonts, available fonts,
|
278 |
+
* and all the usable fonts.
|
279 |
+
*/
|
280 |
+
public function init(){
|
281 |
+
$this->general_options = get_option( 'fo_general_options' );
|
282 |
+
$this->elements_options = get_option( 'fo_elements_options' );
|
283 |
+
$this->custom_elements_table = new ElementsTable();
|
284 |
+
|
285 |
+
$this->include_font_link = isset( $this->general_options['include_font_link'] ) && $this->general_options['include_font_link'];
|
286 |
+
|
287 |
+
if(isset($this->general_options['google_key']) && $this->general_options['google_key']){
|
288 |
+
// Add Google fonts.
|
289 |
+
set_time_limit(0);
|
290 |
+
$response = wp_remote_get("https://www.googleapis.com/webfonts/v1/webfonts?sort=alpha&key=" . $this->general_options['google_key']);
|
291 |
+
if( wp_remote_retrieve_response_code( $response ) == 200){
|
292 |
+
$this->google_fonts = json_decode(wp_remote_retrieve_body($response))->items;
|
293 |
+
}else{
|
294 |
+
add_settings_error('google_key', '', __('Google API key is not valid: ', 'font-organizer') . wp_remote_retrieve_response_message($response), 'error');
|
295 |
+
}
|
296 |
+
}else{
|
297 |
+
add_settings_error('google_key', '', __('Google API key is not set! Cannot display google fonts.', 'font-organizer'), 'error');
|
298 |
+
}
|
299 |
+
|
300 |
+
// Add known fonts.
|
301 |
+
$this->known_fonts = $this->get_known_fonts_array();
|
302 |
+
|
303 |
+
$this->available_fonts = array_merge($this->available_fonts, $this->google_fonts, $this->known_fonts );
|
304 |
+
|
305 |
+
// Get all usable fonts and add them to a list.
|
306 |
+
$this->load_usable_fonts();
|
307 |
+
$this->load_custom_elements();
|
308 |
+
}
|
309 |
+
|
310 |
+
/**
|
311 |
+
* Options page callback
|
312 |
+
*/
|
313 |
+
public function create_font_settings_page(){
|
314 |
+
if(isset($_GET['manage_font_id'])){
|
315 |
+
foreach ($this->usable_fonts_db as $font_db) {
|
316 |
+
if(intval($_GET['manage_font_id']) == $font_db->id){
|
317 |
+
$this->selected_manage_font = $this->usable_fonts[$font_db->name];
|
318 |
+
$this->custom_elements_table->prepare_items_by_font($this->custom_elements, $font_db->id);
|
319 |
+
break;
|
320 |
+
}
|
321 |
+
}
|
322 |
+
}
|
323 |
+
|
324 |
+
// Load the google fonts if selected or if not specified. else load just whats usable.
|
325 |
+
if($this->include_font_link)
|
326 |
+
fo_print_links($this->google_fonts, $this->fonts_per_link);
|
327 |
+
else
|
328 |
+
fo_print_links($this->usable_fonts, $this->fonts_per_link);
|
329 |
+
|
330 |
+
?>
|
331 |
+
<div class="wrap">
|
332 |
+
<h1><?php _e('Font Settings', 'font-organizer'); ?></h1>
|
333 |
+
|
334 |
+
<div id="poststuff">
|
335 |
+
<div id="post-body" class="metabox-holder columns-2">
|
336 |
+
|
337 |
+
<!-- main content -->
|
338 |
+
<div id="post-body-content">
|
339 |
+
|
340 |
+
<!-- General Settings Section -->
|
341 |
+
<div class="postbox">
|
342 |
+
<a name="step1"></a>
|
343 |
+
<h2 class="hndle ui-sortable-handle" style="cursor:default;"><span><?php _e('General Settings', 'font-organizer'); ?></span></h2>
|
344 |
+
<div class="inside">
|
345 |
+
<form method="post" action="options.php">
|
346 |
+
<?php
|
347 |
+
// This prints out all hidden setting fields
|
348 |
+
settings_fields( 'fo_general_options' );
|
349 |
+
fo_do_settings_section( 'font-setting-admin', 'setting_general' );
|
350 |
+
submit_button();
|
351 |
+
?>
|
352 |
+
</form>
|
353 |
+
</div>
|
354 |
+
</div>
|
355 |
+
|
356 |
+
<!-- Add Google & Regular Fonts To Website Section -->
|
357 |
+
<div class="postbox">
|
358 |
+
<a name="step2"></a>
|
359 |
+
<h2 class="hndle ui-sortable-handle" style="cursor:default;"><span><?php _e('1. Add Fonts', 'font-organizer'); ?></span></h2>
|
360 |
+
<div class="inside">
|
361 |
+
<span><?php _e('Step 1: Select and add fonts to be used in your website. Select as many as you wish.', 'font-organizer'); ?></span>
|
362 |
+
<br />
|
363 |
+
<span><?php _e('You can select google or regular fonts.', 'font-organizer'); ?></span>
|
364 |
+
<form action="" id="add_usable_font_form" name="add_usable_font_form" method="post">
|
365 |
+
<table class="form-table">
|
366 |
+
<tr>
|
367 |
+
<th scope="row"><?php _e('Available Fonts', 'font-organizer'); ?></th>
|
368 |
+
<td><?php $this->print_available_fonts_list('usable_font'); ?></td>
|
369 |
+
</tr>
|
370 |
+
<tr>
|
371 |
+
<th scope="row"></th>
|
372 |
+
<td>
|
373 |
+
<?php wp_nonce_field( 'add_usable_font', 'add_usable_font_nonce' ); ?>
|
374 |
+
<input type="submit" name="submit_usable_font" id="submit_usable_font" class="button-primary" value="<?php _e('Use This Font', 'font-organizer'); ?>" />
|
375 |
+
</td>
|
376 |
+
</tr>
|
377 |
+
</table>
|
378 |
+
</form>
|
379 |
+
</div>
|
380 |
+
</div>
|
381 |
+
|
382 |
+
<!-- Add Custom Fonts To Website Section -->
|
383 |
+
<div class="postbox">
|
384 |
+
<a name="step3"></a>
|
385 |
+
<h2 class="hndle ui-sortable-handle" style="cursor:default;"><span><?php _e('2. Custom Fonts', 'font-organizer'); ?></span></h2>
|
386 |
+
<div class="inside">
|
387 |
+
<span><?php _e('Step 2: Upload custom fonts to be used in your website. Here too, you can upload as many as you wish.', 'font-organizer'); ?></span>
|
388 |
+
<form action="" id="add_font_form" name="add_font_form" method="post" enctype="multipart/form-data">
|
389 |
+
<table class="form-table">
|
390 |
+
<tr>
|
391 |
+
<th scope="row"><?php _e('Font Name', 'font-organizer'); ?></th>
|
392 |
+
<td><input type="text" id="font_name" name="font_name" value="" maxlength="20" class="required" /></td>
|
393 |
+
</tr>
|
394 |
+
<tr>
|
395 |
+
<th scope="row"><?php _e('Font File', 'font-organizer'); ?></th>
|
396 |
+
<td>
|
397 |
+
<input type="file" id="font_file" name="font_file" value="" class="required" accept="<?php echo join(',',$this->supported_font_files); ?>" /><br/>
|
398 |
+
<em><?php echo __('Accepted Font Format : ', 'font-organizer') . '<span style="direction: ltr">' . join(', ',$this->supported_font_files) . '</span>'; ?></em><br/>
|
399 |
+
</td>
|
400 |
+
</tr>
|
401 |
+
<tr>
|
402 |
+
<th scope="row"></th>
|
403 |
+
<td>
|
404 |
+
<?php wp_nonce_field( 'add_custom_font', 'add_custom_font_nonce' ); ?>
|
405 |
+
<input type="submit" name="submit_upload_font" id="submit_upload_font" class="button-primary" value="<?php _e('Upload', 'font-organizer'); ?>" />
|
406 |
+
</td>
|
407 |
+
</tr>
|
408 |
+
</table>
|
409 |
+
</form>
|
410 |
+
</div>
|
411 |
+
</div>
|
412 |
+
|
413 |
+
<!-- Assign Fonts To Known Elements Section -->
|
414 |
+
<div class="postbox">
|
415 |
+
<a name="step4"></a>
|
416 |
+
<h2 class="hndle ui-sortable-handle" style="cursor:default;"><span><?php _e('3. Known Elements Settings', 'font-organizer'); ?></span></h2>
|
417 |
+
<div class="inside">
|
418 |
+
|
419 |
+
<span><?php _e('Step 3: For each element you can assign a font you have added in step 1 & 2.', 'font-organizer'); ?></span>
|
420 |
+
<p><strong><?php _e('Note: ', 'font-organizer'); ?></strong><?php _e('Custom fonts you uploaded are automatically used in your website.', 'font-organizer'); ?></p>
|
421 |
+
|
422 |
+
<form method="post" action="options.php">
|
423 |
+
<?php
|
424 |
+
// This prints out all hidden setting fields
|
425 |
+
settings_fields( 'fo_elements_options' );
|
426 |
+
fo_do_settings_section( 'font-setting-admin', 'setting_elements' );
|
427 |
+
submit_button();
|
428 |
+
?>
|
429 |
+
</form>
|
430 |
+
</div>
|
431 |
+
</div>
|
432 |
+
|
433 |
+
<!-- Assign Fonts To Custom Elements Section -->
|
434 |
+
<div class="postbox">
|
435 |
+
<a name="step5"></a>
|
436 |
+
<h2 class="hndle ui-sortable-handle" style="cursor:default;"><span><?php _e('4. Custom Elements Settings', 'font-organizer'); ?></span></h2>
|
437 |
+
<div class="inside">
|
438 |
+
|
439 |
+
<span><?php _e('Step 4: Assign font that you have added to your website to custom elements.', 'font-organizer'); ?></span>
|
440 |
+
<form action="" id="add_custom_elements_form" name="add_custom_elements_form" method="post">
|
441 |
+
<table class="form-table">
|
442 |
+
<tr>
|
443 |
+
<th scope="row"><?php _e('Font', 'font-organizer'); ?></th>
|
444 |
+
<td><?php $this->print_custom_elements_usable_fonts_list('font_id'); ?></td>
|
445 |
+
</tr>
|
446 |
+
<tr>
|
447 |
+
<th scope="row"><?php _e('Custom Element', 'font-organizer'); ?></th>
|
448 |
+
<td>
|
449 |
+
<textarea id="custom_elements" name="custom_elements" style="width: 100%" rows="2"></textarea>
|
450 |
+
<em><?php _e('Custom elements can be seperated by commas to allow multiple elements. Example: #myelementid, .myelementclass, .myelementclass .foo, etc.', 'font-organizer'); ?></em>
|
451 |
+
</td>
|
452 |
+
</tr>
|
453 |
+
<tr>
|
454 |
+
<th></th>
|
455 |
+
<td><?php $this->print_is_important_checkbox('important'); ?></td>
|
456 |
+
</tr>
|
457 |
+
<tr>
|
458 |
+
<th scope="row"></th>
|
459 |
+
<td>
|
460 |
+
<?php wp_nonce_field( 'add_custom_elements', 'add_custom_elements_nonce' ); ?>
|
461 |
+
<input type="submit" name="submit_custom_elements" id="submit_custom_elements" class="button-primary" value="<?php _e('Apply Custom Elements', 'font-organizer'); ?>" />
|
462 |
+
</td>
|
463 |
+
</tr>
|
464 |
+
</table>
|
465 |
+
</form>
|
466 |
+
</div>
|
467 |
+
</div>
|
468 |
+
|
469 |
+
<!-- Manage Used fonts Section -->
|
470 |
+
<div class="postbox">
|
471 |
+
<a name="step6"></a>
|
472 |
+
<h2 class="hndle ui-sortable-handle" style="cursor:default;"><span><?php _e('5. Manage Fonts', 'font-organizer'); ?></span></h2>
|
473 |
+
<div class="inside">
|
474 |
+
<form action="#step6" id="select_font_form" name="select_font_form" method="get">
|
475 |
+
<table class="form-table">
|
476 |
+
<tr>
|
477 |
+
<th scope="row"><?php _e('Font', 'font-organizer'); ?></th>
|
478 |
+
<td><?php $this->print_custom_elements_usable_fonts_list('manage_font_id', __('-- Select Font --', 'font-organizer')); ?></td>
|
479 |
+
</tr>
|
480 |
+
</table>
|
481 |
+
<input type="hidden" name="page" value="<?php echo wp_unslash( $_REQUEST['page'] ); ?>">
|
482 |
+
</form>
|
483 |
+
<?php if($this->selected_manage_font): ?>
|
484 |
+
<hr/>
|
485 |
+
<table class="form-table">
|
486 |
+
<tr>
|
487 |
+
<th scope="row"><?php _e('Source', 'font-organizer'); ?></th>
|
488 |
+
<td><span><?php fo_print_source($this->selected_manage_font->kind); ?></span></td>
|
489 |
+
</tr>
|
490 |
+
<tr>
|
491 |
+
<th scope="row"><?php _e('Urls', 'font-organizer'); ?></th>
|
492 |
+
<td>
|
493 |
+
<span>
|
494 |
+
<?php
|
495 |
+
$urls = explode('|', $this->selected_manage_font->files->regular);
|
496 |
+
foreach($urls as $url)
|
497 |
+
echo $url, '<br>';
|
498 |
+
?>
|
499 |
+
</span>
|
500 |
+
</td>
|
501 |
+
</tr>
|
502 |
+
</table>
|
503 |
+
<div class="wp-table-fo-container">
|
504 |
+
<form id="custom_elements-filter" method="get" action="#step6">
|
505 |
+
<input type="hidden" name="page" value="<?php echo $_REQUEST['page'] ?>" />
|
506 |
+
<input type="hidden" name="manage_font_id" value="<?php echo $_GET['manage_font_id']; ?>">
|
507 |
+
<?php $this->custom_elements_table->display(); ?>
|
508 |
+
</form>
|
509 |
+
</div>
|
510 |
+
<?php
|
511 |
+
endif;
|
512 |
+
?>
|
513 |
+
</div>
|
514 |
+
</div>
|
515 |
+
|
516 |
+
</div>
|
517 |
+
|
518 |
+
<!-- sidebar -->
|
519 |
+
<div id="postbox-container-1" class="postbox-container">
|
520 |
+
<div class="meta-box-sortables">
|
521 |
+
<div class="postbox">
|
522 |
+
<h2>
|
523 |
+
<span><?php esc_attr_e('Thank you', 'font-organizer'); ?></span>
|
524 |
+
</h2>
|
525 |
+
|
526 |
+
<div class="inside">
|
527 |
+
<p><?php _e(
|
528 |
+
'Thank you for using an <a href="http://hivewebstudios.com" target="_blank">Hive</a> plugin! We 5 star you already, so why don\'t you <a href="https://wordpress.org/support/plugin/font-organizer/reviews/?rate=5#new-post" target="_blank">5 star us too</a>?' . '<br /><br />' . '<p>Anyway, if you need anything, this may help:</p> <ul style="list-style-type:disc;margin: 0 20px;">
|
529 |
+
<li><a href="http://hivewebstudios.com/font-organizer#faqs" target="_blank">FAQ</a></li>
|
530 |
+
<li><a href="https://wordpress.org/support/plugin/font-organizer/reviews/" target="_blank">Support Forums</a></li>
|
531 |
+
<li><a href="http://hivewebstudios.com/font-organizer" target="_blank">Contact us</a></li>
|
532 |
+
<li><a href="https://www.facebook.com/hivewp" target="_blank">Hive Facebook page</a></li>
|
533 |
+
</ul>' ,
|
534 |
+
'font-organizer'
|
535 |
+
); ?></p>
|
536 |
+
</div>
|
537 |
+
</div>
|
538 |
+
</div>
|
539 |
+
</form>
|
540 |
+
</div>
|
541 |
+
<?php
|
542 |
+
}
|
543 |
+
|
544 |
+
private function validate_upload(){
|
545 |
+
if(!isset( $_POST['add_custom_font_nonce'] ) || !wp_verify_nonce( $_POST['add_custom_font_nonce'], 'add_custom_font' )){
|
546 |
+
$this->recent_error = __('Session ended, please try again.', 'font-organizer');
|
547 |
+
return false;
|
548 |
+
}
|
549 |
+
|
550 |
+
$args['font_name'] = sanitize_text_field( $_POST['font_name'] );
|
551 |
+
if(!$args['font_name']){
|
552 |
+
$this->recent_error = __('Font name is empty or invalid.', 'font-organizer');
|
553 |
+
return false;
|
554 |
+
}
|
555 |
+
|
556 |
+
if(!isset($_FILES['font_file'])){
|
557 |
+
$this->recent_error = __('Font file is not selected.', 'font-organizer');
|
558 |
+
return false;
|
559 |
+
}
|
560 |
+
|
561 |
+
$args['font_file'] = $_FILES['font_file'];
|
562 |
+
$args['font_file_name'] = sanitize_file_name( $args['font_file']['name'] );
|
563 |
+
if(!$args['font_file_name']){
|
564 |
+
$this->recent_error = __('Font file is not valid.', 'font-organizer');
|
565 |
+
return false;
|
566 |
+
}
|
567 |
+
|
568 |
+
return $args;
|
569 |
+
}
|
570 |
+
|
571 |
+
private function validate_add_usable(){
|
572 |
+
if(!isset( $_POST['add_usable_font_nonce'] ) || !wp_verify_nonce( $_POST['add_usable_font_nonce'], 'add_usable_font' )){
|
573 |
+
$this->recent_error = __('Session ended, please try again.', 'font-organizer');
|
574 |
+
return false;
|
575 |
+
}
|
576 |
+
|
577 |
+
$args['usable_font'] = sanitize_text_field( $_POST['usable_font'] );
|
578 |
+
if(!$args['usable_font']){
|
579 |
+
$this->recent_error = __('Usable font is empty or invalid.', 'font-organizer');
|
580 |
+
return false;
|
581 |
+
}
|
582 |
+
|
583 |
+
return $args;
|
584 |
+
}
|
585 |
+
|
586 |
+
private function validate_custom_elements(){
|
587 |
+
if(!isset( $_POST['add_custom_elements_nonce'] ) || !wp_verify_nonce( $_POST['add_custom_elements_nonce'], 'add_custom_elements' )){
|
588 |
+
$this->recent_error = __('Session ended, please try again.', 'font-organizer');
|
589 |
+
return false;
|
590 |
+
}
|
591 |
+
|
592 |
+
$args['custom_elements'] = sanitize_text_field( $_POST['custom_elements'] );
|
593 |
+
if(!$args['custom_elements']){
|
594 |
+
$this->recent_error = __('Custom elements is empty or invalid.', 'font-organizer');
|
595 |
+
return false;
|
596 |
+
}
|
597 |
+
|
598 |
+
$args['important'] = $_POST['important'] ? 1 : 0;
|
599 |
+
|
600 |
+
$args['font_id'] = $_POST['font_id'];
|
601 |
+
|
602 |
+
return $args;
|
603 |
+
}
|
604 |
+
|
605 |
+
private function validate_delete_usable(){
|
606 |
+
if(!isset( $_POST['delete_usable_font_nonce'] ) || !wp_verify_nonce( $_POST['delete_usable_font_nonce'], 'delete_usable_font' )){
|
607 |
+
$this->recent_error = __('Session ended, please try again.', 'font-organizer');
|
608 |
+
return false;
|
609 |
+
}
|
610 |
+
|
611 |
+
$args['font_name'] = sanitize_text_field( $_POST['font_name'] );
|
612 |
+
if(!$args['font_name']){
|
613 |
+
$this->recent_error = __('Something went horribly wrong. Ask the support!', 'font-organizer');
|
614 |
+
return false;
|
615 |
+
}
|
616 |
+
|
617 |
+
return $args;
|
618 |
+
}
|
619 |
+
|
620 |
+
private function upload_file($args = array()){
|
621 |
+
|
622 |
+
$movefile = fo_upload_file($args['font_file'], array($this, 'fo_upload_dir'));
|
623 |
+
|
624 |
+
if ( $movefile && ! isset( $movefile['error'] ) ) {
|
625 |
+
add_action( 'admin_notices', array($this, 'upload_successfull_admin_notice') );
|
626 |
+
$this->save_usable_font_to_database($args['font_name'], $movefile['url'], true);
|
627 |
+
} else {
|
628 |
+
/**
|
629 |
+
* Error generated by _wp_handle_upload()
|
630 |
+
* @see _wp_handle_upload() in wp-admin/includes/file.php
|
631 |
+
*/
|
632 |
+
$this->recent_error = $movefile['error'];
|
633 |
+
add_action( 'admin_notices', array($this, 'upload_failed_admin_notice') );
|
634 |
+
}
|
635 |
+
}
|
636 |
+
|
637 |
+
private function use_font($args = array()){
|
638 |
+
add_action( 'admin_notices', array($this, 'use_font_successfull_admin_notice') );
|
639 |
+
$this->save_usable_font_to_database($args['usable_font']);
|
640 |
+
}
|
641 |
+
|
642 |
+
private function add_custom_elements($args = array()){
|
643 |
+
add_action( 'admin_notices', array($this, 'add_custom_elements_successfull_admin_notice') );
|
644 |
+
$this->save_custom_elements_to_database($args['font_id'], $args['custom_elements'], $args['important']);
|
645 |
+
}
|
646 |
+
|
647 |
+
private function delete_font($args = array()){
|
648 |
+
add_action( 'admin_notices', array($this, 'delete_font_successfull_admin_notice') );
|
649 |
+
$this->delete_from_database($args['font_name']);
|
650 |
+
}
|
651 |
+
|
652 |
+
private function delete_from_database($name){
|
653 |
+
global $wpdb;
|
654 |
+
$table_name = $wpdb->prefix . FO_USABLE_FONTS_DATABASE;
|
655 |
+
|
656 |
+
$wpdb->delete( $table_name, array( 'name' => $name ) );
|
657 |
+
}
|
658 |
+
|
659 |
+
private function save_custom_elements_to_database($id, $custom_elements, $important){
|
660 |
+
global $wpdb;
|
661 |
+
$table_name = $wpdb->prefix . FO_ELEMENTS_DATABASE;
|
662 |
+
|
663 |
+
$wpdb->insert(
|
664 |
+
$table_name,
|
665 |
+
array(
|
666 |
+
'font_id' => $id,
|
667 |
+
'custom_elements' => $custom_elements,
|
668 |
+
'important' => $important ? 1 : 0,
|
669 |
+
));
|
670 |
+
}
|
671 |
+
|
672 |
+
private function save_usable_font_to_database($name, $url = '', $is_custom = false){
|
673 |
+
global $wpdb;
|
674 |
+
$table_name = $wpdb->prefix . FO_USABLE_FONTS_DATABASE;
|
675 |
+
|
676 |
+
$wpdb->insert(
|
677 |
+
$table_name,
|
678 |
+
array(
|
679 |
+
'name' => $name,
|
680 |
+
'url' => $url,
|
681 |
+
'custom' => $is_custom ? 1 : 0,
|
682 |
+
));
|
683 |
+
}
|
684 |
+
|
685 |
+
|
686 |
+
public function add_custom_elements_successfull_admin_notice() {
|
687 |
+
?>
|
688 |
+
<div class="updated notice">
|
689 |
+
<p><?php _e( 'Custom elements added to your website!', 'font-organizer' ); ?></p>
|
690 |
+
</div>
|
691 |
+
<?php
|
692 |
+
}
|
693 |
+
|
694 |
+
public function use_font_successfull_admin_notice() {
|
695 |
+
?>
|
696 |
+
<div class="updated notice">
|
697 |
+
<p><?php _e( 'Font can now be used in your website!', 'font-organizer' ); ?></p>
|
698 |
+
</div>
|
699 |
+
<?php
|
700 |
+
}
|
701 |
+
|
702 |
+
public function delete_font_successfull_admin_notice() {
|
703 |
+
?>
|
704 |
+
<div class="updated notice">
|
705 |
+
<p><?php _e( 'Font deleted from your website!', 'font-organizer' ); ?></p>
|
706 |
+
</div>
|
707 |
+
<?php
|
708 |
+
}
|
709 |
+
|
710 |
+
public function upload_successfull_admin_notice() {
|
711 |
+
?>
|
712 |
+
<div class="updated notice">
|
713 |
+
<p><?php _e( 'The file has been uploaded!', 'font-organizer' ); ?></p>
|
714 |
+
</div>
|
715 |
+
<?php
|
716 |
+
}
|
717 |
+
|
718 |
+
public function upload_failed_admin_notice() {
|
719 |
+
?>
|
720 |
+
<div class="error notice">
|
721 |
+
<p><?php echo __( 'Error uploading the file: ', 'font-organizer' ) . $this->recent_error; ?></p>
|
722 |
+
</div>
|
723 |
+
<?php
|
724 |
+
}
|
725 |
+
|
726 |
+
public function use_font_failed_admin_notice() {
|
727 |
+
?>
|
728 |
+
<div class="error notice">
|
729 |
+
<p><?php echo __( 'Error adding font to website fonts: ', 'font-organizer' ) . $this->recent_error; ?></p>
|
730 |
+
</div>
|
731 |
+
<?php
|
732 |
+
}
|
733 |
+
|
734 |
+
public function delete_font_failed_admin_notice() {
|
735 |
+
?>
|
736 |
+
<div class="error notice">
|
737 |
+
<p><?php echo __( 'Error deleting font: ', 'font-organizer' ) . $this->recent_error; ?></p>
|
738 |
+
</div>
|
739 |
+
<?php
|
740 |
+
}
|
741 |
+
|
742 |
+
public function generate_css_failed_admin_notice() {
|
743 |
+
?>
|
744 |
+
<div class="error notice">
|
745 |
+
<p><?php echo __( 'Failed to open or create the css file. Check for permissions.', 'font-organizer' ); ?></p>
|
746 |
+
</div>
|
747 |
+
<?php
|
748 |
+
}
|
749 |
+
|
750 |
+
/**
|
751 |
+
* Override the default upload path.
|
752 |
+
*
|
753 |
+
* @param array $dir
|
754 |
+
* @return array
|
755 |
+
*/
|
756 |
+
public function fo_upload_dir( $dir ) {
|
757 |
+
return array(
|
758 |
+
'path' => $dir['basedir'] . '/font-organizer',
|
759 |
+
'url' => $dir['baseurl'] . '/font-organizer',
|
760 |
+
'subdir' => '/font-organizer',
|
761 |
+
) + $dir;
|
762 |
+
}
|
763 |
+
|
764 |
+
/**
|
765 |
+
* Register and add settings
|
766 |
+
*/
|
767 |
+
public function page_init()
|
768 |
+
{
|
769 |
+
register_setting(
|
770 |
+
'fo_general_options', // Option group
|
771 |
+
'fo_general_options', // Option name
|
772 |
+
array( $this, 'general_sanitize' ) // Sanitize
|
773 |
+
);
|
774 |
+
register_setting(
|
775 |
+
'fo_elements_options', // Option group
|
776 |
+
'fo_elements_options', // Option name
|
777 |
+
array( $this, 'elements_sanitize' ) // Sanitize
|
778 |
+
);
|
779 |
+
add_settings_section(
|
780 |
+
'setting_general', // ID
|
781 |
+
'', // Title
|
782 |
+
array( $this, 'print_general_section_info' ), // Callback
|
783 |
+
'font-setting-admin' // Page
|
784 |
+
);
|
785 |
+
add_settings_field(
|
786 |
+
'google_key', // ID
|
787 |
+
__('Google API Key', 'font-organizer'), // Title
|
788 |
+
array( $this, 'google_key_callback' ), // Callback
|
789 |
+
'font-setting-admin', // Page
|
790 |
+
'setting_general' // Section
|
791 |
+
);
|
792 |
+
add_settings_field(
|
793 |
+
'include_font_link', // ID
|
794 |
+
__('Show Font Family Preview', 'font-organizer'), // Title
|
795 |
+
array( $this, 'include_font_link_callback' ), // Callback
|
796 |
+
'font-setting-admin', // Page
|
797 |
+
'setting_general' // Section
|
798 |
+
);
|
799 |
+
|
800 |
+
// If user is admin, display the permissions option.
|
801 |
+
if ($this->is_admin) {
|
802 |
+
add_settings_field(
|
803 |
+
'permissions', // ID
|
804 |
+
__('Access Settings Role', 'font-organizer'), // Title
|
805 |
+
array( $this, 'permissions_callback' ), // Callback
|
806 |
+
'font-setting-admin', // Page
|
807 |
+
'setting_general' // Section
|
808 |
+
);
|
809 |
+
}
|
810 |
+
|
811 |
+
add_settings_section(
|
812 |
+
'setting_elements', // ID
|
813 |
+
'', // Title
|
814 |
+
array( $this, 'print_elements_section_info' ), // Callback
|
815 |
+
'font-setting-admin' // Page
|
816 |
+
);
|
817 |
+
|
818 |
+
// Add all the elements to the elements section.
|
819 |
+
foreach ($this->elements as $id => $title) {
|
820 |
+
add_settings_field(
|
821 |
+
$id, // ID
|
822 |
+
htmlspecialchars($title), // Title
|
823 |
+
array( $this, 'fonts_list_field_callback' ), // Callback
|
824 |
+
'font-setting-admin', // Page
|
825 |
+
'setting_elements', // Section
|
826 |
+
$id // Parameter for Callback
|
827 |
+
);
|
828 |
+
|
829 |
+
add_settings_field(
|
830 |
+
$id . '_important', // ID
|
831 |
+
'', // Title
|
832 |
+
array( $this, 'is_important_element_field_callback' ), // Callback
|
833 |
+
'font-setting-admin', // Page
|
834 |
+
'setting_elements', // Section
|
835 |
+
$id . '_important' // Parameter for Callback
|
836 |
+
);
|
837 |
+
}
|
838 |
+
}
|
839 |
+
|
840 |
+
/**
|
841 |
+
* Sanitize each setting field as needed
|
842 |
+
*
|
843 |
+
* @param array $input Contains all settings fields as array keys
|
844 |
+
*/
|
845 |
+
public function general_sanitize( $input )
|
846 |
+
{
|
847 |
+
$new_input = array();
|
848 |
+
if( isset( $input['google_key'] ) )
|
849 |
+
$new_input['google_key'] = sanitize_text_field( $input['google_key'] );
|
850 |
+
|
851 |
+
if( !isset( $input['include_font_link'] ) )
|
852 |
+
$new_input['include_font_link'] = 0 ;
|
853 |
+
else
|
854 |
+
$new_input['include_font_link'] = $input['include_font_link'];
|
855 |
+
|
856 |
+
// Do not allow change in permissions if user is not admin.
|
857 |
+
if(!$this->is_admin)
|
858 |
+
return $new_input;
|
859 |
+
|
860 |
+
// Get the old permissions.
|
861 |
+
$this->general_options = get_option( 'fo_general_options' );
|
862 |
+
$old_permissions = isset($this->general_options['permissions']) ? $this->general_options['permissions'] : array();
|
863 |
+
|
864 |
+
// Get the new permissions.
|
865 |
+
$new_input['permissions'] = isset($input['permissions']) ? $input['permissions'] : array();
|
866 |
+
if($new_input != $old_permissions){
|
867 |
+
|
868 |
+
// Remove previus capabilities.
|
869 |
+
foreach ($old_permissions as $value) {
|
870 |
+
if($value != FO_DEFAULT_ROLE){
|
871 |
+
$prev_role = get_role($value);
|
872 |
+
$prev_role->remove_cap('manage_fonts');
|
873 |
+
}
|
874 |
+
}
|
875 |
+
|
876 |
+
// Add the new capabilities to the new roles.
|
877 |
+
foreach ($new_input['permissions'] as $value) {
|
878 |
+
$prev_role = get_role($value);
|
879 |
+
$prev_role->add_cap('manage_fonts');
|
880 |
+
}
|
881 |
+
}
|
882 |
+
|
883 |
+
return $new_input;
|
884 |
+
}
|
885 |
+
|
886 |
+
/**
|
887 |
+
* Sanitize each setting field as needed
|
888 |
+
*
|
889 |
+
* @param array $input Contains all settings fields as array keys
|
890 |
+
*/
|
891 |
+
public function elements_sanitize( $input )
|
892 |
+
{
|
893 |
+
$new_input = array();
|
894 |
+
foreach ($this->elements as $id => $title) {
|
895 |
+
if( isset( $input[$id] ) ){
|
896 |
+
$new_input[$id] = sanitize_text_field( $input[$id] );
|
897 |
+
}else{
|
898 |
+
$new_input[$id] = '';
|
899 |
+
}
|
900 |
+
|
901 |
+
if( !isset( $input[$id . '_important'] ) )
|
902 |
+
$new_input[$id . '_important'] = 0 ;
|
903 |
+
else
|
904 |
+
$new_input[$id . '_important'] = intval($input[$id . '_important']);
|
905 |
+
|
906 |
+
}
|
907 |
+
|
908 |
+
return $new_input;
|
909 |
+
}
|
910 |
+
|
911 |
+
/**
|
912 |
+
* Print the Section text
|
913 |
+
*/
|
914 |
+
public function print_general_section_info()
|
915 |
+
{
|
916 |
+
_e('This is the general settings for the site.', 'font-organizer');
|
917 |
+
}
|
918 |
+
|
919 |
+
/**
|
920 |
+
* Print the Section text
|
921 |
+
*/
|
922 |
+
public function print_elements_section_info()
|
923 |
+
{
|
924 |
+
}
|
925 |
+
|
926 |
+
/**
|
927 |
+
* Get the settings option for google key array and print one of its values
|
928 |
+
*/
|
929 |
+
public function google_key_callback()
|
930 |
+
{
|
931 |
+
echo '<span class="highlight info">';
|
932 |
+
|
933 |
+
$url = 'https://developers.google.com/fonts/docs/developer_api#acquiring_and_using_an_api_key';
|
934 |
+
|
935 |
+
echo sprintf( __( 'To get all the fonts, Google requires the mandatory use of an API key, get one from <a href="%s" target="_blank">HERE</a>', 'font-organizer' ), esc_url( $url ) );
|
936 |
+
|
937 |
+
echo '</span> <br />';
|
938 |
+
|
939 |
+
printf(
|
940 |
+
'<input type="text" id="google_key" name="fo_general_options[google_key]" value="%s" class="large-text" placeholder="Ex: AIzaSyB1I0couKSmsW1Nadr68IlJXXCaBi9wYwM" />',
|
941 |
+
isset( $this->general_options['google_key'] ) ? esc_attr( $this->general_options['google_key']) : ''
|
942 |
+
);
|
943 |
+
}
|
944 |
+
|
945 |
+
/**
|
946 |
+
* Get the settings option array and print one of its values
|
947 |
+
*/
|
948 |
+
public function include_font_link_callback()
|
949 |
+
{
|
950 |
+
$checked = isset($this->general_options['include_font_link']) && $this->general_options['include_font_link'] ? 'checked="checked"' : '';
|
951 |
+
printf(
|
952 |
+
'<fieldset>
|
953 |
+
<legend class="screen-reader-text"><span>%s</span></legend>
|
954 |
+
<label for="include_font_link">
|
955 |
+
<input name="fo_general_options[include_font_link]" type="checkbox" id="include_font_link" value="1" %s>
|
956 |
+
%s
|
957 |
+
</label>
|
958 |
+
</fieldset>',
|
959 |
+
__('Include Font Family Preview', 'font-organizer'),
|
960 |
+
$checked,
|
961 |
+
__('Show font preview when listing the fonts (might be slow)', 'font-organizer')
|
962 |
+
);
|
963 |
+
}
|
964 |
+
|
965 |
+
/**
|
966 |
+
* Get the settings option array and print one of its values
|
967 |
+
*/
|
968 |
+
public function permissions_callback(){
|
969 |
+
$wp_roles = new WP_Roles();
|
970 |
+
$roles = $wp_roles->get_names();
|
971 |
+
$checked_values = !isset($this->general_options['permissions']) ? array(FO_DEFAULT_ROLE) : $this->general_options['permissions'];
|
972 |
+
|
973 |
+
foreach ($roles as $role_value => $role_name) {
|
974 |
+
$checked = $role_value == 'administrator' || in_array($role_value, $checked_values) ? 'checked' : '';
|
975 |
+
|
976 |
+
echo '<p><input type="checkbox"'.disabled("administrator", $role_value, false).' name="fo_general_options[permissions][]" value="' . $role_value . '" '.$checked.'>'.translate_user_role($role_name).'</input></p>';
|
977 |
+
}
|
978 |
+
}
|
979 |
+
|
980 |
+
/**
|
981 |
+
* Prints the main fonts list.
|
982 |
+
*/
|
983 |
+
public function fonts_list_field_callback($name)
|
984 |
+
{
|
985 |
+
$this->print_usable_fonts_list($name);
|
986 |
+
}
|
987 |
+
|
988 |
+
/**
|
989 |
+
* Prints the main fonts list.
|
990 |
+
*/
|
991 |
+
public function is_important_element_field_callback($name)
|
992 |
+
{
|
993 |
+
$this->print_is_important_checkbox_options($name);
|
994 |
+
}
|
995 |
+
|
996 |
+
/**
|
997 |
+
* Get the settings option array and print one of its values
|
998 |
+
*/
|
999 |
+
public function print_is_important_checkbox_options($name)
|
1000 |
+
{
|
1001 |
+
$checked = !isset($this->elements_options[$name]) || (isset($this->elements_options[$name]) && $this->elements_options[$name]) ? 'checked="checked"' : '';
|
1002 |
+
printf(
|
1003 |
+
'<fieldset>
|
1004 |
+
<legend class="screen-reader-text"><span>%s</span></legend>
|
1005 |
+
<label for="%s">
|
1006 |
+
<input name="fo_elements_options[%s]" type="checkbox" id="%s" value="1" %s>
|
1007 |
+
%s
|
1008 |
+
</label>
|
1009 |
+
</fieldset>',
|
1010 |
+
__('Important', 'font-organizer'),
|
1011 |
+
$name, $name, $name,
|
1012 |
+
$checked,
|
1013 |
+
__('Include !important to this element to always apply.', 'font-organizer')
|
1014 |
+
);
|
1015 |
+
}
|
1016 |
+
|
1017 |
+
public function print_is_important_checkbox($name, $checked = true)
|
1018 |
+
{
|
1019 |
+
printf(
|
1020 |
+
'<fieldset>
|
1021 |
+
<legend class="screen-reader-text"><span>%s</span></legend>
|
1022 |
+
<label for="%s">
|
1023 |
+
<input name="%s" type="checkbox" id="%s" value="1" %s>
|
1024 |
+
%s
|
1025 |
+
</label>
|
1026 |
+
</fieldset>',
|
1027 |
+
__('Important', 'font-organizer'),
|
1028 |
+
$name, $name, $name,
|
1029 |
+
checked(true, $checked, false),
|
1030 |
+
__('Include !important to this element to always apply.', 'font-organizer')
|
1031 |
+
);
|
1032 |
+
}
|
1033 |
+
|
1034 |
+
/**
|
1035 |
+
* Get the settings option array and print one of its values
|
1036 |
+
*/
|
1037 |
+
private function print_usable_fonts_list($name)
|
1038 |
+
{
|
1039 |
+
$selected = isset( $this->elements_options[$name] ) ? esc_attr( $this->elements_options[$name]) : '';
|
1040 |
+
echo '<select id="'.$name.'" name="fo_elements_options['.$name.']">';
|
1041 |
+
|
1042 |
+
echo '<option value="" '. selected('', $selected, false) . '>' . __('Default', 'font-organizer') . '</option>';
|
1043 |
+
|
1044 |
+
//fonts section
|
1045 |
+
foreach($this->usable_fonts as $font)
|
1046 |
+
{
|
1047 |
+
$font_name = $font->family;
|
1048 |
+
$is_selected = selected($font_name, $selected, false);
|
1049 |
+
echo '<option value="'.$font_name.'" style="font-family: '.$font_name.';" '.$is_selected.'>'.$font_name.'</option>\n';
|
1050 |
+
}
|
1051 |
+
|
1052 |
+
echo '</select>';
|
1053 |
+
}
|
1054 |
+
|
1055 |
+
/**
|
1056 |
+
* Get the settings option array and print one of its values
|
1057 |
+
*/
|
1058 |
+
private function print_custom_elements_usable_fonts_list($name, $default = '')
|
1059 |
+
{
|
1060 |
+
echo '<select id="'.$name.'" name="'.$name.'">';
|
1061 |
+
|
1062 |
+
if($default){
|
1063 |
+
echo '<option value="">'.$default.'</option>\n';
|
1064 |
+
}
|
1065 |
+
|
1066 |
+
//fonts section
|
1067 |
+
foreach($this->usable_fonts_db as $font)
|
1068 |
+
{
|
1069 |
+
$font_name = $font->name;
|
1070 |
+
$selected = isset($_GET[$name]) && $font->id == $_GET[$name];
|
1071 |
+
echo '<option value="' . $font->id . '" style="font-family: '.$font_name.';" ' . selected($selected) . '>'.$font_name.'</option>\n';
|
1072 |
+
}
|
1073 |
+
|
1074 |
+
echo '</select>';
|
1075 |
+
}
|
1076 |
+
|
1077 |
+
/**
|
1078 |
+
* Get the settings option array and print one of its values
|
1079 |
+
*/
|
1080 |
+
private function print_available_fonts_list($name)
|
1081 |
+
{
|
1082 |
+
echo '<select id="'.$name.'" name="'.$name.'">';
|
1083 |
+
|
1084 |
+
//fonts section
|
1085 |
+
foreach($this->available_fonts as $font)
|
1086 |
+
{
|
1087 |
+
$font_name = $font->family;
|
1088 |
+
$is_selected = $font_name === $selected ? ' selected' : '';
|
1089 |
+
echo '<option value="'.$font_name.'" style="font-family: '.$font_name.';">'.$font_name.'</option>\n';
|
1090 |
+
}
|
1091 |
+
|
1092 |
+
echo '</select>';
|
1093 |
+
}
|
1094 |
+
|
1095 |
+
private function load_usable_fonts(){
|
1096 |
+
global $wpdb;
|
1097 |
+
|
1098 |
+
$this->usable_fonts_db = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . FO_USABLE_FONTS_DATABASE . ' ORDER BY id DESC');
|
1099 |
+
foreach ( $this->usable_fonts_db as $usable_font) {
|
1100 |
+
|
1101 |
+
// Find the font from the lists.
|
1102 |
+
if($usable_font->custom){
|
1103 |
+
$font_obj = (object) [ 'family' => $usable_font->name, 'files' => (object) ['regular' => $usable_font->url], 'kind' => 'custom', 'variants' => array('regular')];
|
1104 |
+
$this->usable_fonts[$font_obj->family] = $font_obj;
|
1105 |
+
$this->custom_fonts[$font_obj->family] = $font_obj;
|
1106 |
+
}else{
|
1107 |
+
$i = 0;
|
1108 |
+
foreach ($this->available_fonts as $available_font) {
|
1109 |
+
if($available_font->family == $usable_font->name){
|
1110 |
+
$this->usable_fonts[$available_font->family] = $available_font;
|
1111 |
+
|
1112 |
+
// Remove the fond font from avaiable since it is already used.
|
1113 |
+
unset($this->available_fonts[$i]);
|
1114 |
+
|
1115 |
+
$found = true;
|
1116 |
+
break;
|
1117 |
+
}
|
1118 |
+
|
1119 |
+
$i++;
|
1120 |
+
}
|
1121 |
+
}
|
1122 |
+
}
|
1123 |
+
}
|
1124 |
+
|
1125 |
+
private function load_custom_elements(){
|
1126 |
+
global $wpdb;
|
1127 |
+
|
1128 |
+
$this->custom_elements = $wpdb->get_results('SELECT e.id, u.name, e.font_id, e.custom_elements, e.important FROM ' . $wpdb->prefix . FO_ELEMENTS_DATABASE . ' as e LEFT OUTER JOIN ' . $wpdb->prefix . FO_USABLE_FONTS_DATABASE . ' as u ON ' . ' e.font_id = u.id ORDER BY e.font_id DESC');
|
1129 |
+
}
|
1130 |
+
|
1131 |
+
private function get_known_fonts_array()
|
1132 |
+
{
|
1133 |
+
return array(
|
1134 |
+
(object) [ 'family' => 'Calibri', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1135 |
+
(object) [ 'family' => 'Abadi MT Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1136 |
+
(object) [ 'family' => 'Adobe Minion Web', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1137 |
+
(object) [ 'family' => 'Agency FB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1138 |
+
(object) [ 'family' => 'Aharoni', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1139 |
+
(object) [ 'family' => 'Aldhabi', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1140 |
+
(object) [ 'family' => 'Algerian', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1141 |
+
(object) [ 'family' => 'Almanac MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1142 |
+
(object) [ 'family' => 'American Uncial', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1143 |
+
(object) [ 'family' => 'Andale Mono', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1144 |
+
(object) [ 'family' => 'Andalus', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1145 |
+
(object) [ 'family' => 'Andy', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1146 |
+
(object) [ 'family' => 'Angsana New', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1147 |
+
(object) [ 'family' => 'AngsanaUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1148 |
+
(object) [ 'family' => 'Aparajita', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1149 |
+
(object) [ 'family' => 'Arabic Transparent', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1150 |
+
(object) [ 'family' => 'Arabic Typesetting', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1151 |
+
(object) [ 'family' => 'Arial', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1152 |
+
(object) [ 'family' => 'Arial Black', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1153 |
+
(object) [ 'family' => 'Arial Narrow', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1154 |
+
(object) [ 'family' => 'Arial Narrow Special', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1155 |
+
(object) [ 'family' => 'Arial Rounded MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1156 |
+
(object) [ 'family' => 'Arial Special', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1157 |
+
(object) [ 'family' => 'Arial Unicode MS', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1158 |
+
(object) [ 'family' => 'Augsburger Initials', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1159 |
+
(object) [ 'family' => 'Baskerville Old Face', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1160 |
+
(object) [ 'family' => 'Batang', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1161 |
+
(object) [ 'family' => 'BatangChe', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1162 |
+
(object) [ 'family' => 'Bauhaus 93', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1163 |
+
(object) [ 'family' => 'Beesknees ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1164 |
+
(object) [ 'family' => 'Bell MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1165 |
+
(object) [ 'family' => 'Berlin Sans FB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1166 |
+
(object) [ 'family' => 'Bernard MT Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1167 |
+
(object) [ 'family' => 'Bickley Script', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1168 |
+
(object) [ 'family' => 'Blackadder ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1169 |
+
(object) [ 'family' => 'Bodoni MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1170 |
+
(object) [ 'family' => 'Bodoni MT Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1171 |
+
(object) [ 'family' => 'Bon Apetit MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1172 |
+
(object) [ 'family' => 'Book Antiqua', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1173 |
+
(object) [ 'family' => 'Bookman Old Style', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1174 |
+
(object) [ 'family' => 'Bookshelf Symbol', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1175 |
+
(object) [ 'family' => 'Bradley Hand ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1176 |
+
(object) [ 'family' => 'Braggadocio', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1177 |
+
(object) [ 'family' => 'BriemScript', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1178 |
+
(object) [ 'family' => 'Britannic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1179 |
+
(object) [ 'family' => 'Britannic Bold', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1180 |
+
(object) [ 'family' => 'Broadway', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1181 |
+
(object) [ 'family' => 'Browallia New', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1182 |
+
(object) [ 'family' => 'BrowalliaUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1183 |
+
(object) [ 'family' => 'Brush Script MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1184 |
+
(object) [ 'family' => 'Calibri', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1185 |
+
(object) [ 'family' => 'Californian FB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1186 |
+
(object) [ 'family' => 'Calisto MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1187 |
+
(object) [ 'family' => 'Cambria', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1188 |
+
(object) [ 'family' => 'Cambria Math', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1189 |
+
(object) [ 'family' => 'Candara', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1190 |
+
(object) [ 'family' => 'Cariadings', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1191 |
+
(object) [ 'family' => 'Castellar', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1192 |
+
(object) [ 'family' => 'Centaur', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1193 |
+
(object) [ 'family' => 'Century', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1194 |
+
(object) [ 'family' => 'Century Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1195 |
+
(object) [ 'family' => 'Century Schoolbook', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1196 |
+
(object) [ 'family' => 'Chiller', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1197 |
+
(object) [ 'family' => 'Colonna MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1198 |
+
(object) [ 'family' => 'Comic Sans MS', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1199 |
+
(object) [ 'family' => 'Consolas', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1200 |
+
(object) [ 'family' => 'Constantia', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1201 |
+
(object) [ 'family' => 'Contemporary Brush', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1202 |
+
(object) [ 'family' => 'Cooper Black', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1203 |
+
(object) [ 'family' => 'Copperplate Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1204 |
+
(object) [ 'family' => 'Corbel', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1205 |
+
(object) [ 'family' => 'Cordia New', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1206 |
+
(object) [ 'family' => 'CordiaUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1207 |
+
(object) [ 'family' => 'Courier New', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1208 |
+
(object) [ 'family' => 'Curlz MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1209 |
+
(object) [ 'family' => 'DaunPenh', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1210 |
+
(object) [ 'family' => 'David', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1211 |
+
(object) [ 'family' => 'Desdemona', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1212 |
+
(object) [ 'family' => 'DFKai-SB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1213 |
+
(object) [ 'family' => 'DilleniaUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1214 |
+
(object) [ 'family' => 'Directions MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1215 |
+
(object) [ 'family' => 'DokChampa', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1216 |
+
(object) [ 'family' => 'Dotum', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1217 |
+
(object) [ 'family' => 'DotumChe', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1218 |
+
(object) [ 'family' => 'Ebrima', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1219 |
+
(object) [ 'family' => 'Eckmann', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1220 |
+
(object) [ 'family' => 'Edda', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1221 |
+
(object) [ 'family' => 'Edwardian Script ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1222 |
+
(object) [ 'family' => 'Elephant', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1223 |
+
(object) [ 'family' => 'Engravers MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1224 |
+
(object) [ 'family' => 'Enviro', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1225 |
+
(object) [ 'family' => 'Eras ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1226 |
+
(object) [ 'family' => 'Estrangelo Edessa', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1227 |
+
(object) [ 'family' => 'EucrosiaUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1228 |
+
(object) [ 'family' => 'Euphemia', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1229 |
+
(object) [ 'family' => 'Eurostile', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1230 |
+
(object) [ 'family' => 'FangSong', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1231 |
+
(object) [ 'family' => 'Felix Titling', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1232 |
+
(object) [ 'family' => 'Fine Hand', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1233 |
+
(object) [ 'family' => 'Fixed Miriam Transparent', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1234 |
+
(object) [ 'family' => 'Flexure', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1235 |
+
(object) [ 'family' => 'Footlight MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1236 |
+
(object) [ 'family' => 'Forte', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1237 |
+
(object) [ 'family' => 'Franklin Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1238 |
+
(object) [ 'family' => 'Franklin Gothic Medium', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1239 |
+
(object) [ 'family' => 'FrankRuehl', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1240 |
+
(object) [ 'family' => 'FreesiaUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1241 |
+
(object) [ 'family' => 'Freestyle Script', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1242 |
+
(object) [ 'family' => 'French Script MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1243 |
+
(object) [ 'family' => 'Futura', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1244 |
+
(object) [ 'family' => 'Gabriola', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1245 |
+
(object) [ 'family' => 'Gadugi', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1246 |
+
(object) [ 'family' => 'Garamond', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1247 |
+
(object) [ 'family' => 'Garamond MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1248 |
+
(object) [ 'family' => 'Gautami', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1249 |
+
(object) [ 'family' => 'Georgia', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1250 |
+
(object) [ 'family' => 'Georgia Ref', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1251 |
+
(object) [ 'family' => 'Gigi', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1252 |
+
(object) [ 'family' => 'Gill Sans MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1253 |
+
(object) [ 'family' => 'Gill Sans MT Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1254 |
+
(object) [ 'family' => 'Gisha', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1255 |
+
(object) [ 'family' => 'Gloucester', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1256 |
+
(object) [ 'family' => 'Goudy Old Style', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1257 |
+
(object) [ 'family' => 'Goudy Stout', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1258 |
+
(object) [ 'family' => 'Gradl', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1259 |
+
(object) [ 'family' => 'Gulim', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1260 |
+
(object) [ 'family' => 'GulimChe', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1261 |
+
(object) [ 'family' => 'Gungsuh', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1262 |
+
(object) [ 'family' => 'GungsuhChe', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1263 |
+
(object) [ 'family' => 'Haettenschweiler', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1264 |
+
(object) [ 'family' => 'Harlow Solid Italic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1265 |
+
(object) [ 'family' => 'Harrington', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1266 |
+
(object) [ 'family' => 'High Tower Text', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1267 |
+
(object) [ 'family' => 'Holidays MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1268 |
+
(object) [ 'family' => 'Impact', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1269 |
+
(object) [ 'family' => 'Imprint MT Shadow', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1270 |
+
(object) [ 'family' => 'Informal Roman', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1271 |
+
(object) [ 'family' => 'IrisUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1272 |
+
(object) [ 'family' => 'Iskoola Pota', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1273 |
+
(object) [ 'family' => 'JasmineUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1274 |
+
(object) [ 'family' => 'Jokerman', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1275 |
+
(object) [ 'family' => 'Juice ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1276 |
+
(object) [ 'family' => 'KaiTi', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1277 |
+
(object) [ 'family' => 'Kalinga', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1278 |
+
(object) [ 'family' => 'Kartika', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1279 |
+
(object) [ 'family' => 'Keystrokes MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1280 |
+
(object) [ 'family' => 'Khmer UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1281 |
+
(object) [ 'family' => 'Kino MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1282 |
+
(object) [ 'family' => 'KodchiangUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1283 |
+
(object) [ 'family' => 'Kokila', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1284 |
+
(object) [ 'family' => 'Kristen ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1285 |
+
(object) [ 'family' => 'Kunstler Script', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1286 |
+
(object) [ 'family' => 'Lao UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1287 |
+
(object) [ 'family' => 'Latha', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1288 |
+
(object) [ 'family' => 'LCD', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1289 |
+
(object) [ 'family' => 'Leelawadee', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1290 |
+
(object) [ 'family' => 'Levenim MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1291 |
+
(object) [ 'family' => 'LilyUPC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1292 |
+
(object) [ 'family' => 'Lucida Blackletter', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1293 |
+
(object) [ 'family' => 'Lucida Bright', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1294 |
+
(object) [ 'family' => 'Lucida Bright Math', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1295 |
+
(object) [ 'family' => 'Lucida Calligraphy', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1296 |
+
(object) [ 'family' => 'Lucida Console', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1297 |
+
(object) [ 'family' => 'Lucida Fax', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1298 |
+
(object) [ 'family' => 'Lucida Handwriting', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1299 |
+
(object) [ 'family' => 'Lucida Sans', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1300 |
+
(object) [ 'family' => 'Lucida Sans Typewriter', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1301 |
+
(object) [ 'family' => 'Lucida Sans Unicode', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1302 |
+
(object) [ 'family' => 'Magneto', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1303 |
+
(object) [ 'family' => 'Maiandra GD', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1304 |
+
(object) [ 'family' => 'Malgun Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1305 |
+
(object) [ 'family' => 'Mangal', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1306 |
+
(object) [ 'family' => 'Map Symbols', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1307 |
+
(object) [ 'family' => 'Marlett', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1308 |
+
(object) [ 'family' => 'Matisse ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1309 |
+
(object) [ 'family' => 'Matura MT Script Capitals', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1310 |
+
(object) [ 'family' => 'McZee', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1311 |
+
(object) [ 'family' => 'Mead Bold', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1312 |
+
(object) [ 'family' => 'Meiryo', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1313 |
+
(object) [ 'family' => 'Meiryo UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1314 |
+
(object) [ 'family' => 'Mercurius Script MT Bold', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1315 |
+
(object) [ 'family' => 'Microsoft Himalaya', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1316 |
+
(object) [ 'family' => 'Microsoft JhengHei', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1317 |
+
(object) [ 'family' => 'Microsoft JhengHei UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1318 |
+
(object) [ 'family' => 'Microsoft New Tai Lue', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1319 |
+
(object) [ 'family' => 'Microsoft PhagsPa', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1320 |
+
(object) [ 'family' => 'Microsoft Sans Serif', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1321 |
+
(object) [ 'family' => 'Microsoft Tai Le', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1322 |
+
(object) [ 'family' => 'Microsoft Uighur', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1323 |
+
(object) [ 'family' => 'Microsoft YaHei', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1324 |
+
(object) [ 'family' => 'Microsoft YaHei UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1325 |
+
(object) [ 'family' => 'Microsoft Yi Baiti', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1326 |
+
(object) [ 'family' => 'MingLiU', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1327 |
+
(object) [ 'family' => 'MingLiU_HKSCS', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1328 |
+
(object) [ 'family' => 'MingLiU_HKSCS-ExtB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1329 |
+
(object) [ 'family' => 'MingLiU-ExtB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1330 |
+
(object) [ 'family' => 'Minion Web', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1331 |
+
(object) [ 'family' => 'Miriam', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1332 |
+
(object) [ 'family' => 'Miriam Fixed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1333 |
+
(object) [ 'family' => 'Mistral', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1334 |
+
(object) [ 'family' => 'Modern No. 20', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1335 |
+
(object) [ 'family' => 'Mongolian Baiti', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1336 |
+
(object) [ 'family' => 'Monotype Corsiva', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1337 |
+
(object) [ 'family' => 'Monotype Sorts', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1338 |
+
(object) [ 'family' => 'Monotype.com', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1339 |
+
(object) [ 'family' => 'MoolBoran', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1340 |
+
(object) [ 'family' => 'MS Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1341 |
+
(object) [ 'family' => 'MS LineDraw', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1342 |
+
(object) [ 'family' => 'MS Mincho', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1343 |
+
(object) [ 'family' => 'MS Outlook', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1344 |
+
(object) [ 'family' => 'MS PGothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1345 |
+
(object) [ 'family' => 'MS PMincho', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1346 |
+
(object) [ 'family' => 'MS Reference', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1347 |
+
(object) [ 'family' => 'MS UI Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1348 |
+
(object) [ 'family' => 'MT Extra', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1349 |
+
(object) [ 'family' => 'MV Boli', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1350 |
+
(object) [ 'family' => 'Myanmar Text', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1351 |
+
(object) [ 'family' => 'Narkisim', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1352 |
+
(object) [ 'family' => 'New Caledonia', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1353 |
+
(object) [ 'family' => 'News Gothic MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1354 |
+
(object) [ 'family' => 'Niagara', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1355 |
+
(object) [ 'family' => 'Nirmala UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1356 |
+
(object) [ 'family' => 'NSimSun', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1357 |
+
(object) [ 'family' => 'Nyala', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1358 |
+
(object) [ 'family' => 'OCR A Extended', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1359 |
+
(object) [ 'family' => 'OCRB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1360 |
+
(object) [ 'family' => 'OCR-B-Digits', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1361 |
+
(object) [ 'family' => 'Old English Text MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1362 |
+
(object) [ 'family' => 'Onyx', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1363 |
+
(object) [ 'family' => 'Palace Script MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1364 |
+
(object) [ 'family' => 'Palatino Linotype', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1365 |
+
(object) [ 'family' => 'Papyrus', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1366 |
+
(object) [ 'family' => 'Parade', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1367 |
+
(object) [ 'family' => 'Parchment', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1368 |
+
(object) [ 'family' => 'Parties MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1369 |
+
(object) [ 'family' => 'Peignot Medium', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1370 |
+
(object) [ 'family' => 'Pepita MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1371 |
+
(object) [ 'family' => 'Perpetua', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1372 |
+
(object) [ 'family' => 'Perpetua Titling MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1373 |
+
(object) [ 'family' => 'Placard Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1374 |
+
(object) [ 'family' => 'Plantagenet Cherokee', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1375 |
+
(object) [ 'family' => 'Playbill', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1376 |
+
(object) [ 'family' => 'PMingLiU', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1377 |
+
(object) [ 'family' => 'PMingLiU-ExtB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1378 |
+
(object) [ 'family' => 'Poor Richard', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1379 |
+
(object) [ 'family' => 'Pristina', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1380 |
+
(object) [ 'family' => 'Raavi', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1381 |
+
(object) [ 'family' => 'Rage Italic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1382 |
+
(object) [ 'family' => 'Ransom', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1383 |
+
(object) [ 'family' => 'Ravie', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1384 |
+
(object) [ 'family' => 'RefSpecialty', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1385 |
+
(object) [ 'family' => 'Rockwell', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1386 |
+
(object) [ 'family' => 'Rockwell Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1387 |
+
(object) [ 'family' => 'Rockwell Extra Bold', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1388 |
+
(object) [ 'family' => 'Rod', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1389 |
+
(object) [ 'family' => 'Runic MT Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1390 |
+
(object) [ 'family' => 'Sakkal Majalla', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1391 |
+
(object) [ 'family' => 'Script MT Bold', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1392 |
+
(object) [ 'family' => 'Segoe Chess', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1393 |
+
(object) [ 'family' => 'Segoe Print', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1394 |
+
(object) [ 'family' => 'Segoe Pseudo', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1395 |
+
(object) [ 'family' => 'Segoe Script', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1396 |
+
(object) [ 'family' => 'Segoe UI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1397 |
+
(object) [ 'family' => 'Segoe UI Symbol', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1398 |
+
(object) [ 'family' => 'Shonar Bangla', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1399 |
+
(object) [ 'family' => 'Showcard Gothic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1400 |
+
(object) [ 'family' => 'Shruti', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1401 |
+
(object) [ 'family' => 'Signs MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1402 |
+
(object) [ 'family' => 'SimHei', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1403 |
+
(object) [ 'family' => 'Simplified Arabic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1404 |
+
(object) [ 'family' => 'Simplified Arabic Fixed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1405 |
+
(object) [ 'family' => 'SimSun', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1406 |
+
(object) [ 'family' => 'SimSun-ExtB', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1407 |
+
(object) [ 'family' => 'Snap ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1408 |
+
(object) [ 'family' => 'Sports MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1409 |
+
(object) [ 'family' => 'Stencil', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1410 |
+
(object) [ 'family' => 'Stop', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1411 |
+
(object) [ 'family' => 'Sylfaen', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1412 |
+
(object) [ 'family' => 'Symbol', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1413 |
+
(object) [ 'family' => 'Tahoma', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1414 |
+
(object) [ 'family' => 'Temp Installer Font', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1415 |
+
(object) [ 'family' => 'Tempo Grunge', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1416 |
+
(object) [ 'family' => 'Tempus Sans ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1417 |
+
(object) [ 'family' => 'Times New Roman', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1418 |
+
(object) [ 'family' => 'Times New Roman Special', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1419 |
+
(object) [ 'family' => 'Traditional Arabic', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1420 |
+
(object) [ 'family' => 'Transport MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1421 |
+
(object) [ 'family' => 'Trebuchet MS', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1422 |
+
(object) [ 'family' => 'Tunga', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1423 |
+
(object) [ 'family' => 'Tw Cen MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1424 |
+
(object) [ 'family' => 'Tw Cen MT Condensed', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1425 |
+
(object) [ 'family' => 'Urdu Typesetting', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1426 |
+
(object) [ 'family' => 'Utsaah', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1427 |
+
(object) [ 'family' => 'Vacation MT', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1428 |
+
(object) [ 'family' => 'Vani', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1429 |
+
(object) [ 'family' => 'Verdana', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1430 |
+
(object) [ 'family' => 'Verdana Ref', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1431 |
+
(object) [ 'family' => 'Vijaya', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1432 |
+
(object) [ 'family' => 'Viner Hand ITC', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1433 |
+
(object) [ 'family' => 'Vivaldi', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1434 |
+
(object) [ 'family' => 'Vixar ASCI', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1435 |
+
(object) [ 'family' => 'Vladimir Script', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1436 |
+
(object) [ 'family' => 'Vrinda', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1437 |
+
(object) [ 'family' => 'Webdings', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1438 |
+
(object) [ 'family' => 'Westminster', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1439 |
+
(object) [ 'family' => 'Wide Latin', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1440 |
+
(object) [ 'family' => 'Wingdings', 'kind' => 'standard', 'variants' => array(), 'files' => (object) ['regular' => '']],
|
1441 |
+
);
|
1442 |
+
}
|
1443 |
+
}
|