| 65 | | $this->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/scriptaculous.js', array('prototype'), '1.8.0'); |
| 66 | | $this->add( 'scriptaculous-builder', '/wp-includes/js/scriptaculous/builder.js', array('scriptaculous-root'), '1.8.0'); |
| 67 | | $this->add( 'scriptaculous-dragdrop', '/wp-includes/js/scriptaculous/dragdrop.js', array('scriptaculous-builder', 'scriptaculous-effects'), '1.8.0'); |
| 68 | | $this->add( 'scriptaculous-effects', '/wp-includes/js/scriptaculous/effects.js', array('scriptaculous-root'), '1.8.0'); |
| 69 | | $this->add( 'scriptaculous-slider', '/wp-includes/js/scriptaculous/slider.js', array('scriptaculous-effects'), '1.8.0'); |
| 70 | | $this->add( 'scriptaculous-sound', '/wp-includes/js/scriptaculous/sound.js', array( 'scriptaculous-root' ), '1.8.0' ); |
| 71 | | $this->add( 'scriptaculous-controls', '/wp-includes/js/scriptaculous/controls.js', array('scriptaculous-root'), '1.8.0'); |
| 72 | | $this->add( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.0'); |
| | 59 | $scripts->add( 'wp-lists', '/wp-includes/js/wp-lists.js', array('wp-ajax-response'), '20080411' ); |
| | 60 | $scripts->localize( 'wp-lists', 'wpListL10n', array( |
| | 61 | 'url' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php' |
| | 62 | ) ); |
| 74 | | $this->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop'), '20070118'); |
| | 64 | $scripts->add( 'scriptaculous-root', '/wp-includes/js/scriptaculous/scriptaculous.js', array('prototype'), '1.8.0'); |
| | 65 | $scripts->add( 'scriptaculous-builder', '/wp-includes/js/scriptaculous/builder.js', array('scriptaculous-root'), '1.8.0'); |
| | 66 | $scripts->add( 'scriptaculous-dragdrop', '/wp-includes/js/scriptaculous/dragdrop.js', array('scriptaculous-builder', 'scriptaculous-effects'), '1.8.0'); |
| | 67 | $scripts->add( 'scriptaculous-effects', '/wp-includes/js/scriptaculous/effects.js', array('scriptaculous-root'), '1.8.0'); |
| | 68 | $scripts->add( 'scriptaculous-slider', '/wp-includes/js/scriptaculous/slider.js', array('scriptaculous-effects'), '1.8.0'); |
| | 69 | $scripts->add( 'scriptaculous-sound', '/wp-includes/js/scriptaculous/sound.js', array( 'scriptaculous-root' ), '1.8.0' ); |
| | 70 | $scripts->add( 'scriptaculous-controls', '/wp-includes/js/scriptaculous/controls.js', array('scriptaculous-root'), '1.8.0'); |
| | 71 | $scripts->add( 'scriptaculous', '', array('scriptaculous-dragdrop', 'scriptaculous-slider', 'scriptaculous-controls'), '1.8.0'); |
| 76 | | $this->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.2.3'); |
| 77 | | $this->add( 'jquery-form', '/wp-includes/js/jquery/jquery.form.js', array('jquery'), '2.02'); |
| 78 | | $this->add( 'jquery-color', '/wp-includes/js/jquery/jquery.color.js', array('jquery'), '2.0-4561'); |
| 79 | | $this->add( 'interface', '/wp-includes/js/jquery/interface.js', array('jquery'), '1.2' ); |
| 80 | | $this->add( 'dimensions', '/wp-includes/js/jquery/jquery.dimensions.min.js', array('jquery'), '1.1.2'); |
| 81 | | $this->add( 'suggest', '/wp-includes/js/jquery/suggest.js', array('dimensions'), '1.1'); |
| 82 | | $this->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20'); |
| 83 | | $this->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.js', array('jquery'), '3.1-20080430'); |
| 84 | | $this->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2.0.2-20080430'); |
| 85 | | $this->add( 'swfupload-degrade', '/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js', array('swfupload'), '2.0.2'); |
| 86 | | $this->localize( 'swfupload-degrade', 'uploadDegradeOptions', array( |
| 87 | | 'is_lighttpd_before_150' => is_lighttpd_before_150(), |
| 88 | | ) ); |
| 89 | | $this->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2.0.2'); |
| 90 | | $this->add( 'swfupload-handlers', '/wp-includes/js/swfupload/handlers.js', array('swfupload'), '2.0.2-20080407'); |
| 91 | | // these error messages came from the sample swfupload js, they might need changing. |
| 92 | | $this->localize( 'swfupload-handlers', 'swfuploadL10n', array( |
| 93 | | 'queue_limit_exceeded' => __('You have attempted to queue too many files.'), |
| 94 | | 'file_exceeds_size_limit' => sprintf(__('This file is too big. Your php.ini upload_max_filesize is %s.'), @ini_get('upload_max_filesize')), |
| 95 | | 'zero_byte_file' => __('This file is empty. Please try another.'), |
| 96 | | 'invalid_filetype' => __('This file type is not allowed. Please try another.'), |
| 97 | | 'default_error' => __('An error occurred in the upload. Please try again later.'), |
| 98 | | 'missing_upload_url' => __('There was a configuration error. Please contact the server administrator.'), |
| 99 | | 'upload_limit_exceeded' => __('You may only upload 1 file.'), |
| 100 | | 'http_error' => __('HTTP error.'), |
| 101 | | 'upload_failed' => __('Upload failed.'), |
| 102 | | 'io_error' => __('IO error.'), |
| 103 | | 'security_error' => __('Security error.'), |
| 104 | | 'file_cancelled' => __('File cancelled.'), |
| 105 | | 'upload_stopped' => __('Upload stopped.'), |
| 106 | | 'dismiss' => __('Dismiss'), |
| 107 | | 'crunching' => __('Crunching…'), |
| 108 | | 'deleted' => __('Deleted'), |
| 109 | | ) ); |
| | 73 | $scripts->add( 'cropper', '/wp-includes/js/crop/cropper.js', array('scriptaculous-dragdrop'), '20070118'); |
| 111 | | $this->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui.core.js', array('jquery'), '1.5b4' ); |
| 112 | | $this->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui.tabs.js', array('jquery-ui-core'), '1.5b4' ); |
| | 75 | $scripts->add( 'jquery', '/wp-includes/js/jquery/jquery.js', false, '1.2.3'); |
| | 76 | $scripts->add( 'jquery-form', '/wp-includes/js/jquery/jquery.form.js', array('jquery'), '2.02'); |
| | 77 | $scripts->add( 'jquery-color', '/wp-includes/js/jquery/jquery.color.js', array('jquery'), '2.0-4561'); |
| | 78 | $scripts->add( 'interface', '/wp-includes/js/jquery/interface.js', array('jquery'), '1.2' ); |
| | 79 | $scripts->add( 'dimensions', '/wp-includes/js/jquery/jquery.dimensions.min.js', array('jquery'), '1.1.2'); |
| | 80 | $scripts->add( 'suggest', '/wp-includes/js/jquery/suggest.js', array('dimensions'), '1.1'); |
| | 81 | $scripts->add( 'schedule', '/wp-includes/js/jquery/jquery.schedule.js', array('jquery'), '20'); |
| | 82 | $scripts->add( 'thickbox', '/wp-includes/js/thickbox/thickbox.js', array('jquery'), '3.1-20080430'); |
| | 83 | $scripts->add( 'swfupload', '/wp-includes/js/swfupload/swfupload.js', false, '2.0.2-20080430'); |
| | 84 | $scripts->add( 'swfupload-degrade', '/wp-includes/js/swfupload/plugins/swfupload.graceful_degradation.js', array('swfupload'), '2.0.2'); |
| | 85 | $scripts->localize( 'swfupload-degrade', 'uploadDegradeOptions', array( |
| | 86 | 'is_lighttpd_before_150' => is_lighttpd_before_150(), |
| | 87 | ) ); |
| | 88 | $scripts->add( 'swfupload-queue', '/wp-includes/js/swfupload/plugins/swfupload.queue.js', array('swfupload'), '2.0.2'); |
| | 89 | $scripts->add( 'swfupload-handlers', '/wp-includes/js/swfupload/handlers.js', array('swfupload'), '2.0.2-20080407'); |
| | 90 | // these error messages came from the sample swfupload js, they might need changing. |
| | 91 | $scripts->localize( 'swfupload-handlers', 'swfuploadL10n', array( |
| | 92 | 'queue_limit_exceeded' => __('You have attempted to queue too many files.'), |
| | 93 | 'file_exceeds_size_limit' => sprintf(__('This file is too big. Your php.ini upload_max_filesize is %s.'), @ini_get('upload_max_filesize')), |
| | 94 | 'zero_byte_file' => __('This file is empty. Please try another.'), |
| | 95 | 'invalid_filetype' => __('This file type is not allowed. Please try another.'), |
| | 96 | 'default_error' => __('An error occurred in the upload. Please try again later.'), |
| | 97 | 'missing_upload_url' => __('There was a configuration error. Please contact the server administrator.'), |
| | 98 | 'upload_limit_exceeded' => __('You may only upload 1 file.'), |
| | 99 | 'http_error' => __('HTTP error.'), |
| | 100 | 'upload_failed' => __('Upload failed.'), |
| | 101 | 'io_error' => __('IO error.'), |
| | 102 | 'security_error' => __('Security error.'), |
| | 103 | 'file_cancelled' => __('File cancelled.'), |
| | 104 | 'upload_stopped' => __('Upload stopped.'), |
| | 105 | 'dismiss' => __('Dismiss'), |
| | 106 | 'crunching' => __('Crunching…'), |
| | 107 | 'deleted' => __('Deleted'), |
| | 108 | ) ); |
| 114 | | if ( is_admin() ) { |
| 115 | | $this->add( 'ajaxcat', '/wp-admin/js/cat.js', array( 'wp-lists' ), '20071101' ); |
| 116 | | $this->localize( 'ajaxcat', 'catL10n', array( |
| 117 | | 'add' => attribute_escape(__('Add')), |
| 118 | | 'how' => __('Separate multiple categories with commas.') |
| 119 | | ) ); |
| 120 | | $this->add( 'admin-categories', '/wp-admin/js/categories.js', array('wp-lists'), '20071031' ); |
| 121 | | $this->add( 'admin-tags', '/wp-admin/js/tags.js', array('wp-lists'), '20071031' ); |
| 122 | | $this->add( 'admin-custom-fields', '/wp-admin/js/custom-fields.js', array('wp-lists'), '20070823' ); |
| 123 | | $this->add( 'password-strength-meter', '/wp-admin/js/password-strength-meter.js', array('jquery'), '20070405' ); |
| 124 | | $this->localize( 'password-strength-meter', 'pwsL10n', array( |
| 125 | | 'short' => __('Too short'), |
| 126 | | 'bad' => __('Bad'), |
| 127 | | 'good' => __('Good'), |
| 128 | | 'strong' => __('Strong') |
| 129 | | ) ); |
| 130 | | $this->add( 'admin-comments', '/wp-admin/js/edit-comments.js', array('wp-lists'), '20080311' ); |
| 131 | | $this->localize( 'admin-comments', 'adminCommentsL10n', array( |
| 132 | | 'pending' => __('%i% pending') // must look like: "# blah blah" |
| 133 | | ) ); |
| 134 | | $this->add( 'admin-users', '/wp-admin/js/users.js', array('wp-lists'), '20070823' ); |
| 135 | | $this->add( 'admin-forms', '/wp-admin/js/forms.js', false, '20080401'); |
| 136 | | $this->add( 'xfn', '/wp-admin/js/xfn.js', false, '3517' ); |
| 137 | | $this->add( 'upload', '/wp-admin/js/upload.js', array('jquery'), '20070518' ); |
| 138 | | $this->add( 'postbox', '/wp-admin/js/postbox.js', array('jquery'), '20080128' ); |
| 139 | | $this->localize( 'postbox', 'postboxL10n', array( |
| 140 | | 'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php', |
| 141 | | ) ); |
| 142 | | $this->add( 'slug', '/wp-admin/js/slug.js', array('jquery'), '20080208' ); |
| 143 | | $this->localize( 'slug', 'slugL10n', array( |
| 144 | | 'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php', |
| 145 | | 'save' => __('Save'), |
| 146 | | 'cancel' => __('Cancel'), |
| 147 | | ) ); |
| 148 | | $this->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080519' ); |
| 149 | | $this->localize( 'post', 'postL10n', array( |
| 150 | | 'tagsUsed' => __('Tags used on this post:'), |
| 151 | | 'add' => attribute_escape(__('Add')), |
| 152 | | 'addTag' => attribute_escape(__('Add new tag')), |
| 153 | | 'separate' => __('Separate tags with commas'), |
| 154 | | 'cancel' => __('Cancel'), |
| 155 | | 'edit' => __('Edit'), |
| 156 | | ) ); |
| 157 | | $this->add( 'page', '/wp-admin/js/page.js', array('jquery', 'slug', 'postbox'), '20080318' ); |
| 158 | | $this->localize( 'page', 'postL10n', array( |
| 159 | | 'cancel' => __('Cancel'), |
| 160 | | 'edit' => __('Edit'), |
| 161 | | ) ); |
| 162 | | $this->add( 'link', '/wp-admin/js/link.js', array('jquery-ui-tabs', 'wp-lists', 'postbox'), '20080131' ); |
| 163 | | $this->add( 'comment', '/wp-admin/js/comment.js', array('postbox'), '20080219' ); |
| 164 | | $this->localize( 'comment', 'commentL10n', array( |
| 165 | | 'cancel' => __('Cancel'), |
| 166 | | 'edit' => __('Edit'), |
| 167 | | ) ); |
| 168 | | $this->add( 'media-upload', '/wp-admin/js/media-upload.js', false, '20080430' ); |
| 169 | | $this->localize( 'upload', 'uploadL10n', array( |
| 170 | | 'browseTitle' => attribute_escape(__('Browse your files')), |
| 171 | | 'back' => __('« Back'), |
| 172 | | 'directTitle' => attribute_escape(__('Direct link to file')), |
| 173 | | 'edit' => __('Edit'), |
| 174 | | 'thumb' => __('Thumbnail'), |
| 175 | | 'full' => __('Full size'), |
| 176 | | 'icon' => __('Icon'), |
| 177 | | 'title' => __('Title'), |
| 178 | | 'show' => __('Show:'), |
| 179 | | 'link' => __('Link to:'), |
| 180 | | 'file' => __('File'), |
| 181 | | 'page' => __('Page'), |
| 182 | | 'none' => __('None'), |
| 183 | | 'editorText' => attribute_escape(__('Send to editor »')), |
| 184 | | 'insert' => __('Insert'), |
| 185 | | 'urlText' => __('URL'), |
| 186 | | 'desc' => __('Description'), |
| 187 | | 'deleteText' => attribute_escape(__('Delete File')), |
| 188 | | 'saveText' => attribute_escape(__('Save »')), |
| 189 | | 'confirmText' => __("Are you sure you want to delete the file '%title%'?\nClick ok to delete or cancel to go back.") |
| 190 | | ) ); |
| 191 | | $this->add( 'admin-widgets', '/wp-admin/js/widgets.js', array( 'interface' ), '20080503' ); |
| 192 | | $this->localize( 'admin-widgets', 'widgetsL10n', array( |
| 193 | | 'add' => __('Add'), |
| 194 | | 'edit' => __('Edit'), |
| 195 | | 'cancel' => __('Cancel'), |
| 196 | | )); |
| | 110 | $scripts->add( 'jquery-ui-core', '/wp-includes/js/jquery/ui.core.js', array('jquery'), '1.5b4' ); |
| | 111 | $scripts->add( 'jquery-ui-tabs', '/wp-includes/js/jquery/ui.tabs.js', array('jquery-ui-core'), '1.5b4' ); |
| 198 | | $this->add( 'word-count', '/wp-admin/js/word-count.js', array( 'jquery' ), '20080423' ); |
| 199 | | $this->localize( 'word-count', 'wordCountL10n', array( |
| 200 | | 'count' => __('Word count: %d') |
| 201 | | )); |
| 202 | | |
| 203 | | $this->add( 'wp-gears', '/wp-admin/js/wp-gears.js', false, '20080511' ); |
| 204 | | $this->localize( 'wp-gears', 'wpGearsL10n', array( |
| 205 | | 'updateCompleted' => __('Update completed.'), |
| 206 | | 'error' => __('Error:') |
| 207 | | )); |
| 208 | | |
| 209 | | $this->add( 'theme-preview', '/wp-admin/js/theme-preview.js', array( 'thickbox', 'dimensions' ), '20080515' ); |
| 210 | | } |
| 211 | | } |
| | 113 | if ( is_admin() ) { |
| | 114 | $scripts->add( 'ajaxcat', '/wp-admin/js/cat.js', array( 'wp-lists' ), '20071101' ); |
| | 115 | $scripts->localize( 'ajaxcat', 'catL10n', array( |
| | 116 | 'add' => attribute_escape(__('Add')), |
| | 117 | 'how' => __('Separate multiple categories with commas.') |
| | 118 | ) ); |
| | 119 | $scripts->add( 'admin-categories', '/wp-admin/js/categories.js', array('wp-lists'), '20071031' ); |
| | 120 | $scripts->add( 'admin-tags', '/wp-admin/js/tags.js', array('wp-lists'), '20071031' ); |
| | 121 | $scripts->add( 'admin-custom-fields', '/wp-admin/js/custom-fields.js', array('wp-lists'), '20070823' ); |
| | 122 | $scripts->add( 'password-strength-meter', '/wp-admin/js/password-strength-meter.js', array('jquery'), '20070405' ); |
| | 123 | $scripts->localize( 'password-strength-meter', 'pwsL10n', array( |
| | 124 | 'short' => __('Too short'), |
| | 125 | 'bad' => __('Bad'), |
| | 126 | 'good' => __('Good'), |
| | 127 | 'strong' => __('Strong') |
| | 128 | ) ); |
| | 129 | $scripts->add( 'admin-comments', '/wp-admin/js/edit-comments.js', array('wp-lists'), '20080311' ); |
| | 130 | $scripts->localize( 'admin-comments', 'adminCommentsL10n', array( |
| | 131 | 'pending' => __('%i% pending') // must look like: "# blah blah" |
| | 132 | ) ); |
| | 133 | $scripts->add( 'admin-users', '/wp-admin/js/users.js', array('wp-lists'), '20070823' ); |
| | 134 | $scripts->add( 'admin-forms', '/wp-admin/js/forms.js', false, '20080401'); |
| | 135 | $scripts->add( 'xfn', '/wp-admin/js/xfn.js', false, '3517' ); |
| | 136 | $scripts->add( 'upload', '/wp-admin/js/upload.js', array('jquery'), '20070518' ); |
| | 137 | $scripts->add( 'postbox', '/wp-admin/js/postbox.js', array('jquery'), '20080128' ); |
| | 138 | $scripts->localize( 'postbox', 'postboxL10n', array( |
| | 139 | 'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php', |
| | 140 | ) ); |
| | 141 | $scripts->add( 'slug', '/wp-admin/js/slug.js', array('jquery'), '20080208' ); |
| | 142 | $scripts->localize( 'slug', 'slugL10n', array( |
| | 143 | 'requestFile' => get_option( 'siteurl' ) . '/wp-admin/admin-ajax.php', |
| | 144 | 'save' => __('Save'), |
| | 145 | 'cancel' => __('Cancel'), |
| | 146 | ) ); |
| | 147 | $scripts->add( 'post', '/wp-admin/js/post.js', array('suggest', 'jquery-ui-tabs', 'wp-lists', 'postbox', 'slug'), '20080519' ); |
| | 148 | $scripts->localize( 'post', 'postL10n', array( |
| | 149 | 'tagsUsed' => __('Tags used on this post:'), |
| | 150 | 'add' => attribute_escape(__('Add')), |
| | 151 | 'addTag' => attribute_escape(__('Add new tag')), |
| | 152 | 'separate' => __('Separate tags with commas'), |
| | 153 | 'cancel' => __('Cancel'), |
| | 154 | 'edit' => __('Edit'), |
| | 155 | ) ); |
| | 156 | $scripts->add( 'page', '/wp-admin/js/page.js', array('jquery', 'slug', 'postbox'), '20080318' ); |
| | 157 | $scripts->localize( 'page', 'postL10n', array( |
| | 158 | 'cancel' => __('Cancel'), |
| | 159 | 'edit' => __('Edit'), |
| | 160 | ) ); |
| | 161 | $scripts->add( 'link', '/wp-admin/js/link.js', array('jquery-ui-tabs', 'wp-lists', 'postbox'), '20080131' ); |
| | 162 | $scripts->add( 'comment', '/wp-admin/js/comment.js', array('postbox'), '20080219' ); |
| | 163 | $scripts->localize( 'comment', 'commentL10n', array( |
| | 164 | 'cancel' => __('Cancel'), |
| | 165 | 'edit' => __('Edit'), |
| | 166 | ) ); |
| | 167 | $scripts->add( 'media-upload', '/wp-admin/js/media-upload.js', false, '20080430' ); |
| | 168 | $scripts->localize( 'upload', 'uploadL10n', array( |
| | 169 | 'browseTitle' => attribute_escape(__('Browse your files')), |
| | 170 | 'back' => __('« Back'), |
| | 171 | 'directTitle' => attribute_escape(__('Direct link to file')), |
| | 172 | 'edit' => __('Edit'), |
| | 173 | 'thumb' => __('Thumbnail'), |
| | 174 | 'full' => __('Full size'), |
| | 175 | 'icon' => __('Icon'), |
| | 176 | 'title' => __('Title'), |
| | 177 | 'show' => __('Show:'), |
| | 178 | 'link' => __('Link to:'), |
| | 179 | 'file' => __('File'), |
| | 180 | 'page' => __('Page'), |
| | 181 | 'none' => __('None'), |
| | 182 | 'editorText' => attribute_escape(__('Send to editor »')), |
| | 183 | 'insert' => __('Insert'), |
| | 184 | 'urlText' => __('URL'), |
| | 185 | 'desc' => __('Description'), |
| | 186 | 'deleteText' => attribute_escape(__('Delete File')), |
| | 187 | 'saveText' => attribute_escape(__('Save »')), |
| | 188 | 'confirmText' => __("Are you sure you want to delete the file '%title%'?\nClick ok to delete or cancel to go back.") |
| | 189 | ) ); |
| | 190 | $scripts->add( 'admin-widgets', '/wp-admin/js/widgets.js', array( 'interface' ), '20080503' ); |
| | 191 | $scripts->localize( 'admin-widgets', 'widgetsL10n', array( |
| | 192 | 'add' => __('Add'), |
| | 193 | 'edit' => __('Edit'), |
| | 194 | 'cancel' => __('Cancel'), |
| | 195 | )); |
| 213 | | /** |
| 214 | | * Prints script tags |
| 215 | | * |
| 216 | | * Prints the scripts passed to it or the print queue. Also prints all necessary dependencies. |
| 217 | | * |
| 218 | | * @param mixed handles (optional) Scripts to be printed. (void) prints queue, (string) prints that script, (array of strings) prints those scripts. |
| 219 | | * @return array Scripts that have been printed |
| 220 | | */ |
| 221 | | function print_scripts( $handles = false ) { |
| 222 | | global $wp_db_version; |
| 223 | | |
| 224 | | // Print the queue if nothing is passed. If a string is passed, print that script. If an array is passed, print those scripts. |
| 225 | | $handles = false === $handles ? $this->queue : (array) $handles; |
| 226 | | $this->all_deps( $handles ); |
| 227 | | |
| 228 | | $to_print = apply_filters( 'print_scripts_array', array_keys($this->to_print) ); |
| 229 | | |
| 230 | | foreach( $to_print as $handle ) { |
| 231 | | if ( !in_array($handle, $this->printed) && isset($this->scripts[$handle]) ) { |
| 232 | | if ( $this->scripts[$handle]->src ) { // Else it defines a group. |
| 233 | | $ver = $this->scripts[$handle]->ver ? $this->scripts[$handle]->ver : $wp_db_version; |
| 234 | | if ( isset($this->args[$handle]) ) |
| 235 | | $ver .= '&' . $this->args[$handle]; |
| 236 | | $src = 0 === strpos($this->scripts[$handle]->src, 'http://') ? $this->scripts[$handle]->src : get_option( 'siteurl' ) . $this->scripts[$handle]->src; |
| 237 | | $src = $this->scripts[$handle]->src; |
| 238 | | |
| 239 | | if (!preg_match('|^https?://|', $src)) { |
| 240 | | $src = get_option('siteurl') . $src; |
| 241 | | } |
| 242 | | |
| 243 | | $src = add_query_arg('ver', $ver, $src); |
| 244 | | $src = clean_url(apply_filters( 'script_loader_src', $src )); |
| 245 | | $this->print_scripts_l10n( $handle ); |
| 246 | | echo "<script type='text/javascript' src='$src'></script>\n"; |
| 247 | | } |
| 248 | | $this->printed[] = $handle; |
| 249 | | } |
| 250 | | } |
| 251 | | |
| 252 | | $this->to_print = array(); |
| 253 | | return $this->printed; |
| | 197 | $scripts->add( 'word-count', '/wp-admin/js/word-count.js', array( 'jquery' ), '20080423' ); |
| | 198 | $scripts->localize( 'word-count', 'wordCountL10n', array( |
| | 199 | 'count' => __('Word count: %d') |
| | 200 | )); |
| | 201 | |
| | 202 | $scripts->add( 'wp-gears', '/wp-admin/js/wp-gears.js', false, '20080511' ); |
| | 203 | $scripts->localize( 'wp-gears', 'wpGearsL10n', array( |
| | 204 | 'updateCompleted' => __('Update completed.'), |
| | 205 | 'error' => __('Error:') |
| | 206 | )); |
| | 207 | |
| | 208 | $scripts->add( 'theme-preview', '/wp-admin/js/theme-preview.js', array( 'thickbox', 'dimensions' ), '20080515' ); |
| 255 | | |
| 256 | | function print_scripts_l10n( $handle ) { |
| 257 | | if ( empty($this->scripts[$handle]->l10n_object) || empty($this->scripts[$handle]->l10n) || !is_array($this->scripts[$handle]->l10n) ) |
| 258 | | return; |
| 259 | | |
| 260 | | $object_name = $this->scripts[$handle]->l10n_object; |
| 261 | | |
| 262 | | echo "<script type='text/javascript'>\n"; |
| 263 | | echo "/* <![CDATA[ */\n"; |
| 264 | | echo "\t$object_name = {\n"; |
| 265 | | $eol = ''; |
| 266 | | foreach ( $this->scripts[$handle]->l10n as $var => $val ) { |
| 267 | | echo "$eol\t\t$var: \"" . js_escape( $val ) . '"'; |
| 268 | | $eol = ",\n"; |
| 269 | | } |
| 270 | | echo "\n\t}\n"; |
| 271 | | echo "/* ]]> */\n"; |
| 272 | | echo "</script>\n"; |
| 273 | | } |
| 274 | | |
| 275 | | /** |
| 276 | | * Determines dependencies of scripts |
| 277 | | * |
| 278 | | * Recursively builds array of scripts to print taking dependencies into account. Does NOT catch infinite loops. |
| 279 | | * |
| 280 | | * @param mixed handles Accepts (string) script name or (array of strings) script names |
| 281 | | * @param bool recursion Used internally when function calls itself |
| 282 | | */ |
| 283 | | function all_deps( $handles, $recursion = false ) { |
| 284 | | if ( !$handles = (array) $handles ) |
| 285 | | return false; |
| 286 | | |
| 287 | | foreach ( $handles as $handle ) { |
| 288 | | $handle = explode('?', $handle); |
| 289 | | if ( isset($handle[1]) ) |
| 290 | | $this->args[$handle[0]] = $handle[1]; |
| 291 | | $handle = $handle[0]; |
| 292 | | |
| 293 | | if ( isset($this->to_print[$handle]) ) // Already grobbed it and its deps |
| 294 | | continue; |
| 295 | | |
| 296 | | $keep_going = true; |
| 297 | | if ( !isset($this->scripts[$handle]) ) |
| 298 | | $keep_going = false; // Script doesn't exist |
| 299 | | elseif ( $this->scripts[$handle]->deps && array_diff($this->scripts[$handle]->deps, array_keys($this->scripts)) ) |
| 300 | | $keep_going = false; // Script requires deps which don't exist (not a necessary check. efficiency?) |
| 301 | | elseif ( $this->scripts[$handle]->deps && !$this->all_deps( $this->scripts[$handle]->deps, true ) ) |
| 302 | | $keep_going = false; // Script requires deps which don't exist |
| 303 | | |
| 304 | | if ( !$keep_going ) { // Either script or its deps don't exist. |
| 305 | | if ( $recursion ) |
| 306 | | return false; // Abort this branch. |
| 307 | | else |
| 308 | | continue; // We're at the top level. Move on to the next one. |
| 309 | | } |
| 310 | | |
| 311 | | $this->to_print[$handle] = true; |
| 312 | | } |
| 313 | | |
| 314 | | return true; |
| 315 | | } |
| 316 | | |
| 317 | | /** |
| 318 | | * Adds script |
| 319 | | * |
| 320 | | * Adds the script only if no script of that name already exists |
| 321 | | * |
| 322 | | * @param string handle Script name |
| 323 | | * @param string src Script url |
| 324 | | * @param array deps (optional) Array of script names on which this script depends |
| 325 | | * @param string ver (optional) Script version (used for cache busting) |
| 326 | | * @return array Hierarchical array of dependencies |
| 327 | | */ |
| 328 | | function add( $handle, $src, $deps = array(), $ver = false ) { |
| 329 | | if ( isset($this->scripts[$handle]) ) |
| 330 | | return false; |
| 331 | | $this->scripts[$handle] = new _WP_Script( $handle, $src, $deps, $ver ); |
| 332 | | return true; |
| 333 | | } |
| 334 | | |
| 335 | | /** |
| 336 | | * Localizes a script |
| 337 | | * |
| 338 | | * Localizes only if script has already been added |
| 339 | | * |
| 340 | | * @param string handle Script name |
| 341 | | * @param string object_name Name of JS object to hold l10n info |
| 342 | | * @param array l10n Array of JS var name => localized string |
| 343 | | * @return bool Successful localization |
| 344 | | */ |
| 345 | | function localize( $handle, $object_name, $l10n ) { |
| 346 | | if ( !isset($this->scripts[$handle]) ) |
| 347 | | return false; |
| 348 | | return $this->scripts[$handle]->localize( $object_name, $l10n ); |
| 349 | | } |
| 350 | | |
| 351 | | function remove( $handles ) { |
| 352 | | foreach ( (array) $handles as $handle ) |
| 353 | | unset($this->scripts[$handle]); |
| 354 | | } |
| 355 | | |
| 356 | | function enqueue( $handles ) { |
| 357 | | foreach ( (array) $handles as $handle ) { |
| 358 | | $handle = explode('?', $handle); |
| 359 | | if ( !in_array($handle[0], $this->queue) && isset($this->scripts[$handle[0]]) ) { |
| 360 | | $this->queue[] = $handle[0]; |
| 361 | | if ( isset($handle[1]) ) |
| 362 | | $this->args[$handle[0]] = $handle[1]; |
| 363 | | } |
| 364 | | } |
| 365 | | } |
| 366 | | |
| 367 | | function dequeue( $handles ) { |
| 368 | | foreach ( (array) $handles as $handle ) |
| 369 | | unset( $this->queue[$handle] ); |
| 370 | | } |
| 371 | | |
| 372 | | function query( $handle, $list = 'scripts' ) { // scripts, queue, or printed |
| 373 | | switch ( $list ) : |
| 374 | | case 'scripts': |
| 375 | | if ( isset($this->scripts[$handle]) ) |
| 376 | | return $this->scripts[$handle]; |
| 377 | | break; |
| 378 | | default: |
| 379 | | if ( in_array($handle, $this->$list) ) |
| 380 | | return true; |
| 381 | | break; |
| 382 | | endswitch; |
| 383 | | return false; |
| 384 | | } |
| 385 | | |
| 388 | | class _WP_Script { |
| 389 | | var $handle; |
| 390 | | var $src; |
| 391 | | var $deps = array(); |
| 392 | | var $ver = false; |
| 393 | | var $l10n_object = ''; |
| 394 | | var $l10n = array(); |
| 395 | | |
| 396 | | function _WP_Script() { |
| 397 | | @list($this->handle, $this->src, $this->deps, $this->ver) = func_get_args(); |
| 398 | | if ( !is_array($this->deps) ) |
| 399 | | $this->deps = array(); |
| 400 | | if ( !$this->ver ) |
| 401 | | $this->ver = false; |
| 402 | | } |
| 403 | | |
| 404 | | function localize( $object_name, $l10n ) { |
| 405 | | if ( !$object_name || !is_array($l10n) ) |
| 406 | | return false; |
| 407 | | $this->l10n_object = $object_name; |
| 408 | | $this->l10n = $l10n; |
| 409 | | return true; |
| 410 | | } |
| 411 | | } |
| 412 | | |
| 413 | | /** |
| 414 | | * Prints script tags in document head |
| 415 | | * |
| 416 | | * Called by admin-header.php and by wp_head hook. Since it is called by wp_head on every page load, |
| 417 | | * the function does not instantiate the WP_Scripts object unless script names are explicitly passed. |
| 418 | | * Does make use of already instantiated $wp_scripts if present. |
| 419 | | * Use provided wp_print_scripts hook to register/enqueue new scripts. |
| 420 | | * |
| 421 | | * @see WP_Scripts::print_scripts() |
| 422 | | */ |
| 423 | | function wp_print_scripts( $handles = false ) { |
| 424 | | do_action( 'wp_print_scripts' ); |
| 425 | | if ( '' === $handles ) // for wp_head |
| 426 | | $handles = false; |
| 427 | | |
| 428 | | global $wp_scripts; |
| 429 | | if ( !is_a($wp_scripts, 'WP_Scripts') ) { |
| 430 | | if ( !$handles ) |
| 431 | | return array(); // No need to instantiate if nothing's there. |
| 432 | | else |
| 433 | | $wp_scripts = new WP_Scripts(); |
| 434 | | } |
| 435 | | |
| 436 | | return $wp_scripts->print_scripts( $handles ); |
| 437 | | } |
| 438 | | |
| 439 | | function wp_register_script( $handle, $src, $deps = array(), $ver = false ) { |
| 440 | | global $wp_scripts; |
| 441 | | if ( !is_a($wp_scripts, 'WP_Scripts') ) |
| 442 | | $wp_scripts = new WP_Scripts(); |
| 443 | | |
| 444 | | $wp_scripts->add( $handle, $src, $deps, $ver ); |
| 445 | | } |
| 446 | | |
| 447 | | /** |
| 448 | | * Localizes a script |
| 449 | | * |
| 450 | | * Localizes only if script has already been added |
| 451 | | * |
| 452 | | * @see WP_Script::localize() |
| 453 | | */ |
| 454 | | function wp_localize_script( $handle, $object_name, $l10n ) { |
| 455 | | global $wp_scripts; |
| 456 | | if ( !is_a($wp_scripts, 'WP_Scripts') ) |
| 457 | | return false; |
| 458 | | |
| 459 | | return $wp_scripts->localize( $handle, $object_name, $l10n ); |
| 460 | | } |
| 461 | | |
| 462 | | function wp_deregister_script( $handle ) { |
| 463 | | global $wp_scripts; |
| 464 | | if ( !is_a($wp_scripts, 'WP_Scripts') ) |
| 465 | | $wp_scripts = new WP_Scripts(); |
| 466 | | |
| 467 | | $wp_scripts->remove( $handle ); |
| 468 | | } |
| 469 | | |
| 470 | | /** |
| 471 | | * Equeues script |
| 472 | | * |
| 473 | | * Registers the script if src provided (does NOT overwrite) and enqueues. |
| 474 | | * |
| 475 | | * @see WP_Script::add(), WP_Script::enqueue() |
| 476 | | */ |
| 477 | | function wp_enqueue_script( $handle, $src = false, $deps = array(), $ver = false ) { |
| 478 | | global $wp_scripts; |
| 479 | | if ( !is_a($wp_scripts, 'WP_Scripts') ) |
| 480 | | $wp_scripts = new WP_Scripts(); |
| 481 | | |
| 482 | | if ( $src ) { |
| 483 | | $_handle = explode('?', $handle); |
| 484 | | $wp_scripts->add( $_handle[0], $src, $deps, $ver ); |
| 485 | | } |
| 486 | | $wp_scripts->enqueue( $handle ); |
| 487 | | } |
| 488 | | |